vlad1024
vlad1024 личный блог
10 октября 2013, 19:15

Один день из жизни Ri. Или введение в микроструктурный анализ

Для большинства трейдеров свечные графики различного таймфрейма это и есть рынок, там скрывается все — и тренд и боковик и хитрый маркет мэйкер с глобальным кукловодом. Начнем с простых фактов, за одну сессию 2012.11.07 на фьючерсе Ri ядро биржи обработало 10 449 043 транзакций или примерно 12 000 транзакций в минуту, одна свечка самого «высоко частотного» минутного таймфрема скрывает за собой огромное количество более элементарных действий. Поэтому мы спустимся на самый низкий уровень того, что происходит на бирже и начнем оттуда.

    Можно долго рассказывать про то как устроена биржа, про промежуточные сервера и другие части «транспортной» инфракстуры, какие задержки они вносят при путешествии заявки, но в конце пути любая заявка попадает в ядро биржие, где непосредственно происходит то ради чего все собственно и затевалось — сведение(matching). И на этом уровне, в смысле формата данных и производимых элементарных действий, FORTS мало чем отличается от той же CME или любой другой современной биржи. Входной поток состоит из заявко двух типов, на вставку(insert) и отмену(cancel). Бьете вы по рынку или выставляете заявку в глубь стакана — для ядра нет разницы, все это в конечном итоге преобразуется в заявку на вставку, которой присваивается свой уникальный идентификатор. Другой тип заявок — на отмену, позволяет убрать часть(или всю) предшествующей заявки на вставку. Ядро принимая на входе поток состоящий из заявок на вставку и отмену, создает поток сведенных сделок, каждая сведенная сделка связана с двумя заявками участвующих в сделке. Исходя из полученного потока, затем строятся стаканы, и тиковые данные(сведенные сделки), которые рассылаются пользователям(к примеру на RTS срезы стаканов строятся с периодичностью 30 миллисекунд), и лишь затем тики преобразуются в красивые свечки, отображаемые на экране. Поток данных содержащий заявки на вставку, отмену и сведенные сделки, на FORTS называется Full Order Log.


    Рассмотрим более подробно формат данных Full Order Log. Возьмем для примера маленький, кусочек:



QUOTE  TYPE    TIMESTAMP      SESSION    ORDER_ID  STATUS ACTION PRICE  VOL  DEAL_ID DEAL_PRICE
['riz2',  1, 1352315357375000, 20121107, 9368447574, 101401, 1, 141870.0, 1,,]
['riz2', -1, 1352315357380000, 20121107, 9368447558, 100001, 0, 141900.0, 3,,]
['riz2', -1, 1352315357380000, 20121107, 9368447580, 101401, 1, 141890.0, 3,,]
['riz2', -1, 1352315357381000, 20121107, 9368447559, 100001, 0, 141890.0, 2,,]
['riz2', -1, 1352315357381000, 20121107, 9368447581, 101401, 1, 141880.0, 2,,]
['riz2',  1, 1352315357381000, 20121107, 9368447507, 100001, 0, 141840.0, 4,,]
['riz2',  1, 1352315357381000, 20121107, 9368447582, 101401, 1, 141860.0, 4,,]
['riz2',  1, 1352315357384000, 20121107, 9368447522, 100001, 0, 141850.0, 8,,]
['riz2',  1, 1352315357384000, 20121107, 9368447586, 101401, 1, 141860.0, 8,,]<- A 
['riz2',  1, 1352315357386000, 20121107, 9368447255, 201401, 0, 141850.0, 2,,]
....
['riz2', 1, 1352315358149000, 20121107, 9368447396,      1, 2, 141860.0, 2, 657525271, 141860.0]
['riz2', 1, 1352315358149000, 20121107, 9368447454,      1, 2, 141860.0, 2, 657525272, 141860.0]
['riz2', 1, 1352315358149000, 20121107, 9368447586,      1, 2, 141860.0, 1, 657525273, 141860.0] <- B
['riz2',-1, 1352315358149000, 20121107, 9368447766,    402, 1, 134840.0, 5, ,,] <- C
['riz2',-1, 1352315358149000, 20121107, 9368447766,      2, 2, 134840.0, 2, 657525271, 141860.0]
['riz2',-1, 1352315358149000, 20121107, 9368447766,      2, 2, 134840.0, 2, 657525272, 141860.0]
['riz2',-1, 1352315358149000, 20121107, 9368447766,   1002, 2, 134840.0, 1, 657525273, 141860.0] <- D
['riz2', 1, 1352315358189000, 20121107, 9368447761, 100001, 0, 141840.0, 4, ,,]
['riz2', 1, 1352315358189000, 20121107, 9368447770, 101401, 1, 141860.0, 4, ,,]

   QUOTE — содержит название инструмента, TYPE — направление заявки (+1 — bid, -1 — ask), TIMESTAMP — временная метка в микросекундах, SESSION — идентификатор сессии, ORDER_ID — идентификатор заявки, STATUS — флаги заявки, ACTION — тип заявки (0 — отмена, 1 — вставка, 2 — сведенная сделка), PRICE — цена, VOL — объем заявки, DEAL_ID — идентификатор сделки, DEAL_PRICE — цена сделки.
