evgen000
evgen000 личный блог
15 января 2017, 17:11

Моя первая HFT стратегия

Последние пол года занимался тем что создавал и тестировал стратегии. Так как мощностей для реализации высокочастотных алгоритмов у меня не было( и пока нет), то основные идеи которые я пытался реализовать в стратегию предполагали 1-2 сделки в день. Получилось даже создать пару доходных( на истории) стратегии, которые сейчас торгую руками. Параллельно начал разработку HFT стратегии, так как такой пласт HFT стратегий как арбитраж мне не доступен, в силу высокой стоимости инфраструктуры то пытался придумать что-нибудь используя численные методы, эконометрические методы и машинное обучение. Получилось следующее:

Доходность стратегии на одном из самых ликвидных инструментах на ММВБ, и она же в лог шкале.
Моя первая HFT стратегия
Моя первая HFT стратегия
Расчетная просадка получилась порядка 6%:
Моя первая HFT стратегия
С вероятностью в 98% убытки не превысят 2.5% в день. Однако по методике VAR убытки от одно до трёхкратной величины VaR являются нормальным явлением. Поэтому можно ожидать убыток 5% в моменте в реальной торговле.
Моя первая HFT стратегия
Распределение доходностей по дням:
Моя первая HFT стратегия


Историческая доходность по месяцам в процентах:
Моя первая HFT стратегия
 
В целом результат для HFT наверно неплохой, однако пока я еще не написал робота на C# для реализации, чем сейчас и занимаюсь. Так же я предполагаю что в реале стратегия даст в два раза меньше, что меня бы тоже устроило ).

Еще хочу попробовать использовать подход оптимального F для торговли. Винс утверждает что не важно насколько прибыльна стратегия, главное что бы она показывала прибыль в будущем, деньги делаются именно на управлении капиталом. Так как F теоретически поможет в этом, то нет причин не использовать этот подход.

Один из неприятных моментов тестирования такой стратегии это сложность вычислений, в моей системе 3 параметра и встает вопрос использовать скользящие значения параметра или константы, опять же тестировать и оптимизировать систему с различными параметрами требует огромного количества времени и ресурсов, что подталкивает к параллелизации вычислений, что в очередной раз повышает порог вхождения. Так как стратегии пишу и тестирую на R то приходится еще учиться параллелить вычисления.

