Блог им. uralpro

Мой доклад на конференции 20.05.17 в Челябинске

Мой доклад на конференции 20.05.17 в Челябинске

Введение

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

Мой доклад на конференции 20.05.17 в Челябинске

Зачем нужна высокочастотная торговля, в чем преимущество HFT алгоритмов? В отличие от традиционных, высокочастотные алго в подавляющем большинстве работают внутри дня, то есть все открытые позиции на инструментах в конце дня ликвидируются, устраняя риски переноса овернайт. Большое количество сделок также позволяет очень плотно контролировать риски, то есть, если ваша стратегия перестала работать, то вы это поймете не через месяц, а через несколько часов, максимум несколько дней, в отличие от долгосрочных стратегий, где можно сидеть в просадках месяцами. Еще одно преимущество — со временем большинство рутинных операций легко автоматизируется, и появляется больше времени для непосредственной разработки алгоритмов. И самая приятная сторона таких стратегий, это, конечно, доходность, которая может составлять от сотен до тысяч процентов годовых.

Есть и недостатки, которые надо учитывать. Первый недостаток — сложность и дороговизна инфраструктуры высокочастотного трейдинга. Второй — нетривиальный инструментарий для разработки, применения и контроля стратегий. Фактически здесь готовых решений нет, все придется писать самим, на таких языках программирования, как Java и C++, позволяющих гибко работать с внутренней архитектурой процессора. Третий недостаток — малая капиталоемкость большинства HFT стратегий. Из-за большого количества сделок значительно возрастают требования к мгновенной ликвидности, а она на срочном рынке невелика в настоящее время. Но есть определенные способы, позволяющие значительно повысить капиталоемкость.

 

1. Инфраструктура для HFT-трейдинга

Мой доклад на конференции 20.05.17 в Челябинске

Для быстрой реакции на события, происходящие на рынке, нужно получать рыночные данные — это может быть полный ордерлог, сделки и т. д. — с минимально возможной задержкой. Так же как и рыночные приказы, которые отдает ваша система, должны поступать на биржу как можно быстрее. Чтобы обеспечить такие требования, необходимо размещать вашу инфраструктуру, которая может состоять из отдельного сервера, либо виртуальной системы, как можно ближе к биржевому ядру. Лучший вариант — колокейшн сервера в биржевом дата центре. Возможен вариант виртуального хостинга у провайдеров, у которых пинг до биржи не превыщает 1 — 2 мс. Однако, при последнем варианте некоторые типы высокочастотных алгоритмов, скорее всего, работать не будут.

Очень важно качество маркет-даты. Московская биржа предлагает различные варианты подключений для ее получения, таких как CGATE или FAST. Для отправки приказов можно использовать протоколы TWIME или FIX. Необходимо тестировать все варианты, чтобы поток данных транслировался с наименьшим джиттером. Джиттер — это неравномерность задержки прихода данных во времени. Вот пример, какой джиттер у нас был в начале, а вот после того, как устранили различные сетевые задержки, подключились по 10Гб каналу и доработали программные коннекторы:

Мой доклад на конференции 20.05.17 в Челябинске

2. Инструментарий высокочастотного трейдинга

Мой доклад на конференции 20.05.17 в Челябинске

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

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

Для предварительного анализа можно использовать языки программирования, которые заточены под работу с векторными данными — такие как R или Python. Под них написано множество библиотек, которые помогают решить задачи разработки стратегий. Предварительный анализ необходим для проверки какой-то гипотезы, которая может лечь в основу алгоритма.

