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

 

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

Предупреждение о рисках: Информация в этой статье предоставлена исключительно в образовательных целях и не является финансовой рекомендацией, инвестиционным советом или предложением купить/продать активы. Все описанные стратегии, методы или идеи могут привести к финансовым потерям, включая полную утрату капитала. Мы не гарантируем результатов и не несём ответственности за любые убытки. Перед применением проведите собственное исследование.

 

Что такое бэктестинг в трейдинге

Бэктестинг стратегии (от англ. backtesting — «тестирование назад») — это процесс проверки торговой стратегии на исторических рыночных данных. Проще говоря, вы берёте свои торговые правила и смотрите, как бы они сработали, если бы вы применили их в прошлом. Звучит просто, но дьявол кроется в деталях — и большинство трейдеров делают это неправильно, получая обманчиво красивые результаты, которые рассыпаются при столкновении с реальным рынком.

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

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

  • График пересекает ЕМА100, направление пересечения указывает на направление торговли.
  • После первого же отката открывается сделка.

Пример простой стратегии на скользящих средних

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

 

Бэктестинг шаг за шагом

Тестирование торговой стратегии можно разделить на отдельные этапы, ниже – пошаговая инструкция:

  1. Формулировка правил ТС. Нельзя переходить к тестам, если правила торговли не сформулированы предельно четко. Если ваши сделки совершаются скорее интуитивно, то говорить о тестах рановато.
  2. Выбор инструментов. Далеко не все стратегии универсальны, то, что хорошо работает, например, на EURUSD, может приносить убыток на AUDNZD и наоборот.
  3. Подготовка данных. Если тестирование автоматизировано, то достаточно подгрузить котировки в терминале.
    При использовании МТ4 можно подгружать сторонние котировки для достижения точности тестирования в 99%. Необязательный этап, для большинства стратегий можно обойтись без него.
  4. Выбор периода тестирования.
  5. Непосредственно тест.
  6. Анализ результатов.
  7. Если проводилась оптимизация параметров на истории, то понадобится еще и форвард-тест. Стратегия с обновленными настройками тестируется на другом участке истории.
  8. Переход на реальный счет.

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

 

Ключевые метрики для оценки стратегии

По результатам тестов особое внимание обращают на:

  • Доходность. Сколько удалось заработать за период тестирования.
  • Просадку (абсолютная, максимальная и относительная), характеризует убыток ТС. Абсолютная просадка – разница между стартовым депозитом и минимальным размером счета за период тестирования. Максимальная и относительная – наибольшая разница между одним из High и следующим за ним Low в валюте и процентах соответственно.
  • Винрейт – количество прибыльных сделок.
  • Profit factor. Результат деления совокупной прибыли на убыток. Должен быть строго больше 1,0, это означает, что на каждую единицу убытка генерируется больше 1,0 профита.
  • Коэффициент Шарпа. Мера оценки риска, чем выше этот показатель, тем лучше окупается принимаемый риск.
  • Математическое ожидание выигрыша. Положительное значение указывает на прибыльность стратегии в целом. Чем выше число, тем быстрее будет расти капитал трейдера.
  • Временной фактор. Если стратегия ручная, то нужно учитывать период, на который пришлась большая часть сигналов. Представьте трейдера, живущего в европейских часовых поясах. Если большая часть сигналов появляется на азиатской сессии, то торговать будет крайне некомфортно – придется переходить на ночной образ жизни.

 

Статистика результатов тестирования стратегии

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

 

Инструменты для бэктестинга торговых стратегий

Все подходы к тестированию ТС можно разделить на 2 группы – ручной и автоматизированный подход. В зависимости от выбранного инструмента сильно отличается удобство тестирования, информативность, доступные метрики в отчете.

 

Ручное тестирование

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

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

Ручное тестирование стратегии на истории

У ручного тестирования есть критические недостатки:

  • Огромные временные затраты. Даже при рабочем таймфрейме Н1 желательно изучить историю глубиной в 12-18 месяцев, на это уйдет немало времени.
  • Человеческий фактор. Легко упустить точку входа, есть и субъективный фактор при оценке сигналов.
  • Сложность ведения статистики и расчета основных показателей.

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

 

Автоматический (программный) бэктестинг

Вы пишете код своей стратегии на языке программирования (Python, MQL4/MQL5, Pine Script, C++ и другие), и программа автоматически прогоняет её через исторические данные, выдавая подробный отчёт.

