Блог им. yurikon

Как вы оцениваете задержки и проскальзывания ордеров?

    • 08 октября 2024, 07:52
    • |
    • yurikon
  • Еще
Всем привет!

Есть задача оптимизировать исполнение ордеров. Для этого надо собрать аналитику по ордерам. Главный критерий — это, конечно, проскальзывание. Насколько хуже исполнили ордер по сравнению с тем, если бы сразу просто кинули в рынок по маркету. Также нужна вспомогательная инфа по задержкам доставки ордеров на биржу, латенси. С помощью этой аналитики можно определить какие квики (коннекторы) более медленные и сделать соответствующие выводы.

Для оценки проскальзывания можно сравнивать лучшую встречную котировку в момент создания ордера и итоговое исполнение.
Задержки (латенси) можно померить через разницу локального времени отправки на биржу и ответом (round trip).

Какие метрики еще посоветуете ?

Всех благ.
#21 по плюсам, #13 по комментариям
17 комментариев
Когда я кидал заявки в рынок, я в комменте заявки указывал цену, по которой робот принял решение на вход, например S90000. Потом вечером из квика выгружал сделки и считал разницу факта и цены в комментарии. Тогда меня расхождения устраивали.

Теперь, когда торгую лимитками, у меня прога исполнитель заявок получает заявку из бота, и исполнитель ведет учет разницы цены бота и цены по которой заявка исполнилась после перестановок. И накапливает статистику по этой величине. Ранее я приводил цифры из этой статистике для каждого тикера, тут в моем блоге должно быть. Кстати давно не заглядывал в эту цифру, надо будет обновить информацию.
avatar
T-800, с ценой в коммент заявки — дешево и сердито ;-). Можно просто в ОДБЦ таблицу выгружать и потом запрос легко посчитать.
avatar
yurikon, ну это когда по рынку кидал. А как потом совместить таблицу из ОДБС с логом робота? Понятно, что они должны быть один в один, но время может точно не совпасть для join. А если какие-нибудь обрывы связи, или что еще.
А так, к вечеру уже готовая таблицы в квике, ничего джойнить не нужно.
avatar
T-800, когда и если обновите, пожалуйста, опубликуйте здесь снова.
avatar
SergeyJu, хорошо
avatar
а просто посчитать потери относительно теоретического результата недостаточно? 
avatar
SergeyJu, при условии, что теоретический результат вы можете воспроизвести весь в точности и за любой период в прошлом. Когда коды систем модифицируются, это не всегда становится возможным.
avatar
Ну а как вам надо??
Микросекунды выигрывать??
Попробуйте обойти задержки на пром серверах брокеров (ну где проверяется ваша платежеспособность)
Они самое из Кремля горлышко системы.
Но у ключевых блокеров они на «МТ -Финанс» Провайдере, если у вас сервер выставляющий заявку выше уровня (например бункер ГПКС в Лосином острове) то вы в разы быстрее всех остальных будете выставляться…
Но вопрос зачем это всё?
Лимитка с моб у Алор+ ставится прекрасно для си — норм…
avatar
Sergio Fedosoni, ответ — хочу войти в сделку с лимитника и не заплатить комиссию и чтобы цена убежала не больше, чем комиссия + проскольз в момент сигнала. Это если вкратце :-)
avatar
Хотите быстро и дешего Алор фаст или АПИ + мт-финанс rdp
avatar
Давно не считал проскальзывание. У меня в теории оно 0,2% на операцию для отбора системы, а сейчас, когда в одной стоп-лимит заявке не больше 20 млн. руб. по номиналу, ставлю для лимита покупки стоп+0.1% (для продажи -0.1%) для Сбербанка, Газпрома и Лукойла, плюс-минус 0.01 руб. для цены юаня и плюс-минус 50 пунктов для фьючерса на индекс РТС. Несрабатываний не было уже год с лишним точно.
avatar
А. Г., боюсь, что кидать в рынок ордер на 20 млн руб не самая оптимальная стратегия 
avatar
yurikon, я не один ордер в сумме на эту сумму кидаю, а 5-6. Ну а про проскальзывание в конкретных инструментах при кидании этих ордеров от стопов я и написал.
avatar
А. Г., Вы ордера по рынку кидаете?
avatar
Негативно.
avatar
Задержки (латенси) можно померить через разницу локального времени отправки на биржу и ответом (round trip).

Здесь могут быть неточности, нужно чтобы не было переключения потока(даже если у Вас программа работает в одном потоке) можно поспамить и смотреть время не локальное а то которое ставит биржа, ну или надо быть точно увереным что не перекидывалось с ядра на ядро(можно закрепить или в коде или в системе).

хочу войти в сделку с лимитника и не заплатить комиссию

Используйте тип заявки — BoC(на стр. 177 у неё тип 4 здесь --> «ftp.moex.com/pub/ClientsAPI/Spectra/Docs/p2gate_ru.pdf»).

П.С. Поправочку внесу про задержки конечно зависит от реализации, то что я написал выше верно если объект ордер внутри себя содержит время отправки и при приходе ответа его вычисляет(у меня так сделано). А если время просто в какой-то глобальной переменной(volatile или атомарные) записывается и потом с ней же работаете то тогда не актуально то что я писал выше.(тонкости знаете ли))). Но всё равно должны меряться десятки миллисекунд чтобы было правильно, если меньше то сложней.
avatar
__rtx, да, у объекта ордер есть несколько временных меток — создан, отправлен, зареган, зафилен  и тд. По ним потом можно будет задержки мерить мин, макс, среднюю.
avatar

теги блога yurikon

....все тэги



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