Блог им. 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 )
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
714 | ★8
28 комментариев
А в чем цель сего поста — продаете, покупаете, обучаете? Для чего вы нам показали все эти замечательные графики?
avatar
ABC, обсудить  с кем нибудь. Понимаете, это ведь часы и ночи перед графиками и алгоритмами — хочется покалялкать))) 
avatar
ABC, да нет никакой цели, просто наверно получил какой-то эмоциональный подъем, после такого результата, чем и решил поделиться )
avatar
evgen000, всем пофиг, поверьте. хотя все равно обосрут. а вам удачи
avatar
Так вот в ваших вычислениях учитывается сама величина латенси, раз уж речь об арбитраже? Как меняется доходность стратегии, если вы условно вы самый первый совершаете сделку?
Интересна просто связка ИИ с решаемой задачей.
Возможно вам и инфраструктура то не нужна, о которой вы говорите. Хватит и виртуального хостинга от брокера, всего за одним свичем от ядра биржи :) 
avatar
maxman, нет, не арбитраж, HFT арбитраж как мне кажется на нашем рынке это без перспективное занятие. Феникс писал что этим занимается ММ Мафия ). Для этой стратегии я думаю мне будет достаточно той латенси что даст брокер, по крайне мере я надеюсь на это. Но пока ничего не могу сказать, это моя первая попытка в HFT
avatar
evgen000, на минутках тестили?
evgen000, По-братски рекомендую учесть в тесте стратегии время на отправку заявки и задержку в получении маркетдаты. А так же не забывать про существование очереди заявок в каждой цене стакана.
Ну и конечно мы тут многие рады будем видеть вас с первыми блинами на реале))

avatar
Готов протестировать стратегию на своем тестере! Совершенно бесплатно!
avatar
SECRET, добрый ты 
avatar
Туземец, Сам себе удивляюсь :)
avatar
SECRET, да не исключено, что в реале она вообще будет убыточна )
avatar
evgen000, 100 пудово
avatar
ТС, не совсем понимаю, как можно бэктестить HFT-стратегию. Вы её на тиках бэктестите?
тебе надо запустить в реале сам все увидишь...
ну и тесть лет за 5 хотяб
avatar
а как в R можно тестировать стратегии? там ведь нет тестера, или я чего-то не понимаю?
avatar
Ivor, при желании всё можно написать) 
avatar
Чёрный кот, но можно при этом дохрена всего не учесть: заглядывание в будущее, некорректная модель исполнения заявок и т.д. и т.п. А для HFT все эти ошибки на порядки существеннее.
avatar
bstone, ни один тестер не гарантирует учета всех факторов. Да и если их учесть, нет никакой гарантии, что в будущем они не изменятся
avatar
Ivor, quantmod+quantstrat+PerformanceAnalytics+blotter. Можно ещё погуглить, но этих должно хватать для начала за глаза. При необходимости quantmod можно заменить на собственную разработку выкачивания данных в xts формат. Или есть пакет ruquant (вроде так), он позволяет тащить вплоть до тиков с финама.
Удачи, товарищ! Сочетание R и c# мне нравится. У меня в своё время уперся робот в сложность создания стабильной инфраструктуры — я не смог добиться приемлемой автономности. То есть надо было весь день следить за ним :) Учитывайте, вдруг поможет :)
avatar
shprots, есть минус — R всё же однопоточный как ни крути. Поэтому связка возможна только в 2-х вариантах — либо собственные скрипты на R максимально распараллелены (что порой крайне непросто), либо R.NET (пока что знаю только этот мостик между R и .NET, лучше не встречал) враппится через интерсептор и эмулируется мультиинстанс R.NET через прокси. Но это непросто, сам как-то писал код подобный, много ньюансов.
Бобровский Дмитрий, MRO многопоточный
avatar
speculair, нет. MRO использует MKL, которая многопоточная. Но сам по себе MRO как и чистый R — однопоточный. Более того, крайне непросто сделать распараллеливание на уровне отдельных тредов или тасков, как, например, в C#. Там распараллеливание а-ля SIMD через *apply методы в пакете parallel. Неплохой пакет, позволяющий эмулировать классическую многопоточность реализована в пакете «future». 
Далее, в R.NET получаемый объект взаимодействия с R — синглтон. По той же причине (собственно, сам автор пишет об этом).
Евгений, напишите плиз на мой мейл georgxi@mail.ru
avatar
Пробуйте в реале. Есть очень много стратегий с красивыми тестовыми кривыми, но сливные в реале в силу разных причин.
avatar
Главный вопрос таких тестирований — на каких данных тестировали? :)
avatar
А что именно хочешь обсудить? Я просто не увидел этого в посту, с R не знаком, знаком с матлаб,R это не матричная система?
avatar

Читайте на SMART-LAB:
Фото
Финансовые результаты Аэрофлота по РСБУ за 6 месяцев 2026 года
Аэрофлот опубликовал финансовые результаты по РСБУ за 2 квартал и 6 месяцев 2026 года. ✈️ Выручка во 2 квартале увеличилась на 3,3% год к году и...
Фото
Эмитент допустил дефолт: что делать инвесторам в таком случае?
Дефолт по облигациям не всегда означает полную потерю вложений. Даже если эмитент перестал платить купоны или не погасил долг, инвестор...
Ключевые тезисы менеджмента Норникеля по итогам раскрытия финансовых результатов за 1П 2026 г.
Сегодня мы раскрыли финансовые результаты за 1П 2026 г. по МСФО. Все наши материалы доступны на сайте...

теги блога evgen000

....все тэги



UPDONW
Новый дизайн