Яндекс.Метрика
ГлавнаяHigh Frequency › Алгоритмы маркетмейкера. Часть 4

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

MM_4

   В этой части статьи мы найдем численное решение системы уравнений оптимального управления позицией маркетмейкера. Такое решение легко запрограммировать и использовать в реальной торговле для контроля за лимитными и маркет ордерами в соответствии с полученными стратегиями \theta^{mk},\theta^{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)\right\}, \sup\{v(t,y+\zeta,f,s)-|\zeta|(s/2+\epsilon)\}-v\right]=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, определим две дифференциальные матрицы - D_1 для вычисления производной первого порядка и D_2 - для вычисления производной второго порядка, на сетке \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)\}

Оператор выбора имеет простой смысл: если некая функция \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. Начиная с момента времени t_{k+1} до момента t_k, где 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), то текущей политикой на момент времени t_k выбирается \theta^{mk,*}, при значениях (y,f,s), то есть в этот момент времени используюся лимитные ордера, согласно значению \theta^{mk,*} , которое, как мы помним означает выставление ордера, с количеством контрактов =1, или на лучший бид/аск, или перед/до него.
  • В обратном случае выбирается политика \theta^{tk,*} в момент времени t_k при значениях (y,f,s), то есть используются маркет ордера с количеством контрактов, вычисленных в \theta^{tk,*}

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

Сообщение

Обратите внимание: вы можете использоватьHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>