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

Последняя проверка: · Долгосрочный вечнозелёный контент
Предупреждение о рисках · YMYL Эта статья носит исключительно образовательный характер и не является инвестиционной рекомендацией. Торговля на рынке Форекс сопряжена с высоким риском потери капитала — по данным ESMA, 74–89% розничных счетов теряют деньги.

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

Зачем вообще тестировать стратегию на исторических данных?

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

Правила должны быть однозначными, иначе вы тестируете вымысел

На первом же шаге спотыкается большинство новичков. Стратегия должна быть записана так, чтобы посторонний человек, читая правила, открыл бы идентичные сделки. Вход вроде «покупаю, когда вижу тренд» — это не стратегия, это ощущение. Тестируемая версия: «покупать на дневном закрытии, когда EMA с периодом пятьдесят выше EMA с периодом двести, RSI с периодом четырнадцать ниже семидесяти, а цена касается двадцатипериодного среднего сверху; стоп на 1,5 ATR(14) ниже входа; цель на 2,5 ATR выше; риск один процент капитала на сделку». Только такие правила можно тестировать честно.

Смежная тема — как найти своё торговое преимущество: если вы не знаете своего преимущества, бэктест скажет вам об этом жёстко и быстро. Чтобы увидеть тестирование в более широком контексте рабочей рутины трейдера, загляните в мастерскую трейдера на ForexMechanics.com.

Где взять исторические данные и сколько выборки достаточно?

Данные — второй большой источник ошибок. Тиковая история одного брокера никогда не совпадёт с другой тик в тик — другая модель исполнения, другой источник ликвидности. Для стратегии с узким стопом этот разрыв определяет исход. Для внутридневной работы возьмите данные по фьючерсам CME — централизованные и поддающиеся аудиту. Для свинга на дневных свечах брокерской истории обычно достаточно. Выбор инструмента тоже важен: сравнение Forex Tester против встроенного тестера стратегий MT объясняет, когда специализированное приложение даёт преимущество над собственным симулятором платформы.

Второй вопрос — размер выборки. Давнее правило гласит: минимум сто сделок, иначе результат легко окажется подарком удачи. Тридцать прекрасных сделок за полгода не говорят вам ничего. Сто — это порог статистической значимости; профессионалы стремятся к тремстам и более. Свингу на D1 нужно пять лет, внутридневной торговле два, скальпингу один год тиковой истории.

У пяти лет есть ещё одно достоинство: они охватывают несколько режимов. Последнее десятилетие дало нам тренды (DXY в 2014–2017 годах), шок волатильности (март 2020 года), цикл ужесточения (2022–2023 годы) и консолидацию на протяжении 2024 года. Стратегия, работающая только в одном режиме, — не стратегия, а иллюзия, подогнанная под одну эпоху.

Спред, комиссия и проскальзывание — без них бэктест лжёт

Самый частый «чудесный» бэктест забыл вычесть издержки. Для свинга на H4 с целью в 200 пунктов спред в 0,8 пипса едва заметен. Для скальпера, делающего 30 сделок в день с целью в пять пипсов, тот же спред пожирает большую часть преимущества. Реалистичный бэктест должен включать брокерский спред, комиссию за лот и, для стратегий, чувствительных к исполнению, проскальзывание — разрыв между ценой, которую вы видите в момент клика, и ценой, которую вы фактически получаете.

Мой порог: если средняя прибыль на сделку меньше удвоенной средней издержки (спред, комиссия и предполагаемое проскальзывание вместе взятые), у стратегии нет запаса прочности. Жёстко, но это экономит месяцы самообмана. Отдельная ловушка, за которой стоит следить: индикаторы, которые перерисовывают свои исторические значения, будут выглядеть идеально в любом бэктесте, но в реальной торговле поведут себя совершенно иначе.

Кривая, подогнанная под историю, — не стратегия, а музей

Ловушка, в которую попадает большинство самоучек, — переоптимизация. Вы тестируете тридцать значений параметра, выбираете лучший результат и объявляете, что система приносит сорок процентов в год. На самом деле вы оптимизировались под шум, а не под сигнал. Чем больше параметров трогает оптимизатор, тем выше шанс, что результат — совпадение. Роберт Пардо, автор классического труда об оценке систем, говорит об этом прямо:

«Тест вне обучающей выборки — единственная честная мера качества стратегии. Если система не сохраняет своё преимущество на данных, которых она не видела во время оптимизации, значит, она подогнана под историю, а не под рынок». — Роберт Пардо, The Evaluation and Optimization of Trading Strategies, Wiley, 2008.

Отсюда и разделение на настройку на обучающей выборке (in-sample) и подтверждение вне её (out-of-sample), обычно семьдесят на тридцать. Если результат вне выборки заметно хуже, у вас переоптимизация — стратегия не годится для реального счёта. Более строгий подход — walk-forward анализ, который чередует окно оптимизации с окном проверки, прокатываясь по истории. Лучшая защита от ложной уверенности в бэктесте, которая у нас есть.

Гипотетический пример — как честно читать цифры

