Сергей Урманшин
Сергей Урманшин личный блог
17 января 2020, 12:44

Поверхностно об основах рыночной архитектуры и алготрейдинге.

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

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

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


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

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

Значит надо как-то людишек заставить совершать сделки. Следующий тупейший ММ-алгоритм может быть простой синусойдой — Level2 ходит то вверх, то вниз. Многие люди будут также сливать, но найдутся гении, которые увидят закономерность и начнут нагибать владельца ММ-алгоритма.

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

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

Т.е. вы понимаете, что маркетмейкером можете быть даже вы, нужен только хороший ММ-алгоритм и решение некоторых организационных вопросов.
Попробуем пошагово смоделировать на своем компьютере биржевой (самый простой вариант) замкнутый рынок (из одного ФИ).

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

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

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

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

Запускаем роботов, которые на основании сформированной истории делают свое грязное дело — торгуют. Пошли сделки. Роботы, что выставляли лимитные заявки, могут слить. Тогда исчезнет цена и все застопорится. Придется определенным таким роботам дать несоизмеримо высокий капиталл (это значительно увеличит начальную (50/50) вероятность заработка), по сравнению с остальными. Назовем таких роботов ММ-роботами. И в алгоритм их заложим гарантию присутствия своих заявок. Есть ли возможность слития ММ-роботами? Конечно есть. Значит нужно каким-то образом гарантировать отсутствие слития для ММ-роботов.

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

Вводим начальные торговые издержки для всех роботов за торговые операции, и перечисляем их на счета ММ-роботов. Начальные издержки делаем Koef * MO ММ-роботов. Конечно, Koef > 1. Инсайд тоже научились пользовать, так что ММ-роботы потихоньку сливают остальных роботов.

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

Как этого избежать? Путь только один — ввод новых роботов с новыми капиталлами. Значит требуется всегда на определенном этапе подпитывать наш рынок новыми деньгами и новыми роботами.

Ну, вроде, задышало…

И тут приходят люди, которым мы все это показываем и убеждаем, что это все реально. Они вводят деньги и начинаются торговать. Можно ли торговые действия человека смоделировать роботом? Сложно сказать, т.к. нет предела совершенству, но создать поведенческую модель человека определенно можно с высокой степенью совпадения. Выходит, опять попадаем на этап присутствия только роботов. А значит наш рынок будет дышать и жить даже с людьми.

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

— Рынок — инструмент отнятия денег в пользу ММ-роботов.
— Рынок мертв без новых участников и их новых капиталлов.
— Рынок мертв без инсайда и торговых издержек.
— Цены формируются на основе инсайда.

Площадко-образующий биржевой алгоритм


Вроде, стало понятно, что все держится в наше автоматизированное время на алгоритмах. Их много типов. Попробуем рассмотреть сугубо технических алгоритм создания торговой площадки. Самый простой алгоритм из этого типа — биржевой. О нем и поговорим.

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

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

Итак, есть Level2 (терминология FOREX, в биржах его называют еще MarketDepth) — это уровни: цена покупки/продажи и сколько (объем). Каждый такой уровень (цена + объем) называется бандом. Самые лучшие банды для продажи и покупки называются Bid и Ask (некоторые называют Offer, но это лишь терминология).

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

Любой лимитник биржевой алгоритм почти всегда ставит на соответствующий банд в стакане. Именно по этой причине, поставив лимитник внутрь спреда происходит соответствующее его сужение. Совсем на пальцах это объяснять не буду, алгоритм постановки простой (можно погуглить или спросить).

Если лимитник ставится хуже, чем текущая соответствующая цена (например, SellLimit <= Bid), то биржевой алгоритм исполнения исполняет не по цене хуже рыночной, а начинает слизывать (по объему) банды с наилучшего в сторону ухудшения, пока весь лимитник не заполнится, либо же пока не иссякнут банды до уровня, на котором выставлен этот лимитник.

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

На биржах во время торговой сессии заранее выставленный лимитник исполняется в 99% случаев точно по цене — без проскальзываний. Это значит, чтобы цене пересечь ваш лимитник, его нужно обязательно исполнить.

Лимитники в Level2 кроются маркет-ордерами. Типов ордеров полно, как биржа захочет (пропишет). Это же алгоритм. Например, в MT5 введены свои типы ордеров, которые биржа вполне могла бы легализовать — реализовать в своем биржевом алгоритме исполнения. Маркет-ордер — это производная лимитного ордера: лимитник по цене хуже текущей, при этом эта хужесть почти не измеряется. Вот сколько надо вам исполнить маркетом — столько вы и получите, но только с хорошим отрицательным проскальзыванием. Основные пользователи маркет-ордеров — мясо.

