Секреты TSLab | Торговые роботы | События
13 Апр

Подводные камни при разработке торговой системы

Введение. Разработка торговой системы.

С развитием новых технологий с каждым годом появляется все больше “софта” в том числе и для алготрейдинга. И если в 80-х годах 20 века при разработке торговой системы использовались распечатки ценового графика, блокнот и карандаш, то теперь все те же действия делаются с помощью специализированных программ для исторического тестирования торговых роботов. С их помощью каждый трейдер в состоянии самостоятельно заняться разработкой торговой системы, даже не располагая для этого какими-то специализированными навыками (как-то: владение языком программирования, глубокие знания статистики и т.п.). С другой стороны именно из-за отсутствия необходимого багажа знаний многие новички зачастую сталкиваются с рядом незаметных “подводных камней”, которые искажают тестовые результаты и могут пагубно повлиять на торговый счет начинающего трейдера. В данной статье мы предлагаем небольшой обзор основных подводных камней, связанных с разработкой торговой системы, а также тестированием торговой системы на исторических данных.

“Подглядывание в будущее”.

Это одна из самых опасных и наиболее распространенных ошибок. Заключается она в следующем: при моделировании сигналов торговой системы на “i” свече алгоритм использует данные с “i+1″ свечи, как бы заглядывая в будущее. Например, распространен такой вариант: генерируется сигнал на покупку на текущей свече, если следующая свеча закрылась выше текущей, а если наоборот – сигнал на покупку не поступает. Естественно, при историческом тестировании, когда нам заранее известен весь исследуемый ценовой ряд, подобные правила приведут к полному отсутствию убыточных сделок. Мы получим “грааль”, который каждый день приносит только прибыль. Однако, в реальной торговле этот “грааль” ничего не стоит, т.к. будущие цены в реальном времени не известны. Из этой же серии можно отметить ряд “перерисовывающихся” индикаторов (особенно распространены на рынке форекс), которые всегда правы на истории, но не дают ничего полезного в реальной рыночной ситуации. Для подобной ошибки характерен гладкий и равномерный график кривой доходности с высоким процентом прибыльных сделок и отсутствием сколько-нибудь серьезных “просадок” (пример изображен на рисунке). Поэтому если Вы получили идеальный график доходности – скорее всего, произошла ошибка, связанная с “подглядыванием в будущее”, и стоит еще раз перепроверить логические условия для входа и выхода из позиции.

Разработка торговой системы

Пример стратегии, заглядывающей в будущее

Утренние “гэпы”.

Еще одна частая ошибка – использование в процессе тестирования торговой системы данных с утренними “гэпами”. В результате вход или выход из позиции на истории происходят по одной цене, а на реальных котировках этой цены и в помине не было. Для понимания сути разберем схему происхождения утренних “гэпов”. Часто бывают ситуации, когда во время закрытия российских фондовых площадок в мире происходят сильные движения. В результате чего, на российской бирже в момент открытия (10:00) происходит как бы скачок (“гэп”) в сторону уже состоявшегося на мировых площадках движения. Заработать на этом скачке фактически невозможно, т.к. происходит он за доли секунды, после чего цена начинает торговаться уже на справедливом уровне на несколько тысяч пунктов выше/ниже открытия. Хорошо проиллюстрирован подобный случай на картинке за 18.03.2013. В этот день состоялся один из самых сильных “гэпов” текущего года: цена за доли секунды “гэпнула” на 3000 пунктов (со 149 000 до 146 000). На часовом таймфрейме график выглядит достаточно красиво – “входи в шорт на пробитии экстремума и забирай прибыль”. Однако, если более пристально присмотреться и взять сделки за первые 5 секунд торгового дня (с 10:00:00 по 10:00:05), очевидно, что зайти “в рынок” по цене выше 146 000 пунктов вам бы не удалось. Движение на “гэпе” 149 >> 146 было отыграно за первые доли секунды, после чего цена стабилизировалась вблизи справедливого на тот момент уровня. Естественно, если ваша торговая система зашла или вышла на тестах по “стоп-заявке”, например, в районе 148 500, получить такую котировку в реальных торгах совершенно точно не удалось бы. Для того, чтобы избежать ошибок утренних “гэпов”, следует либо вырезать первую секунду торгов из исторических данных, либо сознательно в алгоритме ограничивать время входа и выхода (без первой свечи), либо использовать эмуляцию стоп-заявок по цене закрытия бара.

Первые 5 секунд торгов 18.03.2013

Первые 5 секунд торгов 18.03.2013

Часовой таймфрейм 18.03.2013

Часовой таймфрейм 18.03.2013

Транзакционные издержки.

