Walk-forward анализ: срезы, доля обучения и отбор
Walk-forward делит период бэктеста на срезы, выбирает лучшую конфигурацию параметров на обучающей части каждого среза, оценивает её на тестовой части, которой она не видела, и показывает сцепленный результат вне выборки с показателем эффективности и дефлированным Sharpe.
Senzoukria · Документация · Обновлено: сентябрь 2026
Где найти
- Где
- Реплей → «Подготовка» → «Автоматический бэктест» → флажок «Walk-forward — найти лучшую конфигурацию»
- Значения по умолчанию
- Срезов 4, доля обучения 0,7, критерий отбора SQN
- Комбинации
- Максимум 400; чтобы конфигурацию можно было выбрать, ей нужно минимум 10 сделок
- Минимум данных
- Каждому срезу нужно не менее 100 обучающих баров и 50 тестовых
Что это делает
Протестировать тридцать конфигураций и оставить лучшую — значит измерить везение. Walk-forward отделяет выбор от измерения: параметры выбираются на начале каждого среза, а затем оцениваются на его конце, который в выборе не участвовал. Показанный результат — это сцепка тех невиданных кусков, то есть то, что стратегия действительно дала бы.
Реализация (lib/replay/autoBacktest.ts, runWalkForward): бары режутся на равные срезы; внутри среза первые trainRatio баров — обучающее окно, остальное — тестовое. Каждая комбинация осей перебора прогоняется на обучающем окне, оценивается критерием отбора, и лучшая один раз прогоняется на тестовом. Сделки вне выборки по всем срезам сцепляются, и по ним считается общая статистика. Прогресс читается как «срез n · обучение», затем «срез n · тест».
Настройки
| Настройка | По умолчанию | Что меняет |
|---|---|---|
| Переключатель walk-forward | Выкл. | Показывает настройки ниже и меняет кнопку запуска на «Запустить walk-forward». |
| Срезы | 4 | Число фолдов, от 2 до 12. Больше срезов — короче обучающие окна; прогон отказывается от разбиения, оставляющего меньше 100 обучающих или 50 тестовых баров. |
| Доля обучения | 0,7 | Доля каждого среза, по которой выбираются параметры: от 0,5 до 0,9 с шагом 0,05. |
| Критерий отбора | SQN (качество, учитывает число сделок) | Также профит-фактор, матожидание на сделку или Sharpe на сделку. Конфигурация менее чем с 10 сделками получает минус бесконечность. |
| Параметры для перебора | Оси, прочитанные из params скрипта, иначе lookback 10, 20, 40 / stopTicks 20, 40, 80 / targetTicks 40, 80, 160 | Значения через запятую по каждой оси; «Исследовать каждый читаемый параметр» задаёт до пяти осей вокруг значений скрипта по умолчанию; «Перечитать скрипт» их восстанавливает. |
| Строка комбинаций | — | «{n} комбинаций × {folds} срезов — около {dur}» или «Слишком много комбинаций (максимум 400)». |
Как читать результат
- Эффективность walk-forward = среднее матожидание вне выборки, делённое на среднее матожидание внутри выборки по срезам. При 70 % и выше: «стратегия держится вне собственных данных»; от 40 %: «она теряет добрую часть преимущества вне выборки»; ниже: «большая часть результата была переобучением». Ниже 50 % строка подсвечивается как плохая.
- Дефлированный Sharpe: Sharpe на сделку вне выборки против порога, который один только отбор дал бы при таком числе испытанных конфигураций. Вердикты: устойчиво (переживает поправку), хрупко (число конфигураций объясняет добрую его часть), шум (неотличимо от лучшего в случайной выборке).
- Таблица фолдов: срез, обучение, настоящий тест, конфигурация — чтобы увидеть, прыгает ли выбранная конфигурация от среза к срезу.
- Графики: эквити внутри выборки против эквити вне выборки (пунктир — та кривая, которую видел оптимизатор) и устойчивость параметров, сравнивающая выбранную конфигурацию с её соседями по сетке (плато, склон или пик).
- Именно общая статистика вне выборки записывается в панель результатов.
Ограничения и подводные камни
Каждая лишняя комбинация — это ещё одна попытка на тех же данных; с некоторого момента вы измеряете везение переобучения, поэтому потолок равен 400, а ассистенту предписано держать перебор ниже 100. Перебор пяти осей на одном месяце 15-минутных баров даст победителя, который ничего не значит.
Срезы режутся по числу баров, а не по календарю; срез может прийтись на смену режима. Перебор прогоняет каждую комбинацию как полный бэктест, поэтому время растёт линейно с произведением комбинаций на срезы, а минутные бары на длинных периодах занимают часы. Walk-forward использует те же правила исполнения и издержки, что и обычный бэктест, и никогда не выставляет ордеров.
Связанные страницы
- Автоматический бэктест
- Ассистент бэктеста (ИИ)
- Графики результатов
- Как протестировать торговую стратегию
Эта страница на других языках
Частые вопросы
- Что означает эффективность walk-forward в 45 %?
- В среднем матожидание вне выборки составило 45 % от матожидания внутри выборки: стратегия потеряла добрую часть преимущества на данных, которых не видела. Ниже 50 % панель это подсвечивает, а ассистенту предписано прямо сказать, что большая часть результата была подгонкой кривой.
- Почему прогон отвергает моё число срезов?
- В каждом срезе должно остаться не менее 100 обучающих и 50 тестовых баров. При коротком периоде или большом числе срезов это не выполняется; уменьшите число срезов или удлините период.
- По какому критерию отбирать?
- По умолчанию это SQN, потому что он учитывает число сделок. Доступны также профит-фактор, матожидание на сделку и Sharpe на сделку; что бы вы ни выбрали, конфигурация менее чем с 10 сделками не выбирается никогда.