Бэк-тестирование стратегий
За 6 лет разработки и тестирования роботов у нас накопился некоторый опыт в данной теме.
Мы решили поделиться им. Начинающим трейдерам несомненно данная статья будет полезна.
Рассмотрим следующие варианты тестирования стратегий:
1. Бэк-тест за весь период исторических данных.
Количество проходов теста зависит от множества параметров и может быть довольно большим. В итоге, находится единственное оптимальное решение. Не факт, что в дальнейшем оно будет столь же прибыльным. Скорее всего доходность будет хуже. И это подтверждается нашим опытом. Далее поймем почему.
Для улучшения доходности можно использовать многопараметрическую систему и каскад фильтров. Но, чем больше будет параметров и чем точнее они будут подогнаны под определенный период торгов, тем система станет более переоптимизирована.
Переоптимизация — уникальное состояние системы при котором стратегия показывает наилучшее соотношение риск/доходности за определенный период времени.
2. Форвардный бэк-тест.
Разбиваем исторические данные на периоды, тестируем и оптимизируем эти периоды по очереди.
Пример, берем данные за 2000-й год и проводим тестирование с оптимизацией значений параметров. Далее с найденными оптимальными значениями тестируем 2001 год. Анализируем кривую доходности и проводим новую оптимизацию. Так повторяем до текущего года. Количество лет, и также величину диапазона (год, квартал, месяц) можно менять. Рынок всегда разный, поэтому максимальная по доходности стратегия с вероятностью 99,99% не подойдет столь же хорошо к следующему периоду.
В итоге, мы получаем
a) оценку эффективности торговой стратегии работающей на предварительных оптимизированных данных;
b) набор оптимальных параметров.
Дополнительно можно проделать такую же работу на другом таймфрейме.
(Здесь Вы скорее всего обнаружите что старшие таймфреймы более трендовые; а минутные более шумные, с большим количеством ложных пробоев.)
При этом нужно обратить внимание чтобы количество сделок было не менее 1000. А лучше больше 5000. Иначе может случиться так, что были лишь пяток сделок, которые отработали стратегию "Купил и держи", либо несколько случайных супер-прибыльных.
Также важно чтобы не только доходность была положительная, но и количество прибыльных сделок было больше, чем убыточных.
Плюсы такого тестирования заключаются в том, что мы моделируем ситуацию максимально близкую к реальности, и мы можем оценить насколько сильно разнятся или совпадают значения оптимальных параметров на разных периодах времени и на разных таймфреймах. А также можем выявить аномалии, если они ярко выражены в определенные периоды. И если оптимальные значения не сильно изменяются на разных диапазонах и риск/доходность при этом нас удовлетворяет, то стратегия считается устойчивой и пригодной к использованию.
Анализ убыточных сделок позволяет выявить закономерности, которые можно будет отфильтровать, улучшая итоговую доходность.
Минусы данного подхода заключаются в больших затратах сил и времени.
Сюда же можно добавить, как частный случай, и первый вариант бэк-теста. А также можно применить к нему выведенные ранее общие фильтры.
Безусловно, второй вариант тестирования всегда будет более предпочтителен, чем упрощенный первый.
Важные моменты при тестировании стратегий
1. При тестировании нужно понимать что результаты на ликвидных инструментах всегда будут ближе как реальности.
2. На неликвидных инструментах просто может не быть объемов. Кстати, многие платформы для тестирования стратегий на исторических данных дополнительно рисуют плоские свечи (в виде черточки) с нулевым объемом. То есть, свеча вроде есть и сделку терминал на ней нарисует, но по факту объем на ней нулевой, а значит заявка не была бы удовлетворена в реальности. Поэтому тестировать и торговать неликвидные активы не желательно. Либо добавляйте в свои условия фильтры на нулевые или минимальные объемы, чтобы отсекать на бэк-тесте фиктивные сделки.
3. Усредненная сделка должна перекрывать проскальзывание, комиссию (брокерскую и биржевую) и спрэд. На практике, для Срочного рынка, такие сделки получаются примерно от 10 шагов цены фьючерсов. Это будет гарантированно, с запасом. Лучше закладываться на 15 шагов цены, но не всегда это позволяет делать ликвидность инструмента. При 6-8 шагах цены для тейк-профита, значительно будет влиять на доходность комиссия.
Адаптация стратегии под изменчивость рынка
Это ещё один интересный и полезный прием для улучшения характеристик торговой стратегии
1. Если ускорение движения цены растет, то мы отключаем контртрендовые стратегии и включаем трендовые. При этом фиксированный тейк-профит заменяем на следящий (трейл), чтобы высидеть максимальную прибыль;
2. Если текущая волатильность снизилась, то стоп-лосс подтягиваем ближе;
3. Если рыночные объемы торгов падают, то понижаем свои объемы на сделку, которыми торгуем;
4. Если спрэд в стакане вырастает, то выставляем дополнительные заявки для большей вероятности их отработки;
5. Если спрэд свечи становится минимальным, то отключаем все входы в позицию;
6. Если дельта между ценой и её средним значением превышает обычные значения, то переходим в трендовый режим и увеличиваем ТП и СЛ.
7. Если стоп-лосс не удается рассчитать таким чтобы он был с малой вероятности срабатывания и тейк-профит был в 3 раза больше при высокой вероятности срабатывания, то такая сделка пропускается;
То есть алгоритм сам адаптируется к текущим показателям рынка и сам принимает, либо не принимает, торговое решение.
И это всё на бек-тесте довольно качественно вычисляется и проверяется.
В итоге мы приходим в тому, что для того чтобы разработать прибыльную и надежную торговую стратегию необходимо провести огромную аналитическую работу.
И только после этого можно приступать к программированию торгового робота, не забыв запрограммировать все тонкости и дополнительные проверки торговой логики (подключение к серверу брокера, клиринги, доступность и корректность получаемых данных и т.п.). Но это уже тема другой большой статьи.
Надеемся, что данный материал поможет начинающим алготрейдерам более качественно оценивать свои торговые стратегии.
Остались вопросы? Обращайтесь на почту или пишите в чат. Мы ответим.
Желаем Вам прибыльного трейдинга!