Бэктест фьючерсов: издержки, replay и walk-forward
Бэктест фьючерсной стратегии применяет правило к историческим данным с явной моделью исполнения. Для стратегии на ордерфлоу различайте тесты на барах, replay сделок и реконструкцию стакана. Каждый из них отвечает на свои вопросы о том, что можно было наблюдать и исполнить.
Senzoukria · Руководства · Обновлено: сентябрь 2026
Определите правило до подбора параметров
Зафиксируйте инструмент, контракт, часовой пояс сессии, способ построения баров и момент сигнала. Правилу торговли по футпринту нужны исполненные объёмы по bid и ask; правилу по тепловой карте нужна историческая глубина. Ни то, ни другое нельзя воссоздать из обычных свечей.
Сохраняйте политику ролловера и отчёт о покрытии данных. Пропуск в данных — это не спокойный рынок. Уровень одного фьючерсного контракта нельзя перенести на другой, не учтя разницу в цене между ними.
Тесты на барах, replay сделок и replay стакана
| Модель | Позволяет оценить | Не устанавливает |
|---|---|---|
| Бары OHLC | Правила по закрытому бару | Порядок внутри бара, исполнение в очереди |
| Replay сделок | Записанные исполнения | Отсутствующую историческую глубину |
| Replay стакана | События глубины в пределах покрытия | Ваше гипотетическое исполнение с уверенностью |
Если стоп и цель попадают в один бар, OHLC не показывает, что было достигнуто первым. Укажите политику движка. Лимитная цена, которой коснулась сделка, не доказывает, что ваш собственный ордер был бы исполнен.
Издержки могут перевернуть результат
Иллюстративный пример: валовое матожидание 2,5 тика минус 0,5 тика проскальзывания на входе, 0,5 на выходе и 0,8 тика в эквиваленте комиссий за полный круг оставляет 0,7 тика чистыми. Ещё один тик общего проскальзывания даёт −0,3 тика. Это гипотетические входные данные, а не измеренная доходность платформы.
Пересчитывайте комиссии по реальной стоимости тика инструмента. Разделяйте комиссии за контракт и за ордер и не пропускайте спред и не учитывайте его дважды.
Walk-forward без утечки информации
- Заранее зафиксируйте длину обучающего окна, длину теста и способ отбора параметров.
- Подгоняйте только на обучающих данных и замораживайте выбранные параметры.
- Оценивайте следующее окно с учётом издержек и убыточных сделок.
- Сдвигайтесь в хронологическом порядке, сохраняя каждый результат вне выборки.
- Оставьте финальный нетронутый период для решений, ещё не подогнанных под эти результаты.
Выбор лучшей из многих конфигураций вносит смещение отбора. Эту проблему рассматривает работа The Probability of Backtest Overfitting. Анализ устойчивости проверяет результаты на прочность; он не гарантирует будущую прибыль.
Журнал эксперимента
- Версия правила, параметры и число опробованных конфигураций.
- Источник, контракт, даты, сессия и пропущенные интервалы.
- Момент входа, политика для неоднозначных баров, комиссии и проскальзывание.
- Разбиение на обучение и тест, чистые результаты и просадка по окнам.
- Критерий отклонения и чувствительность к более высоким издержкам.
Оценка Хёрста или режим GEX могут подсказать гипотезу. Они не заменяют записи о том, что было известно в момент принятия решения.
Исследования в Senzoukria
Используйте скриптинг для индикаторов и правил, а затем исторический бэктест для поддерживаемых стратегий на JavaScript и Python. Историческая модель исполнения основана на барах и не реконструирует приоритет в очереди. У C++ отдельная среда выполнения и нет исторического бэктеста.
Replay и исполнение у брокера — разные этапы. Необязательный live-автопилот требует явного взведения и совместимого счёта Rithmic. Бэктест не взводит его и не доказывает разрешения проп-фирмы. Сохраняйте журнал исследований в торговом журнале.
Частые вопросы
- Можно ли провести бэктест стратегии на ордерфлоу?
- Да, если исторические данные содержат нужные входные сведения. Правилам футпринта нужен исполненный объём по bid и ask; правилам глубины нужна история стакана. Из баров OHLC нельзя восстановить отсутствующие тики или глубину.
- Что такое walk-forward тестирование?
- Вы подбираете параметры на обучающем окне, фиксируете их для следующего тестового окна и затем сдвигаетесь вперёд в хронологическом порядке. Правило отбора остаётся неизменным, а информация из будущего не должна попадать в обучение.
- Доказывает ли прибыльный бэктест наличие преимущества?
- Нет. Допущения об исполнении, издержки, пропуски в данных, смещение отбора и меняющиеся рыночные условия могут сделать результат недействительным. Публикуйте результаты вне выборки и неудачные конфигурации.
- Какие языки поддерживают исторический бэктест?
- Senzoukria поддерживает исторический бэктест стратегий на JavaScript и Python в десктопном приложении. Скриптинг на C++ работает в отдельной среде WebAssembly и не предоставляет исторического бэктеста.