Walk-forward и Out-of-Sample: где стратегия перестаёт быть устойчивой

Стратегию легко улучшать на том же участке истории, на котором оценивается результат. Можно менять параметры, фильтры и правила выхода, пока кривая не станет убедительной. Но такой тест уже не отвечает на вопрос, как стратегия ведёт себя на незнакомых данных. Он показывает, насколько удачно мы описали известное прошлое.
Out-of-sample проверка отделяет настройку от оценки. Walk-forward повторяет этот принцип последовательно во времени: параметры выбираются на одном окне, затем проверяются на следующем, после чего оба окна сдвигаются вперёд.
Цель не в том, чтобы получить ещё одну красивую итоговую цифру. Полезный результат — увидеть, на каком сегменте и при каких условиях поведение перестало быть устойчивым.
Почему одного train/test разделения мало
Простой эксперимент делит историю на две части:
- in-sample участок используется для разработки и настройки;
- out-of-sample участок остаётся закрытым до финальной проверки.
Это лучше, чем оценка на тех же данных, где подбирались параметры. Но один раздел задаёт только одну границу и один набор рыночных условий. Стратегия может случайно хорошо пройти выбранный тестовый период или, наоборот, попасть в режим, для которого она не предназначена.
Walk-forward создаёт несколько последовательных проверок. Каждое out-of-sample окно следует после доступного на тот момент обучающего окна. Результаты тестовых сегментов затем соединяются в отдельную OOS-историю.
Такой дизайн ближе к реальному исследовательскому процессу: в каждом периоде разрешено использовать только прошлую информацию.
Rolling и anchored окна
У walk-forward есть две распространённые схемы.
Rolling window. Обучающее окно имеет фиксированную длину. Когда эксперимент движется вперёд, самые старые данные исключаются. Такой вариант быстрее реагирует на изменение рынка, но использует меньше истории.
Anchored window. Начало обучающего периода остаётся на месте, а конец постепенно сдвигается. Объём данных растёт. Схема сохраняет долгую историю, но старые режимы продолжают влиять на подбор параметров.
Нет универсально правильного варианта. Выбор зависит от гипотезы о том, насколько быстро меняется исследуемый эффект. Этот выбор нужно сделать до просмотра OOS-результатов и сохранить вместе с экспериментом.
Также заранее фиксируются:
- длина обучающего и тестового окна;
- шаг сдвига;
- набор допустимых параметров;
- правило выбора параметров на in-sample;
- комиссии, funding и модель проскальзывания;
- инструменты и доступная на дату окна история.
Если менять эти правила после каждого слабого сегмента, out-of-sample постепенно превращается в новый in-sample.
Как не пропустить утечку будущего
Временной порядок сам по себе не гарантирует честный тест. Будущая информация может попасть в расчёт через подготовку данных или выбор модели.
Проверить стоит как минимум следующее:
- индикатор использует только значения, доступные к моменту решения;
- нормализация и пороги рассчитываются внутри обучающего окна, а не по всей истории;
- состав инструментов известен на соответствующую дату, без survivorship bias;
- funding, комиссии и спецификации контрактов относятся к тестируемому периоду;
- решение на закрытии свечи не исполняется по цене, которую можно было узнать только после закрытия;
- перекрывающиеся позиции или метки не переносят информацию через границу окна;
- финальный OOS-сегмент не используется для повторного подбора.
Если стратегия торгует редко, короткое тестовое окно может содержать слишком мало сделок. Увеличение окна даёт больше наблюдений, но смешивает больше рыночных режимов. Этот компромисс нужно объяснить, а не скрывать одной метрикой.
Что сравнивать между OOS-сегментами
Сводная доходность не показывает, где возникла нестабильность. Полезнее смотреть на последовательность сегментов.
Для каждого окна можно сохранить:
- даты in-sample и out-of-sample;
- выбранный набор параметров;
- число сделок;
- результат после учтённых издержек;
- максимальную просадку;
- долю прибыльных и убыточных сделок;
- экспозицию и среднюю длительность позиции;
- причины пропущенных или отклонённых сделок в модели.
Затем задаются более важные вопросы.
Параметры плавно меняются или скачут между крайними значениями? Результат держится в нескольких окнах или зависит от одного? Сохраняется ли поведение после комиссий и funding? Достаточно ли сделок, чтобы трактовать сегмент? Совпадает ли провал с изменением волатильности, ликвидности или рыночного режима?
Walk-forward не обязан давать одинаковую прибыль в каждом окне. Но стратегия, которая работает только при одном точном наборе параметров и разваливается от небольшого сдвига, требует дополнительной проверки.
Признаки неустойчивого результата
О проблеме могут говорить:
- сильный in-sample результат и последовательные слабые OOS-сегменты;
- итог, который формируется одним коротким окном;
- резкие скачки выбранных параметров;
- исчезновение результата после реалистичных издержек;
- слишком мало сделок в большинстве окон;
- постоянная смена правил эксперимента после просмотра OOS;
- отсутствие единого журнала данных, кода и настроек.
Ни один признак по отдельности не доказывает переобучение. Он показывает, где нужно остановиться и проверить гипотезу, данные и процесс выбора параметров.
Практический процесс в XTester
Публичная страница XTester относит walk-forward, out-of-sample и анализ метрик к методике проверки стратегии. Конкретный уровень автоматизации зависит от установленной версии, поэтому эксперимент лучше описывать независимо от интерфейса.
Рабочая последовательность:
- Зафиксировать гипотезу и правила стратегии до оптимизации.
- Выбрать рынок, период, данные и модель издержек.
- Отделить финальный участок, который не будет использоваться при разработке.
- Задать схему окон и правило выбора параметров.
- Провести последовательные прогоны, не используя будущие сегменты.
- Сохранить код, параметры и результаты каждого окна.
- Собрать только OOS-сегменты в отдельную последовательность.
- Проверить устойчивость по окнам, а не только итоговую сумму.
- Повторить эксперимент после изменения гипотезы как новую версию, не перезаписывая старую.
Общая методика подготовки данных и учёта издержек разобрана на странице «Как провести бэктест крипто-стратегии и не переоценить результат». Walk-forward — следующий уровень проверки, а не замена корректному симулятору.
Чего walk-forward не доказывает
Последовательная OOS-проверка снижает риск самообмана, но не устраняет его полностью. Результат всё ещё зависит от качества данных, набора исследованных вариантов, модели исполнения и выбранных границ окон. Если команда перебрала сотни гипотез и показывает только одну, прошедшую проверку, selection bias остаётся.
Даже устойчивый исторический результат не гарантирует будущую доходность. После исследования остаются реальные комиссии, задержки, ликвидность, ограничения биржи и изменение самого рынка.
Хороший walk-forward эксперимент ценен не обещанием прибыли, а прозрачностью. Он показывает, где и когда стратегия перестала соответствовать своей гипотезе, и оставляет достаточно данных, чтобы другой исследователь мог повторить проверку.
Материал носит образовательный характер и не является инвестиционной рекомендацией. Любой бэктест моделирует прошлые условия и не гарантирует будущий результат.
Материал носит информационный характер и не является инвестиционной рекомендацией. Результаты бэктеста не гарантируют будущую доходность.


