uralpro
uralpro личный блог
21 мая 2017, 13:03

Мой доклад на конференции 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

53 Комментария
  • Байкал
    21 мая 2017, 13:15
    Это конечно все хорошо в теории. Лучше скажи сколько можно зарабатывать процентов в месяц?
    Ну и второе максимальное количество контрактов для работы внутри дня?
      • Байкал
        21 мая 2017, 13:24
        uralpro, как можно несколько млн рублей внутри дня по рынку кидать?
        Даже если взять  РТС 50 контрактов покупать по рынку цена исполнения уже будет 20-30 пунктов не в нашу сторону, 5-10 без проблем конечно. А здесь несколько млн пусть даже будет 2млн это примерно 140 контрактов мгновенного исполнения не будет. И это самый ликвид у нас на рынке. По другим инструментам так там вообще еще хуже.
          • Байкал
            21 мая 2017, 13:30
            uralpro, я что то тогда не понял речь ведь идет про высокочастотный трейдинг с огромной кучей сделок.
            Получается выставляется куча заявок типа сеточника?
              • Байкал
                21 мая 2017, 13:36
                uralpro, понятно теперь примерно стало)
      • Евгений Черных
        21 мая 2017, 14:28
        uralpro, Крутая статьяю Добавлю в закладки

  • SAI
    21 мая 2017, 13:26
    Судя по эквити вы не ре инвестируете?
      • Андрей К
        21 мая 2017, 13:47
        uralpro, а как быстро вы понимаете, что параметры рынка поменялись? По эквити смотрите?
          • Андрей К
            21 мая 2017, 13:56
            uralpro, спасибо.
            То есть в таком роде трейдинга тоже присутствует доля интуитивности, нужно всегда вылавливать момент окончания работы параметров и перестраиваться.
              • evgen000
                21 мая 2017, 14:22
                uralpro, Если позволите, ответьте на то что считаете нужным. Спасибо!

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

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

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

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

                какую СУБД используете?
                  • evgen000
                    21 мая 2017, 14:35
                    uralpro, MA — machine learning. 
                  • evgen000
                    21 мая 2017, 14:41
                    uralpro, Спасибо за ответы! А почему прям в R не тестируете стратегию, это же быстрее и удобнее в плане разработки?
  • Boris Litvinov
    21 мая 2017, 14:54
    хороший пост
  • Мурен(а)
    21 мая 2017, 15:12
    Вашу конференцию снимали на видео? Оно будет в общем доступе?
  • SAI
    21 мая 2017, 15:54
     Как оцениваете качество стратегии?
    Используете коэффициент Шарпа, профит фактор или еще что то в этом роде?
      • SAI
        21 мая 2017, 16:20
        uralpro, То есть вы не запускаете стратегию в строй, если она при бектесте за год показала просадку более 5%?
          • SAI
            21 мая 2017, 16:28
            uralpro, На сколько сильно у вас отличаются результаты бэктеста от реальных, за один и тот же период? В суммарной прибыли, количестве сделок, балансе прибыльных убыточных…
  • ELab
    21 мая 2017, 18:10
    А чего не log(rts) — k1 * log(price1)…?
      • ELab
        22 мая 2017, 20:41
        uralpro, может так и есть? )))
  • SECRET
    21 мая 2017, 18:22
    Побежал реализовывать!
    • злой человек
      22 мая 2017, 21:43
      SECRET, у тя летенси недостаточно хороших для таких страт ;)
  • НеоМэн
    21 мая 2017, 18:41
    Не поделитесь другими гипотезами для основы алгоритма стратегии, не являющимися коммерческой тайной?
  • Ну как бы
    22 мая 2017, 00:26

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

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

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

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

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

    • SECRET
      22 мая 2017, 14:00
      Ну как бы, все гениальное просто ;)
  • Sergey Pavlov
    22 мая 2017, 06:39
    Спасибо!!!
  • /\../
    22 мая 2017, 09:49
    Какой минимальный PFactor в рабочих системах?
  • злой человек
    22 мая 2017, 12:36
    В статье есть серьезная ошибка: классический арбитраж не является безрисковым.
    • matrix
      22 мая 2017, 12:39
      sore, серьезней некуда :)
      • злой человек
        22 мая 2017, 13:20
        matrix, а вводить читателя в заблуждение по такому важнейшему параметру стратегии, как её рискованность, по твоему не серьезно? ;)
        • evgen000
          22 мая 2017, 13:29
          sore, конечно не серьезно, тут 99% никогда не реализует ничего подобного, как рисовали каналы так и будут их рисовать.
          • злой человек
            22 мая 2017, 13:37
            evgen000, cразу видно «большого спеца» в арбитраже lol
        • matrix
          22 мая 2017, 21:39
          sore, по «твоему»? мы знакомы?
      • злой человек
        22 мая 2017, 13:49
        uralpro, безрисковость она апсолютна, а не относительно. Относительно других может лишь быть мение или более рисковано ;)
  • Reznor
    22 мая 2017, 15:42
    Портфель стратегий состоит из принципиально различных стратегий? Или там всего к примеру 2-3 алгоритма с множеством клонов с различными параметрами?

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

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