Блог им. uralpro

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

    • 07 апреля 2015, 11:25
    • |
    • uralpro
  • Еще
Алгоритмы маркетмейкера. Часть 4
Прошлые части цикла здесь. В этой части статьи мы найдем численное решение системы уравнений оптимального управления позицией маркетмейкера. Такое решение легко запрограммировать и использовать в реальной торговле для контроля за лимитными и маркет ордерами в соответствии с полученными стратегиями θmk,θtk. Для упрощения разложим функцию владения на слагаемые, чтобы получить сокращенную функцию владения v(t,y,f,s), которая представляет собой только динамическую составляющую основной функции:

V(t,x,y,p,f,s)=x+py+v(t,y,f,s)

Для v система уравнений выглядит следующим образом:

\max\left[\frac{\partial v}{\partial t}+y\frac{\mathbb{E}_t dP_t}{dt}+\mathcal{L}^F\circ v-\gamma y^2\frac{\mathbb{E}_t d[P,P]_t}{dt}+

\sup_{\theta^{mk}}\left\{g^a(f,s,\theta^{mk,b}_t)(v(t,y+1,f,s)-v(t,y,f,s)+s/2-\delta \theta^{mk,b}_t)+

g^b(f,s,\theta^{mk,a}_t)(v(t,y-1,f,s)-v(t,y,f,s)+s/2-\delta\theta^{mk,a}_t)\},

\sup\{v(t,y+\zeta,f,s)-|\zeta|(s/2+\epsilon)\}-v]=0

с терминальным условием:

v(T,y,f,s)=-|y|(s/2+\epsilon).

Переходим к численному решению. Зададим на интервале [0,T] дискретную сетку времени t с равными интервалами \Delta_T=T/N_T:

\mathbb{T}_{N_T}=\{t_k=k\Delta_T,k=0,...,N_T\}

Также дискретизируем открытую позицию \mathbb{Y}и дисбаланс объема \mathbb{F}, с максимальными значениями M_Y, M_Fи шагами дискретизации\Delta_Y=M_Y/N_Y, \Delta_F=M_F/N_F, где

\mathbb{Y}_{N_Y}=\{y_i=i\Delta_Y,i=-N_Y,...,N_Y\}, \mathbb{F}_{N_F}=\{f_j=j\Delta_F,j=-N_F,...,N_F\}.

Далее, для вычисления численных производных по дисбалансу объема F, определим две дифференциальные матрицы — D1 для вычисления производной первого порядка и D2 — для вычисления производной второго порядка, на сетке \mathbb{F}_{N_F}:

D_2 v(t,y,f_j,s)=\Bigg(\frac{v(t,y,f_{j+1},s)-2v(t,y,f_j,s)+v(t,y,f_{j-1},s)}{(\Delta_F)^2}\Bigg)

