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

Стратегия с классификацией ордеров по времени жизни. Часть 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К долларов в день. Конечно, это результаты симуляции, и в реальной торговле результат может быть хуже, но тем не менее, есть солидное позитивное ожидание. Также можно отметить, что в стратегии не сформулирован алгоритм выхода из позиции, подразумевается выход по времени, которое можно определить по вышеприведенному графику.

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

6 Комментарии[ Ваш комментарий ]

  1. А что-то в этом есть, интересно

  2. Алексей

    Я наоборот пытался анализировать ордера с малым временем жизни. И кое какие моменты можно разобрать. Становятся понятны некоторые идеи которые торгуют hft.

  3. Спасибо автору за журнал. Полезная информация. Спасибо.

    Хотелось бы почитать про то, как профессиональные участники борятся с проскальзываниями. Если исследования по работе по рынку и лимитным ордерам. Плюсы и минусы.

    Сколько лимитных (в процентах) ордеров исполняется. Как тестировать стратегии с лимитными ордерами если статистику исполнений никто не дает и взять неоткуда. Как просчитывать стратегии не зная процента исполнения ордеров.

    Как более профитно выставлять ордера.

    Как бороться с убыточными позами, т.е. определять нужный момент выхода из позиций и не опаздывать.

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

    • на мой взгляд бороться с проскальзываниями можно очень просто - во первых работу следует вести только лимитниками, то есть когда надо ударить в аск, использовать следует не маркет ордер, а ставить бид ордер на цену бест аска, во вторых внутри ордера указывать флаг - FOK, IOC (и т.п.) и величину объема, который надо зафилить или полностью отменить ордер. 

      Именно так работал чел из Лондона (его недавно сделали козлом отпущения за flash crash) который ручками E-mini гонял несколькими сот контрактами, поищите в интернете, его зовут Nav Sarao 

      • На FORTS и так нет маркет ордеров, только лимитные. FOK это хорошо в некоторых случаях, но от проскальзывания не спасет. Оно будет и в случае FOK - если вам не сведут ордер, вы потеряете время, цена, соотвественно, уйдет дальше и вам придется опять таки закрываться по худшей цене. То есть проскальзывание сильно зависит от задержки выставления ордера, а в данном случае FOK это дело еще и ухудшит.

Ответ на uralpro ¬
Отменить ответ

Обратите внимание: вы можете использоватьHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>