Как на самом деле устроена торговля на бирже: Простой алгоритм (часть 1)

Высокочастотные трейдеры – особая каста биржевых игроков. Мало, кто из них, снисходит до описания смысла своей профессии простым человеческим языком. Мы нашли блог Криса Стуккио, бывшего кванта, который решил написать краткую апологию HFT.

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

Механика HFT


Любую серьезную дискуссию по поводу высокочастотного трейдинга приходится начинать с азов. Объяснять механизмы и практики, лежащие в основании HFT. Главный объект в нем, как и в случае с любыми операциями по ценным бумагам, — регистр ордеров (order book). Предположим, некий трейдер Мэл выходит на биржу с желанием купить некоторое количество акций компании Blue Sun. Он примерно представляет, сколько он готов купить и по какой максимальной цене. Далее он осваивает процесс сведения заявок и обработки сделок (matching engine). Это может быть площадки BATS, ARCA или любая другая, где он размещает ордер:

BUY(owner=Mal, max_price=20.00, quantity=100)


На этом этапе Мэл еще ничего не продал и не купил. Он просто оповестил весь мир о своем намерении. Система берет эту заявку и отображает информацию (анонимно) всем остальным трейдерам. Теперь представим, что появляется девушка-трейдер Инара, которая хочет продать 200 акций компании по, скажем, $20,10. Она тоже размещает свою заявку, которая отображается в регистре ордеров. Теперь он выглядит так:

SELL(owner=Inara, min_price=20.10, quantity=200)
------
BUY(owner=Mal, max_price=20.00, quantity=100)


В этой точке еще никакой сделки не случилось. Мэл хочет купить по 20 долларов или меньше, Инара хочет продать за 20,10 или больше. Рынок сформировал разницу между аском и бидом в $0,10.

Усложним задачу. Пока первые двое чешут макушку, на рынок заходят Кайли и Ривер. Допустим, появилась новая позиция на продажу 200 акций по $20,21 и еще одна на 100 акций по 20,10.

Наконец, на бирже появляется Саймон, который размещает ордер на покупку 250 акций по цене $20,21. Он с радостью заключит сделку с Инарой, Кайли и Ривером. Все они запросили меньше его цены. Система использует два базовых правила, определяющих, кто кому сколько продаст:

  1. Цена: лучшее ценовое предложение всегда побеждает.
  2. Время: если цены равны, побеждает тот, кто разместил заявку раньше.


Итак, на момент появления последнего покупателя регистр ордеров выглядел так:

SELL(owner=Kaylee, min_price=20.21, quantity=200) <- Trades third
SELL(owner=River, min_price=20.10, quantity=100) <- Trades second
SELL(owner=Inara, min_price=20.10, quantity=200) <- Trades first
------
BUY(owner=Mal, max_price=20.00, quantity=100)


После того, как Саймон разместил свой ордер на покупку 250 акций, механизм распределит его следующим образом:

  • 200 акций ему продаст Инара по цене $20,10. Просто потому, что она была первой с такой ценой.
  • 50 акций ему скинет Ривер, потому что его ценовое предложение было лучше, чем у Кайли.


Все, покупатель получил тот объем акций, который и хотел. Регистр теперь будет выглядеть так:

SELL(owner=Kaylee, min_price=20.21, quantity=200)
SELL(owner=River, min_price=20.10, quantity=50)
------
BUY(owner=Mal, max_price=20.00, quantity=100)


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

Маркет-мейкинг


В высокочастотной алгоритмической торговле, в основном используется стратегия маркет-мейкинг. В самом простом понимании, это означает, что трейдер играет с той и с другой стороны стола одновременно. Он не открывает и не закрывает позиции, ориентируясь на тренд рынка. Вместо этого он выставляет активы и на покупку и на продажу в одно и то же время. Если вы хотите купить акции, он продаст вам их по цене $20,10. Если вы хотите продать, он купит их у вас по цене $20 за штуку. Пока он покупает и продает, ценовая разница колеблется незначительно. Его цель и профит – это те самые $0,10.

Разумеется, даже в этом случае трейдер несет определенные риски. Никто не гарантирует, что после покупки акций по 20 долларов, рынок не зафиксируется на этом уровне. Если он купил по 20, а активы упали до 15 до того, как он успел их скинуть, он потеряет $5 с акции. Поэтому такой трейдер должен сбалансировать риски с учетом прибыли. Если он будет держать разницу аск/бид слишком низко, он потеряет деньги, если высоко – никто не станет торговать с ним.

Нужно понимать, что в стратегии маркет-мейкинг нет ничего нового или революционного. Вспомните, фильмы про фондовую биржу, где трейдеры открывали и закрывали позиции криками и жестами. Это называлось «торговать в яме». Такая практика была распространена с давних времен по начало 2000-х годов, когда шаг был 1/8 и 1/16 доллара.