Автоматический бэктестинг — стандарт для профессиональных трейдеров, квантовых аналитиков и всех, кто занимается алгоритмической торговлей. Если вы серьёзно настроены на системный подход, вложите время в изучение Python или MQL — это окупится.

 

1. MetaTrader

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

  • Не все стратегии можно автоматизировать.
ТС, основанные на графическом анализе, плохо поддаются автоматизации. Проблемы возникают из-за разметки графика, на нее сильно влияет субъективный фактор.
  • Сама по себе автоматизация требует хотя бы базового знания языка MQL4 (или MQL5, если работаете в МетаТрейдере5).

В остальном все просто:

  • Котировки подгружаются через сам терминал, их можно загрузить из стороннего источника для повышения точности.
  • Выбирается торговый инструмент, таймфрейм, стартовый депозит, настраиваются параметры советника.
  • Указывается период истории, на котором будет проводиться тест. Остальное встроенный тестер МТ4 сделает сам.

Тестер стратегий MetaTrader 4

В результате теста получите отчет с основной статистикой и кривой роста депозита.

Отчет о результатах тестирования в MT4

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

 

2. TradingView

Один из лучших веб-терминалов, среди массы возможностей есть и тестирование торговых стратегий. Здесь есть инструмент «Симулятор рынка», можно выбрать определенный момент в истории, правая часть графика станет недоступной и будет симулироваться. Это позволяет сохранить чистоту эксперимента – вы не видите правую часть графика и торгуете так же, как это делается в реальных условиях.

Симулятор рынка доступен только на платных тарифных планах.

По результатам теста автоматически рассчитывается ключевая статистика и формируется отчет. Доступны:

  • Общий обзор результатов. Дается ключевая статистика, графическое отображение результатов торговли.

Обзор результатов в симуляторе TradingView

  • Динамика – все, что связано с убытком и прибылью. Статистика показывается отдельно для длинных и коротких позиций.

Динамика прибыли и убытков в TradingView

  • Анализ сделок. Сколько всего открыто позиций, доля прибыльных сделок, средний профит/убыток по трейду, максимальный убыток/прибыль в каждой сделке.

Анализ сделок в симуляторе TradingView

  • Коэффициенты риска/эффективности. Всего 4 пункта – коэффициенты Шарпа, Сортино, Фактор прибыли и Маржин Коллы.

Коэффициенты риска в TradingView

  • Список сделок. Детальная информация по каждой заключенной сделке.

Список сделок в симуляторе TradingView

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

 

3. Python

Технически Python можно рассматривать как свой «собственный тестер стратегий». По сравнению с готовым тестером из МетаТрейдера тестирование ТС с помощью соответствующих Python фреймворков намного гибче. Правда, понадобится хотя бы минимальное знание языка.

Упрощенно схему тестирования можно описать так:

  • Загружаются данные по ценам, источник данных может быть любым, его определяет трейдер.
  • Описывается логика торговли. Нужно указать условия, при которых будут заключаться сделки, как они должны закрываться и прочие нюансы. Это слабое место – далеко не каждую ТС можно описать на Python.
Как правило используется библиотека Numba. За счет этого непосредственно при выполнении программы обычный код (написан человеком), преобразовывается в машинный код (инструкции, понятные вашему ПК), это на порядок ускоряет расчеты.
  • Идет симуляция торговли.
  • В зависимости от фреймворка в конце рассчитываются основные показатели – прибыльность, винрейт, матожидание прибыли, просадки, ключевые коэффициенты.
Из фреймворков и полезных библиотек можно выделить Backtrader, Vectorbt, Nautilus, Lean, PyAlgoTrade.

По сравнению с обычным тестером в МТ4 или симулятором рынка в TradingView Python выделяется максимальной гибкостью. Недостатки те же – необходимость знать язык, невозможность тестировать ряд стратегий.

 

4. QuantConnect

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

Платформа QuantConnect для тестирования стратегий

Ключевые особенности QuantConnect:

  • Основа – движок Lean, написан на С#.
  • Есть облачная и локальные платформы, локальную можно развернуть на своем ПК.
  • Правила стратегии нужно описать на C# либо на Python (можно использовать привычные библиотеки типа Pandas, NumPy, SciPy).
  • Не нужно получать котировки извне. Авторы платформы говорят о более чем 400 Тб «финансовых данных». Здесь есть котировки практически по любому активу – от валютных пар до фьючерсов на соевые бобы и криптовалюту. Данные не нужно готовить к тестированию.

