Решил показать некоторые нюансы при разработке роботов.
Допустим есть торговая идея, которую мы реализуем в коде.
Для простоты я построил стратегию на основе 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 при оптимизации сразу выставляйте реальные/жесткие условия исполнения заявок — это секономит уйму времени
Если подогнать параметры под реальные условия расхождение почти нулевое.
От тиков толку не будет конкретно в этом случае, так как срез по времени сознательно выбран 1мин(бар), а для тиков нужны совсем другие алгоритмы.
На s# не пробовал бектестинг.
Использование данных с плазы без использования самой плазы в торговле результата не даст.
Потом появились уже стаканы, но никак руки не доходят перепрогнать старую страту. Еще минус в том, что та страта запускалась в 2009-ом, а стаканов за тот период у меня нет. Сейчас как-то жалко ради экспериментов бабки тратить на убыточной стратегии.
Очень хорошая программа. На Пауке огроменная обсуждательная ветка +)
Рекомендую.
Рекомендую.
или делайте роботов не по минуткам ))
и не по 5 минуткам
а от часа )
Другой момент что сделок будет на порядок-два меньше и этот момент как-нибудь затеряется.
ps касаемо интрадей of course
плюсую
на каком таймфрейме на каком-нить популярном инструменте все «нюансы» невелируются?
спасибо!:)
Естественно чем больше прибыль на сделку, тем меньше влияние спрэдов/комиссий/задержек…
Если по РИ средняя сделка 10000 пунктов, то можно и не обращать внимание на все это, а если получается сделка пунктов 500 или меньше, то есть повод задуматься.
имхо все решает средняя прибыль на сделку на интервале тестирования три года… если средний профит меньше 0.1% не имеет смысла торгвать такое…