Блог им. openfx |Торгуем арбитраж + немного об агрегации

    • 01 ноября 2013, 17:08
    • |
    • openfx
  • Еще
Перед прочтением настоятельно рекомендую ознакомиться с прошлыми записями (если еще не сделали это):
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 обязаны быть, как минимум, положительными. А наши перекосы вполне могут счет на одном из брокеров просто обнулить, хоть другой и будет расти.

( Читать дальше )

Блог им. openfx |Маркетмейкинг, STP, ECN/STP.

    • 29 октября 2013, 12:50
    • |
    • openfx
  • Еще
Как и прошлые записи, эта является продолжением предыдущей. Для более ясного понимания содержания и терминологии настоятельно рекомендую прочесть прошлые записи по порядку:
1. Немного о маркетмейкерах.
2. Моделирование рынка.
3. Биржевой алгоритм.
4. Исполнение лимитных ордеров на бирже.

Итак, маркетмейкинг, STP, ECN/STP.

Все три модели являются абсолютно рыночными — это очень важно понимать, т.к. нет честного рынка или нечестного. Все едино и переплетено.
Первая отличается от двух других тем, что зарабатывает не на комиссии с оборота клиентов, а на их сливе. Разберем все на одном реальном примере (все данные публичные), имена упустим.

( Читать дальше )

Блог им. openfx |Исполнение лимитых ордеров на бирже.

    • 29 октября 2013, 00:00
    • |
    • openfx
  • Еще
Как и прошлые записи, эта является продолжением предыдущей. Поэтому, для более ясного понимания содержания и терминологии рекомендую прочесть прошлые записи по порядку:
1. Немного о маркетмейкерах.
2. Моделирование рынка.
3. Биржевой алгоритм.

Итак, теперь пару слов о лимитных ордерах на бирже.

Корректный биржевой алгоритм не допускает в ценообразовании публичной ситуации Bid >= Ask. В самом алгоритме по мере приема заявок на начальном этапе формируется стакан, в котором частенько бывают ситуации Bid >= Ask. В такой ситуации включается исполнительная часть биржевого алгоритма, задача которой разрулить эту ситуацию до состояния Ask > Bid. И только после разруливания уже сформированный стакан с соответственно сформированными Last-данными становится публичным — доступным всем.

( Читать дальше )

Блог им. openfx |Начинаем с начала. Немного о маркетмейкерах.

    • 22 октября 2013, 23:07
    • |
    • openfx
  • Еще
Добрый день!
Я уже отметился записью здесь.

Многие знают, что одно из первых, что говорят в техническом ВУЗе — забыть все, что проходили в школе. Данная рекомендация актуальна и здесь. Полезно иногда с чистого листа начать. Начинаем!

На данный момент все рынки автоматизированы. По этой причине какие-то экономические объяснения ценообразования являются некими рудиментами. Рулят алгоритмы + некое ручное вмешательство.

Задача каждого торгового алгоритма всегда одна и та же — принести денег владельцу. Алгоритм тем лучше, чем больше денег он в состоянии принести.

Среди алгоритмов на рынке есть так называемые маркетмейкерские алгоритмы. Объяснить на пальцах, наверное, можно от простого примера к более сложному:

Представьте, что у вас задача создать новый символ для торговли. Пусть есть люди, которые по какой-то причине хотят его торговать. Что требуется от вас? Вам нужно в любой момент формировать из своих заявок Level2 вашего символа. Т.е. наполнить символ ценами и ликвидностью. Вначале можно сделать совсем тупой ММ-алгоритм — Level2 не меняется. Т.е.клиент купил или продал, после чего вы добавили ликвидности до исходного Level2. Очевидно, что такой алгоритм будет давать владельцу постоянно деньги. Но проблема в том, что люди не полные идиоты, и на символе-константе торговать не станут — нет даже потенциальной возможности им заработать.

( Читать дальше )

....все тэги
UPDONW
Новый дизайн