Исторические данные в QuantConnect

  • За счет выделения вычислительной мощности существенно ускоряется оптимизация стратегий.
  • Есть готовые модули, их можно интегрировать в свою стратегию. Это модули, касающиеся ограничения по просадке, автоматизации стоп-лоссов и прочих универсальных нюансов. Не придется писать эту логику с нуля, достаточно подключить готовое решение от QuantConnect.
  • Есть основанный на Jupyter Notebook QuantBook. Удобный инструмент для проверки торговых идей перед полноценным тестированием.
  • Через платформу можно подключиться к брокерским счетам на Interactive Brokers, Binance, TradeStation, поддерживаются и другие брокеры/криптобиржи. После теста стратегию можно перевести в так называемый live режим и торговать через QuantConnect.
  • Дается развернутая статистика с графиками, основными коэффициентами и прочими метриками.

Статистика результатов в QuantConnect

 

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

Готовые стратегии в QuantConnect

В целом, QuantConnect можно назвать инструментом для профессиональных трейдеров. Тестирование существенно упрощается по сравнению с чистым Python.

 

Типичные ошибки при бэктестинге

Независимо от рынка и конкретной стратегии можно выделить несколько самых часто встречающихся ошибок. К ним относятся:

  • Переоптимизация. Подбираются параметры, при которых ТС отлично работает на истории, но в режиме реального времени результаты оказываются на порядок хуже. Стратегия слишком долго и тщательно оптимизируется, вместо поиска оптимальных настроек трейдер просто подгоняет ее результаты под историю.
  • Пропуск этапа форвард-тестирования. После теста и оптимизации на истории нужно проверить как работает стратегия на другом участке истории (форвард-тест). Ключевое здесь то, что этот участок не должен быть задействован в оптимизации.
  • Неудачный выбор отрезка истории, в идеале он должен включать разные состояния рынка. Здесь единого рецепта нет, все зависит от рабочего таймфрейма. Для М5-М15 можно рекомендовать тестирование на истории глубиной от 3-6 месяцев до 1-1,5 лет. При таймфреймах Н1-Н4 – до 3-5 лет, дневной таймфрейм – от 5-7 лет.
  • Выбор слишком большого периода для бэктеста. Рынок изменчив, периодически стратегию нужно будет оптимизировать – это нормально. Если будете тестировать ТС на слишком большом отрезке истории, то скорее всего результат будет не лучшим.
  • Игнорирование издержек. Такие факторы как спред, комиссия могут «съесть» большую часть прибыли.
Спред особо актуален для скальпинга. В короткоживущих сделках трейдер берет сравнительно небольшой профит
  • Игнорирование реального спреда и проскальзываний. У ряда брокеров спред может существенно расширяться, исполнение может быть неидеальным, особенно если сигнал возникает при всплеске волатильности. Эти факторы могут существенно повлиять на результат, но их сложно учесть при тестировании.
  • Корректировка данных (они могут очищаться от ГЭПов и прочих аномалий). Встречается редко, чаще всего эта проблема не проявляется.
  • Малое количество сделок. Встречается в специфических стратегиях с жесткими условиями отбора точек входа. Вы можете выбрать правильный отрезок истории для теста, но самих сделок может быть всего несколько десятков. Необходимый минимум – пара сотен.

Чтобы избежать этих ошибок придерживайтесь следующих правил:

  • Не гонитесь за идеалом. Ваша цель – проверить стратегию на истории, а не подгонять ее под исторические данные.
  • Всегда делайте форвард тест. Обычно используют соотношение 1 к 3 – 1 к 4. Если стратегия тестируется на истории в 3 года, то форвард тест должен занимать 9-12 месяцев.
  • Оценивайте количество сделок – нужно как минимум 200-300 трейдов.
  • Учитывайте тип стратегии, для некоторых спред, проскальзывания могут быть критически важны. Если тестер позволяет это, используйте рыночный спред, а не фиксированный.
  • Не ждите мгновенный результат. Тестирование – это просто проверка торговой стратегии, результат вполне может оказаться отрицательным.

 

Пример тестирования торговой стратегии