Пример. В основе robot_uralpro, который учавствовал в ЛЧИ2010, лежит гипотеза о временном лаге между приращениями цены фьючерса на индекс РТС от синтетического индекса из акций, его составляющих. Если такое отставание имеет место, то при существенном движении синтетики, можно входить во фьючерс в сторону этого движения, и, если фьючерс последует за синтетическим индексом, то мы получим прибыль. Чтобы подтвердить эту гипотезу, нужно загрузить в среду R цены фьючерса с разрешением в 3 мс и совмещенные по времени цены акций с фондового рынка. Составим из цен акций синтетический индекс согласно методике, представленной на сайте Московской биржи, и возьмем приращения цен по 3мс. Построив кросскорелляционную функцию по этим приращениям мы получим следующую картинку:

Мой доклад на конференции 20.05.17 в Челябинске

Как можем видеть, центр функции смещен относительно центра в отрицательную область, значит лаг существует, и можно попробовать его использовать для извлечения профита.

Следующий этап — непосредственно разработка и тестирование алгоритма. Для этого используем программу бэктестирования, которая имитирует реальные торги и сведение заявки на бирже. Алгоритм будет состоять из следующих простых вычислений:

Мой доклад на конференции 20.05.17 в Челябинске

1) построим спред, то есть разность, между ценой фьючерса и синтетикой

2) в качестве средней спреда возьмем экспоненциальную скользящую среднюю с определенным коэффициентом альфа

3) вычислим среднеквадратичное отклонение спреда, за какой-то период, скажем 10 минут

4) определим верхний и нижний пороги по спреду равными средняя + 2 среднеквадратичных отклонения для верхнего порога и средняя — 2 среднеквадратичных отклонения для нижнего

5) при выходе спреда за верхний порог ставим лимитный ордер на лучший аск, при падении спреда за нижний порог — на лучший бид. Если спред находится между порогами, то отставляем лимитные ордера на 4 уровня выше или ниже лучших цен соответственно.

6) в конце дня активно закрываем все открытые позиции и фиксируем прибыль или убыток

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

Мой доклад на конференции 20.05.17 в Челябинске

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

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

 

3. Управление портфелем стратегий

Мой доклад на конференции 20.05.17 в Челябинске

Итак, мы успешно встроили алгоритм и запустили его в реальные торги. Но достаточно ли устойчива такая система для долговременного получения прибыли? С одним алгоритмом, конечно, нет. Каждый алгоритм имеет свой срок жизни, у некоторых стратегий он достаточно короткий. Это связано с постоянным изменением рынка, адаптации его к меняющейся внутренней и внешней среде.

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

В реальных торгах должен принимать участие набор стратегий, которые представляют собой определенный портфель, собранный с учетом принципа диверсификации и снижения общего риска. Это означает, в частности, что стратегии в портфеле должны быть низкокоррелированы между собой по функции прибыли. Составить такой портфель можно в соответствии с портфельной теорией Марковица, или по принципу VaR и т. п.

Соответственно, проектирование боевой части должно вестись с учетом всего вышесказанного. Программа должна иметь возможность запуска и котроля над множеством алгоритмов одновременно. При этом задержки, создаваемой расчетной частью от получения маркет даты до отправки приказа — тик ту трейд — должны быть минимальными. Мы добились в нашей боевой части значения тик ту трейд от 2 до 5 мкс, без использования FPGA решений. Еще около 2 мкс добавляет сетевой стек и сетевая карта.

 

4. Типы высокочастотных стратегий

Мой доклад на конференции 20.05.17 в Челябинске

Я бы выделил два основных типа HFT алгоритмов:

1. Безрисковые

2. Допускающие ограниченный риск

К безрисковым стратегиям относятся все виды классического арбитража:

1. Между базовым активом и фьючерсом

2. Календарный арбитраж — например, между фьючерсами разного срока погашения

3. Межрыночный арбитраж — например между брентом на бирже СМЕ и фьючерсом на брент на MOEX

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

Второй тип стратегий допускает существование ограниченного риска. Это всевозможные виды статистического арбитража, то есть алгоритмы, эксплуатирующие какую-либо статистическую зависимость, найденную разработчиком. Рассмотренный robot_uralpro относится именно к такому типу, так как хоть в основе и лежит идея арбитража, но торгует он одной ногой, реализовывая наблюдение об отставании от базового инструмента.

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

