Результаты исследований алгоритма маркет-мейкинга » Элитный трейдер
Элитный трейдер


Результаты исследований алгоритма маркет-мейкинга

10 июля 2015 QuantAlgos

Пролог

В результате долгих поисков и исследований алгоритмов, мне не удалось найти что-либо стоящее в торговле интрадей из простых систем. Импульсные стратегии работали короткое время, MeanReversion практически не работали никогда. Исследования с использованием однородных фильтров (скользящих средних), коэффициентами бета, средними регрессий, были очень продолжительными. Они также затронули область многоуровневого маркет-мейкинга, в котором основной вопрос сводился к правильному определению нулевого уровня. До этого применялись достаточно успешно трендовые торговые системы (на длительных интервалах), и парный трейдинг. Основная черта всех торговых стратегий, жёстко алгоритмизированных, состоит в том что рано или поздно они перестают работать. Надо этот факт учитывать в применении торговых систем. С этой точки зрения считаю очень полезной статью которая даёт обоснованный алгоритм оценки работоспособности системы (ссылка на статью http://www.quantalgos.ru/?p=567). Кроме этого, необходимо обязательно диверсифицировать системы по параметрам, и по "движку". Преимущественно методы диверсификации необходимо применять в парном и баскет трейдинге. Часто бытует мнение, что парная торговля это граальные системы. Но разочаровывающий опыт показывает, что только широкая диверсификация и большой капитал способны парную торговлю сделать прибыльной в долговременной перспективе. Тем не менее поиски более эффективной торговли продолжаются. Ниже я приведу результаты исследований стратегии маркет-мейкинга, благожелательно опубликованной автором сайта http://www.quantalgos.ru/, (начало http://www.quantalgos.ru/?p=51, http://smart-lab.ru/blog/244854.php).

Разобраться в этой статье лично для меня было сложно. Я всё время сталкивался с ошибками и недочётами как в статье (в оригинале), так и с собственными ошибками, допущенными в программе, либо в алгоритме. Пожалуй наибольшее затруднение вызвали некоторые нераскрытые подробности вычисления функции владения. Конечно же незнание ТЭУ добавляли неопределённости в поисках. Кроме того непростой (для меня) математический аппарат также вызывал определённые затруднения.

Дисбаланс объемов.

"Если ты неуч и молчишь, то ведешь себя умно, если же умен и молчишь, то глупо." Теофраст

В статье рассматривается алгоритма маркет-мейкинга основанный на сигнале дисбаланс объемов. Есть ряд исследований, в которых утверждается что основой движения цен на товарных биржевых рынках является дисбаланс объемов в Limit Order Book, причем дисбаланс Best Bid и Best Ask. На основании этого сигнала и ряда собираемых данных определяется оптимальная функция управления портфелем, которая призвана максимизировать прибыль участника торгов. Почему дисбаланс объемов? В принципе-это логично. При росте цены, постоянно поступающие биды поглощают аски формируя дисбаланс. Невыполненные агрессивные биды добавляют своё значение к балансу статических бидов. Кроме того очевидный дисбаланс подключает к работе скальперов и фронтраннеров и т.п. Все это очевидно работает на наиболее ликвидных рынках, где по обе стороны от средней цены стоят большие капиталы, которые хотят подешевле купить или продать. На мой взгляд на ФОРТСе этот сигнал слабо эффективен, именно поэтому все исследования и вычисления политик проводились для фьючерса Si, как самого ликвидного фьючерса.

Для расчётов использовались следующие переменные:

Максимальное количество фьючерсов в портфеле 10.

Количества значений спреда 10.

gamma = 1.

Шаг дискретизации дисбаланса объемов 50.

Максимальное значение дисбаланса объемов 5.

Все расчёты приведены для t=0. Расчёт политик ведётся всего-лишь на несколько секунд, так как в торговле политики приближающиеся к T (время окончания торгов) используются только при закрытии в данной статье они не рассматриваются.

Смотрим на полученные политики для t=0 (нажмите для увеличения):

Результаты исследований алгоритма маркет-мейкинга


Видно, что при нулевом спреде, основная политика это маркет-мейкинг, -в случае отклонения дисбаланса при попадании в синюю зону портфель просто закрывается рыночным ордером. ТЭУ считает, что это оптимально при текущем сигнале и спреде.

Результаты исследований алгоритма маркет-мейкинга


При спреде =1 появляются пингинг зоны. Зоны, в которых вместо рыночного ордера используется лимитный ордер расположенный на best ask-minstep и bestbid+minstep. Что дешевле, чем использование рыночного ордера. Смотрим как меняются политики при увеличении спреда:

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга


Видно, что при увеличении спреда, политики качественно не меняются, лишь увеличивается объем инвентори. Т.е. стратегия при увеличении спреда пытается встать лимитником внутрь спреда по лучшим ценам, а потом при его всхлапывании совершить обратную операцию на противоположной стороне.

Посмотрим на резултаты бектеста:

Результаты исследований алгоритма маркет-мейкинга


Количество сделок 7563, профит=2110. В таком виде торговать нельзя. Вводим фильтр - используем Make Strategy только при S>4

Результаты исследований алгоритма маркет-мейкинга


Вот это уже результат, количество сделок = 2531, профит = 1886. С учетом комиссии биржи -632 рубля и брокеру, получается доходность в размере 500 - 600 рублей. Теперь посмотрим какое количество контрактов использовалось в торговле:

Результаты исследований алгоритма маркет-мейкинга


Видно что в торговле принимало участие не больше 3-х контрактов фьючерса. На мой взгляд, при таком странном сигнале, как дисбаланс объемов получить такую доходность испльзую функцию оптимального управления - это очень хорошо.

Увеличение количества торгуемых контрактов к сожалению вывело доходность в отрицательную зону. Правда увеличение было осуществленно просто уменьшением коэффициента gamma = 0.1. Этот коэффициент отвечает за риск отводящийся алгоритму. Почему произошло смещение в отрицательную сторону - этот вопрос требует дополнительного исследования. Вероятно предиктивная способность сигнала слаба, в связи с чем взятие высокого риска нецелесообразно.

Ниже функция управления при спреде=1, Max Inventory = 20, gamma=1;

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга

Результаты исследований алгоритма маркет-мейкинга


Объем учавствующих контрактов увеличился до 11, но к сожалению стратегия оказалась убыточной при такой gamma. Слишком высокий риск. Очевидно, для увеличения доходности необходимо увеличивать минимальное количество лотов в сделке. Этот факт, требует некоторой доработки алгоритма и программы и в данной статье исследоваться не будет.

Также исследовалось применение усреднения дисбаланса объемов, - к сожалению результаты не оправдали ожиданий, и также не рассматриваются в статье.

Выводы

Как показали исследования, у алгоритма есть потенциал для исследования и использования. Он не прост, как в понимании, так и в реализации. Но возможно простые идеи в интрадей торговле уже не работают. Мною не проводились исследования в области PIN, машинного обучения, нейронных сетей - возможно там потенциал значительно больше. Может быть там скрываются немыслимые торговые секреты, которые могут помочь заработать в процессе интернет трейдинга.

Заключение.

Для страждущих сразу хочу подчеркнуть, что реализовать данную стратегию с прибылью не удалось. В первую очередь по причине уникальности бектеста. В процессе бектеста есть сигналы которые в реальности не появляются. Вероятно по причине того что данные приходят пакетами. Кроме того, в реальных торгах часто появляются сделки которых нет в бектесте, - по причине того, что заявки не успевают сниматься когда условия их размещения исчезают. Честно говоря расхождения реальных торгов с бектестом несущественные. На медленных стратегиях (около 200-800 сделок в день) совпадение реального тестирования и бектестирования составляет около 90%. Ниже представлены два скрина показывающие насколько реальные трейды (зелёная линия профита) отличаются от бектеста (красная линия профита).

Результаты исследований алгоритма маркет-мейкинга


ниже (другой инструмент) расхождения очевидны , в сторону ухудшения реальных результатов торгов.

Результаты исследований алгоритма маркет-мейкинга


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

В завершении отмечу, что получаемая в результате моделирования функция управления, есть ни что иное, как пулемёт, который говорит когда стрелять, куда стрелять и сколько стрелять. Осталось лишь правильно настроить...

Результаты исследований алгоритма маркет-мейкинга


Продолжая тему тестирования алгоритма Маркет Мэйкера, поделюсь своими результатами и мыслями по его работе:
1. Основной режим работы алгоритма - это маркетмэйкинг (он же арбитраж ликвидности, он же торговля спредом). И конечно же, прибыльность этой стратегии сильно зависит от рыночных условий, скорости получения данных и работы системы исполнения. Средняя прибыль на сделку даже и при идеальном исполнении не будет превышать значение спреда (2-5пунктов по Si в среднем). А в период сильной волатильности, когда стакан бросает из стороны в сторону на 10-30 пунктов, несмотря на большое количество положительных сделок ( около 70%), алгоритм становится убыточным. В основном из-за комиссий, конечно.

2. Да, математические формулы сильно ограничили многих желание понять, как устроен алгоритм. Но на самом деле, если вдумчиво посмотреть картинки (карты политик), получается все ясно и просто. А будет еще проще, если посмотреть картинки графиков из других статей, лежащих в основе алгоритма (например Guilbaud, Fabien, and Huyen Pham, 2013, Optimal high-frequency trading with limit and market orders). Забудем на минутку про дисбаланс бид/акс объемов и построим карту политик для открытой позиции при разных значениях спреда:

Результаты исследований алгоритма маркет-мейкинга


Требуется пояснение по зонам (в скобках указано название политики для тестируемого алогритма с дисбалансом):
Зона Ba, Bb (MarketMaking) - одновременное выставление лимитных заявок по цене лучшего бида и цене лучшего аска;
Зона Ba, Bb+ (Pinging Bid Side) - одновременное выставление лимитных заявок по цене лучшего бида - тик и цене лучшего аска;
Зона Ba-, Bb (Pinging Ask Side) - одновременное выставление лимитных заявок по цене лучшего бида и лучшего аска - тик ;
Зона Ba-, Bb (Pinging Bid & Ask Sides) - одновременное выставление лимитных заявок по цене лучшего бида - тик и цене лучшего аска - тик ;
Зона BUY AT MARKET (Inventory Control) - закрытие короткой позиции по рыночной цене;
Зона SELL AT MARKET (Inventory Control) - закрытие длинной позиции по рыночной цене.

Теперь, надеюсь, всё стало понятно. Внесение дисбаланса объемов немного модифицирует зоны и оптимизирует контроль и закрытие позиций.
Хотя предсказательная способность дисбаланска не велика, практическая польза от него все же есть. Большой объем по лучшему биду или аску снижает верятность исполнения заявки, выставленной на этот же уровень, поэтому алгоритм выдаст сигнал выставляться на тик меньше.

3. Перейдем к реализции и тестированию алгоритма. Система устроена следующим образом:
Расчетная часть:
- За предудущий день собирается история тиков и лучших бидов/асков;
- Далее считаем рыночные параметры, необходиммые для расчета политик;
- Затем считаем политики и сохранем их в виде массивов. То есть для каждого значения времени (t), открытой позиции (y), дисбаланса (f), спреда (s) массив выдаст сигнал, в какой зоне нужно работать.
Часть исполнения:
- Загружаем расчитанные массивы;
- По обновления лучшего бида/аска считаем t, y, f, s и получаем соответствующую политику из массивов;
- Формируем сигналы в соответствии с политикой и выставляем заявки;
- Неисполненные заявки, если они не соответствуют текущей политике, снимаем.

Политики MarketMaking и Pinging не предусматривают какой объем выставлять, чтобы "поймать" спред. Объем определяется исполнителем при выставлении заявки. Для тестов - это всего 1 контракт. Но если какая-то из лимитных заявок не исполняется, а политика при следующем сигнале будет опять маркетмейкерская, то позиция может увеличиваться до тех пор, пока не сработает сигнал по Inventory Control. По сути, тут работает усреднение, но его можно регулировать или совсем исключить, изменив уровень риска (gamma) и допустимое количество заявок по рыночной цене (dzettaMax).

4. По бэктестам получились результаты приблизительно такие же как у Eskalibur. Правда мой бэктест, пока еще не доведен до ума полностью. Протестировать более менее полную торговую сессию на реальном счете удалось лишь в пятницу из-за постоянных доработок системы.
Вот статистика за 03/07/2015 (с учетом комиссий: биржевая = 0.25, брокерская = половине биржевой (брокер Ай Ти Инвест, тариф Форсаж)):

Результаты исследований алгоритма маркет-мейкинга


Эквити

МАE

Результаты исследований алгоритма маркет-мейкинга


МFE

Результаты исследований алгоритма маркет-мейкинга


По тестам система выглядит вполне замечательно, но и рынок прошлую неделю был не такой волатильный. Текущая неделя (06/07/2015-10/07/2015) показала, что алгоритм требует серьезной доработки для учета волатильности. Но это уже предмет следующей статьи. Работа над алгоритмом и приведение его к стабильным результатам продолжается.

http://www.quantalgos.ru/ (C)
Не является индивидуальной инвестиционной рекомендацией
При копировании ссылка обязательна Нашли ошибку: выделить и нажать Ctrl+Enter