Надеюсь выступить с ней на ЛЧИ 2017 )
28 Комментариев
  • ABC
    15 января 2017, 18:48
    А в чем цель сего поста — продаете, покупаете, обучаете? Для чего вы нам показали все эти замечательные графики?
    • Юрка
      15 января 2017, 19:03
      ABC, обсудить  с кем нибудь. Понимаете, это ведь часы и ночи перед графиками и алгоритмами — хочется покалялкать))) 
      • ABC
        15 января 2017, 20:08
        evgen000, всем пофиг, поверьте. хотя все равно обосрут. а вам удачи
  • maxman
    15 января 2017, 19:02
    Так вот в ваших вычислениях учитывается сама величина латенси, раз уж речь об арбитраже? Как меняется доходность стратегии, если вы условно вы самый первый совершаете сделку?
    Интересна просто связка ИИ с решаемой задачей.
    Возможно вам и инфраструктура то не нужна, о которой вы говорите. Хватит и виртуального хостинга от брокера, всего за одним свичем от ядра биржи :) 
      • Алексей Никитин
        15 января 2017, 21:06
        evgen000, на минутках тестили?
      • Алексей_72
        25 февраля 2017, 19:27
        evgen000, По-братски рекомендую учесть в тесте стратегии время на отправку заявки и задержку в получении маркетдаты. А так же не забывать про существование очереди заявок в каждой цене стакана.
        Ну и конечно мы тут многие рады будем видеть вас с первыми блинами на реале))

  • SECRET
    15 января 2017, 19:15
    Готов протестировать стратегию на своем тестере! Совершенно бесплатно!
    • Tуземец
      15 января 2017, 19:16
      SECRET, добрый ты 
      • SECRET
        15 января 2017, 19:18
        Туземец, Сам себе удивляюсь :)
      • ELab
        18 января 2017, 12:06
        evgen000, 100 пудово
  • Евгений Гуревич
    15 января 2017, 19:37
    ТС, не совсем понимаю, как можно бэктестить HFT-стратегию. Вы её на тиках бэктестите?
  • ves2010
    15 января 2017, 20:16
    тебе надо запустить в реале сам все увидишь...
    ну и тесть лет за 5 хотяб
  • Ivor
    15 января 2017, 22:00
    а как в R можно тестировать стратегии? там ведь нет тестера, или я чего-то не понимаю?
    • Чёрный кот
      15 января 2017, 22:17
      Ivor, при желании всё можно написать) 
      • bstone
        15 января 2017, 22:57
        Чёрный кот, но можно при этом дохрена всего не учесть: заглядывание в будущее, некорректная модель исполнения заявок и т.д. и т.п. А для HFT все эти ошибки на порядки существеннее.
        • Чёрный кот
          15 января 2017, 23:04
          bstone, ни один тестер не гарантирует учета всех факторов. Да и если их учесть, нет никакой гарантии, что в будущем они не изменятся
    • Бобровский Дмитрий
      16 января 2017, 09:34
      Ivor, quantmod+quantstrat+PerformanceAnalytics+blotter. Можно ещё погуглить, но этих должно хватать для начала за глаза. При необходимости quantmod можно заменить на собственную разработку выкачивания данных в xts формат. Или есть пакет ruquant (вроде так), он позволяет тащить вплоть до тиков с финама.
  • shprots
    16 января 2017, 00:02
    Удачи, товарищ! Сочетание R и c# мне нравится. У меня в своё время уперся робот в сложность создания стабильной инфраструктуры — я не смог добиться приемлемой автономности. То есть надо было весь день следить за ним :) Учитывайте, вдруг поможет :)
    • Бобровский Дмитрий
      16 января 2017, 09:37
      shprots, есть минус — R всё же однопоточный как ни крути. Поэтому связка возможна только в 2-х вариантах — либо собственные скрипты на R максимально распараллелены (что порой крайне непросто), либо R.NET (пока что знаю только этот мостик между R и .NET, лучше не встречал) враппится через интерсептор и эмулируется мультиинстанс R.NET через прокси. Но это непросто, сам как-то писал код подобный, много ньюансов.
      • speculair
        22 января 2017, 02:33
        Бобровский Дмитрий, MRO многопоточный
        • Бобровский Дмитрий
          22 января 2017, 15:00
          speculair, нет. MRO использует MKL, которая многопоточная. Но сам по себе MRO как и чистый R — однопоточный. Более того, крайне непросто сделать распараллеливание на уровне отдельных тредов или тасков, как, например, в C#. Там распараллеливание а-ля SIMD через *apply методы в пакете parallel. Неплохой пакет, позволяющий эмулировать классическую многопоточность реализована в пакете «future». 
          Далее, в R.NET получаемый объект взаимодействия с R — синглтон. По той же причине (собственно, сам автор пишет об этом).
  • asdfasdf
    16 января 2017, 09:36
    Евгений, напишите плиз на мой мейл [email protected]
  • Serg_V
    16 января 2017, 09:56
    Пробуйте в реале. Есть очень много стратегий с красивыми тестовыми кривыми, но сливные в реале в силу разных причин.
  • kapodes
    19 января 2017, 18:00
    Главный вопрос таких тестирований — на каких данных тестировали? :)
  • _____Life_Line
    22 января 2017, 02:17
    А что именно хочешь обсудить? Я просто не увидел этого в посту, с R не знаком, знаком с матлаб,R это не матричная система?

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

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