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


