Блог им. glencore

Алготрейдерские размышления о market impact

Всем привет!

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

Предлагаемая к обсуждению статья расчитана, как минимум, на опытных трейдеров с хорошим знанием математики: https://dl.dropboxusercontent.com/u/79808150/impact-limits.pdf

upd: Пример кода, осуществляющего оптимальную расстановку ордеров в стакане: dl.dropboxusercontent.com/u/79808150/proto-opt-place.cpp

p.s. Это мой первый пост на Smart-Lab'е
★5
9 комментариев
перевод, похоже?
avatar
karapuz, не перевод. писатель из меня не очень
avatar
Круто, только почти ничего не понятно. А на языке программирования никак не описать модель? Профиль стакана как задается? Что если убрать все биди или аски, как модель отреагирует?
avatar
Bocman, код рабочих роботов я по понятным причинам выкладывать не буду. Вот простенький пример оптимальной расстановки ордеров в стакане, вместе со статьёй этого достаточно, чтобы понять идею: dl.dropboxusercontent.com/u/79808150/proto-opt-place.cpp

В статье профиль стакана задается функциями {q+(t;p);q-(t;p)}, см. часть 1.1. В коде используется лишь одна сторона стакана, которая инициализируется в начале функции main() и хранится в структуре типа t_ob.

Если убрать все биды и аски — в некоторых случаях будет проблематично использовать модель. Тем не менее, даже в случае пустого стакана или отсутствия одной из его сторон можно что-нибудь придумать.
avatar
glencore, запустил пример — почему-то ордера добавляются всегда в самый конец стакана (максимальная цена из px). В чем причина такого поведения?

До конца не разобрался еще с ->score и ->ord_sim, возможно в них ответ.

Переписал пример на перле, мне так проще разбираться, чем c++, хоть ваш код и очень хорошо написан: gist.github.com/anonymous/6790771
avatar
Bocman, нужно задать более реалистичное начальное состояние стакана и выборку из потока ордеров (нужные характеристики можно посчитать из full order log).
avatar
glencore, подключил full orders log, попытаюсь применить модель, никогда до этого hft не занимался. Правильно я понимаю, что позиция как таковая не направленная получается (вернее нет такой цели получить направленную позу)? В теории мы же можем наоткрывать с одной стороны стакана кучу сделать и рынок протащит в противоположную сторону? Как такие риски перекрываются в общем случае? Стопы предусмотрены? Заранее спасибо за ответ!
avatar
Bocman, цели получить направленную позицию нет, но она может получаться направленной. Идея в том, что хозяева остальных лимитных ордеров в случае их исполнения вместе с вашим потеряют не меньше или заработают не больше, чем вы. И вы раньше окажетесь в безубытке, чем остальные.

Если роботов с подобным алгоритмом в стакане больше одного — скорее всего оба будут работать в ноль.

Управление позицией — это отдельный элемент стратегии. Тестируйте разные варианты и выбирайте лучший.

Стопы в этом алгоритме не предусмотрены, опять же — это отдельный элемент стратегии, который нужно тестировать.
avatar
Продолжения наверное уже не будет в виде новых постов.
avatar

теги блога glencore

....все тэги



UPDONW
Новый дизайн