Очевидно, что цена может двигаться по почти любой траектории без совершения сделок — смотрим ММ-алгоритмы. Если сделка совершается, то ее цена и объем называется Last. И это инфа также транслируется биржей. Поток Last-данных называется T&S (Time & Sales прим. ред).

Некоторые биржи (далеко не все) к Last-данным добавляют еще условный флажок — направление сделки (Buy или Sell). Этот маркер является неким классификатором: на пассивных и активных участников. Т.е. на тех, чей лимитник исполнился, и тех, кто его залил. Очевидно, что этот классификатор является временным фильтром: чье исполнение из двух сторон сделки было инициировано более поздним/ранним торговым приказом.

Понятно, что биржевой алгоритм обязан быть последовательным — т.е. формируется очередь из заявок и они последовательно обрабатываются. Но есть варианты так называемых snapshots, когда заявки накапливаются в течение какого-то относительно короткого времени, а потом выдаются на раз в level2 с соответствующим исполнением.

Исполнение лимитных ордеров на бирже


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

SellLimit всегда исполняется по цене Bid, BuyLimit — исполняется по Ask.
Но только эти Bid и Ask являются непубличными ценами сформированного на начальном этапе стакана, как описал выше.

Если вы выставляете SellLimit — это желание вами продать, что равно предложения для других купить у вас. По этой причине SellLimit попадает в Ask-банды. Например, если вы выставляете внутрь спреда SellLimit, то формируется наилучший Ask-банд с уровнем и объемом вашего лимитника. Т.е. выставив вовнутрь спреда SellLimit, вы меняете Ask-цену. Если кто-то захочет купить по Ask-цене, то он будет заливать ваш лимитник. Говорить в таком случае, что SellLimit исполняется по Ask-цене, либо же исполняется без спреда — очень расплывчатая формулировка. Лучше просто понимать механизм, как и везде.

Приведу пример исполнения. Вы выставили SellLimit внутрь спреда, значит Ask приравнивается к SellLimit. Теперь вы же выставляете BuyLimit равный Ask. В этой ситуации (см. первый абзац) в биржевом алгоритме получается, что Bid приравнивается к BuyLimit. Т.е. в итоге выходит, что Bid = Ask. Все, пошло разруливание ситуации, пока Ask не станет больше Bid. Пока алгоритм не разрулит, никто корректный стакан не увидит. Для простоты пускай объемы SellLimit и BuyLimit равны Vol. Получается, что оба лимитника схлопываются, Bid и Ask становятся равны следующим лучшим бандам в стакане, т.е. Ask > Bid. Далее Last-данные содержат в себе цену исполнения, которая равна вашим SellLimit (== BuyLimit), объем Vol и направление BUY (потому что BuyLimit был отправлен позже SellLimit).

Заметьте, что если в той же ситуации сначала послать BuyLimit, а затем SellLimit, то результат будет один и тот же — вы купите/продадите сами себе, потеряв на двойной комиссии. Но только в Last-данных флажок направления будет противоположный — SELL.

Возвращаясь к вопросу цены, по которому исполняются лимитники:

Если вы будете смотреть на бары мелкого ТФ на каком-нибудь слаболиквидном символе, то увидите, что Bid-бары подрезаются снизу (BuyLimit-ами), а Ask-бары — сверху (SellLimit-ами).

Рассмотрим опять же ситуацию SellLimit. В побаровом тестере SellLimit исполнится только тогда, когда его HighBid >= SellLimit. Обратите внимание, что HighBid (как и LowAsk) практически не подрезаются на биржах. И забегая вперед — совсем не подрезаются на ECN/STP. Т.е. если вам нужно протестировать стратегию с лимитниками, то для вас главная информация по исполнению SellLimit является значение Bid-цены, а точнее ее High. Это может быть еще одним аргументом в пользу утверждения, что SellLimit исполняется именно по Bid-ценам.

Отвлекаясь немного, можно сказать, что из этих же соображений строятся ЗигЗаги с вершинками на Bid-данных и низинками на Ask-данных. И именно на основании такого построения оценивается максимальная потенциальная доходность.

Типы трейдеров


