К тренажеру
ВопросMediumhft-data-engineeringМой собес

Какой market-data feed приходит раньше

По данным с primary и secondary feed нужно понять, через какой канал события приходят на сервер раньше. Как это посчитать корректно?

Короткий ответ

Нужно сопоставить одно и то же биржевое событие между feeds и сравнить local timestamps. Просто сравнивать среднюю latency по всем строкам можно, но лучше делать paired comparison.

Полный разбор

Правильнее всего матчить одинаковые события: например по exchange timestamp, price и другим идентификаторам события, если они есть. Для каждой пары primary/secondary считаем разницу arrival_delta = local_secondary - local_primary. Если delta > 0, primary пришел раньше; если delta < 0, secondary раньше.

После этого смотрим распределение delta: median, p95/p99, долю случаев, где secondary быстрее, и зависимость от времени. Отдельно проверяем, что пары действительно соответствуют одному событию, иначе сравнение latency будет шумным.

Если полных пар нет, можно сравнить распределения latency по feed, но это менее надежно: разные feeds могли доставить разный набор событий.

Теория

Latency analysis в market data почти всегда требует paired comparison. Иначе можно перепутать задержку канала с различиями в составе событий.

Типичные ошибки

  • Сравнить средние timestamps без матчинга событий.
  • Не проверить случаи, где один из feeds не прислал событие.
  • Спрятать хвосты распределения за одним средним значением.

Как отвечать на собеседовании

  • Скажи "paired events" и "distribution, not only mean".
  • Назови p50/p95/p99 и долю случаев, где secondary быстрее.