Блог им. uralpro

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

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

В прошлой части мы рассмотрели оптимальное управление inventory risk в маркетмейкерском алгоритме. Напомню, что формулы для нейтральной цены и оптимального спреда между лимитными ордерами были получены при допущении, что цена следует геометрическому броуновскому движению. Управление inventory risk для моделей цены, более приближенными к реальности, рассматривается, например, в статье Pietro Fodra & Mauricio Labadie «High-frequency market-making with inventory constraints and directional bets» . Однако, применить напрямую на практике алгоритмы из этих статей вряд ли получится, так как в них  не учитывается действие adverse selection risk. Поэтому в данной части рассмотрим работу JIANGMIN XU «Optimal Strategies of High Frequency Traders», в которой автор делает попытку учесть этот вид риска, конечно, наряду с inventory risk.

 Для этого необходимо получить предсказание направления движения цены в коротком промежутке времени ( мы говорим о высокочастотных алгоритмах, поэтому такой промежуток будет измеряться в секундах, или даже долях секунды). JIANGMIN XU предлагает учитывать зависимость цены от дисбаланса объемов в стакане, который равен  разности между логарифмами объема лучшей покупки и объема лучшей продажи F=log(Qbestbid)−log(Qbestask). Этот дисбаланс следует процессу Орнштейна-Уленбека с нулевым средним:

 $$dF_t=-\alpha_F F_t dt+\sigma_F dW_t$$

 где αF- константа, отражающая скорость колебаний вокруг среднего,

σF- постоянная, отражающая волатильность процесса,

dWt- случайный броуновский процесс.

Далее нам понадобится модель спреда St- разницы цен между лучшим аском и лучшим бидом- которая представляет собой марковский процесс с тремя состояниями -S={δ,2δ,3δ}, где δ- шаг цены. Матрицу вероятностей переходов обозначим ρ=(ρi,j) 1≤i,j≤3,  ρi,i=0.

В качестве модели прироста цены актива возьмем один из видов марковского процесса — pure-jump process :

dP_t=dJ_{1t}+dJ_{2t}

dJ1t- первая составляющая имеет интенсивность скачков цены λJ1, величину скачка δ/2 с вероятностью ψ1(Ft)и  величину скачка −δ/2 с вероятностью 1−ψ1(Ft),
dJ2t — вторая составляющая имеет интенсивность скачков λJ2, величину скачка δ  с вероятностью ψ2(Ft) и  величину скачка −δ  с вероятностью 1−ψ2(Ft) ,

где функция ψi имеет форму  

\psi_i(u)=\frac{1}{1+\exp(-\beta_i u)}},

для i =1,2.

Дисбаланс объемов Ft в стакане влияет на скачок цены в следующий момент времени таким образом: если Ft>0 цена с большей вероятностью будет расти и наоборот. Этот сигнал конечно не идеален, но позволяет предсказывать цену на коротком временном промежутке и будет полезен для формирования формулы оптимального управления рисками в рамках HFT стратегии.

Сформулируем основные стратегии для HFT алгоритма:

1. Котирование (make strategy). В рамках этой  стратегии алгоритм может располагать лимитные ордера на best bid или best ask, а если спред St>δ, то ордера могут располагаться на ценовых уровнях Pt−St/2+δ(Pt+St/2−δ), для увеличения вероятности взятия ордера с меньшими затратами, чем затраты при гарантированном исполнении маркет ордера. Эту модель представим в виде непрерывного процесса:

\theta^{mk}_t=\{\theta^{mk,b}_t,\theta^{mk,a}_t\}, t\geq0\theta^{mk,b}_t\in\{0,1\},\theta^{mk,a}_t\in\{0,1\}

b и a означают bid и ask соответственно. Таким образом  0 означает постановку ордера на лучшую цену покупки или продажи, а 1 означает постановку ордера на лучшую цену плюс/минус δ. Если спред минимальный — St=δ — то значение \theta^{mk}_tможет быть равно только 0.

2. Использование маркет ордеров (take strategy). Для получения мгновенного исполнения алгоритм может использовать маркет ордера. Маркет ордер, в отличие от лимитного, забирает ликвидность из стакана и имеет  высокую стоимость, равную половине спреда (без учета комиссии). Смоделируем данную стратегию как импульсный процесс в непрерывном времени:

\theta^{tk}=\{\tau_n,\zeta_n\}

где τn- возрастающая последовательность моментов времени, когда используется маркет ордер,

ζn ∈ {−ζmax,ζmax}- случайная переменная, представляющая число контрактов, купленных или проданных в эти моменты времени.