Классификацией трейдеров можно заниматься до бесконечности. Но среди проф. участников рынка (брокеры, разработчики платформ и т.д.) трейдеров делят на два типа: кликеры (GUI-clickers) и алготрейдеры. Названия полностью говорят о их особенностях. Разделение на опытных и новичков (употребяют также «нубы»), как правило, не ведется.
Если стоит задача привлечения трейдеров, то проще всего привлекаются кликеры и гораздо сложнее алготрейдеры.
Кликерам делается хороший красивый GUI, торговым условиям уделяется второстепенное внимание. По этой причине, в частности, кликеры являются в среднем мясом (источником прибыли для других участников рынка). Конкуренция за кликеров высокая.
Алготрейдеры очень придирчивы к торговым условиям, GUI не имеет определяющего значения. Конкуренция за алготрейдеров низкая, хоть усилия на это тратятся серьезные.
Мат. ожидание всех алготрейдеров много выше мат. ожидания кликеров. Количество алготрейдеров много меньше, но оборот выше.
Так случилось, что к мнению алготрейдеров прислушиваются в гораздо меньшей степени, чем к кликерам. Этим страдают разработчики платформ, этим же страдают и брокеры. Мнение алготрейдеров может распространяться даже на то, как, например, платформа продается брокеру — за комиссию с оборота или абонентскую плату. Т.е. учитываются все нюансы возможного изменения торговых условий.
Чаще всего участники рынка настроены на удовлетворение только одного типа трейдеров.

Очевидно из написанного ранее, что маркетмейкеры являются алготрейдерами.

Токсичный поток


Данным термином пользуются маркетмейкеры. Токсичным потоком называется системный прибыльный поток торговых приказов. Он исходит от тех самых, которые зарабатывают на несовершенстве ММ-алгоритмов. На практике 99% токсичного потока приходится на алготрейдеров.

Модели работы брокеров


  1. Маркетмейкинг.
  2. STP.
  3. ECN/STP.

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

Некий брокер заявляет, что его оборот > $100 млрд/месяц, при этом заработок $80 с мио. Очевидно, что это маркетмейкер, т.к. даже самые неадекватные STP не зарабатывают больше $65 с мио, не говоря уже про столь высокий месячный оборот.
Выходит, что $80 с ляма — это скорость слива их клиентов. Это обозначает, что при среднем лоте 0.5 средний клиент совершает сделку с прибылью ~ -0.5 пункта EURUSD.
Если извернуться, то среднюю сделку в лот/пипс можно примерно посчитать по тикетам в MT4. Да, многие тикеты будут уходить на отмененные отложки и операции ввода/вывода, но это ни в какое сравнение не пойдет с количеством маркет-ордеров — любимцев кликеров.

Рассуждаем дальше, раз месячный оборот > 100 ярдов, то значит MoneyIn — MoneyOut > $8 мио. Т.е. брокер на сливе своих клиентов ежемесячно зарабатывает $8 мио.
Спрашивается, где возможно найти ежемесячно такое количество хомячков. Причем не забывайте, что MoneyOut в среднем примерно раза в два меньше (сам придумал) MoneyIn. Т.е. брокер ежемесячно привлекает порядка $16 мио новых живых денег.

Как он это делает?!
Средний хомячек несет где-то $200 (также сам придумал, ни от кого никогда не слышал). Значит даже по самым скромным подсчетам (MoneyOut = 0) нужно ежемесячно обирать 40 000 хомячков.
На самом деле хомячки на то так и называются, что сливают много много раз. И несут свои средние $200 по расписанию — с каждой ЗП, годами. Это плата за регулярное удовольствие ощущать себя кликером. Точно также, как тратят ежемесячно на кино, пиво и т.д.

Если среди хомячков вдруг попадается токсичный поток, то он быстро и легко выявляется, после чего настоятельно рекомендуется перейти в STP-тип, либо закрыть счет.
Такому брокеру на самом деле выгодны другие типы брокеров (STP и ECN/STP). Эти брокеры не являются маркетмейкеру конкурентами. Они даже делают огромное благо: производят явное разделение «ECN для профи» и «Стандарт для новичков». Т.к. это позволяет клиентскую базу на Стандарте избавить от токсика. Им даже выгодно, чтобы люди уходили к другим, т.к. токсика в итоге меньше. И можно больше зарабатывать с менее рискового в итоге ММ.

