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

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

MM_4

   В этой части статьи мы найдем численное решение системы уравнений оптимального управления позицией маркетмейкера. Такое решение легко запрограммировать и использовать в реальной торговле для контроля за лимитными и маркет ордерами в соответствии с полученными стратегиями θmk,θtk. Для упрощения разложим функцию владения на слагаемые, чтобы получить сокращенную функцию владения v(t,y,f,s), которая представляет собой только динамическую составляющую основной функции:

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

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

max[vt+yEtdPtdt+LFvγy2Etd[P,P]tdt+supθmk{ga(f,s,θmk,bt)(v(t,y+1,f,s)v(t,y,f,s)+s/2δθmk,bt)+gb(f,s,θmk,at)(v(t,y1,f,s)v(t,y,f,s)+s/2δθmk,at)},sup{v(t,y+ζ,f,s)|ζ|(s/2+ϵ)}v]=0

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

v(T,y,f,s)=|y|(s/2+ϵ).

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

TNT={tk=kΔT,k=0,...,NT}

Также дискретизируем открытую позицию Y и дисбаланс объема F, с максимальными значениями MY,MF и шагами дискретизации ΔY=MY/NY,ΔF=MF/NF, где

YNY={yi=iΔY,i=NY,...,NY},FNF={fj=jΔF,j=NF,...,NF}.

Далее, для вычисления численных производных по дисбалансу объема F, определим две дифференциальные матрицы - D1 для вычисления производной первого порядка и D2 - для вычисления производной второго порядка, на сетке FNF:

D2v(t,y,fj,s)=(v(t,y,fj+1,s)2v(t,y,fj,s)+v(t,y,fj1,s)(ΔF)2)

D1v(t,y,fj,s)={v(t,y,fj+1,s)v(t,y,fj,s)ΔFif fj<0v(t,y,fj,s)v(t,y,fj1,s)ΔFif fj0

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

A(t,y,f,s,ϕ)=max{˜L(t,y,f,s,ϕ),˜M˜L(t,y,f,s,ϕ)}

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

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

˜L(t,y,:,s,ϕ)=(INF×NFΔTσ2FD2ΔTαF(FNF1NF)..D1)1×(ϕ(t,y,:,s)+ΔTyEtdPtdt+ΔTLS(ϕ(t,y,:,s))ΔTγy2Etd[P,P]tdt+ΔTsupθmk{ga(:,s,θmk,bt)..(ϕ(t,y+1,:,s)ϕ(t,y,:,s)+s/2δθmk,bt)+gb(:,s,θmk,at)..(ϕ(t,y1,:,s)ϕ(t,y,:,s)+s/2δθmk,at)})

˜M˜L(t,y,f,s,ϕ)=sup|ζ|ζmax{˜L(t,y+ζ,f,s,ϕ)|ζ|(s/2+ϵ)}

здесь INF×NF - матрица идентичности размерностью NF×NF (матрица,где по главной диагонали расположены единицы, остальные элементы 0), FNF - столбец значений дисбаланса, 1NF - единичный вектор размерностью NF×1, .. означает поэлементное произведение векторов и матриц. Таким образом, ˜L представляет собой вектор размерностью NF на сетке FNF.

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

w(T,y,f,s)=|y|(s/2+ϵ)

w(tk,y,f,s)=A(tk+1,y,f,s,w),k=NT1,NT2,..,0

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

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

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

  • Вычисляем ˜L(tk+1,y,f,s,w) по вышеприведенной формуле и находим политику лимитных ордеров θmk,
  • Вычисляем ˜M˜L(tk+1,y,f,s,w), и находим политику маркет ордеров θtk,
  • Если ˜L(tk+1,y,f,s,w)˜M˜L(tk+1,y,f,s,w), то текущей политикой на момент времени tk выбирается θmk,, при значениях (y,f,s), то есть в этот момент времени используюся лимитные ордера, согласно значению θmk, , которое, как мы помним означает выставление ордера, с количеством контрактов =1, или на лучший бид/аск, или перед/до него.
  • В обратном случае выбирается политика θtk, в момент времени tk при значениях (y,f,s), то есть используются маркет ордера с количеством контрактов, вычисленных в θtk,

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

Сообщение

Rich Text Editor, comment

Обратите внимание: вы можете использовать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>