В заключение продемонстрирую результаты нашей торговли на высокочастотных алгоритмах за 2016 год. Наш портфель в основном состоит из статистических стратегий с ограниченным риском.

Мой доклад на конференции 20.05.17 в Челябинске

Мой доклад на конференции 20.05.17 в Челябинске


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

★56
Это конечно все хорошо в теории. Лучше скажи сколько можно зарабатывать процентов в месяц?
Ну и второе максимальное количество контрактов для работы внутри дня?
avatar

Байкал

Байкал, почему в теории? в конце поста наше эквити за 6 месяцев, как раз в процентах. Максимальное количество контрактов сильно зависит от стратегии. Но в общем можно загрузить до нескольких десятков млн руб
avatar

uralpro

uralpro, как можно несколько млн рублей внутри дня по рынку кидать?
Даже если взять  РТС 50 контрактов покупать по рынку цена исполнения уже будет 20-30 пунктов не в нашу сторону, 5-10 без проблем конечно. А здесь несколько млн пусть даже будет 2млн это примерно 140 контрактов мгновенного исполнения не будет. И это самый ликвид у нас на рынке. По другим инструментам так там вообще еще хуже.
Байкал, а зачем кидать по рынку? Выставляйтесь лимитками
avatar

uralpro

uralpro, я что то тогда не понял речь ведь идет про высокочастотный трейдинг с огромной кучей сделок.
Получается выставляется куча заявок типа сеточника?
Байкал, по разному, но в основном, лимитными ордерами, да. По рынку исполняется лишь небольшая часть.
avatar

uralpro

uralpro, понятно теперь примерно стало)
uralpro, Крутая статьяю Добавлю в закладки

Судя по эквити вы не ре инвестируете?
avatar

SAI

Алексей С, часть реинвестировалась, это видно до просадки в октябре. Затем сильно изменились параметры рынка, и на какое-то время даже снижали объемы
avatar

uralpro

uralpro, а как быстро вы понимаете, что параметры рынка поменялись? По эквити смотрите?
Андрей К, просадка превышает расчетную за день, или несколько дней подряд идет просадка. Для разных стратегий может несколько отличаться, но в основном становится быстро понятно, даже по характеру внутридневных сделок
avatar

uralpro

uralpro, спасибо.
То есть в таком роде трейдинга тоже присутствует доля интуитивности, нужно всегда вылавливать момент окончания работы параметров и перестраиваться.
Андрей К, это можно легко формализовать, но вручную пока проще. Если возникнет необходимость, сделаем программный контроль
avatar

uralpro

uralpro, Если позволите, ответьте на то что считаете нужным. Спасибо!

какие реализации алгоритмов Machine Learning используете? пишите сами? используете ли accord.NET? 

В R не тестируете? пишите event driven тестер ?

Используете ли Complex Event Processing ?

Каким образом количественно оцениваете емкость стратегии ?

какую СУБД используете?
avatar

evgen000

evgen000, не понял вопроса, МА — это moving average имеются в виду? accord.NET мы точно не используем, потому что полностью перешли на С++
avatar

uralpro

uralpro, MA — machine learning. 
avatar

evgen000

evgen000, в R тестируем гипотезы, то есть есть ли какое-то смещение вероятности в каких-то случаях. Емкость стратегии оцениваем на основе собственного опыта и тестированием в реале. СУБД вообще не используем, в виду медленной реализации
avatar

uralpro

uralpro, Спасибо за ответы! А почему прям в R не тестируете стратегию, это же быстрее и удобнее в плане разработки?
avatar

evgen000

evgen000, потому что тестер должен быть максимально приближен к боевой части и работать с миллисекундным разрешением как минимум. На R вообще очень сложно реализовать такую точность, уж не говоря о том, что на боевую часть, написанную на С++ это будет вообще не похоже. Все это чревато тем, что в реальности производительность соответствовать тесту не будет
avatar