Под транзакционными издержками обычно принято понимать комиссию, которую взимает брокер и биржа за сделку, и проскальзывание, которое образуется во время совершению сделки. Общая комиссия на рынке «спот» (акции, облигации) составляет порядка 0,1% «на круг» (т.е. сначала купить – потом продать) от объема сделки. На срочном рынке (фьючерсы и опционы) комиссия составляет порядка 2-4 рублей «на круг», т.е. в разы ниже «спотового» аналога. Проскальзывание – это обычная рыночная ситуация, когда цена реального исполнения сделки немного отличается от теоретической цены. Многие трейдеры игнорируют транзакционные издержки, что делать совершенно точно не нужно, особенно для  систем с высоким количеством входов внутри дня. Поначалу транзакционные издержки могут казаться незначительными, но, например, если система осуществляет порядка 10 заходов по акциям Сбербанка в день, то на комиссию будет уходить около 1% в день. И это при условии, что сама бумага далеко не каждый день двигается более чем на 1%. Очевидно, что система при таких высоких издержках, скорее всего, будет убыточной, даже не смотря на вполне удачные входы с небольшой прибылью. На картинке ниже проиллюстрирован данный тезис – слева тест краткосрочной внутридневной системы на фьючерсе Сбербанка без комиссии, а справа уже с комиссией 2 рубля «на круг». Комиссия всего лишь в 2 рубля фактически делает из стабильно прибыльной системы – систему, работающую «на грани».

Разработка торговой системы

Слева – без учета комиссии, справа – учтена комиссия 2 рубля.

Переоптимизация торговой системы.

Переоптимизация или «curve fitting» – подгонка под кривую, также часто встречается у начинающих системостроителей. Чем большим количеством параметров обладает система (периоды различных индикаторов, временные окна, коэффициенты), тем больше вероятность того, что при каком-то наборе значений этих параметров на заданном историческом промежутке система будет обладать качественными устойчивыми характеристиками. Однако, если перенести этот же казалось бы качественный набор значений на другой исторический промежуток – от былой устойчивости не останется и следа. Пример можно видеть на рисунке ниже.

Пример переоптимизированной системы

Пример переоптимизированной системы

Многие новички попадаются на эту удочку, запуская «кривого» торгового робота в реальную торговлю. Результатом чего становится слитый депозит. Но не все так плохо. Есть ряд профилактических мер, которые позволят избежать лишнего «курвафиттинга».

Good-list при разработке торговой системы.

  • Во-первых, нужно всегда понимать основную идею системы и за счет чего она генерирует прибыль. Понимание этого процесса позволит вам вовремя увидеть момент, когда что-то пойдет не так.
  • Во-вторых, по возможности уменьшайте количество оптимизируемых параметров системы. Если есть возможность какой-то из параметров удалить или зафиксировать – делайте это. Лучше иметь несколько логически обоснованных параметров со средними характеристиками, чем кашу из случайных значений, которая по непонятным причинам показывает рекордную прибыль на каком-то историческом куске. Идеальная система не должна вообще иметь оптимизируемых параметров.
  • В-третьих, каждый из параметров должен обладать устойчивыми характеристиками в каком-то диапазоне значений вблизи оптимального. Т.е. если, к примеру, значение скользящей средней 15 дает гладкую и равномерную кривую доходности, а значение 16 уже дает диаметрально противоположные результаты, на лицо все признаки переоптимизации. Если же данный параметр дает устойчивые характеристики в диапазоне от 3 до 33, вероятно, такая система имеет право на жизнь.
  • В-четвертых, используйте «in-sample» и «out-of-sample» участки при разработке торговой системы. «In-sample» – участок «в выборке» исторических данных, на котором осуществляется разработка, оптимизации и подбор оптимальных параметров системы. «Out-of-sample» – участок данных «вне выборки», который вообще не участвует в разработке. На участок «out-of-sample» мы лишь переносим найденные в «in-sample» параметры и смотрим за изменением характеристик системы. Если характеристики на обоих участках примерно одинаковые – все нормально, система пригодна для работы. Если же на участке «вне выборки» мы видим резкое ухудшение характеристик вплоть до противоположного, вероятно, имеет место переоптимизация, а такую систему лучше не использовать.


comments powered by HyperComments

Настя
2017-01-04 14:33:08
Казино Вулкан раздают деньги сегодня http://cenforce100.ru/casino-vulkan.php
6
Ноя
2017

Доверительное управление. Результаты в октябре 2017 года.

Доверительное управление. Результаты в октябре 2017 года. В октябре продолжался боковик на всех торгуемых активах. Российский… »

7
Окт
2017

Доверительное управление. Результаты в сентябре 2017 года.

Доверительное управление. Результаты в сентябре 2017 года. В сентябре на основных торгуемых активах (Ri и… »

8
Сен
2017

Доверительное управление. Результаты в августе 2017 года.

Доверительное управление. Результаты в августе 2017 года. Стратегия “Опционы” принесла в августе прибыль в размере… »

6
Авг
2017

Доверительное управление. Результаты в июле 2017 года.

Доверительное управление. Результаты в июле 2017 года. В июле индекс РТС вновь колебался в достаточно узком… »

14
Июл
2017

Доверительное управление. Результаты в июне 2017 года.

Доверительное управление. Результаты в июне 2017 года. Июнь индекс РТС вновь провел преимущественно в боковых движениях, а… »