STP И ECN/STP могут испытывать серьезные проблемы при высокой доли токсика. Им нужные кликеры хотя бы для того, чтобы разбавлять токсик перед своими LP, которые почти всегда сводятся на крупных маркетмейкерах. А они действуют по образу и подобию мелких маркетмейкеров (как описал выше).
Дело в том, что на FOREX на данном этапе превалируют ММ-алгоритмы крупных владельцев — банков. Если вы зарабатываете на FOREX — то это почти всегда убыток этих банков, точнее их алгоритмических отделов, у которых миллионные бюджеты тратятся на то, в частности, чтобы вы не зарабатывали.
Получить прибыль от слива другого простого трейдера можно сейчас в своей основе лишь косвенно: трейдер сольет ММ-алгоритму, а вы вырвете этот профит у него себе. Грубо говоря, зарабатывать на FOREX — это грабить наворованное.

Но все это странно звучит только в том случае, если смотреть через розовые очки на многие происходящие в мире события. Уже давно рынок (фондовый или FOREX) стал легальным инструментов отъема денег у населения. Но не все так плохо.
Вернемся к нашему ММ-брокеру. Граальная ли у него схема? Не совсем. Дело в том, что ММ-брокер в состоянии зарабатывать даже много больше $80 с мио при очень волатильном и трендовом рынке. Но и уходить в приличные минуса на длительно-вялом рынке. Таковы вполне предсказуемые особенности торговли среднего хомячка. Т.е. ММ-модель брокериджа — это рисковая модель, но при этом могущая быть очень прибыльной при благоприятных рыночных условиях.

Чтобы ММ-брокер отказался от ММ-модели, ему нужно поверить в то, что STP-модель в состоянии давать на комиссии не сильно меньше. А это значит, что ему нужно увеличивать в разы обороты. Это практически нереально сделать на огромной базе кликеров, т.к. оборот делают алготрейдеры. А алготрейдеры пойдут только тогда, когда торговые условия будут одними из лучших. Ну а это в свою очередь может произойти при серьезнейших финансовых вливаниях в STP-инфраструктуру.
Более того, если имеется такое огромное стадо мяса в виде кликеров, то зачем отдавать их слив зажравшимся ММ-банкам, получая лишь только комиссию с их слива. Если можно забирать все полностью себе. В общем, такие несложные рассуждения позволяют понять, что ММ-брокер с огромной мясной-базой становится заложником самого себя.
Тут еще может доходить до смешного, если база обладает каким-нибудь национальным менталитетом. Например, количество русских хомячков уменьшается на порядок, если просить их заполнять чуть больше полей в анкете, как требуют того регуляторы. Это во многом заставляет ММ-брокеров уходить в оффшорные зоны.

Но опять же, не все так плохо…

Статья длинная, все не влезло.
habr.com/ru/post/202402/
11 Комментариев
  • krolix
    17 января 2020, 12:56

    Сначала поставил плюс за вроде бы интересный материал, потом прочитал.

    Речь в материале про игры в песочнице с нулевой суммой. Не торгующим акции будет интересно. Но в релевантности и актуальности инфы есть сомнения, тут товарищи типа Madquant лучше пусть комментируют.

    Вообще самое забавное, что кликер, сделавший осенью BUY FXRL, обойдет по показателям доходность/дродаун 90% алгоритмов. Маркетмейкеры зарабатывают с учетом спреда, в основном. На рынок приток, гдрки покупают, и тут какой-нибудь «брокер» или «хедж-фонд» думает, а свожу-ка я рынок вниз процентов на 5, там стопы у клиентов. Как быстро его поимеют?

      • VladMih
        17 января 2020, 18:28
        Сергей Урманшин, ФОРЕКСброкеров это касается меньше всего.
        Потому, что они просто дилеры и ни на что не влияют.
        Даже если б хотели, у них нет таких денег, чтоб повлиять.
  • Андрей К
    17 января 2020, 12:59
    постою, послушаю комменты
  • А. Г.
    17 января 2020, 13:10
    Какие ММ на внебиржевом рынке FOREX? MM-роботам нужна единая для всех участников программная платформа для торговли, где она на рынке FOREX?
    • krolix
      17 января 2020, 13:14
      А. Г., меня тоже напрягло хомячки/мясо/страшныймаркетос. Пишет про крупные банки. Но насколько я знаю об этой области, в которой совершенно не разбирался, банки на forex выходят не чтобы бабла наварить, а чтобы купить нужную им валюту для чего-то конкретного. Не так?
    • Андрей К
      17 января 2020, 13:27
      А. Г., это копи паст с хабры, тут можно ничего не спрашивать
      • А. Г.
        17 января 2020, 13:57
        Сергей Урманшин, ММ-алгоритмы — это HFT. Как это можно сделать через рейтерс?
  • Antishort
    17 января 2020, 14:25
    Бред какого-то ботана — дилетанта.

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

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