Реальная задача: предсказание движения цены по стакану
Трейдер смотрит на стакан заявок (DOM) и видит дисбаланс: на уровне Best Bid 2000 лотов, на Best Ask 1500. Order Book — полный срез лимитных ордеров с ценами и объёмами. В реальном времени он даёт сигнал за миллисекунды до исполнения сделки. Извлечение устойчивого торгового сигнала из шума — ключевая задача. Мы сталкиваемся с задачей: трейдеру нужно предсказать краткосрочное движение цены на основе L2-данных. Покажем на примере проекта для Binance: превращаем поток ордеров в предсказания с горизонтом 1-10 секунд. Используем комбинацию линейных моделей и свёрточных нейросетей для максимальной точности при минимальной задержке.
Почему анализ стакана заявок эффективен для краткосрочного прогноза?
Микроструктура рынка закодирована в распределении ликвидности. Order Book отражает ожидания участников — дисбаланс между объёмами на лучших уровнях предшествует движению цены. Order Book Imbalance (OBI) — простейший, но мощный предиктор. Для горизонтов 1–10 секунд OBI даёт AUC 0.58 при задержке 0.1 мс. Этого достаточно для арбитражных стратегий. Для трендовой торговли нужна более сложная модель, учитывающая динамику стакана.
Структура данных Order Book
L2 Order Book snapshot:
Price | Bid Volume | Ask Volume ---------|-----------|---------- 100.05 | 0 | 5000 100.04 | 0 | 3000 100.03 | 0 | 1500 ← Best Ask 100.02 | 2000 | 0 ← Best Bid 100.01 | 3500 | 0 100.00 | 8000 | 0 99.99 | 2500 | 0 L3 Order Book содержит индивидуальные ордера с ID — нужен для microstructure анализа, доступен на некоторых биржах (Binance, CME через API). Подробнее о структуре можно прочитать в документации.
Feature Engineering из Order Book
Базовые метрики: bid-ask spread, mid price, imbalance, weighted 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 секунд).
Iceberg detection: скрытые ордера — серии маленьких ордеров при одной цене. Признаки: быстрое пополнение уровня после исполнения, постоянный объём на уровне.
Market depth curves:
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) Features: imbalance at 0.1%, 0.3%, 0.5%, 1.0% from mid. Дополнительно добавляем скорость изменения дисбаланса и наклон кривой глубин.
Как выбрать между OBI и DeepLOB?
Сравнение моделей:
| Модель | Latency (p99) | AUC (0.1 sec horizon) | Применение |
|---|---|---|---|
| OBI | 0.1 мс | 0.58 | Высокочастотный арбитраж |
| LightGBM | 0.5 мс | 0.64 | Среднечастотные стратегии |
| DeepLOB | 2 мс | 0.69 | Трендовая торговля |
OBI — линейный предиктор с задержкой инференса 0.1 мс. Для высокочастотных стратегий это критично. LightGBM требует 0.5 мс, DeepLOB — 2 мс. Но DeepLOB даёт прирост AUC на 5% относительно градиентного бустинга, что оправдано для стратегий с большим капиталом. Мы выбираем подход под задачу: для арбитража хватит OBI, для трендовой торговли — DeepLOB.
Как DeepLOB обрабатывает L2-данные?
Свёрточная нейросеть принимает временные срезы стакана как 2D-изображение (цена × уровень × объём). Обучается на миллионах примеров. В production используем ONNX Runtime для инференса — latency p99 менее 5 мс на GPU T4.
Что такое айсберг-ордера и как их обнаруживать?
Айсберг-ордера маскируют истинный объём. Мы используем статистику повторного появления ордеров на одном уровне: если объём восстанавливается более 3 раз за 1 секунду — скорее всего айсберг. Этот признак повышает точность прогноза на 2-3%.
Как мы строим production-решение?
Опыт нашей команды — более 7 лет в algorithmic trading. Мы используем стек: PyTorch, ONNX Runtime для инференса, Kafka для потоков данных.
Процесс работы
- Аналитика и сбор данных: получаем исторические L2-данные через Binance WebSocket или CME FIX.
- Feature engineering: расчёт OBI, depth curves, imbalance на нескольких горизонтах.
- Проектирование модели: пробуем DeepLOB, LightGBM на ручных фичах, гибридные подходы.
- Реализация и обучение: на GPU кластере с распределённым обучением.
- Бэктестинг: на исторических данных с учётом комиссий и проскальзывания.
- Деплой: контейнеризация, ONNX Runtime на инференс-сервере, интеграция с OMS.
Что входит в работу
- Документация модели (model card) с метриками и ограничениями.
- API для получения сигналов (gRPC или REST).
- Обучение команды заказчика интерпретации выходов.
- Поддержка в течение 3 месяцев после деплоя.
- Исходный код и конфигурации пайплайна.
Гарантируем прозрачность — вы получите не чёрный ящик, а интерпретируемый пайплайн. Все результаты подтверждаются бэктестами на отложенной выборке. Экономия за счёт готовых фичереров и базовых моделей достигает 30% бюджета.
Распространённые ошибки при построении моделей стакана
- Игнорирование микроструктуры: использование только mid price без depth.
- Неправильный выбор окна прогноза: для HFT важны миллисекунды, для трендов — секунды.
- Отсутствие детекции айсбергов: скрытые ордера искажают дисбаланс.
Сколько времени занимает разработка?
| Этап | Сроки |
|---|---|
| Feature engineering + baseline | 2-3 недели |
| DeepLOB с реальными данными | 8-12 недель |
| Production интеграция | 4-6 недель |
| Итого | от 14 до 21 недели |
Стоимость рассчитывается индивидуально — зависит от объёма данных, сложности модели и инфраструктуры. Свяжитесь с нами для предварительной оценки вашей задачи — подберём оптимальную архитектуру под стратегию. Получите консультацию по вашему проекту прямо сейчас.







