Торговые стратегии и системы

Backtest и forward test: как проверить торговую стратегию до использования реального капитала

Практическая система проверки торговой стратегии: исторические данные, out-of-sample, walk-forward, paper trading и live-тест с минимальным риском.

Backtest и forward test: как проверить торговую стратегию до использования реального капитала

Торговую стратегию нельзя оценивать по нескольким удачным сделкам или красивой кривой доходности. Прежде чем рисковать существенным реальным капиталом, она должна пройти несколько разных этапов проверки: исторический backtest, тест на данных, которые не использовались для подбора параметров, walk-forward или другой анализ устойчивости, forward test в реальном времени и только затем live-торговлю небольшим объёмом.

Каждый этап отвечает на свой вопрос. Backtest показывает, как точно сформулированные правила вели бы себя в прошлом. Forward test проверяет те же правила на новых данных и в реальном рабочем процессе. Небольшой live-тест выявляет то, что невозможно полностью воспроизвести в симуляции: фактическое исполнение, технические сбои и поведение трейдера, когда решения уже имеют финансовые последствия.

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

Backtest и forward test — не одно и то же

ПроверкаИспользуемые данныеГлавный вопросОсновное ограничение
BacktestИсторические данныеДавали ли правила измеримое преимущество в прошлом?Знание прошлого, ошибки данных и переоптимизация
Out-of-sample testЧасть истории, не использованная при разработкеСохраняется ли идея на невиденных данных?После просмотра результата данные уже нельзя считать по-настоящему невиденными
Walk-forward testПоследовательные обучающие и следующие за ними контрольные окнаМожно ли обновлять параметры без знания будущего?Многократная оптимизация всё равно способна привести к переобучению
Paper forward testНовые данные в реальном времени и симулированные сделкиРаботают ли сейчас сигналы, процесс и техническое исполнение?Симуляция не воспроизводит реальное исполнение и психологию полностью
Небольшой live-тестНовые данные и реальные сделкиСохраняется ли преимущество после фактических издержек и исполнения?Маленькая выборка и реальный риск убытка

В документации TradingView отмечается, что forward test устраняет часть ошибок исторического тестирования, в том числе использование будущих данных, но обычно содержит меньше наблюдений. Поэтому он не заменяет backtest: оба метода нужно применять вместе.

Зафиксируйте правила до начала теста

Если менять правила после каждого убытка, проверка перестаёт относиться к одной стратегии. Она превращается в постоянную подгонку под уже увиденные данные.

До запуска backtest определите:

  • инструмент и торговую сессию;

  • рабочий таймфрейм и разрешение данных;

  • рыночный контекст, в котором сделки разрешены;

  • точный триггер входа и момент отправки ордера;

  • правила stop loss, цели, trailing stop и частичного выхода;

  • условия отмены ордера и повторного входа;

  • расчёт размера позиции и максимального риска;

  • допущения по комиссии, спреду, slippage и финансированию;

  • ситуации, в которых стратегия остаётся вне рынка.

Правило должно быть настолько конкретным, чтобы два человека, глядя на одни данные, приняли одинаковое решение. Формулировка «покупать у сильной поддержки» непригодна для тестирования. Нужно определить способ поиска поддержки, необходимое подтверждение и цену, по которой сделка считается открытой.

Сохраняйте и версию стратегии. Изменение фильтра, параметра или логики исполнения создаёт новую версию, требующую нового теста, а не незаметную поправку в старой статистике.

Качество данных важнее красивого отчёта

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

Проверьте часовой пояс, торговые сессии, праздники, пропущенные интервалы, корректировки цены, склейку фьючерсных контрактов и то, использует ли тест bid, ask, last или только OHLC свечи. В стратегиях на акциях нужно учитывать исключённые из листинга компании и состав доступных тогда инструментов, иначе возникает survivorship bias. Для фьючерсов и опционов важны выбор контракта, экспирация, ликвидность и метод построения непрерывного ряда.

Внутридневная свеча не показывает точную последовательность событий внутри неё. Если в одной свече достигнуты и stop loss, и цель, результат зависит от реального пути цены и приоритета ордеров. Используйте достаточно детальные данные или консервативное допущение. Регулярные идеальные исполнения на экстремумах свечей — повод проверить логику тестирующего движка, а не считать результат доказанным.

Исключите информацию из будущего

