Блог им. skuvv

Тестирование страгий, то о чем все молчат

    • 19 ноября 2011, 22:06
    • |
    • skuvv
  • Еще
Решил показать некоторые нюансы при разработке роботов.
Допустим есть торговая идея, которую мы реализуем в коде.
Для простоты я построил стратегию на основе 1мин баров.
Условимся что все сделки  по рынку, а не лимитки. Причина в конце.
Первый сферический тест(временные рамки чуть меньше 2 месяцев):Что то сильно красиво получилось, где то есть подвох..
Анализируем:
комисии не учтены,
задержки исполнения не учтены, 
проскальзывание не учтено,
исполнение сделок по цене закрытия бара,
бары построены из тиков сделок.
Так как исполнение идет по закрытию бара на основе сделки, то не факт что сделка была по ask, что может оказаться лучше реальности если робот будет продавать в этот момент.
Немного исправим этот нюанс. Будем строить бары по середине спреда (bid+ask)/2, в итоге получаем такую картину:

 Довольно сильное изменение!
Анализируем:
комисии не учтены,
задержки исполнения не учтены, 
проскальзывание не учтено,
исполнение сделок по цене закрытия бара,
бары построены из тиков середины котировок.
Добавим реальные параметры — проскальзывание, задержку и комиссию:

Изменение есть, но уже не такое  сильное.
Анализируем:
комисии учтены, 2рубля/седлка,
задержки исполнения учтены, 500мс(взято для квика), 
проскальзывание учтено, 2 тика(+задержка исполнения),
исполнение сделок по цене закрытия бара,
бары построены из тиков середины котировок. 
Остается один момент на каторый вроде можно и забить, но...
Сделки открываются на основе закрытия бара, а не по котировкам, изменим это, теперь исполнение только по цене прошлой котировки:

Картина опять радикально изменилась, грааль уже совсем не грааль... 
Анализируем:
комисии учтены, 2рубля/седлка,
задержки исполнения учтены, 500мс(взято для квика), 
проскальзывание учтено, 2 тика(+задержка исполнения),
исполнение сделок по цене bid/ask,
бары построены из тиков середины котировок.  
Параметры максимально приближены к реальным.

Теперь о плохом.
Сколько софта  из доступного на рынке позволяет сделать бектестинг с необходимой точностью? Единицы...
Тестируя по барам многие загоняют себя в такую же ловушку как приведенная выше.
Широкоизвестные нинзя, велзлаб, метатрейдер не позволят достичь tick-by-tick тестов.
Можно возразить и сказать, что нам не нужны тики и мы сделаем проскальзывание больше, но это подходит только для очень ликвидных инструментов с плотным стаканом, где спред всегда =1 тику(например e-miniSP). В остальных же случаях нужно ставить проскальзывание порядка 10тиков или выше, часто вы так делаете?
Другие скажут что мы будем отправлять только лимитные сделки, а не по рынку, хорошо, но пробывали ли вы делать move лимитной заявки в отечественных реалиях и конкурируя с ботами с прямым выходом на биржу?
А если нужно двигать лимитки больше чем по одному инструменту(парный трейдинг, арбитраж и тп)? 
Если у вас нет плазы2 ил fix/fast вам просто не дадут встать первым, сделка может не исполнится. Как это учесть в бектестинге? Никак...
PS при оптимизации сразу выставляйте реальные/жесткие условия  исполнения заявок — это секономит уйму времени
★27
22 комментария
Интересная статья, вопрс автору на чем тестирушь?
avatar
churinga, Скриншоты из openquant
avatar
skuvv, вы вроде и у нас на форуме появлялись. Пробовали прогнать тест на тиках через S#? Какое расхождение с барным прогоном? Еще лучше прогнать тики + стаканы. Могу дать стаканы с плазы по РИ за неделю для тестов. Интересно расхождение с реальным (именно реальным) ходом торгов.
avatar
Mikhail Sukhov, я везде понемногу появляюсь -)
Если подогнать параметры под реальные условия расхождение почти нулевое.
От тиков толку не будет конкретно в этом случае, так как срез по времени сознательно выбран 1мин(бар), а для тиков нужны совсем другие алгоритмы.
На s# не пробовал бектестинг.
Использование данных с плазы без использования самой плазы в торговле результата не даст.
avatar
skuvv, я бары использовал 20 сек. Тесты были на Ами. Давало одно (без проскальзывания там вообще грааль был). Потом мне сделали бэктестер, и я решил перепрогнать свои 20 сек ТФ на тиках. Получились убыточную систему, что соответствовало реальности. Не все, конечно, было как на реальном счете, но показало как раз то, что система убыточна, вместо прибыльности на барах. А бары то в 3 раза меньше минутки.

Потом появились уже стаканы, но никак руки не доходят перепрогнать старую страту. Еще минус в том, что та страта запускалась в 2009-ом, а стаканов за тот период у меня нет. Сейчас как-то жалко ради экспериментов бабки тратить на убыточной стратегии.
avatar
У меня примерно то же самое
Это OpenQuant компании SmartQuant.
Очень хорошая программа. На Пауке огроменная обсуждательная ветка +)

Рекомендую.
avatar
SGN, что есть паук?
avatar
Паук это наинтереснейший, обсуждательный рекурс: forex.kbpauk.ru

Рекомендую.
avatar
всё верно

или делайте роботов не по минуткам ))
и не по 5 минуткам
а от часа )
avatar
PahaPCT, то что сделки будут на основе часовых баров не отменяет проскальзывания, задержки и прочие реалии.
Другой момент что сделок будет на порядок-два меньше и этот момент как-нибудь затеряется.
ps касаемо интрадей of course
avatar
skuvv, я думаю дело все-таки не в количестве сделок а в норме прибыли на сделку, которая понятно на часовиках гораздо больше…
avatar
Вадим, молодец! интересная статья, HFT эт всегда интересно)
avatar
moneymaker, это совсем не ХФТ, там только тики/квоты…
avatar
Афтар спасибуха!!! Наставил на правильный путь!
отличная статья, вот что значит прямые руки и хороший софт.
плюсую
avatar
Давно замечал, что тестирование на тиках дает другой, а порой даже неожиданный результат.
avatar
Если сделка идет по закрытию свечи на графике квика, то запаздывание надо брать больше, до 5 секунд. И свечи, и тиковые данные запаздывают.
avatar
коменты не смотрел. статью не дочитал. сразу вопрос)))
на каком таймфрейме на каком-нить популярном инструменте все «нюансы» невелируются?
спасибо!:)
avatar
Еще раз напомню, что статья об интрадэй алгоритмах.
Естественно чем больше прибыль на сделку, тем меньше влияние спрэдов/комиссий/задержек…
Если по РИ средняя сделка 10000 пунктов, то можно и не обращать внимание на все это, а если получается сделка пунктов 500 или меньше, то есть повод задуматься.
avatar
согласен… пробовал торговать на 2ухсекундном таймфрейме… на тестах было все ок… в реале было говнище…
имхо все решает средняя прибыль на сделку на интервале тестирования три года… если средний профит меньше 0.1% не имеет смысла торгвать такое…
avatar
А сразу заложить комиссии со всеми делами не судьбы чтоли? 0,1 % со сделки например
avatar

теги блога skuvv

....все тэги



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