В этой части статьи мы найдем численное решение системы уравнений оптимального управления позицией маркетмейкера. Такое решение легко запрограммировать и использовать в реальной торговле для контроля за лимитными и маркет ордерами в соответствии с полученными стратегиями θmk,θtk. Для упрощения разложим функцию владения на слагаемые, чтобы получить сокращенную функцию владения v(t,y,f,s), которая представляет собой только динамическую составляющую основной функции:
V(t,x,y,p,f,s)=x+py+v(t,y,f,s)
Для v система уравнений выглядит следующим образом:
max[∂v∂t+yEtdPtdt+LF∘v−γ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,y−1,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,fj−1,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,fj−1,s)ΔFif fj≥0
Обозначим оператор выбора для любой действительной функции ϕ↦:ϕ(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,y−1,:,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=NT−1,NT−2,..,0
Полное решение для функции владения можно получить методом обратной индукции, который состоит из следующих последовательных шагов:
1. На конечный момент времени tNT=T: для каждой комбинации значений (y,f,s) вычисляем w(T,y,f,s)=−|y|(s/2+ϵ).
2. Начиная с момента времени tk+1 до момента tk, где k пробегает значения от NT−1 до 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# для численного решения методом обратной индукции.
Сообщение