openfx
openfx личный блог
01 ноября 2013, 17:08

Торгуем арбитраж + немного об агрегации

Перед прочтением настоятельно рекомендую ознакомиться с прошлыми записями (если еще не сделали это):
1. Немного о маркетмейкерах.
2. Моделирование рынка.
3. Биржевой алгоритм.
4. Исполнение лимитных ордеров на бирже.
5. Маркетмейкинг, STP, ECN/STP.
6. Небольшая, но важная, терминология.




Торгуем арбитраж
.
Допустим возникло желание заняться арбитражем. Для этого нужно, как минимум, создать коинтегрированный портфель. Самый простой коинтегрированный портфель состоит из двух одноименных символов: один у одного брокера, второй — у другого.
Возьмем, например, так популярный EURUSD и дадим символам для удобства соответствующие названия: EURUSD1 и EURUSD2. Важнейшее замечание, которое необходимо полностью осознать, что EURUSD1 и EURUSD2 — это совершенно разные символы. Они могли бы вообще подругому называться у брокеров, иметь сильно (на порядок, например) разные цены и другие отличия. Важно лишь только одно — они коинтегрированы. Но для простоты будем рассматривать элементарный случай: EURUSD1 и EURUSD2.

Перед тем, как сравнивать цены, делается алгоритмический маркап на них  для того, чтобы внести в них все возможные торговые издержки (качество исполнения для каждого брокера и комиссии для каждого брокера). Будем далее считать, что все цены уже замаркаплены.
Итак, в каждом брокере у вас имеются торговые счета с определенными деньгами. Если очень примитивно смотреть на арбитраж, то требуется находить моменты Ask1 < Bid2 и Ask2 < Bid1. И в эти моменты открывать/закрывать противоположные позиции в каждом из брокеров.
Это наипростейшая и лобовая реализация. Сделаем небольшое отступление в сторону более обобщенного и универсального видения такой торговли.

В данном случае коинтегрированность портфеля говорит о том, что Synth = EURUSD1 / EURSD2 колеблется возле единицы. У этого Synth имеются свои Synth_Bid и Synth_Ask (Synth_Level2) цены. Если возможно построить ЗигЗаг с вершинками на Synth_Bid и низинками на Synth_Ask, то наш портфель Synth является арбитражным. Но это отвлечение.

Вернемся все же к более привычному для большинства взгяду на торговлю. На самом деле в некоторых случаях оправдано создание чего-то высокоуровневого для удобства торговли. И для арбитража это высокоуровневое делается так:
Берутся замаркапленные Level2_1 и Level2_2 и просто объединяются в Level2_All, которому начинает соответствовать созданный искусственный высокоуровневый символ EURUSD_All. Пишутся очень простые торговые функции, которые в состоянии торговать EURUSD_All. Например, если вы хотите продать EURUSD_ALL, то OrderSend(EURUSD_All, OP_SELL) отправляет SELL-приказ на того из брокеров, у которого Bid-цена наивысшая, т.е. его Bid-цена находится на наилучшем банде в Level2_All.

Тут нужно теперь сказать пару слов о Level2_All. В его внутреннем представлении банд теперь содержит не только цены и объем, но еще и название источника этих данных.

При такой реализации вам нужно всего лишь дожидаться ситуации, когда Ask_All < Bid_All и в этот момент одновременно открывать разнонаправленные позиции по EURUSD_All. В итоге получая высокоуровневую прибыль и отсутствие открытых позиций по EURUSD_All. Удобно, не правда ли? Советник на таком высокоуровневом языке занимал бы 10 строк: увидел отрицательные спред, проторговал его, ждем дальше.

Если же опуститься с высокого уровня видения такой торговли вниз, то мы заметим, что в момент, когда у нас нет позиций по EURUSD_All, мы будем иметь открытую позицию по EURUSD1 и противоположную ей по EURUSD2. Это в свою очередь будет вызывать естественные перекосы Equity1 и Equity2. Да, грубо говоря, Equity_All = Equity1 + Equity2 будет расти по мере торговли, но мы то знаем, что Equity1 и Equity2 обязаны быть, как минимум, положительными. А наши перекосы вполне могут счет на одном из брокеров просто обнулить, хоть другой и будет расти.
Как же решить эту проблему? Первое, что приходит в голову — это переливать деньги с одного брокера на другой. Т.е. заказывать снятие средств с брокера, где больше денег и отправлять их туда, где меньше. Но это долго, очень долго. К тому же еще и крайне дорого — банковские и другие виды переводов не бесплатны.
Но представьте себе, что появляется некто, кто говорит, что все перекосы будет нивелировать за небольшую плату. Этот некто — клиринг.

