Материал объясняет, почему впечатляющие результаты бэктестов часто не подтверждаются на реальном рынке, и какие ошибки в тестировании приводят к ложному ощущению надежности стратегии. Особое внимание уделено переоптимизации, скрытым торговым издержкам, изменчивости рыночных условий и методам проверки торговых систем перед запуском на реальный счет.
Представим типичную ситуацию: несколько месяцев работы, сотни прогонов, тщательно подобранные параметры - и вот бэктест стратегии выдает впечатляющие показатели. Прибыль растет ровно, почти по прямой. Просадки невелики, соотношение риска к доходности радует глаз. Стратегия запускается на реальный счет, и с первых же недель что-то идет не так. Сделки исполняются хуже, чем в тесте,по какой-то причине просадки получаются глубже, прибыли вовсе нет.
Подобную картину наблюдают тысячи трейдеров - от новичков, только осваивающих тестирование торговых стратегий, до опытных разработчиков алгоритмических систем. Разрыв между бэктестом и реальной торговлей на самом деле закономерен. Это системная проблема, в основе которой лежит несколько фундаментальных причин. Важно разобраться в каждой из них и тогда вы перестанете удивляться этому разрыву, а начнете его целенаправленно сокращать.
Содержание
- Почему бэктесты показывают слишком хорошие результаты
- Влияние комиссий, спредов и проскальзывания
- Рынок постоянно меняется
- Почему необходимо форвард-тестирование
- Как приблизить результаты тестирования к реальности
- Заключение
Почему бэктесты показывают слишком хорошие результаты
В основе любого тестирования на истории лежит одно неустранимое противоречие: алгоритм тестируется на данных, исход которых уже известен. Это кардинально отличает бэктест от реальной торговли, где каждое следующее движение цены остается неизвестным.
Задержка исполнения
На реальном рынке между моментом формирования сигнала и фактическим открытием позиции проходит время. Для ручной торговли это могут быть секунды, для торгового робота скорее миллисекунды, но и они имеют значение при определенных стратегиях. В тесте ордер исполняется мгновенно по нужной цене. Цена, зафиксированная в исторических данных в момент сигнала, редко совпадает с той, по которой реально удастся войти в рынок. А размер такого отклонения зависит от множества факторов. Например, скорости исполнения ордеров у конкретного брокера или же расположение сервера – удаленность от трейдера тоже имеет значение.
Психологический фактор
Тестирование на истории полностью исключает эмоции. Система в бэктесте не переживает из-за убыточной серии, не закрывает прибыльную позицию раньше времени и не добавляет объем в убыточную сделку. В реальной торговле все это происходит постоянно, даже при наличии автоматизированного торгового робота, которого трейдер нередко отключает именно в самый неподходящий момент.
Качество исторических данных
Пропуски в тиковой истории, некорректные корпоративные события, артефакты в котировках - все перечисленное формирует искаженную картину прошлого. Стратегия, обученная на таких данных, тестирует себя в условиях, которых в действительности не существовало. Результаты подобного бэктеста не просто оптимистичны, по сути они принципиально недостоверны.
Переоптимизация стратегии - главный враг трейдера
Среди всех причин расхождения между историей и реальным рынком переоптимизация занимает особое место. Именно она чаще всего стоит за красивыми кривыми капитала, которые рассыпаются сразу после выхода на реальный счет. Мы уже разбирали этот вопрос подробно, поэтому просто кратко напомним.
Рис. 1 Пример бэктеста
Суть переоптимизации проста: разработчик последовательно подбирает параметры торговой системы, например, периоды индикаторов, уровни фильтров, условия входа и выхода. И делает это до тех пор, пока результат теста не становится максимально привлекательным. При достаточном количестве итераций любой набор параметров начнет в совершенстве объяснять прошлое. Стратегия перестает описывать рыночную закономерность и начинает описывать конкретный исторический участок.
Это явление называют буквально подгонкой кривой баланса. Оптимизация стратегии сама по себе не является ошибкой. Ошибкой становится отсутствие критериев, при которых она прекращается.
Перечислим признаки переоптимизированной стратегии:
- Параметров в системе столько же, сколько и значимых сделок в тесте;
- Результат кардинально меняется при незначительном сдвиге любого параметра;
- Стратегия великолепно работает на одном периоде и полностью ломается на другом;
- В бэктесте практически нет затяжных просадок, кривая капитала выглядит неестественно ровной;
- На похожих инструментах одного класса стратегия показывает принципиально разные результаты;
- Доходность теста намного превосходит среднерыночные ориентиры без очевидного конкурентного преимущества.
Важно запомнить простое практическое правило: чем меньше параметров содержит торговая система и чем стабильнее её поведение при их варьировании и тем выше вероятность того, что за стратегией стоит реальная рыночная закономерность.
В этом можно убедиться на примере индикатора Money Hunter – он работает со структурой, которая неизменна с самого начала биржевых торгов.
Влияние комиссий, спредов и проскальзывания
Транзакционные издержки - один из самых недооцененных факторов при тестировании торговых стратегий. В идеальном мире бэктеста сделки исполняются без потерь. В реальной торговле каждое открытие и закрытие позиции стоит денег, и эти деньги напрямую вычитаются из итогового результата. Чем больше сделок, тем больше издержек. Рассмотрим все факторы в виде таблицы:
|
Фактор |
В тесте |
В реальной торговле |
|
Комиссии |
Нередко не учитываются |
Снижают доходность каждой сделки |
|
Спред |
Фиксированный или минимальный |
Динамически расширяется при волатильности |
|
Проскальзывание |
Как правило, отсутствует |
Возникает регулярно при рыночных ордерах |
|
Ликвидность |
Неограниченная, условная |
Реально ограничена, особенно в стрессовых ситуациях |
Проскальзывание - разница между ценой, по которой алгоритм торговли планировал совершить сделку, и ценой ее фактического исполнения. При торговле рыночными ордерами в периоды низкой ликвидности рынка или высокой волатильности проскальзывание может составлять несколько пунктов. И это на каждой сделке!
Для стратегий с высокой частотой торговли суммарный эффект издержек особенно заметен. Комиссия в 0,04% за сделку выглядит незначительной, но при 600 сделках в год она поглощает почти 25% капитала только на транзакционных расходах, еще до учета спреда и проскальзывания.
Рынок постоянно меняется
Любая торговая стратегия разрабатывается на основе закономерностей, наблюдавшихся в прошлом. Но рынок не статичен, это по-настоящему живая система, которая непрерывно трансформируется. Рыночный режим, на котором обучена система, рано или поздно сменяется другим. Давайте посмотрим, что меняется на рынке со временем:
- Характер волатильности: спокойные периоды консолидации сменяются резкими направленными движениями, и параметры, оптимальные для одного режима, становятся убыточными в другом;
- Межрыночные корреляции: активы, исторически двигавшиеся в связке, могут резко разойтись под влиянием макроэкономических изменений. Очень показательны в этом плане EUR и GBP;
- Состав и поведение участников: появление крупных алгоритмических игроков трансформировало микроструктуру рынка и многие паттерны, работавшие десятилетие назад, сегодня систематически выбиваются;
- Ликвидность рынка: в кризисные моменты спреды расширяются кратно, а исполнение ордеров становится весьма непредсказуемым;
- Регуляторные изменения: новые правила маржинальной торговли, ограничения по коротким позициям, изменения биржевой инфраструктуры;
- Информационная среда: скорость распространения новостей и их влияние на рынок принципиально изменились с приходом алгоритмической торговли.
Рис. 2 Разница в результатах в зависимости от времени
Трендовые системы, блестяще работающие на направленных рынках, неизбежно будут давать серии убытков в боковом движении. Контртрендовые стратегии, эффективные в диапазонах, могут понести значительные потери при устойчивом тренде. Ни один бэктест не защищает от смены режима — он лишь показывает, как стратегия вела себя в прошлом.
Почему необходимо форвард-тестирование
Форвард-тестирование, можно сказать, единственный способ проверить стратегию на данных, которые не участвовали в ее разработке. Бэктест смотрит в прошлое, а форвард-тестирование позволяет оценить настоящее.
Практическая схема форвард-тестирования включает три последовательных этапа.
Демо-счет
На первом этапе торговый робот или стратегия запускаются в реальном времени без реального капитала. Это позволяет выявить технические проблемы, такие как некорректное исполнение ордеров и поведение системы в нестандартных ситуациях - торговых паузах, гэпах открытия, экстремальных движениях в момент выхода важных новостей.
Минимальный реальный капитал
После успешного прохождения демо-этапа стратегия тестируется на реальных деньгах с минимально возможным объемом позиций, подойдет центовый счет. Разница между демо и реальным счетом не исчерпывается психологией, так как реальное исполнение ордеров нередко отличается от симулированного даже при совпадающих ценах.
Оценка устойчивости
Форвард-тест признается состоятельным, если на репрезентативной выборке сделок показатели стратегии соответствуют прогнозам бэктеста. Существенное расхождение прямо указывает на необходимость пересмотра системы. Продолжительность форвард-теста должна быть соразмерна горизонту стратегии: для внутридневных систем достаточно двух-трех месяцев, среднесрочные стратегии требуют не менее полугода наблюдений.
Как приблизить результаты тестирования к реальности
Полностью исключить расхождение между тестом и реальной торговлей не получится, ведь это свойство рынка, а не недостаток методологии. Однако правильно выстроенный процесс позволяет сделать это расхождение. Ниже рассмотрим практические принципы, без которых тестирование торговых стратегий остается упражнением в самообмане.
- Работать только с качественными историческими данными. Использовать тиковые или минутные данные от проверенных провайдеров. Перед тестированием проверять историю на пропуски, аномальные значения и корректность.
- Учитывать все транзакционные издержки. Вносить в тест актуальные брокерские комиссии и биржевые сборы. Лучше переоценить издержки, чем недооценить их.
- Моделировать реалистичное проскальзывание. Величину проскальзывания определять исходя из ликвидности конкретного инструмента и планируемого объема позиций. Для малоликвидных активов закладывать значительный запас.
- Тестировать на нескольких исторических периодах. Обязательно включать периоды с разными рыночными режимами: растущий и падающий рынок, высокую и низкую волатильность, фазы нестабильности и повышенных рисков.
- Проводить форвард-тестирование до запуска на реальный счет. Этот этап не является опциональным, даже если бэктест выглядит убедительно.
- Контролировать степень оптимизации стратегии. Ограничивать число настраиваемых параметров и проверять изменение результата при их варьировании.
- Встраивать риск-менеджмент в архитектуру системы. Лимиты на максимальную просадку, правила расчета размера позиции, ограничение дневного убытка неотъемлемая часть процесса тестирования.
Заключение
Бэктест при правильном применении - мощный инструмент разработки торговых стратегий. Но важно понимать, что он не является гарантией будущих результатов. Расхождение между тестом и реальной торговлей невозможно устранить полностью, ведь рынок слишком сложен и изменчив, чтобы прошлое служило точным предсказателем будущего.
Однако это расхождение можно сделать управляемым. Достаточно понять природу переоптимизации, учитывать реальные издержки, регулярно проводить форвард-тестирование и встраивать жесткий риск-менеджмент в свою торговую систему. В этом случае все работает принципиально иначе и дает релевантный результат. Устойчивость важнее эффектных цифр бэктеста. Стратегия, стабильно приносящая умеренную прибыль на реальном рынке, стоит дороже любой кривой капитала, нарисованной на исторических данных.
Подписывайтесь на наши социальные сети, чтобы быть в курсе актуальной аналитики, торговых идей и новых возможностей для роста на финансовых рынках.

