В этой части статьи мы найдем численное решение системы уравнений оптимального управления позицией маркетмейкера. Такое решение легко запрограммировать и использовать в реальной торговле для контроля за лимитными и маркет ордерами в соответствии с полученными стратегиями . Для упрощения разложим функцию владения на слагаемые, чтобы получить сокращенную функцию владения , которая представляет собой только динамическую составляющую основной функции:
Для система уравнений выглядит следующим образом:
с терминальным условием:
Переходим к численному решению. Зададим на интервале дискретную сетку времени с равными интервалами :
Также дискретизируем открытую позицию и дисбаланс объема , с максимальными значениями и шагами дискретизации , где
Далее, для вычисления численных производных по дисбалансу объема F, определим две дифференциальные матрицы - для вычисления производной первого порядка и - для вычисления производной второго порядка, на сетке :
Обозначим оператор выбора для любой действительной функции :
Оператор выбора имеет простой смысл: если некая функция максимальна при воздействии оператора (что для функции владения соответствует использованию лимитных ордеров) или оператора (использование маркет ордеров), то при текущих параметрах t,y,f,s выбирается именно эта политика (то есть лимитные или маркет-ордера).
Выражения для операторов в фигурных скобках:
здесь - матрица идентичности размерностью (матрица,где по главной диагонали расположены единицы, остальные элементы 0), - столбец значений дисбаланса, - единичный вектор размерностью , .. означает поэлементное произведение векторов и матриц. Таким образом, представляет собой вектор размерностью на сетке .
Аппроксимируем решение сокращенной функции владения численным решением :
Полное решение для функции владения можно получить методом обратной индукции, который состоит из следующих последовательных шагов:
1. На конечный момент времени : для каждой комбинации значений (y,f,s) вычисляем .
2. Начиная с момента времени до момента , где k пробегает значения от до 0 для каждой комбинации (y,f,s) делаем следующее:
- Вычисляем по вышеприведенной формуле и находим политику лимитных ордеров
- Вычисляем , и находим политику маркет ордеров
- Если , то текущей политикой на момент времени выбирается , при значениях (y,f,s), то есть в этот момент времени используюся лимитные ордера, согласно значению , которое, как мы помним означает выставление ордера, с количеством контрактов =1, или на лучший бид/аск, или перед/до него.
- В обратном случае выбирается политика в момент времени при значениях (y,f,s), то есть используются маркет ордера с количеством контрактов, вычисленных в
Таким образом, для всех значений времени t, всех значений открытой позиции y, всех значений дисбаланса объемов f и всех значений спреда s - (t,y,f,s)- мы определяем, какие ордера нам ипользовать в каждом случае, и формируем области, подобные указанным на графике в заглавии, где изображены политики при значениях спреда, равному шагу цены, и значению времени, меньше на 3 единицы (например, секунды) времени окончания торговли, для всех значений открытой позиции и спреда. Что означают эти области, вы можете посмотреть в части 2 и части 3 данного цикла статей. В следующей статье обсудим, как находить параметры в уравнении для , основываясь на реальных биржевых данных, и начнем составлять код на C# для численного решения методом обратной индукции.
Сообщение