Real-Time Backend

Financial Trading

Каждую микросекунду на NYSE и Binance десятки алгоритмов соревнуются за один и тот же ордер. Проигравший теряет деньги.

  • **Binance** обрабатывает до 1.4 миллиона ордеров в секунду и поддерживает WebSocket streams с задержкой <10 мс для 2000+ торговых пар одновременно
  • **NYSE** передаёт через XDP (eXtreme Data Platform) до 5 млрд сообщений в день; прямой data feed стоит $50 000+/мес для институциональных клиентов
  • **Virtu Financial** - HFT-фирма, которая торговала прибыльно 1 237 из 1 238 дней подряд (2009-2014), используя co-location и FIX с латентностью 50-100 мкс
  • **Jump Trading** проложила microwave-линию Chicago-NJ в 2010 году за $14 млн, сократив задержку с 13 до 8.1 мс; отбилась за несколько месяцев

Order Book

Order book - это двусторонняя очередь заявок на покупку (bids) и продажу (asks) финансового инструмента, отсортированных по цене. Binance обрабатывает до 100 000 обновлений order book в секунду на пару BTC/USDT в периоды волатильности. Каждое обновление содержит уровень цены и новый объём на этом уровне.

Order book существует в двух режимах: full snapshot (полное состояние, 5-20 MB JSON для топ-пар) и incremental updates (дельта-изменения, 50-200 bytes). При подключении клиент получает snapshot, затем подписывается на поток дельт. Пропуск хотя бы одной дельты делает локальную копию невалидной - нужно запросить новый snapshot.

  • **Best bid** - наивысшая цена покупки; **best ask** - наименьшая цена продажи
  • **Spread** = best ask - best bid; у BTC/USDT на Binance обычно $0.01-$0.10
  • **Depth** - суммарный объём на N уровней; используется для оценки ликвидности
  • Quantity=0 в дельте означает удаление уровня (не игнорировать!)

Клиент получил snapshot order book с lastUpdateId=500, затем дельту с lastUpdateId=498. Что делать?

Market Data

Market data feed - поток данных о торговой активности: сделки, цены, объёмы, индикаторы. NYSE генерирует до 5 миллиардов сообщений в день через протокол XDP (eXtreme Data Platform). Данные распределяются по UDP multicast - один поток на тысячи подписчиков одновременно без overhead TCP на каждое соединение.

Существует два класса market data: Level 1 (только best bid/ask и last trade) и Level 2 (полный order book на N уровней). Bloomberg Terminal передаёт Level 1 для 35 млн инструментов глобально. Level 2 для одной биржи - уже гигабайты в секунду в пиковые часы, требуют co-location серверов рядом с биржей.

  • **Consolidated tape** - агрегированный поток от всех площадок (SIP в США); задержка до 500 мкс
  • **Direct feed** - прямое подключение к бирже; задержка 50-200 мкс, дороже
  • **Snapshot vs stream**: snapshot раз в N секунд проще, но пропускает внутрисекундные движения
  • Временные метки нужно хранить в наносекундах - микросекунды иногда коллидируют на NYSE

Почему биржи используют UDP multicast вместо TCP для распространения market data?

FIX Protocol

FIX (Financial Information eXchange) - стандартный протокол для электронной торговли, разработанный в 1992 году Fidelity и Salomon Brothers. Сегодня 90%+ институциональных торговых инструкций передаются через FIX. Протокол текстовый: поля разделены символом SOH (0x01), что упрощает парсинг, но увеличивает размер сообщений по сравнению с бинарными форматами.

