Блог им. 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'е
177 | ★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

Читайте на SMART-LAB:
Фото
Высокие ставки прошли пик давления, но кредитный отбор стал жестче
По оценке аналитиков Газпромбанка, 2025 год стал периодом ухудшения кредитного профиля некоторых российских корпоративных заемщиков, хотя...
Фото
Продажи коротких полисов ОСАГО показывают «иксы»
В 1 квартале 2026 года количество проданных коротких полисов ОСАГО для такси достигло 5,9 млн, превысив в 7 раз показатель предшествующего года,...
На Луну за ИИ
65 лет назад, 12 апреля, первый полет человека в космос открыл человечеству путь к звездам. Сегодня эта дата обретает новый «промышленный» смысл,...

теги блога glencore

....все тэги



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