Категория
Доходность
Уровень
Продвинутый
Где применяется
БэктестингРазработка стратегииРабота в MT5

Walk-forward-анализ

Walk-forward-анализ — метод проверки, при котором стратегию заново оптимизируют на одном окне истории, торгуют полученные настройки нетронутыми на следующем окне, затем сдвигают оба окна вперёд и повторяют, а в отчёт берут только нетронутые отрезки.

также: WFA, walk-forward-оптимизация, WFO, скользящий тест вне выборки

Обновлено · Проверено · Проверено: mt5depot research desk

Простыми словами

Настройте правила на одном отрезке истории, торгуйте их нетронутыми на следующем отрезке, затем сдвиньте оба отрезка и повторите. В цифру, которую вы приводите, идут только нетронутые отрезки.

Почему это важно

Одиночный тест вне выборки отвечает на вопрос один раз. Walk-forward задаёт его на каждом шаге, и это единственный способ увидеть, переживает ли преимущество повторную настройку раз за разом, а не пережило ли оно её однажды по удаче. Заодно он повторяет то, что реально делает запускающий советника: берёт параметры из недавнего прошлого и уводит их в будущее, которого никто не видел.

  • Он оценивает процедуру, а не набор настроек. «Перенастроить вот так, затем торговать» — это то, что вы действительно будете делать, поэтому проверять стоит именно это.
  • Он возвращает серию результатов вне выборки вместо одного числа, поэтому один льстивый квартал не может в одиночку нести всё утверждение.
  • Он вскрывает параметры, которые отказываются стоять на месте. Когда каждая перенастройка приходит в новое место, правила следуют за выборкой, а не за рынком.
  • Одно отложенное окно прячет вопрос о рыночном режиме. Два из восьми наших записанных переборов прошли окно после перебора и затем провалили окно перед ним.

Как проверять стратегию с его помощью

Где применяется

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

Как выглядит надёжный результат

  • Заголовочную цифру составляют только отрезки вне выборки, соединённые встык, а показатели на выборке стоят рядом с ними, а не подмешаны в них.
  • Длина обучающего окна, длина тестового окна и шаг зафиксированы до первого прогона, и все три едут вместе с результатом.
  • В описании приведена эффективность вне выборки — результат вне выборки как доля результата на выборке, — а не одна лишь прибыль.
  • Каждый шаг перечисляет параметры, которые он выбрал, чтобы читатель мог судить, насколько далеко они разбредаются.
  • Где-то указано число опробованных конфигураций walk-forward, потому что перебор многих сам по себе является формой подгонки.

Тревожные признаки

  • Одна общая цифра, без разделения на половину внутри выборки и половину вне её.
  • Длины окон, которые выглядят подобранными: странное отношение обучения к тесту, которого никто не объясняет.
  • Параметры, прыгающие при каждой перенастройке: значит, каждая настройка гонится за шумом прошлого окна.
  • Эффективность около 100 % или выше — это гораздо чаще указывает на утечку между окнами, чем на необычайно устойчивую стратегию.
  • Заякоренный и скользящий варианты, приводимые вперемешку, ведь растущее окно и окно постоянной длины отвечают на разные вопросы.

Бэктест против реальной торговли

  • Walk-forward закрывает часть разрыва с реальным счётом, потому что проверяемая процедура и есть та процедура, которую запускают.
  • Риск исполнения он не трогает. Проскальзывание, расширение спреда и задержка целиком остаются вне упражнения.
  • Он не может выдумать режимы, которых история не содержала, поэтому стратегия, пережившая двадцать перенастроек внутри одного спокойного десятилетия, остаётся непроверенной против напряжённого.
  • Ожидайте, что реальные результаты будут ближе к серии вне выборки, чем к показателям на выборке. Цифры на выборке описывают перебор; они не предсказывают ничего.

