Блог им. robot-scalper

Тестирование торговых стратегий от Robot Scalper

Тестирование торговых стратегий. Как правильно и надежно тестировать торговых роботов и стратегии.

Тестирование торговых стратегий от Robot Scalper

За 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 раза больше при высокой вероятности срабатывания, то такая сделка пропускается;

То есть алгоритм сам адаптируется к текущим показателям рынка и сам принимает, либо не принимает, торговое решение.
И это всё на бек-тесте довольно качественно вычисляется и проверяется.

В итоге мы приходим в тому, что для того чтобы разработать прибыльную и надежную торговую стратегию необходимо провести огромную аналитическую работу. 
И только после этого можно приступать к программированию торгового робота, не забыв запрограммировать все тонкости и дополнительные проверки торговой логики (подключение к серверу брокера, клиринги, доступность и корректность получаемых данных и т.п.). Но это уже тема другой большой статьи.

Надеюсь, что данный материал поможет начинающим алготрейдерам более качественно оценивать свои торговые стратегии.

Если у Вас есть что дополнить по данному вопросу, добро пожаловать в комментарии. Обсудим, добавим, углубим, расширим! ))
Комментарии не относящиеся к теме будут удалены.

Наш сайт Robot-Scalper.ru
Инстраграм instagram.com/robot_scalper

Желаем Вам прибыльного трейдинга!
★20
21 комментарий
В копилку для новичка — при тестировании не стоит обращать внимание только на фактор восстановления ТС.
 Допустим у вас фактор восстановления 12, но при этом сделок мало. Это плохо, потому что может сигнализировать о случайности.
 В этом случае лучше выбрать такие параметры, чтобы фактор восстановления был разумно ниже, но количество сделок было на порядок больше. Таким образом ТС быстрее принесет прибыль.
avatar
Виталий Б., поддерживаю. В тексте есть информация: 

При этом нужно обратить внимание чтобы количество сделок было не менее 1000. А лучше больше 5000. Иначе может случиться так, что были лишь пяток сделок, которые отработали стратегию «Купил и держи», либо несколько случайных супер-прибыльных.
avatar
Robot-Scalper.ru, да, я конечно же прочитал всю статью. Основная мысль была, что высочайший фактор восстановления это не самое главное. :)
avatar
Robot-Scalper.ru, вы бы писали ещё в начале статьи для каких таймфреймов это всё справедливо.
Если берем день, то в году всего 252+- торговых дня.
avatar
Владимир М., Любой ТФ. От 1М. Чем старше ТФ, тем больше исторических данных нужно брать. Вы же это понимаете, раз уточняете )) 
Главное, чтобы сделок было достаточно много.
avatar
Владимир М., 
Я, кстати, упоминал ТФ:

Дополнительно можно проделать такую же работу на другом таймфрейме.(Здесь Вы скорее всего обнаружите что старшие таймфреймы более трендовые; а минутные более шумные, с большим количеством ложных пробоев.)
avatar
Robot-Scalper.ru, благодарю за ответ.
avatar
Владимир М., спасибо за поддержку рублем! Это приятно! 
avatar
Роботов много, но лучше бы написали для квика такого как у Сергея Елисеева Option Chart. Это была бы дельная штука.
avatar
Alexander, на опционах ликвидность низкая и спрэды большие. Эффективно скальпировать на них не получается.
avatar
Это не для скальпинга, это для набора опционов, для создания конструкций. Чтобы не руками собирать. Начал с утра руками собирать и только половину набрал, целый день у монитора сижу:((
avatar
Alexander, дело в том, что низкая ликвидность в опционах отрицательно влияет как на торговлю с помощью роботов, так и на торговлю руками. Выставляя заявки по хорошим ценам мы получим то, что эти заявки просто останутся висеть неисполненными. А бить «в рынок» часто выходит слишком дорого! Поэтому эффективнее всего торговать RI и Si. Это самые ликвидные инструменты на нашем рынке. Отсюда и спреды с проскальзываниями у них минимальные.
avatar
Только этими инструментами и торгую, всё остальное пустое. Сегодня на Ри и начал собирать. Просто Option Chart очень сильно облегчает жизнь. Я работаю в двух платформах, есть с чем сравнивать.
avatar
Alexander, много есть различных вспомогательных инструментов для трейдинга. От простых индикаторов, до навороченных роботов.

Главное, нужно понимать что именно трейдер торгует и за счет чего будет получать прибыль. А все остальное должно лишь облегчать работу трейдера, а не быть первопричиной открытия сделок.
avatar
Про облегчение жизни и говорю:) Поинтересуйтесь про Option Chart, если напишите такого робота, думаю многие его купят у Вас, я уж точно(конечно, если цена будет адекватная). Особо сложного в нем нет ничего, алгоритм довольно простой.
avatar
Alexander, не больше какой суммы вы бы заплатили за робота? 
avatar
Но уж не столько, сколько у Вас на сайте.
avatar
Alexander, чем сложнее робот и чем больше в нем обработчиков (для надежности торговли), тем больше времени и сил уходит на разработку. Отсюда и рост стоимости. 
avatar
На какой программе можно/надо проводить back test торгового робота ?
Metastock, TSLab?
avatar

теги блога Robot-Scalper.ru

....все тэги



UPDONW
Новый дизайн