WeCore
Алгоритмическая торговля

Бэктест и реальная торговля: почему результаты расходятся

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

WeCore·Опубликовано ·4 мин чтения

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

Что на самом деле измеряет бэктест

Бэктест прогоняет правила стратегии по историческим ценовым данным и рассчитывает, что было бы, если бы вы по ним торговали. В TradingView, например, это делает Strategy Tester для стратегий на Pine Script. Результат - оценка, а не запись прошлого.

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

Исполнение и проскальзывание

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

  • Рыночные ордера исполняются по следующей доступной цене, а не по цене на графике в момент решения. В волатильные моменты, например при выходе отчёта по занятости, разница может составлять несколько тиков.
  • Лимитные ордера гарантируют цену, но не исполнение. Многие бэктесты считают, что если цена коснулась уровня, ордер исполнился. В реальности вы могли стоять в конце очереди и не получить исполнения - причём часто именно на самых лучших сделках.
  • Стоп-ордера при срабатывании превращаются в рыночные, поэтому могут исполниться далеко от уровня.

Гипотетический пример: стратегия совершает 400 сделок в год на MNQ. Если каждая сделка в среднем теряет один тик проскальзывания на входе и один на выходе, набегает 800 тиков в год, которых в бэктесте не было. Для стратегии с небольшим преимуществом это может быть вся разница. Подробнее - в статье проскальзывание и издержки исполнения.

Комиссии, биржевые сборы и стоимость данных

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

Задержки

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

Качество данных и искажения

  • Заглядывание в будущее (look-ahead bias): код использует информацию, которой не было в момент решения. Классический пример: решение по закрытию бара, а вход по открытию того же бара. К тому же может привести и неаккуратная работа с данными старшего таймфрейма.
  • Перерисовка (repainting): индикаторы, которые задним числом меняют свои исторические значения. На графике сигнал выглядит идеально, а в реальном времени он появлялся и исчезал.
  • Ошибка выжившего: актуальна в основном для акций - тест только на тех активах, которые дожили до сегодняшнего дня. Во фьючерсах аналог - непрерывные графики (например, NQ1!), которые склеивают разные контракты и могут давать искусственные скачки в дни ролловера.
  • Пропущенные или ошибочные данные: пропущенные бары, неправильные часы сессии или неверный часовой пояс.

Смена рыночного режима

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

Форвард-тест и симуляция

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

Что проверять на этом этапе:

  1. Приходят ли алерты вовремя и в правильном формате?
  2. Каково среднее расстояние между ценой сигнала и ценой исполнения?
  3. Похоже ли количество сделок на то, что ожидал бэктест?
  4. Есть ли дублированные или пропущенные сделки, «осиротевшие» позиции?
  5. Адекватно ли поведение на открытии, закрытии и при выходе статистики?

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

Разумные ожидания

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

Главное

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

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

Источники и дополнительное чтение