Блог им. 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 |Исполнение лимитых ордеров на бирже.

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

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

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

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

Блог им. openfx |Биржевой алгоритм.

    • 26 октября 2013, 00:30
    • |
    • openfx
  • Еще
После теоретических записей здесь и здесь о ММ алгоритмах настало врея перейти к практическому описанию.

Текста хватает, но написано все максимально сжато, читаться должно легко.

Думаю, вам стало понятно, что все держится в наше автоматизированное время на алгоритмах. Их много типов. Попробуем рассмотреть сугубо технических алгоритм создания торговой площадки. Самый простой алгоритм из этого типа — биржевой. О нем и поговорим.
Итак, есть какой-то символ, который будет торговаться только на нашей бирже. И есть много желающих его торговать. А это значит, есть уже готовые ММ-алгоритмы и мясо, без которого все вообще бессмысленно (беспрофитно).

Биржевой алгоритм сугубо технический, т.е. приносит прибыль его владельцу тем, что его результатами все пользуются, платя комиссию. При этом в алгоритм может быть вложена даже отрицательная комиссия, например, для ММ-алгоритмов. Комиссионная сетка — это опять же некая несложная мат. модель.

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

Блог им. openfx |Моделирование рынка.

    • 25 октября 2013, 15:48
    • |
    • openfx
  • Еще
В дополнение к своей прошлой записи.

Попробуем пошагово смоделировать биржевой (самый простой вариант) замкнутый рынок (из одного ФИ).

Исходные данные:
— тысячи роботов-трейдеров.
— у каждого робота одинаковый начальный капиталл.
— нет цены и, соответственно, ее истории.
— нет торговых издержек (комиссий и т.д.).

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

Зададим начальный уровень (не цену) средней цены — единица. Запустим сначала роботов, которые выставляют сразу лимитные заявки. Начнется формирование истории цен Bid и Ask. Какое-то время не будет никаких сделок, но цены при этом будут двигаться по любой траектории.

Если траекториями (две) будут горизонтальные линии, это будет обозначать, что рынок мертв полностью. Чтобы оживить его, запустим роботов, которые выведут траектории из горизонтальности. Тут мы можем столкнуться с тем, что траектории бесконечно устремляются в одну из сторон. Значит надо задать (не обязательно явно) какие-то границы траекторий. Теперь имеем более-менее сносную историю. При этом ни одной сделки еще совершено не было.

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

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

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

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

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

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

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

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

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

Блог им. openfx |Пора открывать глаза. Что вы знаете о других рынках и рынках вообще?..

    • 19 октября 2013, 00:15
    • |
    • openfx
  • Еще
Что вы знаете о других рынках и рынках вообще?..
 
/*
Биржевики, к огромному сожалению, почти все являются узконаправленными специалистами. Они ВЕРУЮТ в рыночность ECN и антирыночность других схем рыночных образований.
 


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

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