Автоматизированные трейдерские системы пришли на смену таким маркет-мейкерам по очень простой причине: снижение издержек. Во-первых, такая стратегия работает только с несколькими активами одновременно, ни один человек не сможет удержать в голове позиции по сотням акций. Во-вторых, вы экономите время. Система способна генерировать от десятки и сотни тысяч долларов прибыли ежегодно. То есть, если поставить на ее место человека, он, будучи достаточно умным, чтобы правильно оценивать рынок, будет работать как минимум за пару десятков тысяч долларов годового дохода. Средненький сервер в дата-центре способен управляться с сотнями стратегий с выгодой до $50 тысяч в год. Делать это намного быстрее и аккуратнее, чем человек.

Другими словами, мы имеем дело с частным случаем общего процесса по замене людей роботами.

Время и поток ордеров


Для маркет-мэйкера суть игры состоит в движении ордеров (order flow). Пока ваши покупки и продажи скоординированы, ваша прибыль будет пропорциональна вот этому:

(# of shares traded) x (ASK PRICE - BID PRICE)


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

Ответ банален: нужно держаться в топе регистра ордеров. Самый прямой путь к этому – предлагать лучшую цену. Вернемся к нашему примеру с трейдерами. Допустим, есть еще и Джейн, который желает встать во главе очереди из покупателей. Ему нужно предложить лучшую цену, чем у Мэла.

SELL(owner=Kaylee, min_price=20.21, quantity=200)
SELL(owner=River, min_price=20.10, quantity=50)
------
BUY(owner=Jayne, max_price=20.05, quantity=100) <-   Джейн предлагает цену лучше
BUY(owner=Mal, max_price=20.00, quantity=100)        чем Мэл, следовательно, она торгует первой.


Теперь настает время задуматься о балансе. Поскольку Джейн имеет лишь $0,05 с проданной акции, ей нужно быть уверенной в том, что прибыль перевесит риски. Предположим, что граница между ожидаемой прибылью и потерей установлена на уровне $20,05. Другими словами, на рынке не найдется ни одного участника, кто верит в то, что получит прибыль, предложив больше этой суммы. При таком раскладе Джейн всегда будет первым, просто потому что первой зашел.

Этот пример показывает, почему так важна скорость реакции. Допустим, ровно в 10:31 часов и 30 секунд утра приходит новая информация, которая позволяет поднять цену до 20,07, чтобы получить прибыль. Возможно, вышел пресс-релиз, где есть намек на то, что акции компании пойдут вверх. В этом случае и Мэл и Джейн захотят поднять цену до 20,07. У кого получится это сделать быстрее, тот и возглавит список покупателей.

SELL(owner=Kaylee, min_price=20.21, quantity=200)
SELL(owner=River, min_price=20.10, quantity=50)
------
BUY(owner=Mal, max_price=20.07, quantity=100) <- получено в 10:31:30:427
BUY(owner=Jayne, max_price=20.07, quantity=100) <- получено в 10:31:30:639, на 212 мс позднее.


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

Вторая причина заключается в том, что есть движение рынка. Нередко трейдеры хотят отменить свои ордера. В 10:31 произошло событие, которое говорит о движении цены вверх. Риверу нужно успеть отменить свой ордер на продажу по $20.10, чтобы поднять цену до $20,20. Допустим, есть еще некто, кому будет, наоборот, выгодно после этого события атаковать ордер Ривера на цене 20,10. Ривер останется в игре, если сможет оперативно убрать этот ордер. Если пойдет атака на ордер, Ривер будет вынужден поднять цену лишь до $20,15, чтобы рисковать только 0,05 за акцию.

Почему все сваливаются на одну цену?


Проницательный читатель уже, наверное, задался вопросом: почему Мэл и Джейн согласны, что лучшая цена предложения 20,07? Может быть, расчеты Джейн показывают, что это будет 20,075, а расчеты Мэла – 20,071? Да, вероятней всего, оба игрока расходятся во мнении, что же будет являться лучшей ценой. Нет ни одной причины, почему программы или трейдинговые стратегии Мэла и Джейн выдадут им идентичную цену до тысячных долей.

Вне зависимости от того, что им подсказывает стратегия, они не могут размещать ордера на свои лучшие цены. Правило минимального ценового приращения SEC Rule 612 недвусмысленно запрещает им выставлять цену продажи или покупки в долях цента. То есть покупка 100 акций за 20,07 годится, а покупка 100 акций по 20,075 – уже нелегально. Кстати, до 2001 года лимит был 1/16 доллара или $0,0625 (аналогичный шаг цены для разных финансовых инструментов есть и над других биржевых площадках, например на Московской бирже).

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

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

  • HFT
X

Похожие публикации

Комментарии (1)

Чтобы оставить комментарий, вам необходимо войти или зарегистрироваться
UP