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
    Интересная статья, вопрс автору на чем тестирушь?
      • Mikhail Sukhov
        19 ноября 2011, 22:34
        skuvv, вы вроде и у нас на форуме появлялись. Пробовали прогнать тест на тиках через S#? Какое расхождение с барным прогоном? Еще лучше прогнать тики + стаканы. Могу дать стаканы с плазы по РИ за неделю для тестов. Интересно расхождение с реальным (именно реальным) ходом торгов.
          • Mikhail Sukhov
            19 ноября 2011, 23:08
            skuvv, я бары использовал 20 сек. Тесты были на Ами. Давало одно (без проскальзывания там вообще грааль был). Потом мне сделали бэктестер, и я решил перепрогнать свои 20 сек ТФ на тиках. Получились убыточную систему, что соответствовало реальности. Не все, конечно, было как на реальном счете, но показало как раз то, что система убыточна, вместо прибыльности на барах. А бары то в 3 раза меньше минутки.

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

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

    Рекомендую.
  • 1234
    19 ноября 2011, 22:31
    всё верно

    или делайте роботов не по минуткам ))
    и не по 5 минуткам
    а от часа )
      • AE-trader
        20 ноября 2011, 00:54
        skuvv, я думаю дело все-таки не в количестве сделок а в норме прибыли на сделку, которая понятно на часовиках гораздо больше…
  • moneymaker
    19 ноября 2011, 22:32
    Вадим, молодец! интересная статья, HFT эт всегда интересно)
  • Олег Сергеевич
    19 ноября 2011, 22:48
    Афтар спасибуха!!! Наставил на правильный путь!
  • ShamanK
    19 ноября 2011, 22:58
    отличная статья, вот что значит прямые руки и хороший софт.
    плюсую
  • EAGor
    19 ноября 2011, 23:02
    Давно замечал, что тестирование на тиках дает другой, а порой даже неожиданный результат.
  • Александр М
    19 ноября 2011, 23:20
    Если сделка идет по закрытию свечи на графике квика, то запаздывание надо брать больше, до 5 секунд. И свечи, и тиковые данные запаздывают.
  • dddforum
    20 ноября 2011, 00:46
    коменты не смотрел. статью не дочитал. сразу вопрос)))
    на каком таймфрейме на каком-нить популярном инструменте все «нюансы» невелируются?
    спасибо!:)
  • ves2010
    20 ноября 2011, 10:43
    согласен… пробовал торговать на 2ухсекундном таймфрейме… на тестах было все ок… в реале было говнище…
    имхо все решает средняя прибыль на сделку на интервале тестирования три года… если средний профит меньше 0.1% не имеет смысла торгвать такое…
  • Роботорговец
    20 ноября 2011, 16:33
    А сразу заложить комиссии со всеми делами не судьбы чтоли? 0,1 % со сделки например

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

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