Бэктест торговой стратегии - проверка правил торговли на исторических данных. Чтобы результат не был обманчивым, проверьте полноту и качество котировок, учтите реальные издержки исполнения, исключите использование будущей информации и тестируйте правила на периодах, не участвовавших в настройке. Такая подготовка делает оценку стратегии полезнее, но не гарантирует будущую прибыльность.
Что проверить до запуска исторического теста
- Источник данных соответствует инструменту, площадке и торговым сессиям стратегии.
- В истории нет необъяснённых пропусков, повторов и ошибок в свечах.
- Модель исполнения учитывает комиссии, спред и проскальзывание.
- Сигнал рассчитывается только по информации, доступной на момент сделки.
- Периоды настройки и проверки отделены друг от друга.
- Результат проверен на других временных отрезках или инструментах.
Сверьте источник данных и покрытие торговых сессий
Начните с описания условий, для которых предназначена стратегия: инструмент, площадка, часовой пояс, торговые часы и тип котировок. Сравните эти условия с параметрами выгрузки и настройками бэктестера.
Такой порядок подходит для тестирования торговой стратегии на свечах или сделках, если известны источник данных и правила формирования котировок. Не стоит делать выводы по истории с неизвестным происхождением, неполным покрытием сессий или несовпадающим типом цен: сначала уточните ограничения набора либо подберите другой источник.
Проверьте границы периода, временные метки и переходы между сессиями. Если стратегия использует внутридневные сигналы, убедитесь, что часовой пояс и расписание торгов интерпретируются одинаково в данных и в тестовой системе.
Очистите историю от пропусков, дублей и ошибочных свечей
Для проверки подготовьте исходный файл без изменений и отдельную рабочую копию. Понадобятся документация к данным, описание формата полей, инструмент для сортировки и поиска повторов, а также код или программа бэктеста, способные показать временные метки и значения цен.
- Отсортируйте записи по времени и проверьте повторяющиеся метки. Не удаляйте повторы автоматически, пока не выясните, не относятся ли записи к разным типам событий или инструментам.
- Найдите пропуски относительно ожидаемой частоты данных и расписания сессий. Отделяйте закрытие рынка от незапланированного отсутствия записей.
- Проверьте свечи на внутреннюю согласованность: минимум и максимум должны согласовываться с ценами открытия и закрытия. Подозрительные значения сверяйте с исходным источником, а не исправляйте на глаз.
- Зафиксируйте все фильтры и исправления: что изменено, почему и в каком диапазоне. Сохраните исходные данные, чтобы можно было повторить проверку и сравнить результаты.
Если проблема не объяснена, исключите затронутый участок из теста или отметьте его как ограничение. Не подменяйте отсутствующие котировки значениями, выбранными так, чтобы они улучшали результат.
Учтите комиссии, спред и проскальзывание в исполнении ордеров
До настройки модели исполнения пройдите короткую подготовку:
- Уточните действующие для выбранного инструмента и площадки комиссии и порядок их начисления.
- Определите, какие данные доступны для оценки спреда и цены исполнения.
- Запишите условия отправки и исполнения каждого типа ордера.
- Проверьте, как бэктестер обрабатывает сделки внутри одной свечи и ордера, оставшиеся неисполненными.
Затем настройте модель по шагам. В разработке торговых стратегий предположения об исполнении должны быть явно описаны: иначе результат сложно воспроизвести и сравнить.
- Задайте комиссию. Укажите применимую схему начисления и проверьте, что комиссия учитывается при открытии и закрытии позиции там, где это предусмотрено условиями торговли.
- Учтите спред. Сопоставьте цену сигнала с доступной стороной котировки для покупки или продажи. Если в истории есть только свечи без котировок bid/ask, укажите, что точность моделирования спреда ограничена.
- Опишите проскальзывание. Установите прозрачное правило для отклонения цены исполнения от цены сигнала. Если данных недостаточно, используйте несколько разумных сценариев, не выдавая один из них за точное восстановление исполнения.
- Задайте правила ордеров. Уточните, когда после сигнала ордер становится активным и по какому условию считается исполненным. Для лимитного ордера касание цены само по себе не всегда подтверждает исполнение; используйте только те допущения, которые поддерживаются данными.
- Сравните сценарии. Повторите тест с базовыми и более осторожными допущениями по издержкам. Если итог резко меняется, зафиксируйте чувствительность результата к исполнению.
Для алгоритмической торговли важно проверять не только формулу сигнала, но и временную последовательность событий: когда стратегия получает данные, отправляет ордер и может получить исполнение.
Исключите заглядывание в будущее и смещение выживших
Перед тем как считать результат убедительным, пройдите этот чек-лист:
- Убедитесь, что индикатор или признак рассчитан только по данным, уже доступным на момент сигнала.
- Проверьте, не использует ли правило закрытие свечи для сделки, которая в тесте совершается по цене внутри этой же свечи.
- Уточните порядок событий, если сигнал и исполнение приходятся на один временной интервал.
- Проверьте, не применяются ли пересмотренные задним числом значения, исправленные данные или текущий состав индекса ко всему прошлому периоду.
- Учитывайте инструменты, исключённые из выборки из-за прекращения торгов или исчезновения из доступного списка.
- Убедитесь, что правила не используют будущую классификацию инструмента, сектора или рыночного режима.
- Повторите тест на коротком выбранном отрезке вручную или пошагово и сравните последовательность сигналов с исходными данными.
Признак заглядывания в будущее - сигнал, зависящий от значения, которое ещё не могло быть известно в момент принятия решения. Смещение выживших возникает, когда анализ ограничен инструментами, сохранившимися к концу выбранного периода. Оба риска могут сделать исторический результат излишне благоприятным.
Разделите данные на выборки для настройки и проверки стратегии
Частые ошибки при разделении и анализе данных:
- Подбирать параметры и оценивать окончательный результат на одном и том же периоде.
- Случайно перемешивать временные наблюдения и терять порядок событий.
- Менять правила после просмотра проверочной выборки, а затем считать её независимой проверкой.
- Подбирать слишком много вариантов правил, но показывать только наиболее удачный.
- Игнорировать задержку между настройкой параметров и началом проверки.
- Не учитывать, что близкие по времени наблюдения могут относиться к одному рыночному эпизоду.
- Скрывать результаты по неудачным периодам или инструментам без объяснения причин исключения.
Разделите историю хронологически: используйте одну часть для разработки и настройки, другую - для проверки выбранных правил. Не меняйте стратегию после просмотра проверочного результата без нового независимого этапа проверки. В торговых стратегиях на бирже такая дисциплина помогает отделить качество правил от удачного подбора под конкретную историю.
Проверьте устойчивость результатов на разных периодах и рынках
После основной проверки оцените, насколько вывод зависит от выбранного участка истории и предположений. Подходящий вариант зависит от доступных данных и назначения стратегии:
- Последовательная проверка по периодам. Подходит, когда важно оценить, как правила ведут себя при переносе настройки вперёд во времени; параметры на каждом этапе фиксируйте до проверки следующего отрезка.
- Проверка на нескольких режимах рынка. Уместна, если стратегия рассчитана на разные условия. Заранее определите критерии выделения периодов, чтобы не выбирать их только по результату.
- Сравнение нескольких инструментов. Используйте его, если правила заявлены как применимые шире одного инструмента. Проверьте, что данные и условия исполнения сопоставимы, и не исключайте неудобные инструменты без обоснования.
- Сценарии издержек и исполнения. Уместны, когда точные условия исполнения неизвестны. Сравните результат при разных явно описанных допущениях и покажите, насколько вывод от них зависит.
Зафиксируйте версии данных, параметры, правила исполнения и итоговые ограничения. Исторический тест служит для проверки логики и выявления слабых мест, но не предсказывает будущий результат.
Нюансы подготовки данных, которые часто упускают при бэктесте
Можно ли заменить пропущенные котировки предыдущей ценой?
Только если это оправдано правилами формирования данных и не искажает сигнал или исполнение. Сначала выясните причину пропуска; иначе исключите участок и зафиксируйте ограничение.
Достаточно ли свечей для реалистичной проверки исполнения?
Свечи подходят для многих проверок правил, но не всегда показывают порядок движения цены внутри интервала и доступный объём. Укажите эти ограничения и не приравнивайте касание уровня к гарантированному исполнению.
Нужно ли учитывать закрытые или исключённые из торгов инструменты?
Да, если задача - оценить стратегию на историческом наборе доступных инструментов. Проверка только текущих инструментов может скрыть влияние тех, которые позднее исчезли из выборки.
Что делать, если история есть только из одного источника?
Проверьте документацию, временные метки и отдельные подозрительные участки, насколько это возможно. Зафиксируйте, что независимая сверка недоступна, и не представляйте источник как подтверждённый несколькими поставщиками.
Как понять, что стратегия подогнана под историю?
Настораживают резкая зависимость результата от небольших изменений параметров и ухудшение на периоде, не использованном при настройке. Сравните заранее выбранные варианты на отдельной хронологической выборке и раскройте, сколько вариантов проверялось.
Когда следует остановить тест и пересобрать данные?
Если обнаружены необъяснённые временные сдвиги, систематические пропуски, дубли или цены, нарушающие правила формирования свечей, сначала разберитесь с источником. До выяснения причины итоговый тест не следует считать надёжной проверкой.


