Walk-forward: хронология, доступность меток и оценка правил
Walk-forward последовательно выбирает параметры на более ранних данных и оценивает их на следующем участке. Проверяется процедура обновления, а не только последний набор параметров. До просмотра оценочных результатов определите календарь и правила выбора. Общие обучающие данные и временная зависимость означают, что окна не становятся автоматически независимыми; выбор удобного разбиения после просмотра результатов тоже может подгонять процедуру.
Опишите обновление до проверки
Задайте длину обучения и оценки, частоту обновления, набор кандидатов, критерий, разрешение ничьей и действие, если никто не подходит. Максимизация прибыли — выбранный критерий, а не нейтральное правило по умолчанию. Учитывайте расходы, экспозицию и объем наблюдений одинаково для всех вариантов.
Перебор альтернатив может выбрать случайный исторический шум. Однако доля выигрышей выше 75% на 200 сделках или profit factor выше 3.5 сами по себе не диагностируют переобучение. Проверяйте данные, расходы и историю выбора: практические вопросы разобраны в материале о корректном бэктесте.
Зазор не помогает, если метка использует тестовый период
Прокрутите схему вправо, чтобы увидеть ее целиком →
В исходной условной схеме метка примера t использует закрытия следующих двух периодов: t + 1 и t + 2. Тест начинается с периода 10. Обучение модели выполняется после закрытия 9 и до начала 10. Проверяйте не только индекс обучающего примера, но и последнее требуемое для его метки наблюдение.
Прокрутите таблицу вправо, чтобы увидеть все столбцы →
| Зазор gap | Последний обучающий пример | Нужные закрытия | Доступно после закрытия 9? |
|---|---|---|---|
| 1 | 8 | 9 и 10 | Нет: закрытие 10 еще неизвестно. |
| 2 | 7 | 8 и 9 | Да, при заданных условиях. |
Здесь равномерные периоды, одинаковое индексирование и метки ровно из двух будущих закрытий. Gap исключает последние обучающие примеры до теста. Смена горизонта или построения метки требует новой проверки; число 2 не является универсальным рецептом. TimeSeriesSplit в документации scikit-learn (на английском) определяет исключение примеров, но сам не исследует все данные, из которых вы построили метку.
Сдвиг окна по шагам
Выберите окна до настройки. В учебном календаре можно обучиться на 2018–2021 годах, заморозить параметры и оценить 2022; затем обучиться на 2019–2022 и оценить 2023. Это иллюстрация разбиения, не отчет о реальной доходности этих лет.
Обучающие окна пересекаются, а оценочные участки соседствуют во времени. Соберите OOS-сделки хронологически и рассмотрите неопределенность. Если календарь и критерии менялись по результатам ранних проверок, оставьте для окончательной оценки новый неиспользованный участок. Ранее оцененный 2022 год может стать частью обучения следующего шага, когда данные исторически доступны; это не разрешает пересчитать прежний выбор с будущим знанием.
Скользящее и расширяющееся обучение
Скользящее окно сохраняет длину и отбрасывает старые наблюдения. Расширяющееся, или anchored, сохраняет начало и добавляет новые. Для иллюстрации скользящие обучающие блоки: 2018–2021, 2019–2022, далее 2020–2023; расширяющиеся: 2018–2021, 2018–2022, далее 2018–2023. Для оценки после третьего указанного обучения потребовался бы 2024 год: в наборе, заканчивающемся 2023-м, такого полного OOS нет.
Короткая память исключает старые условия, но уменьшает выборку. Длинная сохраняет больше наблюдений, возможно из других условий. Ни один вариант не гарантирует быструю адаптацию или устойчивые параметры. Нет универсального назначения скользящего окна трендовой стратегии, расширяющегося — возврату к среднему; длина истории пять или десять лет сама не выбирает лучший вариант.
Нормирование, отбор признаков и заполнение пропусков также обучаются только на разрешенных обучающих данных. Метка может использовать будущие закрытия при старом индексе примера. Равномерность наблюдений позволяет сопоставлять длительности окон; для нерегулярных событий нужна отдельная проверка календаря. Одна настройка gap не устраняет все механизмы утечки информации.
Новый условный пример: старый индекс, но еще недоступная метка
Снова обучаемся после закрытия 9 и до периода 10. Gap 2 оставляет индексы не позднее 7, но теперь горизонты меток и задержки выдачи различаются. Все периоды и задержки ниже вымышлены. «Доступно после закрытия j» означает, что значение можно использовать начиная с этого указанного момента; это не календарь реальных публикаций.
Прокрутите таблицу вправо, чтобы увидеть все столбцы →
| Пример t | Последнее нужное закрытие | Дополнительная задержка | Первый момент доступности | Допустим при обучении после 9? |
|---|---|---|---|---|
| 4 | 5 | 0 периодов | После закрытия 5 | Да |
| 5 | 6 | 4 периода | После закрытия 10 | Нет |
| 6 | 11 | 0 периодов | После закрытия 11 | Нет |
| 7 | 9 | 0 периодов | После закрытия 9 | Да |
Все четыре индекса проходят условие t ≤ 7, однако две метки еще недоступны. В строке 5 даже нужные цены уже исторические, но назначенная задержка выдачи не завершилась. В строке 6 длинный горизонт требует будущего закрытия. Нельзя исправить это утверждением «все строки раньше теста». Для каждого примера проверяйте момент доступности метки и признаков. Неизвестное время не считайте автоматически разрешенным; правила исключения и исходные отметки времени сохраняйте.
WFE: соглашение о расчете и ограничения
В описании TradeStation Walk-Forward Efficiency сравниваются приведенные к годовому масштабу доходности OOS и IS при согласованных определениях. В своей иллюстрации 10% / 20% = 0.5, то есть 50%. Нулевой IS в знаменателе делает отношение неопределенным. При −5% / −10% тоже получится 0.5, хотя оба результата отрицательны.
Показатель выше единицы не доказывает использование будущей информации. TradeStation описывает 50% как практический ориентир, а не всеобщее разрешение запускать реальный капитал. Отдельно проверяйте чистые результаты, просадки, концентрацию, покрытие и чувствительность. Низкое WFE или изменение параметра более чем на 50% сами не устанавливают подгонку.
Условное сравнение и выбор при ничьей
Для назначенных годовых доходностей 12% OOS и 30% IS отношение равно 0.4; для 20% и 25% — 0.8. Эти частные вычисления не устанавливают устойчивое преимущество. При данных за 2018–2023, четырех годах обучения, одном оценки и ежегодном сдвиге доступны два полных OOS-блока: 2022 и 2023.
Рассмотрим отдельную вымышленную ничью. На обоих шагах A и B имеют одинаковый калибровочный результат; записанное до теста правило выбирает A. Поздние чистые денежные итоги без реинвестирования: A дает +5 и −2, B — −1 и +6. Замороженное правило получает +3. Выбор победителя после каждого результата дал бы +5 + 6 = +11; выбор B после просмотра всей истории дал бы +5. Это три разные процедуры, а не три способа честно пересчитать один замороженный результат.
До каждого оценочного участка сохраняйте весь набор равных кандидатов и выбранный ID. Новое правило, придуманное по OOS, получает новую версию и последующую отдельную оценку. Даже корректная хронология не гарантирует будущую прибыль: остаются предпосылки данных, расходов и исполнения.
Чего walk-forward не делает автоматически
Определите судьбу открытых позиций на границе обновления: закрытие с расходами либо дальнейшее сопровождение по явному правилу. Нельзя стирать открытые потери и начинать новый баланс в каждом окне. Объединяйте только оценочные результаты, не добавляя к ним прибыль калибровки, и разрешайте пересекающуюся экспозицию без двойного счета.
Просадку полного периода считают по объединенной кривой. Отдельная арифметическая проверка: путь 100 → 90 | 95 → 85 имеет общую максимальную просадку 15% от начального максимума 100. Первое окно дает 10%, второе со стартом 90 и максимумом 95 — около 10.5263%. Среднее этих двух просадок около 10.2632% не равно общей просадке. Числа полностью условные; черта обозначает границу отчета, а не пополнение счета.
Сохраняйте периоды без сделок и концентрацию результата в отдельных окнах. Сравнивайте процедуру обновления с заранее выбранным неизменяемым вариантом на тех же данных, с теми же расходами и объемом.
Нетронутый исторический участок, последующее наблюдение на демо и Монте-Карло (на английском) отвечают на разные вопросы. Перестановка меняет порядок заданных исходов, но не моделирует автоматически новые режимы и расходы. Режим Forward тестера MT5 проверяет выбранные настройки на более поздней части исторического интервала; сам по себе он не является многократным walk-forward или наблюдением будущей демо-торговли.
Ни WFE выше 0.5, ни три–шесть месяцев демо, ни 95-й процентиль просадки ниже 25% не образуют универсального «допуска» к реальным деньгам. Запишите все испытанные календари и критерии. Дополнительный контекст: проверка торгового преимущества (на английском) и практикум трейдера (на английском).
Следующая проверка по шагам
- Выберите длины окон по задаче и доступной истории до просмотра оценки. Пять лет дают одну полную пару «четыре обучения плюс один оценки»; пять ежегодных OOS требуют девяти лет. Независимость наблюдений от этого не возникает.
- Для исходных 2018–2023 сохраните первый выбор по 2018–2021 и результаты 2022, затем выбор по 2019–2022 и результаты 2023. Если нужно больше окон, явно расширьте данные.
- Запишите кандидатов, критерий, правило ничьей, доступность каждой метки, выбранную версию и последующие чистые результаты без настройки по их исходу.
- Считайте WFE только при осмысленном знаменателе и согласованной годовой доходности; дополнительно изучайте исходные результаты и общую кривую капитала.
- Изменение дизайна отделяйте от окончательной нетронутой оценки. Участок остается неиспользованным лишь пока его результат не направляет дальнейший выбор.
Следующий шаг
Далее исследуйте альтернативные последовательности и влияние правила остановки на результат модели.
Монте-Карло: последовательности и правило остановки (на английском)
Проверьте понимание
Тест начинается в периоде 10, обучение — после закрытия 9 и до начала 10. Метке t нужны закрытия t + 1 и t + 2. Какой последний пример имеет готовую метку?
Ответ и объяснения без JavaScript
Правильный ответ: Пример 7: его метка заканчивается на закрытии 9.
Пример 8: период 8 уже закрыт.
Его метке нужно и закрытие 10, неизвестное до начала теста.
Пример 9: он стоит непосредственно перед тестом.
Метке 9 нужны закрытия 10 и 11 — после обучения.
Пример 7: его метка заканчивается на закрытии 9.
После закрытия 9 известны оба нужных закрытия 8 и 9. Ответ относится только к заданному двухпериодному горизонту.
Вопросы и ответы
Чем walk-forward отличается от одного IS/OOS-разбиения?
Одно разбиение оценивает выбранную настройку на одном отложенном участке и может дать много показателей. Walk-forward повторяет заранее заданную процедуру обновления и оценки. В календаре 2018–2023 с четырьмя годами обучения доступны два полных годовых OOS: 2022 и 2023. Пять таких оценок требуют девяти лет. Новые окна не устраняют автоматически зависимость и случайность.
Как интерпретировать WFE?
Задайте соглашение и сравните согласованные доходности, приведенные к годовому масштабу. 10%/20%=0.5, но −5%/−10% тоже 0.5 при потерях. С нулевым IS отношение неопределенно. Ориентир TradeStation 50% не является универсальным разрешением на реальный капитал. Проверьте исходные итоги, выбор, данные и общую просадку отдельно.
Когда выбирать скользящий или расширяющийся вариант?
Запишите выбор до оценки. Скользящее окно сохраняет длину; расширяющееся — начало. Короткая память убирает старые условия, но уменьшает выборку; длинная сохраняет больше потенциально разных наблюдений. Ни одна не гарантирует адаптацию или стабильность. Сравнение календарей по OOS само является выбором; универсального правила пяти или десяти лет нет.
Гарантирует ли хороший walk-forward будущую прибыль?
Нет. Проверяйте расходы, исполнения, экспозицию, доступность данных и историю выбора. Исторический Forward MT5 отличается от наблюдения будущей демо-торговли. Симуляция зависит от своей модели. WFE выше 0.5, три–шесть месяцев демо и 95-й процентиль просадки ниже 25% не образуют универсальный допуск к реальным деньгам.
Источники и пределы применения
- MetaTrader 5: обзор тестера (на английском)
Справочная ссылка исходной библиографии сохранена. Полная публикация, пользовательский код либо коллекция здесь не прочитаны и не используются как доказательство эффективности или нынешних прав розничного счета. Даты проверки и цитаты не приписываются.
- MetaQuotes: оптимизация и исторический Forward (на английском)
Прочитаны разделение исторического интервала и повторная проверка выбранных настроек на позднем участке. Это не автоматически многократный walk-forward или будущее демо-наблюдение.
- Исходная справочная ссылка (на английском)
Справочная ссылка исходной библиографии сохранена. Полная публикация, пользовательский код либо коллекция здесь не прочитаны и не используются как доказательство эффективности или нынешних прав розничного счета. Даты проверки и цитаты не приписываются.
- Исходная справочная ссылка (на английском)
Справочная ссылка исходной библиографии сохранена. Полная публикация, пользовательский код либо коллекция здесь не прочитаны и не используются как доказательство эффективности или нынешних прав розничного счета. Даты проверки и цитаты не приписываются.
- TradeStation: сводка walk-forward (на английском)
Прочитана содержательная сводка сравнения годовых IS/OOS и практического ориентира 50%. Это условная конвенция инструмента, не универсальный допуск к реальному капиталу.
- scikit-learn: TimeSeriesSplit (на английском)
Прочитаны хронологические разбиения, расширение обучения, равномерность периодов, параметры gap и пример. Разделение индексов не проверяет автоматически доступность исходных меток.
- scikit-learn: утечка данных (на английском)
Прочитаны разделы утечки и отдельного обучения преобразований, в том числе нормирования и отбора признаков. Нет нового запуска всей модели или оценки рынка.
Учебные расчеты не определяют юрисдикцию читателя по языку. Документация платформ и библиотек описывает названный инструмент, не универсальное правило всех счетов. Все цены, суммы, курсы, вероятности, задержки и последовательности примеров вымышлены. Условные вероятности моделей не являются рыночными частотами; нет гарантии прибыли, предельной потери или разрешения на реальные сделки. Торговые приказы не отправлялись.