Блог им. uralpro

Стратегия с классификацией ордеров по времени жизни. Часть 1

bats

Неплохую идею для высокочастотного трейдинга подсказал Kipp Rogers в своем блоге. Идея несложная, но требующая подробного объяснения, поэтому попробую изложить ее в двух статьях.

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

Таким образом, для высокочастотного алгоритма было бы естественно искать ордера с длительным временем жизни в биржевом стакане, надеясь получить лучшее исполение для собственной стратегии. Конечно, большинство ручных ордеров будут маркет ордерами, поэтому в стакане мы их не увидим. Наша задача — найти лимитные «ручные» ордера. Сначала рассмотрим график времени жизни всех лимитных ордеров отправляемых на биржу:

esma_nov2014_c3 

Как видно, больше половины высокочастотных ордеров (HFT)  отменяются в течение 1 секунды после постановки. Другая картина для  инвестбанков (IB)  и остальных участников — половина их ордеров имеет время жизни более 10 секунд.

Далее построим график, который отражает поведение цены актива до и после исполнения ордеров с разным временем жизни (для биржи Nasdaq):

toa-orderageinet-13662

На верхнем графике отражена цена актива до и после исполнения сделки с точки зрения пассивной стороны. Если ордер имел время жизни менее 100 мсек (красная штриховая линия) то после исполнения следующих 100 акций он терял около 0,2 центов на акцию (20 mils на графике), в то время как ордер, имеющий время жизни более 1 сек, терял уже около 0,5 центов на акцию. Нижний график отражает объем акций, проходящий на бирже, до и после сделки. В заглавии поста подобный же график приведен для биржи Bats, где этот эффект также присутствует.

Разница в 0,3 цента достаточно значительна для того, чтобы попробовать создать высокочастотный алгоритм, эксплуатирующий эту неэффективность рынка. Первую идею, что приходит на ум, можно сформулировать так:

  — когда мы видим начало исполнения достаточно «старого» ордера в ленте сделок биржи, немедленно посылаем маркет ордер по той же цене, пытаясь торговать против оставшейся ликвидности на этом уровне.

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

На графике ниже показана прибыль стратегии, которая просто повторяет все сделки, происходящие на бирже, без учета времени жизни ордера:

toa-shrsfilled-edgexsignal-1000shrorder-13662

Симуляция производилась для ордера объемом в 1000 акций, при копировании сделок на активах с разной ценой и имитировались разные объемы исполнения этого ордера. Зеленая линия — цена акций от 30 до 70 долларов, исполненный объем от 99 до 301 акции, синяя линия — цена акции от 30 до 70 долларов, исполненный объем от 301 до 1001 акции, красная штриховая линия — цена акции от 70 до 1500 долларов, исполненный объем от 99 до 301 акции, голубая штриховая линия — цена акции от 70 до 1500 долларов, исполненный объем от 301 до 1001 акции. Из графика можно сделать вывод, что наилучший результат после исполнения сделки показывают дорогие акции с присутствием лимитных ордеров большого объема.

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

  1.  Отмечаем в стакане ордера объемом более 100 акций и временем жизни более 5 секунд.
  2.  Если мы видим в ленте сделок начало исполнения ордера, отмеченного в п.1, посылаем маркет ордер против ликвидности, остающейся в стакане.
  3.  Объем отправляемого ордера составляет 1000 акций, чтобы взять как можно больший объем, находящийся на этом уровне.
  4.  Проделываем выше описанное для акций дороже 70 долларов, цена посылаемого ордера на один шаг цены хуже цены сделки, для лучшего исполнения.

В результате бэктеста такой стратегии получаем:

toa-edgex-5s_execution-1000shr-backtest13662

Красная штриховая линия — прибыль стратегии при уровне исполнения ордера от 99 до 301 акции, голубая — при уровне от 301 до 1001 .

Автор находит подобный результат замечательным. Это простая стратегия, без параметров, без опасности подгонки на истории, и может быть спроектирована в высокочастотном исполнении. По подсчетам автора, если частота сделок составит около 7000 в день, при комиссии 0,5 цента за акцию, прибыль алгоритма может составлять до 10К долларов в день. Конечно, это результаты симуляции, и в реальной торговле результат может быть хуже, но тем не менее, есть солидное позитивное ожидание. Также можно отметить, что в стратегии не сформулирован алгоритм выхода из позиции, подразумевается выход по времени, которое можно определить по вышеприведенному графику.

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

Другие стратегии, применяемые в алгоритмической торговле и биржевых роботах смотрите в моем блоге и на сайте.

★26
15 комментариев
Вот же блин, народ уже за десятые части цента рубится, а я все коннектор к квику не напишу.
avatar
Читал эту статью ранее. Не понял, как можно отследить «старые» ордера в стакане… Можно попробовать брать объемы которые не меняются N секунд, или меняются не более чем на 5-10%.
avatar
Eskalibur, у вас есть ордерлог, где содержится информация о дате регистрации ордера.
avatar
Enfernuz, А какие биржи предоставляют ордерлог? И всем желающим в реальном времени? Ведь тогда видна вся глубина рынка и тут не только простор для HFT
avatar
Ага, московская предоставляет. Но за дополнительную плату
avatar
Ага, да вроде как практически все площадки. Наша не исключение: через CGate (Plaza) или FAST.
avatar
Enfernuz, А касательно CME? Если предоставляет, то может подскажете какие датафиды?
avatar
Ага, мои познания тут такие же, как и Ваши) Но беглый поиск в Гугле выдаёт что-то типа: www.cmegroup.com/confluence/display/EPICSANDBOX/CME+Market+Data
avatar
Ага, Например наша Московская даёт всё все ордера их время и тд в реальном времени глядите не наглядитесь.
Eskalibur, full_order_logs там записи по всем ордерам
блин, думаю кто-то новенький интересное написал, а когда сохранял в избранное, понял что это очередной топик в моём избранном от уралпро.
спасибо!
avatar
Имхо, тут как раз важен момент выхода из позиции. Если это рыночный ордер, то в стакане от текущей цены до уровня безубытка может не хватить ликвидности и выход из позиции в среднем произойдёт по средней цене, недостаточной для того, чтобы покрыть комиссионные издержки. Если это не рыночный ордер, а зависящий от статистики «Pnl/ctr» по классам ордеров (хотя, так уже получается стратегия с параметрами), то, опять же, возникает риск того, что «не нальют», так как перед нами по этой цене ещё может стоять приличный объём. Но это всё из разряда «что, если». Думаю, что в HFT-масштабах подобные проблемы с ликвидностью случаются достаточно редко и вполне вписываются в допустимые риски.
Спасибо за интересную статью!
avatar
Enfernuz, с ордер логом не работал. В ближайшем будущем… Спс, про ордер лог не знал.
avatar
Пользую такую систему, но мягко говорят с другой стороны зашел.
И еще. Зачем палить такое? Сиди и коси
avatar
ELab, альтруизм.
avatar

теги блога uralpro

....все тэги



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