Рекомендуемый способ проверки

  1. 1В MetaTrader 5 нет скользящего walk-forward. Поле «Форвард» (Forward) на вкладке «Настройки» (Settings) тестера стратегий разрезает интервал один раз — 1/2, 1/3, 1/4 или произвольная дата — и оценивает выжившие проходы на хвосте, показывая их на отдельной вкладке Forward Results. Один прогон покупает один шаг.
  2. 2Серию собирайте руками: повторяйте оптимизацию по разу на шаг, каждый раз сдвигая диапазон дат на длину шага, и сохраняйте форвардную строку каждого прогона. Двадцать отрезков стоят двадцати прогонов, поэтому число шагов решайте до старта.
  3. 3Критерий оптимизации выбирайте до того, как увидите сетку, потому что именно он решает, какой проход MT5 назовёт победителем на каждом шаге. Custom max передаёт это решение вашему OnTester(), когда ни один встроенный критерий не совпадает с тем, как вы судите о прогоне.
  4. 4MT5 всегда отрезает форвардный кусок от конца диапазона, поэтому окно непосредственно перед обучающим периодом никогда не проходит проверку. Прогоните его сами: на нашем собственном наборе это поймало две конструкции, которые форвардная проверка уже пропустила.
  5. 5Записывайте выигравшие параметры шаг за шагом. Вкладка Forward Results выдаёт вам проход, но никогда не траекторию настроек по шагам, — а находка именно в этой траектории.
  6. 6Считайте всё упражнение одним экспериментом. Перезапуск его с новыми длинами окон, пока он не пройдёт, поднимает переподгонку на уровень выше, а не убирает её.

Пример

Один шаг из нашей собственной записанной работы: восемь параметрических переборов в EXP-PARAM-SEARCH-OUTCOMES-001. Шаблон ichimoku перебрал сетку из 12 комбинаций на H1, оставил свой лучший проход на выборке и затем встретил два окна, которых перебор никогда не касался.

Перебранная сетка
12 комбинаций
SL 30-80 x TP 60-250, H1
Профит-фактор на выборке
1,37
Окно после перебора
0,89
Окно перед перебором
0,80
Переборов записано / принято
8 / 0

65 % попадает в ту полосу, которую большинство отчётов называет сильной. Та же настройка всё равно потеряла деньги на обоих невиданных окнах — поэтому один шаг читается как точка данных и никогда как приговор.

Расчёт 0,89 делить на 1,37 = эффективность 65 % на этом шаге; 0,80 делить на 1,37 = 58 % на более раннем окне

Результат Эффективность 65 % — на настройке, которую мы отказались выпускать

Как это читать

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

Диапазон Что означает
Ниже примерно 40 % Перебор в основном подогнался под собственное окно. Небольшое преимущество может уцелеть, но не то, которое рекламируют.
Примерно от 40 % до 60 % Обычное дело, стоит сдвинуться нескольким параметрам. Планируйте по цифре вне выборки, а не по цифре на выборке.
Выше 60 % на одном шаге Обнадёживает, но не приговор. Наш шаг с 65 % всё равно потерял на обоих окнах, которых он не видел.
Выше 60 % на большинстве шагов при устойчивых параметрах Сильно. Перенастройки продолжают работать, и они согласны между собой насчёт настроек.
Около 100 % или выше Подозревайте утечку между окнами, заглядывание вперёд или слишком малое число отрезков, чтобы цифра что-то значила.
  • Считайте отрезки. Четыре отрезка — это байка; двадцать — распределение.
  • Стройте график выбранных параметров по шагам. Оптимум, который бродит, сообщает вам, что он шум.
  • Никогда не смешивайте кривые капитала на выборке и вне выборки в одну: такая смесь наполовину экзамен, наполовину ответы к нему.
  • Проверяйте и окно перед обучающим периодом. Два из восьми наших переборов прошли вперёд и провалились назад.

mt5depot публикует окно данных, модель тестера и число сделок за каждым прогоном, поэтому любое утверждение о результате вне выборки здесь можно сверить с той выборкой, которая его породила.

Частые ошибки

Называть один форвардный прогон MT5 walk-forward-анализом

Поле «Форвард» (Forward) делит интервал один раз и показывает хвост. Это одно заякоренное отложенное окно с аккуратной вкладкой, и на вопрос оно отвечает однократно. Walk-forward требует, чтобы разрез двигался, а в MT5 это значит вести цикл самому: одна оптимизация на шаг, затем сбор форвардных строк в серию.