Простой агрегатор.
Несложно было заметить, как удобно высокоуровнево торговать. При этом удобно торговать не только арбитраж, а вообще любую стратегию, т.к. цены EURUSD_All исходя из своего построения не могут быть хуже, чем EURUSD1 и EURUSD2. Т.е. искусственный символ более выгодный и профит на нем заведомо выше. Вот тут и приходит мысль создания подобных искусственных высокоуровневых символов для любого вида стратегий. При этом по одному и тому же принципу брать уже не два источника (брокеры в примере) коинтегрированных символов, а любое их количество. Очевидно, чем больше источников, тем выгоднее (цены лучше) высокоуровневые символы.

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

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

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

Заметьте, что источниками могут быть такие же агрегаторы, у них источниками — также какие-то агрегаторы. Все это может в итоге переплетаться и повторяться, что вызывает порой завышение (дублирование источников) объемов на некоторых бандах вашего Level2_All. Ну и, конечно, на самых концах этой сети находятся банки со своими ММ-алгоритмами.


p.s. традиционно напомню, что вы можете так же способствовать продвижению света в массы поставив + этой и предыдущим записям. Говорю прямо — для меня не маловажно, что-бы этот материал не канул в лету, а был прочитан максимальным количеством людей и повысил их грамотность.
11 Комментариев
  • Тимофей Мартынов
    01 ноября 2013, 13:22
    Неужели бывает что бид по Евро у одного брокера больше чем аск у другого????
    • Тимофей Мартынов
      01 ноября 2013, 17:07
      openfx, если не хочешь чтобы материал канул в лету, пиши мне.
      вывел пост на главную
    • Lafert
      01 ноября 2013, 17:33
      openfx,
      1 Вы серьезно хотите делать лэтэнси арбитраж? Вы считаете, что сможете конкурировать со стратегиями, которые обрабатываются на уровне железа, а не софта, или Вы считаете, что на Смарт-лабе есть такие?
      Это очень маленькая ниша бизнеса, увы
      2 Если думаете, что можно сарбитражить кухню, поговорите с создателем прады, можно, и даже особо не напрягаясь, но тяжело вывести с кухни
      3 С прайм брокерами иметь дела вообще нельзя. Их комиссия перекроет любой арбитраж. Прайм брокера только для инвестиционной торговли подходят
      • Олег Ельцов
        01 ноября 2013, 17:53
        Lafert, кухни это совсем необязательно, можно брать брокеров вроде саксо банка, которые предоставляют собственные cfd
  • Roman Ivanov
    01 ноября 2013, 18:06
    Давно уже руки чешутся попробовать поискать торговые стратегии для синтетической цены. Быть может, например, что в синтетике ES — NQ будет проще найти закономерности. Думаю прибыль на единицу инструмента будет ниже, но ниже и риск. Вопрос только в том, можно ли получить лучшее соотношение прибыли и риска.
    • v3Rtex
      01 ноября 2013, 19:56
      ivanovr, ES NQ не арбитраж, а парный трейдинг :> И кстати вместо nq лучше брать YM — корреляция там получше.
      • Roman Ivanov
        02 ноября 2013, 16:28
        v3Rtex, ну если «EURUSD1 и EURUSD2 — это совершенно разные символы. Они могли бы вообще подругому называться у брокеров, иметь сильно (на порядок, например) разные цены и другие отличия. Важно лишь только одно — они коинтегрированы», то я бы арбитражем это не называл. Скорее таки парный трейдинг.
  • Interesting
    15 ноября 2013, 03:06
    Хороший материал, есть над чем подумать.
  • ELab
    03 июля 2015, 13:41
    Все возможности такого арбитража предусмотрены механизмом реджекта в течении 200 мс… Ваши прибыльные сделки просто не выполнять. Теория хорошо, а на практике ;(

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

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