Блог им. egenui

Моя первая 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 )
★7
А в чем цель сего поста — продаете, покупаете, обучаете? Для чего вы нам показали все эти замечательные графики?
avatar

ABC

ABC, обсудить  с кем нибудь. Понимаете, это ведь часы и ночи перед графиками и алгоритмами — хочется покалялкать))) 
avatar

Юрка

ABC, да нет никакой цели, просто наверно получил какой-то эмоциональный подъем, после такого результата, чем и решил поделиться )
avatar

evgen000

evgen000, всем пофиг, поверьте. хотя все равно обосрут. а вам удачи
avatar

ABC

Так вот в ваших вычислениях учитывается сама величина латенси, раз уж речь об арбитраже? Как меняется доходность стратегии, если вы условно вы самый первый совершаете сделку?
Интересна просто связка ИИ с решаемой задачей.
Возможно вам и инфраструктура то не нужна, о которой вы говорите. Хватит и виртуального хостинга от брокера, всего за одним свичем от ядра биржи :) 
avatar

maxman

maxman, нет, не арбитраж, HFT арбитраж как мне кажется на нашем рынке это без перспективное занятие. Феникс писал что этим занимается ММ Мафия ). Для этой стратегии я думаю мне будет достаточно той латенси что даст брокер, по крайне мере я надеюсь на это. Но пока ничего не могу сказать, это моя первая попытка в HFT
avatar

evgen000

evgen000, на минутках тестили?
evgen000, По-братски рекомендую учесть в тесте стратегии время на отправку заявки и задержку в получении маркетдаты. А так же не забывать про существование очереди заявок в каждой цене стакана.
Ну и конечно мы тут многие рады будем видеть вас с первыми блинами на реале))

avatar

Алексей_72

Готов протестировать стратегию на своем тестере! Совершенно бесплатно!
avatar

SECRET

SECRET, добрый ты 
avatar

Туземец

Туземец, Сам себе удивляюсь :)
avatar

SECRET

SECRET, да не исключено, что в реале она вообще будет убыточна )
avatar

evgen000

evgen000, 100 пудово
avatar

ELab

ТС, не совсем понимаю, как можно бэктестить HFT-стратегию. Вы её на тиках бэктестите?
тебе надо запустить в реале сам все увидишь...
ну и тесть лет за 5 хотяб
avatar

ves2010

а как в R можно тестировать стратегии? там ведь нет тестера, или я чего-то не понимаю?
avatar

Ivor

Ivor, при желании всё можно написать) 
Чёрный кот, но можно при этом дохрена всего не учесть: заглядывание в будущее, некорректная модель исполнения заявок и т.д. и т.п. А для HFT все эти ошибки на порядки существеннее.
avatar

bstone

bstone, ни один тестер не гарантирует учета всех факторов. Да и если их учесть, нет никакой гарантии, что в будущем они не изменятся
Ivor, quantmod+quantstrat+PerformanceAnalytics+blotter. Можно ещё погуглить, но этих должно хватать для начала за глаза. При необходимости quantmod можно заменить на собственную разработку выкачивания данных в xts формат. Или есть пакет ruquant (вроде так), он позволяет тащить вплоть до тиков с финама.
Удачи, товарищ! Сочетание R и c# мне нравится. У меня в своё время уперся робот в сложность создания стабильной инфраструктуры — я не смог добиться приемлемой автономности. То есть надо было весь день следить за ним :) Учитывайте, вдруг поможет :)
avatar

shprots

shprots, есть минус — R всё же однопоточный как ни крути. Поэтому связка возможна только в 2-х вариантах — либо собственные скрипты на R максимально распараллелены (что порой крайне непросто), либо R.NET (пока что знаю только этот мостик между R и .NET, лучше не встречал) враппится через интерсептор и эмулируется мультиинстанс R.NET через прокси. Но это непросто, сам как-то писал код подобный, много ньюансов.
Бобровский Дмитрий, MRO многопоточный
avatar

speculair

speculair, нет. MRO использует MKL, которая многопоточная. Но сам по себе MRO как и чистый R — однопоточный. Более того, крайне непросто сделать распараллеливание на уровне отдельных тредов или тасков, как, например, в C#. Там распараллеливание а-ля SIMD через *apply методы в пакете parallel. Неплохой пакет, позволяющий эмулировать классическую многопоточность реализована в пакете «future». 
Далее, в R.NET получаемый объект взаимодействия с R — синглтон. По той же причине (собственно, сам автор пишет об этом).
Евгений, напишите плиз на мой мейл georgxi@mail.ru
avatar

asdfasdf

Пробуйте в реале. Есть очень много стратегий с красивыми тестовыми кривыми, но сливные в реале в силу разных причин.
avatar

Serg_V

Главный вопрос таких тестирований — на каких данных тестировали? :)
avatar

kapodes

А что именно хочешь обсудить? Я просто не увидел этого в посту, с R не знаком, знаком с матлаб,R это не матричная система?
avatar

_____Life_Line


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UPDONW