skuvv
skuvv личный блог
19 ноября 2011, 22:06

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

Решил показать некоторые нюансы при разработке роботов.
Допустим есть торговая идея, которую мы реализуем в коде.
Для простоты я построил стратегию на основе 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 при оптимизации сразу выставляйте реальные/жесткие условия  исполнения заявок — это секономит уйму времени
22 Комментария
  • churinga
    19 ноября 2011, 22:25
    Интересная статья, вопрс автору на чем тестирушь?
  • интернет-трейдинг.рф
    19 ноября 2011, 22:28
    У меня примерно то же самое
  • SGN
    19 ноября 2011, 22:28
    Это OpenQuant компании SmartQuant.
    Очень хорошая программа. На Пауке огроменная обсуждательная ветка +)

    Рекомендую.
  • SGN
    19 ноября 2011, 22:31
    Паук это наинтереснейший, обсуждательный рекурс: forex.kbpauk.ru

    Рекомендую.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн