Как построить форекс кухню

30 декабря, 2013

Коинтеграция — свойство нескольких нестационарных временных рядов, заключающееся в существовании некоторой их стационарной линейной комбинации. Концепция коинтеграции впервые была предложена Грэнджером в 1981 году. В дальнейшем данное направление развивали Энгл, Йохансен, Филипс и другие.
Представьте, что у вас много торговых инструментов. Если существует возможность  купить/продать эти инструменты таким образом, чтобы прибыль колебалась возле какого-то не сильно изменяющегося значения, то такие инструменты коинтегрированы. Такая комбинация инструментов называется коинтегрированным портфелем. Классический пример такого портфеля: актив и фьючерс на него.
Арбитраж — совершение сделки по коинтегрированному портфелю так, чтобы после ее закрытия был положительный профит.  Любой портфель имеет Bid и Ask-цены. Более того, имеет свой Level2 (несложно вычисляется из Level2 инструментов, в него входящих).

Маркап   — ухудшение цены (Level2) на определенную величину. Например, брокер может ухудшать цены, чтобы зарабатывать на этом. Может пойти на маркетинговый шаг — обнуление комиссии (кликеры не любят сложностей), но занесение ее в маркап.
Допустим возникло желание заняться арбитражем. Для этого нужно, как минимум, создать коинтегрированный портфель. Самый простой коинтегрированный портфель состоит из двух одноименных инструментов (для форекс) :  один у одного брокера, второй — у другого.
Возьмем, например, EURUSD и дадим инструментам для удобства названия: EURUSD1 и EURUSD2.  Важно понимать, что EURUSD1 и EURUSD2 — это совершенно разные инструменты. Они могли бы вообще по-другому называться у брокеров, иметь на порядок  разные цены и другие отличия.  Важно лишь только одно — они коинтегрированы.
Но для простоты будем рассматривать элементарный случай: EURUSD1 и EURUSD2.
Перед тем, как сравнивать цены, делается алгоритмический маркап на них для того, чтобы внести в них все возможные торговые издержки (качество исполнения для каждого брокера и комиссии для каждого брокера). Будем далее считать, что все цены уже замаркаплены.
Итак, у каждого брокера у вас имеются торговый счет с определенными деньгами. Если очень примитивно смотреть на арбитраж, то требуется находить моменты Ask1 < Bid2 и Ask2 < Bid1. И в эти моменты открывать/закрывать противоположные позиции у каждого из брокеров. Это простейшая и лобовая реализация. Сделаем небольшое отступление в сторону более обобщенного и универсального алгоритма.
В данном случае коинтегрированность портфеля говорит о том, что S = EURUSD1 / EURSD2 колеблется возле единицы. У этого S имеются свои S_Bid и S_Ask (S_Level2) цены. Если возможно построить ЗигЗаг с экстремумами на S_Bid и  S_Ask, то наш портфель S является арбитражным.
Часто оправдано создание чего-то высокоуровневого для удобства торговли.

Для арбитража это высокоуровневое делается так:  Берутся замаркапленные 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. Ну и, конечно, на самых концах этой сети находятся банки со своими ММ-алгоритмами.

PriceTaker и PriceGiver

Участники рынка всегда делятся на две категории: создающие (PriceGiver) рыночные предложения (цены и количество) и соглашающиеся (PriceTaker) с ними.
Сами рыночные предложения представляют из себя заявки: готов купить/продать столько-то по такой-то цене или лучше. Совокупность этих заявок (Level2) условно показывает текущую рыночную ликвидность.

Провайдер ликвидности

Liquidity Provider (LP) — так называет агрегатор свои источники цен, которые он объединяет в один единый виртуальный (высокоуровневый) Level2.  Очевидно, LP — PriceGiver.   Существенную долю PriceGivers занимают ММ-алгоритмы.

STP — агрегатор, где клиенту разрешается быть только PriceTaker-ом. Это значит, что клиенты не в состоянии формировать свои заявки, на которые кто-либо смог бы согласиться.
Они могут только принимать предложения от PriceGivers. Как говорилось ранее, агрегатор представляет из себя некий высокоуровневый виртуальный торговый сервис.

Поэтому все лимитные заявки клиентов STP-агрегатора являются виртуальными и хранятся на сервере агрегатора. Как следствие, если кто-то возьмет в качестве LP себе STP-агрегатор, то он не в состоянии будет торговать с его клиентами.

Почти все ММ-алгоритмы, запущенные на STP-агрегаторе, не будут давать положительный профит.
Простой STP-агрегатор.  Все виртуальные клиентские торговые приказы приходят к его PriceGivers, как маркет-ордера. Например, у клиента стоит SellLimit. Как только происходит Bid >= SellLimit, на LP, которому соответствует Bid, отправляется маркет-ордер SELL. Ответ LP на такой торговый приказ и является результатом исполнения клиентского SellLimit.
Очевидно, при такой реализации происходят проскальзывания, среднее которых меньше нуля. Т.е. клиенты несут убытки.

Иной STP-агрегатор Здесь все виртуальные клиентские торговые приказы приходят к его PriceGivers, как лимитные ордера (маркет-ордер — лимитник, по цене (определяется STP-агрегатором) хуже текущей).
Например:   В момент Bid >= SellLimit, виртуальный SellLimit замораживается (выносится из учета системой исполнения, клиент ничего с ним не может сделать) и на соответствующий LP шлется такой же SellLimit. При этом все эти действия никак не влияют на ценообразование. Т.е. чуть позже заморозки (например, на 1 мс) может сформироваться Bid лучше (от других LP), но он уже почти (есть нюансы) никак не будет участвовать в исполнении нашего клиентского SellLimit.
LP, куда отправили SellLimit, отвечает, что исполнил одну часть SellLimit, а оставшуюся часть по разным причинам не исполнил — реджект (reject). После чего клиент получает высокоуровневую открытую SELL-позу на исполненный объем и размороженный SellLimit — на оставшийся.
Скорость и качество ответа LP зависит от множества факторов. Длительность ответа может доходить до нескольких секунд. Не исключены ситуации, когда от LP ответ не приходит. При такой реализации STP, лимитники клиентов агрегатора не скользят в отрицательную зону. Более того, часты положительные проскальзывания, которые покрывают значительную часть постоянных торговых издержек — комиссия.

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

Самое простое, что делается агрегаторами одним из первых — это улучшение каналов связи между LP. однако, определяющим все же качество исполнения (FillRate) являются алгоритмы исполнения STP-агрегатора. Это целый класс постоянно совершенствующихся  алгоритмов, некоторые из которых даже затрагивают ценообразование STP-агрегатора. Они во многом являются неафишируемыми конкурентными решениями.
Факт заключается в том, что два STP-агрегатора, находящиеся в равных условиях, могут существенно отличаться по FillRate, благодаря использованию разных алгоритмов исполнения. Особенно это может быть заметно при токсике.   
Т.е. показатели торговой стратегии очень сильно зависят от используемого агрегатора, особенно при росте торговых объемов.

Если показатели торговли двух идентичных ТС, запущенных в равных условиях на одном и том же агргегаторе, совпадают — это косвенный признак очень высокого уровня качества алгоритмов исполнения данного агрегатора.


ECN/STP  — как агрегатор, алгоритмически идентичен STP. Единственное отличие — в агрегацию добавляется новый виртуальный LP — LP0: заявки клиентов агрегатора.
Таким простым приемом клиенты ECN/STP-агрегатора становятся еще и PriceGivers. Это обозначает, что клиенты могут совершать между собой сделки фактически напрямую.
Чем больший оборот приходится на LP0, тем выгоднее ECN/STP-агрегатору, т.к. в отличие от других LP, LP0 не требует за свое использование агрегатором платить комиссию.  Более того, поток торговых приказов, приходящийся на LP0, ни в коей мере не может быть характеризован, как токсик.  Т.к. это уже торговля клиентов между собой, даже если среди них будут ММ-алгоритмы.
Но надо четко понимать, чтобы иметь возможность быть PriceTaker-ом для LP0-PriceGiver-ов ECN/STP-агрегатора, нужно быть его клиентом. Т.е. клиенты других агрегаторов не могут воспользоваться иногда великолепными (наилучшими) ценовыми предложениями LP0.
Например, вы торгуете в двух агрегаторах.  В ECN/STP выставляете лимитник внутрь спреда, улучшив Bid или Ask.  Но в другом агрегаторе вы не сможете сами у себя купить/продать по этой цене, т.к. они не видны. Т.е. вы купите/продадите, скорее всего, по менее выгодной цене, чем предложенная вашим лимитником.

Достоинство ECN/STP заключается в возможности обмениваться ликвидностью.
Представьте, что какой-то STP-агрегатор взял себе в качестве LP ECN/STP-агрегатор.  Это автоматически обозначает, что клиенты STP-агрегатора становятся PriceTaker-ами ECN/STP-агрегатора, в частности (и других LP из списка STP-агрегатора).

Получается, что в примере выше с двумя агрегаторами, вы бы в STP-агрегаторе увидели бы свою заявку, выставленную в другом ECN/STP-агрегаторе.
И если бы она оказалась лучшей в итоговом STP-Level2, то вы бы могли совершить сделку сами с собой.
Т.е. ваша заявка стала бы доступна гораздо большему количеству PriceTakers, а это значит, что вероятность исполнения вашей заявки возросла бы.
Нужно понимать, что у каждого агрегатора есть своя база PriceTakers, и такой простой прием позволяет обмениваться этими базами, увеличивая вероятность исполнения заявок PriceGivers. И это также выгодно PriceTakers, т.к. цены лучше.
Конечно, если два ECN/STP-агрегатора сделают взаимно друг-друга своими LP, то возникнет серьезное несоответствие в Level2 каждого — рекурсивно ликвидность будет увеличена в разы.

Поэтому ECN/STP-агрегаторы обмениваются (точнее, могут) между собой внутренней (LP0) ликвидностью через определенные технические договоренности — tags.

LP-шками большинства агрегаторов являются банки с ММ-алгоритмами. Это значит, что проблема токсика в большинстве агрегаторов крайне насущная.

 Если один из таких LP замечает токсик от агрегатора, он оповещает об этом агрегатор. И тот, в свою очередь, ставится перед выбором: отключить LP (т.к. тот не хочет нести убытки), либо отключить своего клиента — источника токсика. Чаще всего агрегатор отказывается от прибыльного клиента, т.к. он менее выгоден. Это порочная для трейдеров схема действует в большинстве случаев.
Однако, есть и исключения, и это серьезный передел так давно хорошо себя зарекомендовавших правил на институциональном FOREX.

Появились ECN/STP-агрегаторы, потенциально-способные превратить огромную ликвидность PriceTeker-ов в ликвидность PriceGivers. Т.е. замкнуть на себе трейдеров, существенно уменьшив доходы классических банковских ММ-алгоритмов.
Стоит лишь сказать, что по скромным подсчетам разрозненный retail-FOREX имеет месячный оборот свыше триллиона USD.
И почти весь этот оборот — мясо с костей кликеров, которые на данный момент обгладывают ДЦ (маркетмейкерская схема) и банки через классические STP и ECN/STP-агрегаторы.

С наступающем Новым Годом!!!

Экскурсия на кухню брокера

30 декабря, 2013

Эта заметка совершенно не касается рынка как такового,она скорее о некотором, не очевидном, источнике дополнительного дохода брокера.

Обыватель считает, что самые жадные — это банки. И он,обыватель, смело идет на фондовый рынок, чтобы  приумножить свои капиталы.

Но, возможно , что это не совсем так? 

Большинство начинающих кликеров при поиске наиболее хорошего брокера, в первую очередь обращают внимание на величину комиссионных издержек, которые удерживает брокер со своих клиентов.

Как правило, тарифные планы брокеров не отличаются своей простотой и прозрачностью.

При первом взгляде, это не кажется чем-то необычным.

Мы же понимаем, что брокер зарабатывает свою прибыль в виде комиссионного вознаграждения за совершения сделок на бирже для своих клиентов.

Поэтому, было бы естественным желание брокера сделать комиссионное вознаграждение максимально большим.

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

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

  Что же это за дополнительный источник прибыли брокера?

Может быть это не дополнительный, а основной источник?

Может быть и стремление привлечь клиентов низкими комиссионными обусловлено малой значимостью прибыли от комиссии?

Может быть…

Так что же это за источник?

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

Т е брокер, не являясь по существу банком,  осуществляет фактически банковскую операцию — дает своим клиентам деньги в долг.

Подумаешь, скажет кто-то, это же какие-то мелочи…

Но как Вы отреагируете на тот факт, что брокер получает от таких операций прибыль в разы большую, чем банк!!! 

При этом, в отличии от банка, у которого денежные средства клиентов входят в бухгалтерский баланс, денежные средства клиентов брокера выведены за бухгалтерский баланс, т е практически выведены из контроля налоговых органов.  Но это уже другая история.

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

Чтобы понять, как это происходит, рассмотрим два примера.

Предположим, что банк привлекает денежные средства физических лиц во вклады.

В настоящее время, процент по вкладам составляет примерно 8% в год.

Далее, привлеченные во вклады деньги, банк предоставляет в виде кредитов  другим своим клиентам под 16% в год.

Таким образом, в простейшем случае, банк заработает 16-8=8% годовых.

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

Тогда полученный банком доход составит 6% годовых.

А как выглядит схема предоставления маржинальных займов брокером?

Согласно закону о рынке ЦБ, брокер имеет право использовать активы клиентов в своих интересах, если клиент не возражает.   А клиент и не возражает (иногда он даже и не догадывается об этом)

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

Брокер дает в долг по тем же ставкам , что и банк, т е для нашего примера это 16% годовых.

Но берет он эти деньги у своих клиентов не под 8%, а БЕСПЛАТНО.

Кроме того, в отличии от банка, брокер не дает реально деньги клиентам.

На эти деньги он сам покупает для клиентов акции, и эти акции с  дисконтом берет у клиентов в залог по займу.

Таким образом, заем выдаваемый брокером, будет возвращен со 100 процентной гарантией.

Никаких страховых отчислений делать не надо, да никто и не требует.

Вот и получается, что банк получит 6% годовых с привлеченных денежных средств клиентов, а брокер, практически без рисков получит 16% годовых, т.е в 2.5 раза больше, чем банк.

Обратите внимание, что меньшему риску соответствует большая прибыль!!!

Возможно поэтому, существует целая индустрия бесплатного обучения игре на фондовых рынках?

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