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

Как проверять качество биржевых 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.