Блог им. uralpro

Алгоритмы маркетмейкера. Часть 1

Алгоритмы маркетмейкера. Часть 1
В биржевой торговле существует ряд алгоритмов, которые можно отнести к маркетмейкерским. Как правило, это означает выставление лимитных ордеров по обе стороны стакана, то есть как на покупку, так и на продажу, и целью такого алгоритма является получение прибыли от спреда - разницы между этими лимитными ордерами. Простейшая стратегия подобного рода — постановка ордеров одновременно на лучший бид и лучший аск — будет убыточной из-за действия следующих факторов:

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

2. При существовании открытой позиции возникает риск движения цены в противоположную этой позиции сторону. Например при росте цены сработал ордер на покупку (будем считать, что эффект, описанный в п.1 не подействовал) и возникла открытая длинная позиция на 1 контракт. Далее рост цены сменился падением, и, если ордер на продажу не сработал вовремя, указанная открытая позиция начинает съедать прибыль (если она была получена при росте), а если движение вниз продолжится, то возникает убыток. Это так называемый inventory risk.

  Соответственно, управление ордерами должно происходить по некоему алгоритму, который позволит избежать adverse selection risk и inventory risk. Основы  алгоритма, который позволит оптимально управлять inventory risk, рассмотрены в работе Marco Avellaneda & Sasha Stoikov "High-frequency trading in a limit order book".

  Цель данной статьи состоит в нахождении так называемой нейтральной средней цены (indifference price), которая будет зависеть от величины открытой позиции маркет мейкера. Например, возьмем среднюю цену стакана, вычисляемую, как Pmid=(Pbestask+Pbestbid)/2, где Pbestask — лучшая цена продажи в стакане, соответственно Pbestbid — лучшая цена покупки. Если в начале торговли позиция маркет мейкера равна нулю, он располагает ордера на покупку и продажу — по ценам Pb и Pa соответственно- на одинаковом расстоянии от Pmid. Когда один из ордеров взят, возникает открытая позиция, например длинная (исполнился ордер на покупку). Далее маркет мейкер, чтобы уменьшить возникший inventory risk должен расположить следующий ордер на покупку на большем рассстоянии от Pmid, а ордер на продажу — на меньшем расстоянии, чем это было при нулевой позиции. В случае короткой позиции все происходит с точностью до наоборот. Этот эффект можно интерпретировать как изменение средней цены в зависимости от величины открытой позиции, такая цена называется нейтральной Pi (indifference). Расстояние выставляемых ордеров от Pi всегда одинаково, независимо от удерживаемой позиции. На графике в заглавии изображены средняя цена, нейтральная цена и цены Pa и Pb

  Авторы статьи находят формулу для цены Pi, (при условии, что цена следует модели броуновского геометрического движения) :

 Pi(s, q, t) = s - q \gamma \sigma^2(T - t), где

s — цена актива,

q — величина открытой позиции,

γ- постоянный коэффициент (мера риска),

σ - среднеквадратичное отклонение цены актива,

T — период торговли,

t — текущее время (в долях T) .

Далее необходимо найти оптимальные дистанции ордеров на покупку и продажу от средней цены — δb и δa соответственно. Эти величины будут зависеть от такого параметра рынка, как интенсивность исполнения ордеров λ(δ), где δ- дистанция от средней цены. Если предположить, что интенсивность имеет вид экспоненциальной зависимости ( что подтверждается экспериментальными данными) λ(δ)=Aexp(−k∗δ), то формула для спреда между ордерами маркетмейкера, центрированного относительно нейтральной цены Pi будет выглядеть следующим образом:

\delta_b+\delta_a=\frac{2}{\gamma}ln\left(1+\frac{\gamma}{k}\right)

где γ- постоянный коэффициент (мера риска), который подбирается при тестировании алгоритма.

Ниже представлены графики плотности распределения прибыли и убытков для трех стратегий: inventory strategy — стратегия с применением нейтральной цены и спреда между ордерами, согласно приведенным выше формулам, bestbid\bestask strategy — когда ордера выставляются в стакан на лучший бид и лучший аск, и symmetric strategy  — здесь спред между ордерами вычисляется по последней приведенной формуле, однако центрирован он относительно средней цены Pmid, вместо Pi (adverse selection risk, ни в одной стратегии, конечно, не учитывается):

