Какой 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 быстрее.