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

Алгоритмы маркетмейкера. Часть 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# для численного решения методом обратной индукции.


Продолжение смотрите на моем сайте или через некоторое время на H2T.








0 комментариев

Добавить комментарий