FIX/FAST (Fast Application-layer Encoding) - бинарное расширение FIX для market data с компрессией повторяющихся полей. CME Group использует FIX/FAST для MDP 3.0 (Market Data Platform), доставляя обновления с латентностью 3-8 микросекунд на co-located серверах. Для order routing (отправка заявок) используется классический текстовый FIX или проприетарные бинарные протоколы типа OUCH (NASDAQ).

  1. **Session layer**: Logon (A), Heartbeat (0), Logout (5) - поддержание соединения
  2. **Application layer**: NewOrderSingle (D), ExecutionReport (8), OrderCancelRequest (F)
  3. **Checksum**: последнее поле (tag 10) = сумма всех байт сообщения mod 256
  4. **CompIDs**: SenderCompID (49) и TargetCompID (56) идентифицируют стороны
  5. FIX/FAST сжимает типичное сообщение с 200 байт до 20-40 байт через delta encoding

Брокер получил FIX сообщение с тегом 35=8. Что это означает?

Trading Latency

В алгоритмической торговле латентность - конкурентное преимущество. HFT-фирма Virtu Financial зарабатывает на спреде, успевая среагировать на рыночные изменения быстрее других. Co-location в датацентре биржи даёт задержку 50-200 мкс от события до ответного ордера. Через обычный интернет - 5-50 мс, что на рынках делает конкуренцию с HFT невозможной.

  • **Co-location**: сервер физически в датацентре биржи; аренда от $5 000/мес на NYSE
  • **Kernel bypass**: DPDK, io_uring - обход OS для прямого доступа к NIC
  • **FPGA**: Field-Programmable Gate Array для парсинга market data на аппаратном уровне; <1 мкс
  • **Fiber vs microwave**: Chicago-NJ через microwave 8.1 мс, через оптику 13.1 мс - HFT используют microwave
  • **Jitter** важнее среднего: P99 латентность, а не mean, определяет реальные потери

Чем выше частота тактирования CPU, тем ниже латентность в trading системах

Для latency-критичных систем важнее CPU с низким jitter, поддержкой NUMA и возможностью изоляции ядер, чем максимальная тактовая частота

Современные CPU с Turbo Boost непредсказуемо меняют частоту. HFT-фирмы часто фиксируют тактовую частоту ниже максимума ради стабильности. Intel Xeon с фиксированной частотой и поддержкой DDIO (Data Direct I/O) популярнее быстрых потребительских процессоров.

HFT-стратегия теряет прибыль из-за нестабильности латентности (jitter). Что наиболее эффективно снизит jitter?

Итоги

  • **Order book** - основной источник истины о ликвидности; клиент поддерживает локальную копию через snapshot + delta updates с sequence numbers
  • **FIX protocol** - индустриальный стандарт (1992) для обмена торговыми инструкциями; текстовый формат с SOH-разделителями; FIX/FAST - бинарное расширение для market data со сжатием до 5x
  • **Latency в trading** измеряется в микросекундах; co-location, kernel bypass (DPDK), FPGA и CPU pinning - стандартный стек для HFT; jitter опаснее средней задержки

Связанные темы

Financial trading пересекается с несколькими областями realtime-систем:

  • WebSocket Internals — Binance и Coinbase используют WebSocket для delivery market data клиентам; понимание framing и backpressure критично
  • Rate Limiting Real-Time — Биржи лимитируют API запросы (Binance: 1200 weight/min); нарушение ведёт к IP ban на 24h
  • WebSocket Security — Торговые API требуют HMAC-подписи каждого запроса; компрометация ключей ведёт к потере средств

Вопросы для размышления

  • Order book на Binance обновляется 100 раз в секунду. Клиент с медленным интернетом пропускает часть дельт. Как детектировать пропуск и восстановить консистентность?
  • FIX-протокол текстовый и занимает 200 байт на ордер. Binance использует свой бинарный WebSocket API. В каких сценариях FIX всё ещё выигрывает несмотря на неэффективность?
  • HFT-фирма тратит $14 млн на microwave-линию, экономя 5 мс. Какой должен быть дневной объём торгов и спред, чтобы это окупилось за год?

Связанные уроки

  • db-19-redis
Financial Trading

0

1

Войти