uralpro
uralpro личный блог
07 апреля 2015, 11:25

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

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

13 Комментариев
  • Pobeditel
    07 апреля 2015, 11:51
    Зачем вы это здесь публично выставляете?)
    • Traderok_blatnoy_777
      07 апреля 2015, 12:41
      Pobeditel, Какая разница, все равно 99% читателей ничего не поймут)
  • Динар
    07 апреля 2015, 12:50
    так вот для чего, математика, в школе, нужна была :)))
    • Pobeditel
      07 апреля 2015, 13:27
      Forest (Динар), то чувство когда ты понимаешь зачем ты математикой занимался в школе да?)))))))))))))))
  • Жадный Яша
    07 апреля 2015, 16:24
    что это делает на главной?!
  • vito2000
    07 апреля 2015, 21:58
    что это было?
  • Макс
    08 апреля 2015, 07:16
    Спасибо. Осталось только найти 12млн чтобы стать ММ ))
      • Макс
        08 апреля 2015, 16:30
        uralpro, мешает то что официальному ММ платит биржа. А я наоборот — сам плачу бирже и еще брокеру.
        Хотя вы абсолютно правы, зарабатывать мм-алгоритмами можно и без денег, рибейтов, без прямого подключения. Но требуется серьезная адаптация алгоритмов. И это уже будет не маркетмейкерство в сути, а просто предоставление ликвидности.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн