uralpro
uralpro личный блог
17 января 2020, 12:37

О пользе правильного бэктеста (+ итоги 2019)

О пользе правильного бэктеста (+ итоги 2019)

   Хотелось,  традиционно, подвести итоги 2019 года, но  нового и интересного ничего не произошло, результаты на МОЕКС практически не отличаются от года 2018-го. Поэтому расскажу, насколько важно для HFT торговли написать правильный бэктест. Результаты тоже будут, но на примере отдельных алгоритмов, из набора работающих на Московской бирже.

  Для высокочастотной торговли, наверное, самый главный показатель это мгновенная ликвидность. Не буду углубляться в проблему ее измерения, это отдельная задача. В общем случае, чем выше мгновенная ликвидность, тем большую прибыль приносит высокочастотная стратегия. И ваш тест должен правильно обрабатывать весь поток ликвидности, который присутствует в сохраненной маркетдате, чтобы верно эту мгновенную ликвидность отразить. В матчинге бэктеста необходимо сводить в сделки собственные (тестовые) ордера в первую очередь по потоку рыночных сделок используемого актива, и во вторую — по текущей книге заявок. Нарезки в тесте не должно быть никакой, то есть внутреннее время теста должно идти соответственно последней считанной записи в максимальном разрешении, которое транслируется биржей (миллисекунды или даже микросекунды).Также нужно учесть задержку прихода ордеров на биржу после их отправки и задержку коллбэка. Нюансов здесь много, и я как обычно, о них не расскажу:)

  Всегда сравнивайте результаты реальной торговли и результаты, полученные на бэктесте. Под результатами понимается эквити стратегии за определенный период времени. Если реал в течение дня постоянно демонстрирует результаты хуже теста, пускай даже на несколько процентов, то, скорее всего использовать такой тест для HFT нельзя, так как на годовом периоде эти несколько процентов превратятся в сотни. Совпадение за год может выглядеть как на графике в заглавии поста. Или так:

О пользе правильного бэктеста (+ итоги 2019)О пользе правильного бэктеста (+ итоги 2019)

(графики отдельных экземпляров наших алгоритмов. Красная кривая — реал, черная — тест. Под графиком результат в рублевом выражении без учета комисии/комиссия биржи в рублях.  Алгоритмы показаны на  периоде меньше года, если происходила смена рабочего набора)

  Это приемлемое совпадение, которое позволяет полагаться на результаты тестирования и быть уверенным в достаточной производительности высокочастотной стратегии. Иногда даже на хорошем бэктесте можно получить серьезное расхождение эквити. Это говорит о том, что на рынке присутствует какой-то неучтенный фактор. Например, вот результаты одной из наших стратегий на валютном рынке:

О пользе правильного бэктеста (+ итоги 2019)

  На быстрых движениях рынка мы видим серьезную разницу с тестом. Можно сделать вывод, что на таких движениях серьезно возрастает задержка выставления ордера на биржу, либо есть более быстрые участники, которые маскируют наши заявки на хорошей движухе, где можно собрать больше профита. Скорее всего в какой-то мере присутствуют оба фактора (и первый из них можно эмулировать в бэктесте).

  Итак, при правильном бэктесте довольно просто разработать работающий высокочастотный алгоритм. Если же этот инструмент не высокоточный, то поиск стратегии станет практически нерешаемой задачей.

Стратегии и алгоритмы автоматической торговли смотрите на моем сайте www.quantalgos.ru

25 Комментариев
  • bstone
    17 января 2020, 13:18
    С этим не поспоришь! Все рабочие алгоритмы торгуются на отдельных суб-счетах или на выходе агрегация ордеров?
  • Arbitrg
    17 января 2020, 13:21
    >Нюансов здесь много, и я как обычно, о них не расскажу
    Ну вот, самое интересно и «не расскажу»....)
  • pavard
    17 января 2020, 13:42
    бектест никогда не может совпасть с реальной торговлей, тк в реальной торговле ты вносишь изменения в рынок своими заявками и сделками.
      • pavard
        17 января 2020, 14:42
        uralpro, мы говорим о хфт — тут для создания движения в любую сторону иногда достаточно не то что сделки но и заявки в 1лот. наблюдал однажды такую картину — не даешь роботу по настоящему выставлять заявки — он прибыльный( с учетом мат ожидания задержки ), выпускаешь — не прибыльный. вернее так — чем выше частота и меньше амплитуда торговли — тем меньший объем вызывает движения. и наобарот.
          • pavard
            17 января 2020, 16:17
            uralpro, да, я что-то разогнался, не может. поддерживаю. надо будет теоретически разобраться с тестом. спасибо.
    • Dmitryy
      17 января 2020, 14:07
      pavard, если ваши объемы позволяют влиять на рынок, то есть алгоритмы и под это :)
      • pavard
        17 января 2020, 14:50
        Dmitryy, нет таких алгоритмов. иначе сбербанк не тратил бы миллиарды на тренеровку своих моделей на реальном рынке.
  • Носорог
    17 января 2020, 14:03
    Спасибо, прочитал с интересом! 
  • ICWiener
    17 января 2020, 14:58
    Просьба писать чаще. FPGA применяете?
      • ICWiener
        17 января 2020, 18:09
        uralpro, хватает стандартных средств или слишко науко-трудоемко?
          • ICWiener
            17 января 2020, 23:28
            uralpro, под стандартными средствами я имею ввиду ПК с операционной системой и рабочим алгоритмом для всех трех задач: получение котировок, обработка данных, отправка заявок.

            Сейчас планирую для третьей задачи настроить FPGA (пока ради практики, т.к. у меня вообще не ХФТ, хотя быстрое исполнение бонус даст)
  • Benderoni
    17 января 2020, 19:23
    нужно учесть задержку прихода ордеров на биржу после их отправки и задержку коллбэка
    а лучше ли это, чем смоделировать общую задержку одной цифрой?
  • Sergey Pavlov
    19 января 2020, 07:36
    это стратегии преимущественно маркет-мэйкерского типа или есть и тэйкерские?
  • fxsaber
    19 января 2020, 17:32
    В матчинге бэктеста необходимо сводить в сделки собственные (тестовые) ордера в первую очередь по потоку рыночных сделок используемого актива, и во вторую — по текущей книге заявок.
    У такой последовательности есть теоретическое обоснование?

    Могли бы Вы показать, как влияет на результат бэктеста исключение одного из пунктов или замена их местами?
  • fxsaber
    19 января 2020, 19:44
    Исключать ни один пункт нельзя, тест будет не точным
    Звучит голословно. Есть два типа бэктеста.

    Один — это воспроизведение своей реальной торговли на исторических данных. Там, действительно, учет сделок имеет место быть.

    Второй — это оценка потенциального результата ТС на истории, которая там не торговала.

    Поэтому и предложил обосновать свою рекомендацию хоть какими-то сравнительными данными.

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

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