Для чего нужны все вышеописанные модели? Наша цель — составить уравнение оптимального контроля, в котором будет учтен как inventory risk, так и adverse selection risk. А решением этого уравнения будет матрица состояний, которую можно представить в виде графика с двумя осями значений — первая ось inventory level, это текущая открытая позиция, вторая ось — depth imbalance, то есть диcбаланс объемов в стакане. Таким образом эти оси значений представляют собой аргументы по которым происходит управление — по первой оси — inventory risk, по второй оси — adverse selection risk. Матрица состояний представляет собой  множество значений $$\theta^{mk}_t ,\theta^{tk}$$. Их можно представить на графике в виде области внутри квадрата, ограниченного рассмотренными осями значений. Такой график представлен в заглавии поста, для значения спреда St=δ, на момент времени t=10 (за единицу времени может быть принят любой интервал, в зависимости от требуемой частоты сделок). На графике выделены следующие области:

1. Market making — в этой области выставляются ордера как на покупку так и на продажу по ценам best bid и best ask, то  есть \theta^{mk,b}_t=0 , \theta^{mk,a}_t=0;

2. Momentum (buy/sell). В этих областях необходимо срочное закрытие позиций, если они открыты в сторону, противоположную диcбалансу объемов и установление позиции согласно этому диcбалансу. Здесь используются маркет ордера, и θtk равен какому-то количеству контрактов, больше открытой позиции по модулю, противоположному по знаку.Точная величина зависит от значений на осях аргументов.

3. Inventory control (buy/sell). Эти области означают ликвидацию открытых позиций в ноль, также с использованием маркет ордеров, θtk равен открытой позиции с противоположным знаком.

4. Partial inventory control (buy/sell). Эти области аналогичны inventory control, но открытая позиция закрывается не полностью,θtk меньше открытой позиции по модулю, противоположна по знаку. Точная величина зависит от значений на осях аргументов.

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

★73
28 комментариев
Статья по трейдингу на ресурсе для трейдеров — выдающаяся редкость!
Без сарказма…
avatar
Press, уверен, что восхитилось этой редкой статьей гораздо большее число трейдеров, чем поняло её:) Ибо люди охотнее верят, что грааль скрыт в каких-то хитрых формулах, нежели в «дурацкой» работе над своими слабостями.
avatar
Ждем продолжения :)
занятная теория китайского автора
Ну, автор-то американский, просто китайского происхождения :)
avatar
плюсом в вашем переводе есть ошибки
Профессор Преображенский, какие ошибки?
avatar
uralpro, недочет:
Профессор Преображенский, ну то что n принадлежит натуральным числам и так понятно по дальнейшему объяснению, но все равно, спасибо за уточнение
avatar
Блин, а делать то чего?
avatar
eskalibur, спасибо, правда я уже больше года как покинул завод
avatar
частично с рынка, частично коммерцией
avatar
а про черточки там всякие, и уровни фибо нет что ли ничего?
avatar
Press, да. Можно понимать алгоритм маркетмейкера, видеть работу крупняка или разбираться в международной обстановке, а потом просто наложить в штаны и потерять депозит. Поэтому я с вами немного несогласен, что это именно та статья по трейдингу, которой так не хватает всем трейдерам на этом ресурсе. Имхо, она скорее для узкого круга заинтересованных.
avatar
Press, я торгую руками по определённым формациям: 3 формации в шорт и 2 — в лонг. В основе формаций лежит мое понимание причин, по которым мои контрагенты будут заходить в противоположную сторону и терять деньги. Имхо, таких причин всего 2: надежда на выигрыш и страх потерять. Чтобы увидеть на графике, где людьми движет страх потерять, а где надежда на выигрыш, надо сначала научиться идентифицировать эти эмоции в самом себе и понять какое поведение они провоцируют. А это чистая психология. А вот как поступить дальше: научиться обращаться со своими эмоциями или передоверить исполнение роботу — дело вкуса. Я предпочитаю первый вариант, ибо развитие дисциплины помимо барышей от трейдинга способствует и общему развитию личности. К примеру я бросил курить, стал бегать по утрам, изучать английский и пр. Не спорю, возможно кто-то строит свою торговлю на других принципах и зарабатыват, поэтому думаю вы правы — каждый останется при своем мнении. Лично для меня грааль точно не в логарифмах и производных.
avatar
monte_carlo, Могу за вас только порадоваться вашему умению определять настроение и эмоции на рынке, я не всегда настроение и эмоции жены могу идентифицировать не что рынка((
avatar
Press, «всегда» я тоже не умею. Только в некоторых ситуациях, на которых и основаны формации.
avatar
monte_carlo, Хорошо написано. Это вроде как оверреакшен получается. Можно ли сказать, что вы торгуете контртрендово?
avatar
anatolyutkin, тут дело не столько в тренде, сколько в поиске ситуаций, где можно понять, как будут вести себя «доноры» под влиянием страха потерять или надежды на выигрыш.
avatar
monte_carlo, Все так, только, имхо, доноры не равны контрагентам. Донор--это тот, кто в какой-то момент движет рынок. А контрагент--это тот, кто перед этим движением встал против него. То есть контрагент чего-то не знает и поэтому теряет бабки, как и положено незнающему.
avatar

теги блога uralpro

....все тэги



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