Розробка AI-моделі аналізу Order Book DOM для торгівлі
Order Book (Depth of Market, DOM) — снимок поточного стану ринку: всі ліміт-ордери на покупку (bid) та продаж (ask) з цінами та обсягами. Аналіз книги ордерів дозволяє оцінити короткострокове тиск попиту та пропозиції за мілісекунди до виконання торгівельного сигналу.
Структура даних Order Book
L2 Order Book снимок:
Ціна | Bid обсяг | Ask обсяг
---------|-----------|----------
100.05 | 0 | 5000
100.04 | 0 | 3000
100.03 | 0 | 1500 ← Найкращий Ask
100.02 | 2000 | 0 ← Найкращий Bid
100.01 | 3500 | 0
100.00 | 8000 | 0
99.99 | 2500 | 0
L3 Order Book: індивідуальні ордери з ID — потрібні для аналізу мікроструктури, доступні на деяких біржах (Binance для крипто, CME для фьючерсів через API).
Feature Engineering з Order Book
Базові метрики:
-
bid_ask_spread: Найкращий Ask - Найкращий Bid (абсолютний та відносний) -
mid_price: (Найкращий Bid + Найкращий Ask) / 2 -
imbalance: (ТотальнийBidОбсяг - ТотальнийAskОбсяг) / (ТотальнийBidОбсяг + ТотальнийAskОбсяг) -
weighted_mid_price: mid price, зважена по обсягу
Order Book Imbalance (OBI):
def order_book_imbalance(book, levels=5):
bids = [vol for price, vol in book['bids'][:levels]]
asks = [vol for price, vol in book['asks'][:levels]]
return (sum(bids) - sum(asks)) / (sum(bids) + sum(asks))
OBI > 0 → тиск покупців → очікуваний рух вгору. Це один з найсильніших короткострокових предикторів (горизонт 1-10 секунд).
Виявлення айсберга: Приховані ордери розміщуються як серія маленьких ордерів при одній ціні. Признаки: швидке поповнення рівня після виконання, постійний обсяг на рівні незважаючи на угоди.
Криві глибини ринку:
def depth_imbalance_at_level(book, price_distance):
bid_vol = sum([vol for p, vol in book['bids'] if (mid - p) <= price_distance])
ask_vol = sum([vol for p, vol in book['asks'] if (p - mid) <= price_distance])
return (bid_vol - ask_vol) / (bid_vol + ask_vol)
# Ознаки: дисбаланс при 0.1%, 0.3%, 0.5%, 1.0% від mid
Послідовні моделі для Order Book
Order Book снимок у кожен момент часу = матриця. Часова послідовність снимків = 3D тензор.
CNN для просторових паттернів:
# Book снимок: [levels × 2 (bid/ask)]
# Часовий: [T × levels × 2]
model = nn.Sequential(
nn.Conv2d(T, 32, kernel_size=(3, 2)), # просторовий
nn.ReLU(),
nn.Conv2d(32, 64, kernel_size=(3, 1)),
nn.ReLU(),
nn.Flatten(),
nn.LSTM(...) # часовий
)
DeepLOB (Deep Learning for Limit Order Books): Архітектура з академічної літератури (Zhang et al., 2019): CNN + LSTM + Inception модулі. Навчена передбачати напрямок mid-price за 1-10 торгівельних подій. AUC 0.65-0.75 на історичних даних LOBSTER (Nasdaq).
Мікроструктурні сигнали
Trade vs. Quote flow:
- Токсичний order flow: великі агресивні ордери, що знищують ліквідність
- Пасивний order flow: маркет-мейкери, що додають ліквідність
- Класифікація ордерів: Lee-Ready алгоритм, tick rule
Volume імбаланс: різниця між buyer-initiated та seller-initiated обсягами за останні N угод. Сильний предиктор короткострокового руху.
Trade arrival rate: інтенсивність потоку угод — зростає перед значущим рухом.
Практичні обмеження
Вимоги до затримки: Для HFT аналізу Order Book потрібні мікросекундні затримки. Для algorithmic trading на горизонті 1-60 секунд достатньо < 10 мс.
Апаратне забезпечення:
- FPGA для справжнього HFT (sub-microsecond)
- Kernel bypass мережі: DPDK, OpenOnload
- Co-location у датацентрі біржі
Дані:
- Binance: повна L2 книга через WebSocket
- CME: FIX/MDP3 протокол, co-location обов'язковий для свіжості
- Crypto агрегована: Tardis.dev (історичні L2 дані), CoinGecko, Kaiko
Виробнича система для аналізу DOM
Канал біржі → FIX/WebSocket → Нормалізатор → Калькулятор ознак
↓
ML модель (ONNX)
↓
Генератор сигналу
↓
Система управління ордерами
Моніторинг виробництва:
- Feature drift: статистика Order Book змінюється в різний час доби
- Model drift: точність на останніх 1000 прогнозах
- Сигнали режиму: аномально高ий spread або тонка книга
Часовая шкала: Feature engineering + базова модель (OBI + регресія) — 2-3 тижні. DeepLOB з реальними даними ринку L2 та backtesting — 8-12 тижнів. Інтеграція OMS виробництва — ще 4-6 тижнів.