uralpro

хороший пост
Вашу конференцию снимали на видео? Оно будет в общем доступе?
avatar

Мурен(а)

Мурен(а), вроде кто-то снимал, наверняка где-то выложат
avatar

uralpro

 Как оцениваете качество стратегии?
Используете коэффициент Шарпа, профит фактор или еще что то в этом роде?
avatar

SAI

Алексей С, HFT стратегии можно оценивать  по профит фактору и максимальной просадке. За год она должна не превышать 3-5% для каждого отдельного алгоритма. Коэффициенты Шарпа там заоблачные получаются, поэтому никакого смысла в них нет
avatar

uralpro

uralpro, То есть вы не запускаете стратегию в строй, если она при бектесте за год показала просадку более 5%?
avatar

SAI

Алексей С, да, не запускаем. Только в крайнем случае, если, например, показывает необычно большой профит или срочно нужен новый алгоритм
avatar

uralpro

uralpro, На сколько сильно у вас отличаются результаты бэктеста от реальных, за один и тот же период? В суммарной прибыли, количестве сделок, балансе прибыльных убыточных…
avatar

SAI

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

uralpro

А чего не log(rts) — k1 * log(price1)…?
avatar

ELab

ELab, можно и так:)
avatar

uralpro

uralpro, может так и есть? )))
avatar

ELab

Побежал реализовывать!
avatar

SECRET

SECRET, не надо, после тебя нам уже нечего будет собирать на рынке :)
avatar

uralpro

SECRET, у тя летенси недостаточно хороших для таких страт ;)
Не поделитесь другими гипотезами для основы алгоритма стратегии, не являющимися коммерческой тайной?
avatar

НеоМэн

НеоМэн, не, все гипотезы на вес золота, одной за раз достаточно :)
avatar

uralpro

«Алгоритм будет состоять из следующих простых вычислений:
...

2) в качестве средней спреда возьмем экспоненциальную скользящую среднюю с определенным коэффициентом альфа

3) вычислим среднеквадратичное отклонение спреда, за какой-то период, скажем 10 минут

4) определим верхний и нижний пороги по спреду равными средняя + 2 среднеквадратичных отклонения для верхнего порога и средняя — 2 среднеквадратичных отклонения для нижнего...»

Я всегда подозревал, что HFT-шники торгуют по Боллинджеру. 
А SECRET, наверно, вообще по двум скользяшкам торгует или по стохастику...

avatar

Ну как бы

Ну как бы, все гениальное просто ;)
avatar

SECRET

Спасибо!!!
avatar

Sergey Pavlov

Какой минимальный PFactor в рабочих системах?
avatar

/\../

В статье есть серьезная ошибка: классический арбитраж не является безрисковым.
sore, серьезней некуда :)
avatar

matrix

matrix, а вводить читателя в заблуждение по такому важнейшему параметру стратегии, как её рискованность, по твоему не серьезно? ;)
sore, конечно не серьезно, тут 99% никогда не реализует ничего подобного, как рисовали каналы так и будут их рисовать.
avatar

evgen000

evgen000, cразу видно «большого спеца» в арбитраже lol
sore, по «твоему»? мы знакомы?
avatar

matrix

sore, конечно, риск везде присутствует. Я имел в виду безрисковость относительно других стратегий, наверное, надо было пояснее этот момент отразить
avatar

uralpro

uralpro, безрисковость она апсолютна, а не относительно. Относительно других может лишь быть мение или более рисковано ;)
sore, восхищаясь  вашей абсолютной грамотностью, более или менее согласен :)
avatar

uralpro

Портфель стратегий состоит из принципиально различных стратегий? Или там всего к примеру 2-3 алгоритма с множеством клонов с различными параметрами?
avatar

Reznor

Reznor, сейчас разных алго около десятка
avatar

uralpro


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

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

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