В качестве примера используем стратегию Inner bar. ТС основана на одноименном паттерне Price Action, добавлен фильтр в виде индикатора Bollinger Bands.

Коротко о правилах стратегии:

  • Торговля ведется только на отбой от границ полос Боллинджера.
  • Входить в рынок можно, если был пробой или заброс цены за линию Bollinger Bands и сформировался внутренний бар. То есть свеча прокалывает границу ВВ или пробивает ее, следующая свеча остается в пределах диапазона предыдущей (Inner bar).
  • Может использоваться и фиксированный тейк-профит, и трейлинг-стоп.

Стратегия адаптирована под USDJPY и AUDUSD.

В стратегии важно лишь чтобы следующий бар оставался в пределах границ диапазона предыдущего. Прочие критерии Inside Bar не учитываются.

Пример сигнала стратегии Inner bar

По правилам этой стратегии написан советник, использовался язык MQL4, поэтому ТС можно протестировать в МетаТрейдере4. Так как рабочий таймфрейм М15 для теста выберем годовой отрезок, подберем оптимальные настройки и затем проведем форвард тест на 3-месячном отрезке истории.

Тестирование стратегии Inner bar за год

Тест за год показал сравнительно низкую частоту торговли – всего 50 сделок. Это означает, что период тестирования нужно увеличить, с учетом количества сделок ТС придется тестировать на дистанции как минимум в 2-3 года. Форвард-тест при таком сценарии будет проводиться на дистанции в 6-9 месяцев.

В нашем примере уже при увеличении глубины истории до 2 лет видно, что стратегия перестает быть прибыльной. Первый год ТС стагнировала, вся прибыль получена на второй год.

 

Тестирование стратегии Inner bar за 2 года

Если результаты теста не устроили, можно выполнить оптимизацию, а затем и форвард-тест. В нашем примере оптимизация проводилась на дистанции с начала 2023 по апрель 2025 года, период с апреля по конец октября 2025 года можно использовать для форвард-теста.

Оптимизация не принесла особого успеха, результативность осталась примерно на том же уровне. Для наглядности выполнен и форвард-тестинг, ниже – основная статистика, показатели остаются без особых изменений.

Форвард-тестирование стратегии Inner bar

Это универсальная схема, работает при тестировании/оптимизации любой стратегии без исключения.

 

Когда переходить на основной счет

В общем случае действия трейдера можно описать следующей блок-схемой.

Блок-схема процесса тестирования стратегии

После теста и оптимизации наступает сложный с точки зрения психологии период. Формально ТС уже прошла все проверки, неплохо показала себя на истории и можно переходить на реальный счет. Но положительная статистика касается только истории, никто не может гарантировать, что тот же эффект получим в будущем.

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

  • Демо-счет.
  • Центовый счет. Это реальные деньги, но каждый реальный цент в терминале выглядит как единица валюты.

Поработайте в таком режиме 2-4 недели (срок зависит от конкретной стратегии), наблюдайте за статистикой. Если все в порядке, то можно переходить на основной счет.

 

Заключение

Бэктестинг стратегий – обязательный этап, с которым сталкивался каждый без исключения зарабатывающий трейдер. Никто не использует новую стратегию на основном счете без проверки. Это логично – нельзя гарантировать прибыльность ТС, эту гарантию не дают и тесты, но после их проведения вы хотя бы убедитесь в том, что стратегия работала в прошлом. Высока вероятность, что и в будущем результаты будут схожими.

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

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

Вадим Бон
Вадим Бон
Инвестор, предприниматель, трейдер, автор и создатель сайта buyhold.ru
Основатель проекта BuyHold.ru, практикующий трейдер и инвестор с высшим экономическим и юридическим образованием. После ухода из корпоративной системы прошел путь от простейших способов интернет-заработка до создания собственных веб-проектов и успешной торговли на финансовых рынках. Специализируется на применении волновой теории Эллиотта в трейдинге и инвестициях. С 2017 года делится практическим опытом достижения финансовой независимости, помогая другим построить путь от наемной работы к собственному делу. Убежден, что работа должна быть не только источником дохода, но и любимым занятием, приносящим удовольствие.

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

Telegram

BuyHold в Telegram

Свежие статьи, аналитика рынков и инвестиционные идеи — прямо в Telegram

  • Статьи и обзоры
  • Аналитика рынков
  • Инвестиционные идеи
  • Без спама
Подписаться