Алгоритмы маркетмейкера. Часть 1

Предположение о броуновском характере движения цены не совсем согласуется с реальными данными, поэтому необходимо выбрать другую модель, более приближенную к реальности, соответственно, формулы, приведенные в статье  Marco Avellaneda & Sasha Stoikov нуждаются в уточнении. Об этом мы поговорим в следующей части статьи про алгоритмы маркет мейкера, которую вы можете посмотреть на моем сайте в профиле, или через некоторое время на смарт-лабе.

★84
28 комментариев
скажите, сколько человек купило код уралпро2010? Спасибо.
Профессор Преображенский, вы еще можете успеть:)
avatar
uralpro, так и думал
алгоритмы — ладно, где они деньги на это всё берут?
avatar
Лет 10 назад это было актуально)
avatar
Эдуард Григорян, А сейчас что изменилось?
avatar
anatolyutkin, изменилось то, что подобная информация теперь доступна массам. Со всеми вытекающими.
avatar
Евгений, 1) По моему, изложены очевидные вещи, которые понятны любому, кто ставил лимитные ордера и думал о маркетмейкинге. Некоторые детали, конечно, не очевидны--но это детали.
2) Если даже предположить, что массы были не в курсе. Что вытекает из того, что информация теперь доступна массам?
avatar
anatolyutkin, изложены примитивнейшие вещи по нынешнему времени. Об этом и говорится про 10 лет.
avatar
Евгений, в следующих статьях будут вещи посложнее
avatar
uralpro, дело не в сложности. Дело в неактуальности. Вот если бы эти статьи 10 лет назад, а еще лучше 15, тогда да. А сейчас только ленивый книгу не писал про ММ.
avatar
Евгений, не согласен, такие алгоритмы применяются и сейчас. Другое дело, что изложение в 1 части достаточно упрощенное. В следующих частях уже ближе к практике
avatar
uralpro, спасибо за статью. Упрощения вполне уместны для усвоения идеи и подготовики к следующим частям. А практическая реализации всегда расходится с теорией. Например, при расчете средней цены стакана лучше учитывать количество продавцов/покупателей:
midPrice=(bidSize*askPrice + askSize*bidPrice)/(bidSize+askSize)
Но в терминах статьи, тогда пришлось бы моделировать процессы количества лотов по обеим сторонам стакана.
avatar
uralpro, я про это и пишу вам. ЧТо актуально это все было лет 10-15 назад. Сейчас только ленивый это все не знает и не использует.
avatar
Эдуард Григорян, ничего не изменилось, скорости возросли
avatar
спасибо огромное. только подумал утром, где-бы про алгоритм маркет-мейкера почитать. а тут вот оно уже. здесь.
наверное это тоже какой-то эффект с английским названием.
добавляю в избранное.
avatar
Предположение о броуновском движении не совсем согласуется с реальными данными.
Интересно, насколько не согласуется?
Какое различие, искажение в цифрах?
Есть ли такие данные?
Я так понимаю, реальные данные должны подтверждать больший процент профита над лосом?
avatar
Hannes, существование трендов уже опровергает теорию о броуновском движении
avatar
uralpro, в цифрах нет данных?
avatar
тоже мне маркетмейкер, чуть какой нибудь сдвиг пртоив позиции алгоритма, так сразу покрытие по маркету, не зря говорят, что хфт только дестабилизируют рынок
avatar
отличная статья! жду продолжения!
avatar
Вот все гребут денюжку и не могу понять как и от куда!!!!
Я вто на этом сайте iq-option.com.ua больше 100$ в день не могу поднять!
Может стратегии не те?????
avatar
Не очень понятно со временем в первой формуле, можно поподробнее?
avatar
The0bald, а что именно не понятно?
avatar
период торговли — это таймфрейм, макс время удержания позиции?
текущее время (в долях T) — текущее время удержания позиции?
avatar
The0bald, период торговли — период, в течение которого действует алгоритм, по его окончании все открытые позиции ликвидируются, Т — момент ликвидации позиций, а текущее время — это момент, в который производится расчет для цены, например, если период торговли 600 сек, а после запуска алгоритма прошло 6 сек, принимая T=1, t будет равно 0,01
avatar
uralpro, Что обычно за Т берут? Продолжительность торговой сессии?
avatar

теги блога uralpro

....все тэги



UPDONW
Новый дизайн