Подбирать саму конфигурацию walk-forward

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

Читать высокую цифру вне выборки как автоматически хорошую

Наш перебор macd_signal дал от 1,14 до 1,15 на окне после перебора и от 0,74 до 0,77 на окне перед ним. Высокие цифры вне выборки могут означать утечку, благоприятный рыночный режим или слишком малое число отрезков — разберитесь, прежде чем праздновать.

Считать, что walk-forward доказывает устойчивость к невиданным условиям

Он проверяет только те условия, которые содержала история. Двадцать перенастроек внутри одного режима дают двадцать результатов из этого режима, и о следующем режиме это не говорит ничего.

Подробнее

Часто задаваемые вопросы

Как провести walk-forward-анализ в MetaTrader 5?
MT5 даёт вам детали, но не сам цикл. Поставьте «Форвард» (Forward) на вкладке «Настройки» (Settings) тестера стратегий в 1/2, 1/3 или 1/4: тестер оптимизирует переднюю часть вашего диапазона дат и оценивает выжившие проходы на хвосте, перечисляя их на собственной вкладке Forward Results. Это один шаг. Ради серии сдвиньте весь диапазон дат вперёд на длину шага и запустите оптимизацию снова, по разу на отрезок, записывая каждый раз форвардную строку и выигравшие параметры. Двадцать отрезков означают двадцать прогонов.
Какими должны быть длины окон на выборке и вне выборки?
Достаточными, чтобы обучающее окно содержало больше одного рыночного режима, а тестовое окно — достаточно сделок, чтобы хоть что-то значить. Встроенные отношения тестера 1/2, 1/3 и 1/4 — разумные отправные точки, а произвольная форвардная дата даёт более короткий тестовый кусок, когда шаг мал. Правило важнее чисел: выберите отношение до первого прогона, потому что перебрать несколько и опубликовать лучшее — это повторить ровно ту ошибку, ради поимки которой walk-forward и существует.
Устраняет ли walk-forward-анализ переподгонку?
Нет. Он переселяет её и делает видимой. Повторная настройка по-прежнему происходит внутри каждого обучающего окна, поэтому метод измеряет, какая часть этой подгонки переживает встречу со следующим окном, вместо того чтобы её предотвращать. Наши собственные восемь записанных переборов прогнали 116 комбинаций параметров и не приняли ни одной: два из них прошли окно после перебора и затем провалили окно перед ним — ровно тот случай, который одиночное отложенное окно прячет.
Какую эффективность вне выборки считать хорошей?
Примерно от 40 % до 60 % — обычное дело, стоит сдвинуться горстке параметров, а цифры выше 60 %, удержанные на большинстве шагов при устойчивых параметрах, считаются сильными. К любому одиночному шагу относитесь с подозрением: наш лучше всех подогнавшийся перебор показал 65 % на одном шаге, и выбранная им настройка всё равно потеряла деньги на обоих окнах, которых она не видела. Цифра около 100 % или выше чаще сигнализирует об утечке между обучающим и тестовым окнами, чем о необычайно устойчивой стратегии.
Какой критерий оптимизации должен ранжировать проходы?
Решайте до того, как появится сетка, потому что критерий — целевая функция в широкой литературе — выбирает выигравший проход на каждом шаге. Ранжирование по балансу награждает тот проход, который взял больше всего риска, ранжирование по просадке — тот, который торговал меньше всех, а Custom max отдаёт решение вашему собственному OnTester(), когда не подходит ни то ни другое. В наших записанных переборах ранжирование тестера само по себе ничего не решало: каждый выживший проход затем должен был удержать профит-фактор выше 1,0 на трёх окнах, и ни один из восьми этого не смог.
Чем walk-forward отличается от одиночного теста вне выборки?
Одиночный тест резервирует один блок данных и один раз проверяет по нему финальные параметры. Walk-forward повторяет цикл «настроить, затем проверить» вдоль всей истории, поэтому он возвращает серию результатов вне выборки и проверяет саму процедуру перенастройки — то, что запускающий советника действительно выполняет месяц за месяцем.