Представьте свинговую стратегию на EUR/USD D1, протестированную за 2019–2024 годы по схеме из материала бэктестинг в MT4 и MT5 на практике. Иллюстративный результат: 147 сделок, 54 процента прибыльных, среднее соотношение прибыли к риску 2,3 к 1, профит-фактор 1,78, просадка 14,5 процента, чистая доходность плюс 87 процентов за пять лет (около 13,3 процента в сложном исчислении). Не впечатляюще, но реалистично — это шаблон, а не реальный счёт. Полезный следующий шаг — симуляция методом Монте-Карло, которая перетасовывает порядок сделок, чтобы показать, как могла бы развиваться кривая капитала при разных последовательностях.

Что сделать завтра

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

  1. Запишите стратегию в один текстовый файл, механически. Каждый вход, выход, стоп-лосс и фильтр должны быть записаны так, чтобы другой человек, читая правила, открыл бы идентичные сделки. Если где-то приходится добавлять «зависит от ситуации», ужесточите правило — бэктест не читает между строк.
  2. Соберите пять лет данных для свинга или два для внутридневной торговли, разделите их заранее. Зарезервируйте первые семьдесят процентов для настройки, заблокируйте последние тридцать, пока стратегия не будет заморожена. Только тогда запустите тест на зарезервированной части — это ваш настоящий экзамен.
  3. Внедряйте реалистичные издержки в каждую симуляцию. Добавьте брокерский спред, комиссию за лот и предполагаемое проскальзывание, с отдельными значениями для спокойных периодов и сессий вокруг крупных публикаций. Если стратегия теряет более двадцати процентов прибыли после учёта издержек, ответ ясен: запаса прочности нет.
  4. Установите жёсткий нижний предел в сто сделок. Если окно даёт меньше, расширьте историю, добавьте инструменты из того же семейства или примите, что результат — это гипотеза, а не доказательство. Запишите количество сделок, среднюю просадку и винрейт — эти три числа говорят больше, чем заголовочная доходность.
  5. После успешного бэктеста торгуйте на демо как минимум три месяца, прежде чем выходить в реал. Сравните демо с бэктестом — если демо заметно хуже, подозревайте переоптимизацию, недооценённые издержки или ошибку в коде. Возвращайтесь к правилам, а не к надежде, что на реальном счёте всё наладится. Хороший бэктест никогда не гарантирует хорошего результата в реальной торговле — он лишь даёт право попробовать.
Jarosław Wasiński
Об авторе

Jarosław Wasiński

Источники и библиография

  1. MetaQuotes Strategy Testing in MetaTrader 5 · oficjalna dokumentacja testera strategii (testowanie i optymalizacja na danych historycznych) www.metatrader5.com ↗
  2. MQL5 Reference Testing Trading Strategies · dokumentacja deweloperska MQL5: tryby generowania tików, symulacja spreadu, testy wielowalutowe www.mql5.com ↗
  3. Bank for International Settlements OTC foreign exchange turnover in April 2022 · Triennial Central Bank Survey — dane o strukturze rynku FX (kontekst dla backtestu instrumentów detalicznych) www.bis.org ↗

Часто спрашивают

Что такое переоптимизация стратегии?

Переоптимизация (её также называют подгонкой под кривую, curve-fitting) — это ситуация, когда параметры стратегии настроены настолько плотно под прошлые котировки, что они не справляются с новыми данными. Классический симптом — бэктест с винрейтом девяносто пять процентов и реальный счёт с тридцатью. Причина проста: винрейт в девяносто пять процентов не является устойчивым на форексе в долгосрочной перспективе — настоящие стратегии держатся в диапазоне пятьдесят–шестьдесят процентов. Если ваш бэктест показывает более семидесяти процентов прибыльных сделок, воспринимайте это как предупреждение и подозревайте переоптимизацию, пока не доказано обратное.

Какую программу использовать для бэктестинга?

Для новичков самый сильный выбор — встроенный тестер стратегий в MetaTrader 5: он бесплатный, поддерживает мультивалютные тесты, реальные тиковые данные и генетическую оптимизацию. MetaTrader 4 ещё используется, но ограничен одним инструментом и одним таймфреймом. Forex Tester 5 стоит около трёхсот долларов и предлагает ручное тестирование свеча за свечой — хороший инструмент для трейдеров, которые хотят выработать визуальную интуицию по правилам перед их автоматизацией. Pine Script в TradingView подходит для простых тестов на одном инструменте. На практике большинство серьёзных тестов проводится в MT5 или в среде скриптов на Python со специализированными библиотеками для бэктеста.

Сколько исторических данных нужно для честного теста?

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

Как выглядят реалистичные результаты хорошего бэктеста?

Реалистичные цифры — это винрейт пятьдесят–шестьдесят процентов, среднее соотношение прибыли к риску минимум два к одному, профит-фактор в диапазоне 1,5–3,0 и максимальная просадка ниже двадцати процентов — при как минимум ста сделках и результате, подтверждённом на выборке вне обучения (out-of-sample). Коэффициент Шарпа выше единицы указывает на разумную доходность относительно волатильности. Тревожные сигналы — винрейт выше восьмидесяти процентов, профит-фактор выше пяти и просадка ниже пяти процентов: такая комбинация почти всегда означает переоптимизацию, а не реальное преимущество.

Углубиться · полное руководство