На примере выше показан цикл жизни заявки, вставка заявки c идентификатором 9368447586 в поток (A), вставка встречной заявки (C, первая сторона сведенной сделки (B) и вторая сторона (D).

   Теперь, немного разобравшись в формате данных, можно приступить к статистическому анализу. Всего за сессию было произведено 10 449 043 транзакций, из них 4 990 732 на вставку, и 4 362 829 на отмену, а сведено сделок — 1 095 482. То есть «в среднем по больнице» на каждую сделку приходилось 4 перестановки. Следующий вопрос, который возникает — каким образом данная активность распределена по объемам. Для этого посчитаем следующие факторы — количестов вставок и отмен для заданного объема, отношение отмененых заявок к выставленным, чем меньше это соотношение тем больше количество сделок сведено на каждую вставленную заявку, тогда умножив соотношение на количество вставленных заявок, мы получим количество проторгованных заявок для данного объема заявки. В результате получим следующую табличку, отсортированную по столбцу проторгованного объема(для анализа использовался python + scipy):

Один день из жизни Ri. Или введение в микроструктурный анализ

 cancel_volume, insert_volume — объем в заявке на вставку или отмену, cancel_count — количество отмен, insert_count — количество вставок, ratio — соотношение, trade_volume — оценка проторгованного объема в контрактах. Как видно, объемы заявок на вставку, можно условно разделить на две группы, small-volume traders с диапазоном объема 1-10 — высокочастотные трейдеры и скальперы, и всех остальных, как видно во второй группе, значения проторгованного объема кучкуются вокруг «психологических» уровней заявок — 15, 20, 25, 30, 50, 100, 200, 500.

Код на питоне

Разработка роботов обучение Stocksharp
Клуб алготрейдеров
Продолжение следует…
20 Комментариев
  • CVS
    10 октября 2013, 19:21
    не понял… лонг или шорт?
  • А.Н Н
    10 октября 2013, 19:30
    Какая практическая польза? Поясните плиз.
    • Renat1
      10 октября 2013, 19:37
      Александр Некрасов, для кругозора. мне интересно.
      • А.Н Н
        10 октября 2013, 19:44
        Renat1, Я не говорю.что плохо, просто мне непонятно, вот и спрашиваю.
      • А.Н Н
        10 октября 2013, 19:43
        vlad1024, Как вы используете?
          • А.Н Н
            11 октября 2013, 07:12
            vlad1024, Спасибо за ответ.Удачи.
      • Mikhail Sukhov
        10 октября 2013, 19:56
    • Богатый папа
      10 октября 2013, 19:48
      Роман Некрасов, Роман Некрасов, вы хотите понять каким алгоритмом крупняк манипулирует шурудя в стакане?
  • Lafert
    10 октября 2013, 19:55
    vlad1024, я на подобные исследования убил довольно много времени. Анализировал и ордерлог, и преобразованные данные по ммвб в ордерлог. Были и свои индикаторы, которые строились по ордерлогу, и аналог футпринта по заявкам, и слежка за сдвигами заявок, и анализ действий ММ по заявкам, которыми он выполняет обязательства (к стати, совсем тупиковый путь, так, как будучи ММ я сравнивал отчеты биржи по сделкам с ММ и своим прогнозам — разница колоссальная), и еще много чего.

    Не знаю, как у Вас, но мне интересные сигналы получить из ордерлога удалось, сделать алгоритм с матожиданием>0 нет.

    По этому использую ордерлог только для моделирования рынка при тестировании страт. К сожалению.
    • SMA
      10 октября 2013, 20:09
      Lafert, ну хоть такая польза))) а соответствие реальной торговле высокое получается? 100%?
      • Lafert
        10 октября 2013, 20:55
        SMA, Сейчас там полное соответсвие не цель, на тесте робот в более жестких условиях, но все от страт зависит. Есть страты, где 95-100%. Есть, где меньше
        • SMA
          10 октября 2013, 23:33
          Lafert, а можете пару идей подкинуть?
  • karapuz
    11 октября 2013, 08:27
    с недавних пор SEC предоставляет подобный анализ по американским площадкам

    www.sec.gov/marketstructure/midas.html#.Uld9uCcQPgw

    может наш «мегарегулятор» тоже когда-нибудь что-нибудь полезное начнет делать…
    • karapuz
      11 октября 2013, 08:32
      (это типа «тонкий» намек на возможный путь монетизации ваших талантов, влад:) т. к. sec например купила эту систему у tradeworks — после flashcrash и давления на них разных ребят типа nanex и пр. (типа какого буя регулятор нихрена даже не знает:)
    • Lafert
      11 октября 2013, 10:29
      karapuz, название сервиса намекает на то, что, обладая ослиными ушами, сек делает из всего золото

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

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