Walk-forward Analysis проверяет процедуру выбора в хронологическом порядке. Правила выбирают или настраивают по доступному прошлому, а оценивают на следующих данных, не участвовавших в этом выборе.
У Петра несколько вариантов торгового правила. Он хочет использовать тот, который лучше работал в недавнем прошлом. Walk-forward Analysis позволяет пройти эту идею по шагам: выбрать по известной истории, записать следующий результат и выбрать снова. QuantConnect описывает такое периодическое обновление. Проверяется и способ выбора, а не только неизменный вариант. Поэтому кандидаты, критерий и срок нового пересмотра должны быть определены заранее. [1]
Если Пётр выбрал вариант за его прошлую прибыль, эта же прибыль не подтверждает выбор независимо. QuantConnect объясняет, что такие данные уже относятся к разработке. Честный вопрос: как вариант сработал после выбора? Текущий тест не должен выбирать собственного победителя. Когда период завершён и результаты доступны, установленная заранее процедура может использовать их для более позднего выбора. Это не переписывает ранее записанное решение. [2]
Окно выбора — участок истории, используемый сейчас. Скользящее окно сохраняет длину и отбрасывает старые данные; расширяющееся сохраняет начало и добавляет наблюдения. TimeSeriesSplit из scikit-learn по умолчанию расширяет обучающую выборку, но позволяет ограничить её размер. Длину и частоту обновления определите до теста. Для сопоставимых показателей документация требует равномерных интервалов между наблюдениями; при нерегулярных данных проверяйте и фактическую календарную длительность. [3]
Представьте, что результат последнего обучающего наблюдения завершится лишь во время следующего теста. В момент выбора он ещё неизвестен. Сортировка таблицы по времени это не исправляет. Параметр gap в TimeSeriesSplit позволяет исключить наблюдения в конце обучения. Нужный промежуток определяется доступностью входов и завершением результатов, а не самой красивой кривой. Даже подходящий промежуток не доказывает независимость соседних периодов и не устраняет все искажения. [3]
Утечка не обязательно скрыта в торговом правиле. Среднее для изменения масштаба значений могло быть рассчитано по всему файлу, включая будущий тест. scikit-learn предупреждает о той же проблеме при заполнении пропусков или выборе входных признаков. Настройки преобразований определяют только по обучающей части, затем применяют к тестовой. Повторяйте разделение на каждом шаге; поздний разрез уже преобразованной таблицы не отменит утечку. Сохраняйте также версию данных и время их доступности. [4]
После отдельных тестов результаты нужно правильно объединить. QuantConnect описывает модели цены и объёма исполнения, способные учитывать спред и Slippage. Затем нашей оценке нужен последовательный учёт: не добавлять прибыль разработки на тестовый счёт и не считать пересекающиеся тесты повторно без объяснения. При смене варианта укажите, что происходит с открытыми позициями, капиталом и расходами перехода. Пример ниже упрощает ситуацию: каждый период заканчивается без позиции. [5]
Пётр может менять окна, цели или кандидатов до получения красивого теста. Тогда тестовый ряд уже использован для разработки. Bailey и соавторы исследуют случайные успехи при многократном поиске на одних данных. Записывайте все испытанные процедуры и отдельно обозначайте дальнейшую проверку на ещё не использованной истории. Само продвижение во времени не является статистической гарантией или оценкой вероятности переобучения — чрезмерной подгонки к прошлым данным. [6]
Сохраните границы окон, кандидатов, оценки выбора, фактические решения и следующие результаты после расходов. Дополните сумму убытками, числом наблюдений и сравнением на равных условиях. Американская NFA напоминает, что гипотетические результаты не отражают все проблемы ликвидности, проскальзывания и поведения при реальных потерях; её рекламные правила относятся к определённым членам. Малый убыточный пример не опровергает всю методику. Положительная сумма также не доказывает будущего преимущества. [7]
Прошлый победитель может проиграть дальше
Для полной картины прочитайте эту статью вместе с Backtesting, Overfitting, Look-ahead Bias, Trading Plan, Trading Journal. На эту статью также ссылаются Backtesting, Overfitting, Look-ahead Bias, Survivorship Bias.
01Можно ли позже использовать прежний тест для выбора?+
Да, если период завершился, нужные данные доступны и заранее определённая процедура это разрешает. Нельзя задним числом менять вариант или результат, записанные для того теста.
02Предотвращает ли Walk-forward Analysis переобучение?+
Не сам по себе. Окна, кандидатов или всю процедуру можно многократно подгонять к тем же результатам. Записывайте попытки, проверяйте утечки информации и отличайте дальнейшую разработку от действительно новой проверки.