Lookahead bias возникает, когда историческое решение случайно использует информацию, которой в тот момент ещё не было. Например, финальный high или low незакрытой свечи, позднее подтверждённое значение индикатора старшего таймфрейма, цена следующей свечи или пересмотренный после публикации экономический показатель.

В документации TradingView по стратегиям указано, что исторические и поступающие в реальном времени свечи могут вести себя по-разному, а некоторые настройки исполнения способны создавать невоспроизводимые сделки с видимым знанием будущего. Практический контроль прост: для каждого поля в расчёте сигнала нужно установить точный момент, когда его значение стало известно.

Forward test часто выявляет эту ошибку, потому что в реальном времени будущих данных ещё нет. Если сигналы меняются после закрытия свечи, исчезают после обновления страницы или появляются не в тот момент, что в истории, сначала объясните расхождение и только потом продолжайте.

Учитывайте реальные торговые издержки

Backtest без издержек особенно легко переоценивает стратегию с высокой частотой сделок. В расчёт нужно включить комиссии брокера и биржи, bid–ask spread, slippage, финансирование или overnight-расходы, а также особенности данных и маршрутизации, если они влияют на исполнение.

Slippage не бывает постоянным. Он зависит от волатильности, ликвидности, типа ордера, размера позиции и выхода новостей. Документация TradingView указывает, что фиксированное допущение по slippage может повысить реалистичность симуляции, но точно предсказать его невозможно. Проверяйте не только средний, но и неблагоприятный сценарий издержек.

Limit order нельзя автоматически считать исполненным лишь потому, что свеча коснулась заданной цены. На реальном рынке важны очередь и доступный объём. Если преимущество исчезает после умеренной комиссии или одного дополнительного шага slippage, у стратегии слишком малый запас прочности.

Какие показатели оценивать в backtest

Итоговая прибыль сама по себе ничего не говорит о риске и качестве результата. Как минимум анализируйте:

  • количество сделок и их распределение по времени;

  • expectancy — средний результат на сделку, желательно в единицах R;

  • среднюю прибыль, средний убыток и их соотношение;

  • долю прибыльных сделок только вместе с payoff ratio;

  • максимальный drawdown и время восстановления;

  • самую длинную серию убытков и концентрацию потерь;

  • profit factor, Sharpe или Sortino с пониманием ограничений каждой метрики;

  • рыночную экспозицию и задействованный капитал;

  • результаты по инструментам, сессиям, направлениям и рыночным режимам;

  • влияние издержек, крупнейших сделок и выбранного периода.

Важно понять источник прибыли. Если почти весь результат дали несколько сделок по одному инструменту или один короткий период, стратегия может быть намного более хрупкой, чем выглядит её итоговая кривая. Уберите лучшие сделки, увеличьте издержки и проверьте, сохраняется ли основной вывод.

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

Переоптимизация: когда тест выучил прошлое

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

В работе Campbell Harvey и Yan Liu о backtesting и проблеме множественных тестов, опубликованной CME, объясняется: чем больше гипотез проверено, тем выше вероятность случайно «найти» внешне прибыльную стратегию. Поэтому фиксируйте не только выбранный результат, но и число проверенных идей и комбинаций параметров.

Устойчивая стратегия не должна работать только в одной точке параметра. Постройте карту параметров: если соседние значения дают близкие результаты, у идеи есть стабильная область. Если выдающаяся прибыль находится на одном остром пике, а небольшое изменение параметра разрушает результат, вероятно, был оптимизирован шум.

Проводите тесты чувствительности: меняйте издержки, задержку входа, расстояние до stop loss, сессию, даты начала и окончания выборки. Monte Carlo или bootstrap-анализ последовательности сделок помогает оценить диапазон возможного drawdown и серий убытков, не принимая единственный исторический порядок сделок за единственный возможный сценарий будущего.

In-sample, out-of-sample и walk-forward

In-sample — период, на котором разрабатывается идея и выбираются параметры. Out-of-sample — отдельный период, открываемый только после фиксации правил. Если после слабого результата изменить правила и снова проверить тот же отрезок, он фактически становится частью новой in-sample выборки. Нужен новый невиденный период или честный вывод, что исходная версия проверку не прошла.

Walk-forward повторяет процесс в последовательных окнах: параметры определяются только на предыдущем отрезке данных, затем без изменений проверяются в следующем периоде, после чего окно сдвигается вперёд. Документация QuantConnect описывает этот подход как периодическую адаптацию логики или параметров стратегии по скользящему историческому окну. Длину окна, частоту оптимизации и целевую функцию следует задать заранее; более частая оптимизация сама по себе может усилить overfitting.

