Агент для разработки стратегий может загрязнить тестовую выборку, даже если ни одна тестовая строка не попала в обучающую задачу. Если агент видит оценку на тесте, меняет параметр и запускает всё снова, эта оценка уже повлияла на стратегию. В коде период может называться «вне выборки». Но исследовательский процесс уже включил его в поиск.
Я видел, как это происходит из соображений удобства: агент запускает серию экспериментов, читает сводную таблицу, а затем предлагает небольшое улучшение. Никто не просил его подгонять стратегию под отложенную выборку. Но это всё равно произошло из-за цикла обратной связи.
Ошибка 1: позволять агенту заглядывать в результаты после каждого запуска
Обычно последствия видны по Sharpe на тесте: он растёт аккуратными небольшими шагами. Агент пробует 30 вариантов, оставляет лучший, а затем перебирает ещё 30 вариантов вокруг него. Каждое отдельное изменение выглядит разумным. Но вместе они превращают тестовый период в цель оптимизации.
Вот упрощённый пример. Допустим, у стратегии нет реального преимущества, и вы проверяете на отложенной выборке 100 независимых вариантов. Если выбрать вариант с наивысшим Sharpe, вполне можно случайно получить приукрашенный результат. В большинстве поисков стратегий варианты не будут полностью независимы, но это не спасает процесс: повторная обратная связь всё равно поощряет настройки, случайно подогнанные под особенности отложенной выборки.
Ограничьте доступ к отложенной выборке на уровне выдачи результатов. Агент может разрабатывать стратегию на обучающем и валидационном периодах, но не должен получать метрики или графики отложенной выборки. Проводите итоговую оценку в отдельной задаче один раз, после того как решения по исследованию зафиксированы, и сохраняйте вместе с результатом версию стратегии и снимок данных.
Ошибка 2: считать любой следующий период «свежим»
Диапазон дат не становится свежим только потому, что идёт после обучающего окна. Если агент видел оценку за этот диапазон или человек использовал просадку, чтобы выбрать другой признак, диапазон уже вошёл в цикл обратной связи.
| Период | Допустимое использование | Что меняет его статус |
|---|---|---|
| Обучающий | Подбор правил и параметров | Ничего: его как раз и нужно исследовать |
| Валидационный | Сравнение кандидатов и принятие исследовательских решений | Частое использование повышает риск переобучения |
| Итоговая отложенная выборка | Однократная оценка зафиксированного кандидата | Просмотр результата и изменение кандидата |
| Будущий период бумажной торговли | Проспективное наблюдение за поведением реализации | Настройка по результатам запускает новый исследовательский цикл |
Последовательная walk-forward-оценка помогает понять, как фиксированный исследовательский процесс ведёт себя с течением времени. Но она не даёт права без ограничений заглядывать в результаты каждого фолда. Если агент видит результаты фолдов и адаптирует поиск, они тоже становятся частью обратной связи. Сохраните итоговый нетронутый период для решения, которое вам действительно нужно принять.
Ошибка 3: фиксировать код, но менять вопрос
Иногда код стратегии остаётся прежним, но после просмотра результата исследователь меняет оценку: выбирает другой бенчмарк, исключает неудачный месяц, отчитывается по другому набору инструментов или делает акцент на метрике с лучшим результатом. Тестовая выборка уже направила ход исследования, даже если параметры не менялись.
Последствия заметны в отполированном отчёте с одним эффектным выводом и без упоминания других рассмотренных вариантов. Акционная стратегия может выглядеть слабой относительно широкого рыночного индекса, но сильной относительно денежных средств; криптостратегия может блеснуть на одной площадке после того, как были изучены результаты на нескольких. Такие сравнения полезны, но выбор из них после просмотра отложенной выборки — ещё один этап отбора.
Ведите журнал исследований. Для каждого запуска сохраняйте гипотезу, версию кода, снимок данных, перебор параметров, окна оценки, запрошенные метрики и отметку о том, видел ли результат агент или исследователь. Краткий журнал полезнее ярлыка «вне выборки», который только звучит убедительно.
Перед оценкой чётко сформулируйте итоговый вопрос: какой кандидат, какой рыночный набор инструментов, какой бенчмарк, какие издержки и какие метрики? Если после получения результата ответ меняется, считайте следующий запуск исследовательским и оставьте новые данные для следующей итоговой проверки.
Чему ещё можно научиться на загрязнённой отложенной выборке?
Она не бесполезна. По ней можно увидеть, как стратегия вела себя в этот период, и разобраться в причинах неудачи. Просто не представляйте её оценку как независимое подтверждение. Используйте её как свидетельство для разработки, зафиксируйте следующий вариант и оцените его на действительно будущем периоде бумажной торговли, применяя те же допущения об учёте и исполнении.
В рабочем процессе с агентами легко потерять счёт экспериментам: один запрос может породить десятки запусков, прежде чем кто-нибудь это заметит. Защита здесь процедурная. Ограничьте доступные агенту результаты, записывайте каждый эксперимент и оставьте одну оценку, результат которой не сможет повлиять на проверяемого кандидата.
← Все статьи


