Как проверять качество биржевых market data
Есть поток биржевых событий: price, exchange timestamp, local timestamp и два канала доставки primary/secondary. Как понять, все ли в порядке с данными?
Короткий ответ
Нужно проверить временной интервал, задержку local - exchange, дубли primary/secondary, пропуски, нулевые/невозможные цены, out-of-order события и периоды, где один feed деградирует.
Полный разбор
Сначала фиксируем схему: exchange timestamp - время события на бирже, local timestamp - время получения на нашей стороне, feed - primary или secondary. Основная derived-фича - latency = local - exchange. Она не должна быть отрицательной и должна иметь ожидаемое распределение по каждому feed.
Дальше идут проверки полноты: за какой период данные, нет ли дыр во времени, сколько событий в минуту, есть ли дубликаты одного биржевого события в primary и secondary, совпадают ли price и exchange timestamp у парных событий. Для HFT важно не просто "есть строки", а корректный порядок и задержки.
Отдельно проверяются значения: price не должен быть нулевым или отрицательным, не должно быть резких невозможных скачков без рыночной причины, не должно быть систематических пропусков в конкретные минуты. Хороший ответ заканчивается диагностикой: какие графики/агрегаты построить и какие алерты завести в production.
Теория
В trading data качество данных напрямую влияет на research и торговлю. Поэтому проверяют не только schema validity, но и временную структуру, latency, missingness и consistency между источниками.
Типичные ошибки
- Смотреть только describe() по price и не анализировать timestamps.
- Не разделить primary и secondary feed.
- Не проверить дыры во времени и out-of-order события.
Как отвечать на собеседовании
- Начни с latency = local_timestamp - exchange_timestamp.
- Разделяй проверки schema, time coverage, feed consistency и market sanity.