Оценивайте совокупность всех out-of-sample сегментов, а не лучший отрезок. Если параметры резко меняются между окнами без экономического объяснения или результат зависит от одного сегмента, адаптация может быть нестабильной.

Forward test в реальном времени

Forward test начинается лишь тогда, когда правила и параметры перестают меняться после каждой сделки. Стратегия работает на новых рыночных данных; на первом этапе ордера можно исполнять в paper trading или точно фиксировать вручную.

Сравнивайте три уровня:

  1. Теоретический сигнал: когда и по какой цене стратегия предполагала действие.

  2. Симулированное или фактическое исполнение: какой ордер был отправлен, был ли он исполнен и с каким slippage.

  3. Исполнение трейдером: соблюдались ли правила без задержек, пропусков и импульсивного вмешательства.

Paper trading полезен для проверки технического процесса, но не является полной копией live-исполнения. Interactive Brokers сообщает, что заявки paper-счёта не попадают на биржу, исполнения симулируются, а некоторые типы ордеров и частичные исполнения могут вести себя иначе. Кроме того, симуляция не воспроизводит эмоциональную нагрузку от риска реальным капиталом.

Не завершайте forward test только потому, что достигнута желаемая прибыль. Он должен охватить заранее заданное число сделок или набор рыночных условий. Если стратегия рассчитана на тренд, а в период проверки рынок двигался лишь в узком диапазоне, тест ещё не ответил на все важные вопросы.

Небольшой live-тест — отдельный этап проверки

Переход от paper trading сразу к полному размеру позиции слишком велик. Небольшой live-тест использует объём, возможный убыток по которому приемлем и не провоцирует менять правила во время сделки. Его цель — не значительный заработок, а сопоставление реального исполнения с допущениями теста.

Измеряйте фактические комиссии и slippage, отклонённые и частично исполненные ордера, проблемы с данными или соединением, время реакции и соблюдение правил. Увеличивайте позицию только после выполнения заранее заданных критериев, а не после нескольких удачных сделок.

Заранее установите критерии допуска и остановки

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

Критерии могут включать минимальное число сделок, положительное expectancy после издержек, допустимый drawdown, стабильность параметров, результат в нескольких режимах, расхождение между теоретическим и фактическим fill, число технических ошибок и соблюдение правил. Порог должен соответствовать частоте стратегии и её риску; универсального «хорошего profit factor» не существует.

НаблюдениеВозможное решение
Прибыль сохраняется только без издержекОтклонить идею или существенно переработать модель исполнения
Out-of-sample рушится при отличном in-sampleСчитать переоптимизацию вероятной и не переходить к live-тесту
Forward-сигналы отличаются от логики backtestОстановиться и найти ошибку данных, repainting или исполнения
Результат слабее, но остаётся в ожидаемых границахПродолжать сбор данных без изменения правил
Drawdown или техническая ошибка превышает лимитОстановить стратегию и провести разбор инцидента

Практическая последовательность проверки

  1. Опишите гипотезу и механизм, который может создавать преимущество.

  2. Зафиксируйте правила торговли, риска и исполнения.

  3. Проверьте качество данных и допущения тестирующего движка.

  4. Проведите backtest с реальными издержками и консервативными fill.

  5. Проанализируйте источники прибыли, drawdown и чувствительность к параметрам.

  6. Проверьте невиденные out-of-sample данные и при необходимости walk-forward окна.

  7. Установите критерии допуска и остановки.

  8. Проведите paper forward test без подгонки правил под результат.

  9. Сравните теоретическое, симулированное и фактическое исполнение.

  10. Перейдите к небольшой live-позиции и повышайте риск только постепенно.

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

Вывод

Backtest — это начальный фильтр, а не сертификат будущей прибыли. Он помогает проверить логику правил, измерить исторический результат и отсеять явно слабые идеи. Out-of-sample и walk-forward показывают, не является ли результат простой подгонкой под известную выборку. Forward test выявляет проблемы сигналов, процесса и исполнения в реальном времени, а небольшой live-тест проверяет реальные рыночные условия и дисциплину трейдера.

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

Материал носит образовательный характер и не является индивидуальной инвестиционной рекомендацией. Торговля на финансовых рынках связана с риском убытков.