Риск и стратегии · Продвинутый уровень · Чтение: 8 мин

Скользящая проверка: не допускайте будущие данные в обучение

Проверяйте по хронологии всю процедуру принятия решений — от подготовки данных до переобучения, — а не только правило, отшлифованное на известной истории.

Скользящая проверка: не допускайте будущие данные в обучение — Авторская учебная иллюстрация. Без текущих котировок и заявлений о доходности.
Авторская учебная иллюстрация. Без текущих котировок и заявлений о доходности.

Проверяйте процесс, а не окончательную формулу

При последовательной проверке, или walk-forward validation, модель обучают на данных, доступных к выбранной исторической дате. Затем фиксируют настройки и оценивают результат на следующем отрезке, которого модель ещё не видела. После этого границу обучения сдвигают вперёд и повторяют процедуру. Это имитирует исследовательский процесс без знания будущего. Само по себе это не делает стратегию прибыльной и не устраняет все смещения.

Запишите, что разрешено менять на каждом шаге. Параметры сигнала, выбор активов, оценки волатильности и допущения об издержках — части процедуры. Если исследователь вручную меняет их после просмотра тестового периода, процедура изменилась и этот период уже не является чистой проверкой. Заранее заданный график переобучения даёт больше информации, чем кривая капитала, собранная из удачных ручных перенастроек.

Выберите между скользящим и расширяющимся окном

Расширяющееся окно сохраняет все предыдущие наблюдения по мере продвижения времени. Оно может стабилизировать оценки, но также удерживает данные об устаревших рыночных условиях. Скользящее окно использует фиксированный недавний отрезок, облегчая адаптацию, но усиливая выборочный шум. Ни один подход не универсально лучше; компромисс зависит от того, какая экономическая связь должна сохраняться.

Обоснуйте длину окон до сравнения результатов, исходя из горизонта сигнала и количества доступных наблюдений. Перебор десятков длин с выбором лучшей лишь переносит оптимизацию на более высокий уровень. Записывайте число наблюдений, различных рыночных эпизодов и фактических сделок в каждом тестовом интервале. Долгий календарный период с очень небольшим числом независимых решений может давать меньше доказательств, чем кажется по его длительности.

Одинаковое число строк не обязательно означает одинаковую длительность теста. Сто наблюдений сделок могут охватывать час на активном рынке и неделю на редкоторгуемом инструменте. В документации TimeSeriesSplit сопоставимость длительности блоков связана с равномерным шагом наблюдений. Для нерегулярных данных задавайте календарные границы явно и отдельно показывайте длительность, число решений и время нахождения в позиции.

Утечка скрывается в подготовке данных

Хронологическое разделение необходимо, но недостаточно. Стандартизация признака по среднему всей выборки позволяет будущим наблюдениям влиять на прошлые входные данные. Отбор выживших бумаг, использование пересмотренных макроэкономических показателей или включение отчёта до его публикации создают другие формы знания задним числом. Оценивайте параметры преобразований только по обучающим данным, а для каждого исходного значения проверяйте, было ли оно доступно на дату решения.

Проверьте и целевые переменные — значения, которые модель учится предсказывать. Если обучающий пример предсказывает доходность за следующие пять дней, его исход может захватывать начало тестового периода. Исключайте из обучения наблюдения, для которых предсказываемый исход ещё не был известен к моменту обучения, в том числе когда он захватывает тестовый период. Программа может вставить промежуток между обучающими и тестовыми индексами, но осмысленный выбор промежутка требует понимания горизонтов меток, задержек публикации и зависимостей конкретного набора данных.

Временной зазор между обучением и тестом — не универсальная защита от утечки. Он не исправит признак, рассчитанный по будущему составу индекса, и не восстановит первоначальную версию пересмотренного показателя. В TimeSeriesSplit параметр gap задаёт число пропущенных наблюдений, а не календарных дней. Поэтому проверять нужно не только расстояние между индексами строк, но и время, когда стали известны признаки и целевые исходы.

Подбирайте параметры внутри обучения, а оценивайте на следующем периоде

Подбор параметров должен использовать только информацию внутри обучающего периода, возможно с помощью внутренней хронологической валидации. Затем внешний тестовый интервал оценивает выбранную процедуру. Такая вложенность отделяет выбор модели от измерения качества этого выбора. Расчётов становится больше, зато проверка не использует ту же информацию, на которой выбирали параметры.

Объединяйте доходности последовательных тестовых периодов в их реальном хронологическом порядке, включая периоды без позиции. Применяйте комиссии и предположения об исполнении единообразно. Не усредняйте привлекательные коэффициенты отдельных блоков без проверки их экономического смысла: иначе короткий спокойный интервал может получить ту же кажущуюся значимость, что и длинный волатильный. Наряду с общим результатом показывайте разброс между интервалами.

Особого внимания требуют открытые позиции на границе тестовых блоков. Если стратегия переносит их дальше, следующий блок должен унаследовать позиции, денежный остаток и обязательства. Если по правилам всё закрывается перед переобучением, расходы на это закрытие тоже входят в результат. Нельзя незаметно обнулять просадку или начинать каждый квартал с полного стартового капитала, а затем представлять склеенный график как историю одного счёта.

Слабый результат тоже помогает сделать вывод

Результат последовательного тестирования, который ухудшается после затрат, зависит от одного интервала или резко меняется при небольшой корректировке времени, требует исследования, а не косметического ремонта. Отделяйте дефект данных или реализации от стратегии, не имеющей подтверждения. Исправление настоящей ошибки может оправдать новый запуск, но прежнее знакомство с результатами должно оставаться частью истории исследования.

Если дальнейшая оценка оправданна, зафиксируйте окончательные правила и перейдите к учебной торговле на действительно новых данных. Заранее определите собираемые данные и то, что опровергнет допущения. Цель — не продолжать оптимизацию до появления привлекательной линии, а установить, выдерживает ли дисциплинированная, реализуемая процедура ситуации, в которых она могла бы провалиться.

КРАТКАЯ ПРОВЕРКА

Усвоили основную мысль?

Какая операция использует информацию из будущего?

ДОПОЛНИТЕЛЬНОЕ ЧТЕНИЕ · ПЕРВОИСТОЧНИКИ

scikit-learn · Документация TimeSeriesSplit ↗
Образовательный материал общего характера, а не торговая рекомендация. Примеры упрощают реальные рынки. Прежде чем использовать продукт, изучите точные условия договора, расходы и применимые правила.
Далее: риск портфеля — что скрывают веса →