\begin{matrix}D_1 v(t,y,f_j,s)= \left\{ \begin{matrix} \frac{v(t,y,f_{j+1},s)-v(t,y,f_j,s)}{\Delta_F}& \mbox{if }f_j< 0 \\ \frac{v(t,y,f_j,s)-v(t,y,f_{j-1},s)}{\Delta_F}&\mbox{if }f_j\geq 0 \end{matrix} \right. \end{matrix}

Обозначим оператор выбора для любой действительной функции \phi\mapsto :\phi(t,y,f,s):

\mathcal{A}(t,y,f,s,\phi)=\max\{\widetilde{\mathcal{L}}(t,y,f,s,\phi),\widetilde{\mathcal{M}}\circ\widetilde{\mathcal{L}}(t,y,f,s,\phi)\}

Оператор выбора имеет простой смысл: если некая функция ϕ максимальна при воздействии оператора \widetilde{\mathcal{L}}(что для функции владения соответствует использованию лимитных ордеров) или оператора\widetilde{\mathcal{M}}\circ\widetilde{\mathcal{L}}(использование маркет ордеров), то при текущих параметрах t,y,f,s выбирается именно эта политика (то есть лимитные или маркет-ордера).

Выражения для операторов в фигурных скобках:

\widetilde{\mathcal{L}}(t,y,:,s,\phi)=(I_{N_F\times N_F}-\Delta_T\sigma^2_F D_2-\Delta_T\alpha_F(\mathbb{F}_{N_F}1_{N_F})..D_1)^{-1}\times

\Bigg(\phi(t,y,:,s)+\Delta_T y \frac{\mathbb{E}_t dP_t}{dt}+\Delta_T\mathcal{L}^S(\phi(t,y,:,s))-\Delta_T\gamma y^2\frac{\mathbb{E}_t d[P,P]_t}{dt}+

\Delta_T\sup_{\theta^{mk}}\{g^a(:,s,\theta^{mk,b}_t)..(\phi(t,y+1,:,s)-\phi(t,y,:,s)+s/2-\delta\theta^{mk,b}_t)+

g^b(:,s,\theta^{mk,a}_t)..(\phi(t,y-1,:,s)-\phi(t,y,:,s)+s/2-\delta\theta^{mk,a}_t)\}\Bigg).

\widetilde{\mathcal{M}}\circ\widetilde{\mathcal{L}}(t,y,f,s,\phi)=\sup_{|\zeta|\leq\zeta_{max}}\{\widetilde{\mathcal{L}}(t,y+\zeta,f,s,\phi)-|\zeta|(s/2+\epsilon)\}

здесьI_{N_F\times N_F} — матрица идентичности размерностьюN_F\times N_F(матрица, где по главной диагонали расположены единицы, остальные элементы 0),\mathbb{F}_{N_F} — столбец значений дисбаланса,1_{N_F} — единичный вектор размерностьюN_F\times 1,… означает поэлементное произведение векторов и матриц. Таким образом,\widetilde{\mathcal{L}}представляет собой вектор размерностью N_Fна сетке\mathbb{F}_{N_F}.

Аппроксимируем сокращенную функцию владения v численным решением w:

w(T,y,f,s)=-|y|(s/2+\epsilon)

w(t_k,y,f,s)=\mathcal{A}(t_{k+1},y,f,s,w), k=N_T-1,N_T-2,..,0

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

1. На конечный момент времениt_{N_T}=T: для каждой комбинации значений (y,f,s) вычисляем w(T,y,f,s)=-|y|(s/2+\epsilon).

2. Начиная с момента времени tk+1 до момента tk, где k пробегает значения отN_T-1до 0 для каждой комбинации (y,f,s) делаем следующее:

  • Вычисляем\widetilde{\mathcal{L}}(t_{k+1},y,f,s,w)по вышеприведенной формуле и находим политику лимитных ордеров\theta^{mk,*}
  • Вычисляем\widetilde{\mathcal{M}}\circ\widetilde{\mathcal{L}}(t_{k+1},y,f,s,w), и находим политику маркет ордеров\theta^{tk,*}
  • Если\widetilde{\mathcal{L}}(t_{k+1},y,f,s,w)\geq\widetilde{\mathcal{M}}\circ\widetilde{\mathcal{L}}(t_{k+1},y,f,s,w), то текущей политикой на момент времени tk выбирается\theta^{mk,*}, при значениях (y,f,s), то есть в этот момент времени используюся лимитные ордера, согласно значению\theta^{mk,*}, которое, как мы помним означает выставление ордера, с количеством контрактов =1, или на лучший бид/аск, или перед/до него.
  • В обратном случае выбирается политика\theta^{tk,*}в момент времени tk при значениях (y,f,s), то есть используются маркет ордера с количеством контрактов, вычисленных в\theta^{tk,*}

Таким образом, для всех значений времени t, всех значений открытой позиции y, всех значений дисбаланса объемов f и всех значений спреда s — (t,y,f,s)- мы определяем, какие ордера нам ипользовать в каждом случае, и формируем области, подобные указанным на графике в заглавии, где изображены политики при значениях спреда, равному шагу цены, и значению времени, меньше на 3 единицы (например, секунды) времени окончания торговли, для всех значений открытой позиции и спреда. Что означают эти области, вы можете посмотреть в части 2 и части 3 данного цикла статей. В следующей статье обсудим, как находить параметры в уравнении для\widetilde{\mathcal{L}}(t_{k+1},y,f,s,w), основываясь на реальных биржевых данных, и начнем составлять код на C# для численного решения методом обратной индукции.

Продолжение смотрите на моем сайте (см. профиль) или через некоторое время на смарт-лабе. Прошлые части статьи — в моем блоге.

★27
13 комментариев
Зачем вы это здесь публично выставляете?)
avatar
Pobeditel, Какая разница, все равно 99% читателей ничего не поймут)
avatar
Press, это больше интерпретация, чем перевод. Кое-что я изменил, чтобы подходило под наш рынок. Ну и код, который будет в последней части, полностью мой
avatar
Press, будет. Он уже есть, если доберетесь до моего сайта
avatar
так вот для чего, математика, в школе, нужна была :)))
avatar
Forest (Динар), то чувство когда ты понимаешь зачем ты математикой занимался в школе да?)))))))))))))))
avatar
что это делает на главной?!
avatar
что это было?
avatar
Спасибо. Осталось только найти 12млн чтобы стать ММ ))
avatar
Макс, что вам мешает применять маркетмейкерские алгоритмы без официального статуса?
avatar
uralpro, мешает то что официальному ММ платит биржа. А я наоборот — сам плачу бирже и еще брокеру.
Хотя вы абсолютно правы, зарабатывать мм-алгоритмами можно и без денег, рибейтов, без прямого подключения. Но требуется серьезная адаптация алгоритмов. И это уже будет не маркетмейкерство в сути, а просто предоставление ликвидности.
avatar

теги блога uralpro

....все тэги



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