Допустим, вы несколько месяцев разрабатывали торговую стратегию на истории. Меняли условия входа, подбирали стоп, убирали неудачные фильтры и в итоге получили вполне приличный бэктест. Стратегия прибыльная, просадка устраивает, статистики много.
Теперь хочется считать работу законченной. Но именно в этот момент полезно сделать вещь, которая часто портит настроение: взять участок рынка, который стратегия ещё не видела, ничего больше не менять и проверить её там. Это и есть основная идея форвард-теста.
Что такое форвард-тест
Термин используют немного по-разному. Иногда форвард-тестом называют проверку стратегии уже в реальном времени - на демо-счёте или небольшим объёмом. Но в контексте разработки торговой системы есть ещё один очень полезный вариант: заранее оставить часть исторических данных нетронутыми, построить стратегию на первой части, а потом проверить готовые правила на второй.
Например, у вас есть данные с 2020 по 2025 год. Период 2020-2024 годов используется для разработки системы, а 2025 год вы вообще не смотрите до момента, когда правила уже зафиксированы.
Стратегия не знает, что произошло в 2025-м. Вы тоже не должны менять её после каждой увиденной там сделки. Поэтому этот участок гораздо ближе к настоящей проверке, чем данные, на которых стратегия создавалась.
Почему обычного бэктеста недостаточно
Бэктест необходим, но у него есть слабое место: пока вы разрабатываете систему, вы постоянно видите результат своих изменений.
Передвинули стоп - стало лучше. Добавили фильтр - доходность выросла. Убрали часть сделок - просадка уменьшилась. Даже если вы не пытаетесь специально подгонять стратегию, исторические данные постепенно начинают влиять на сами правила. Вы уже знаете этот рынок слишком хорошо.
Так возникает риск
переоптимизации: стратегия становится великолепным специалистом по прошлому, на котором её обучали. Форвард-тест даёт ей небольшой экзамен без подсказок.
Простой пример
Предположим, на данных за четыре года стратегия совершила 300 сделок и показала хороший результат. Вы подобрали правила, после чего полностью прекращаете их менять.
Дальше открываете отложенный пятый год. Если система продолжает вести себя примерно так, как ожидалось, это хороший знак. Не обязательно доходность должна совпасть до процента. В одном году рынок может дать больше сделок, в другом меньше, а просадка способна оказаться глубже.
Намного интереснее, сохраняется ли сама структура результата: стратегия не превращается внезапно в убыточную, средняя сделка остаётся разумной, риск не улетает в несколько раз, а вся статистика не держалась исключительно на том периоде, где правила создавались.
Если же великолепная система на новых данных сразу разваливается, это намного полезнее узнать сейчас, чем после внесения реальных денег.
Главная сложность - не начать снова улучшать правила
Представим, первая сделка форвард-теста закрылась по стопу. Вы смотрите на неё и сразу видите, как можно было избежать убытка. Добавить ещё один фильтр - и этой сделки не было бы.
Добавили. Через три сделки появляется ещё один неприятный пример. Правила снова корректируются.
После десяти изменений форвард-тест уже перестаёт быть форвард-тестом. Новый участок данных просто превратился в продолжение обучающей выборки.
Если после проверки вы решили изменить систему, это нормально. Но тогда изменённую версию нужно снова проверять на ещё одних данных, которые не участвовали в настройке. Иначе мы каждый раз сдаём экзамен с уже известными ответами.
Форвард-тест не обязан выглядеть так же красиво, как история
Это даже повод насторожиться, если результаты совпадают почти идеально. Рынок меняется. Волатильность бывает разной, количество торговых ситуаций меняется, сильный тренд сменяется боковиком, одни бумаги становятся активнее, другие теряют
ликвидность.
Поэтому нет требования, чтобы стратегия на новом участке снова дала, например, ровно 25% доходности и ровно 8% просадки.
Смотреть нужно на более устойчивые характеристики. Продолжает ли система иметь положительную математику? Не выросли ли убытки до уровня, который разрушает весь подход? Не исчезла ли прибыль после учёта реального исполнения? Не оказалось ли, что почти весь исторический результат обеспечивали несколько очень специфических ситуаций?
Форвард-тест нужен не для подтверждения каждой цифры из бэктеста, а для проверки, переносится ли сама торговая логика на новые данные.
Одна неудачная проверка тоже не всегда означает смерть стратегии
Допустим, отложенный период оказался убыточным. Можно сразу сказать: система не работает.
Но сначала стоит посмотреть, что именно произошло. Возможно, это нормальная для неё просадка, и на основном бэктесте уже встречались периоды такой же длины. Возможно, новый участок оказался в рыночном состоянии, где стратегия исторически всегда чувствовала себя хуже.
Совсем другая ситуация - если на обучающих данных система почти не имела убытков, а на новых её показатели резко изменились по всем направлениям. Тогда версия с подгонкой становится намного вероятнее. Поэтому форвард-тест тоже оценивается статистически, а не по одной сделке. Мы уже писали, почему
несколько прибыльных сделок ещё не доказывают качество системы; несколько первых убытков сами по себе тоже не дают окончательного ответа.
Сколько данных оставить для форвард-теста
Универсального процента нет. Если данных много и стратегия совершает сделки часто, можно выделить отдельный значительный период и получить хорошую новую выборку.
Если система торгует редко, слишком маленький отложенный участок даст несколько сделок, по которым почти невозможно делать выводы. Тогда нужен либо более длинный период, либо другие инструменты и рыночные участки, которые не использовались при разработке.
Главный принцип проще конкретного процента: на новых данных должно набраться столько независимых ситуаций, чтобы результат нельзя было объяснить одной удачной или неудачной сделкой. И эти данные нельзя заранее использовать для выбора параметров.
Исторический форвард-тест и проверка в реальном времени - не одно и то же
Отложенная часть истории хорошо проверяет, не слишком ли стратегия приспособлена к данным, на которых создавалась. Но она всё равно остаётся историей.
На настоящем рынке добавляется то, что очень трудно полностью воспроизвести в таблице: задержка исполнения,
проскальзывание, собственные эмоции, пропущенные сделки и ситуации, когда решение нужно принимать без возможности прокрутить график назад.
Поэтому успешный тест на новых исторических данных - сильный промежуточный этап, но не последняя проверка перед большим реальным капиталом.
Именно по этой причине разумная разработка стратегии обычно идёт ступенями: сначала правила, затем бэктест, затем проверка на данных вне обучающей выборки, а уже после этого - максимально приближённая к реальности торговля с контролируемым риском.
Зачем всё это, если прошлое всё равно не гарантирует будущее
Потому что альтернатива ещё хуже. Можно вообще ничего не проверять и сразу выяснять свойства стратегии собственными деньгами.
Форвард-тест не гарантирует прибыль. Он делает другое: усложняет задачу для плохой стратегии. Теперь ей недостаточно идеально описать данные, которые уже использовались для настройки. Нужно показать, что та же логика сохраняет смысл там, где правила уже нельзя подправлять после каждого результата.
Если система проходит такую проверку, уверенности становится больше. Если не проходит - мы получаем полезный ответ ещё до того, как цена ошибки выросла.
Для нас именно так и должна работать проверка торговой идеи: не искать способ доказать, что мы были правы, а давать системе возможность показать, где она может не выдержать.
В Altz School мы используем тот же принцип в обучении: торговое решение должно быть сформулировано до результата, с понятным основанием для входа, риском и условиями отмены сценария. Красиво объяснить уже закончившееся движение намного проще, чем одинаково принимать решения, пока правая часть графика ещё неизвестна.
Если хотите посмотреть программу, практическую часть и формат обучения, запишитесь на подробную экскурсию по Altz School. Покажем, как всё устроено, а решение вы примете уже после.