Глава 271: Прогнозирование DeepLOB
1. Введение
Книга лимитных заявок (LOB, Limit Order Book) --- это фундаментальная структура данных, определяющая ценообразование на современных электронных рынках. Она содержит все активные заявки на покупку и продажу на различных ценовых уровнях, обеспечивая мгновенный снимок спроса и предложения в реальном времени. Прогнозирование краткосрочного направления средней цены (mid-price) --- среднего значения лучшей цены спроса и предложения --- является давней задачей в количественных финансах и исследовании микроструктуры рынка.
DeepLOB (Zhang et al., 2019) --- это знаковая архитектура глубокого обучения, специально разработанная для прогнозирования средней цены на основе данных LOB. Модель объединяет свёрточные нейронные сети (CNN) с сетями долгой краткосрочной памяти (LSTM) для захвата как пространственных паттернов по ценовым уровням, так и временных зависимостей. Ключевая инновация --- использование inception-модулей (вдохновлённых GoogLeNet), которые применяют параллельные свёртки на различных масштабах, позволяя модели обнаруживать признаки от узкой динамики спреда до широких дисбалансов спроса и предложения.
DeepLOB стала одной из наиболее цитируемых и воспроизводимых моделей в литературе по прогнозированию LOB, стабильно превосходя традиционные вручную созданные признаки и более простые нейронные архитектуры на эталонных наборах данных, таких как FI-2010. В этой главе мы исследуем архитектуру, математические основы и предоставляем реализацию на Rust с интеграцией данных книги заявок Bybit для торговли криптовалютами.
Почему DeepLOB важна для трейдинга
- Автоматическое извлечение признаков: Вместо ручного конструирования признаков LOB (дисбаланс заявок, спред, коэффициенты глубины), DeepLOB изучает оптимальные представления непосредственно из сырых данных LOB.
- Многомасштабное распознавание паттернов: Inception-модули захватывают как локальные (отдельный ценовой уровень), так и глобальные (межуровневые) паттерны одновременно.
- Временное моделирование: Компонент LSTM захватывает эволюцию состояний LOB во времени, определяя режимы импульса и возврата к среднему.
- Применимость в продакшн: Архитектура достаточно легковесна для вывода с низкой задержкой, что делает её подходящей для торговых систем реального времени.
2. Математические основы
2.1 Входное представление LOB
LOB в момент времени $t$ представляется как матрица $X_t \in \mathbb{R}^{T \times 40}$, где $T$ --- окно ретроспективного просмотра (количество исторических снимков), а 40 --- размерность признаков:
$$X_t = \begin{bmatrix} p_1^{ask}(t) & v_1^{ask}(t) & p_1^{bid}(t) & v_1^{bid}(t) & \cdots & p_{10}^{ask}(t) & v_{10}^{ask}(t) & p_{10}^{bid}(t) & v_{10}^{bid}(t) \end{bmatrix}$$
Для каждого из 10 ценовых уровней с каждой стороны книги мы записываем:
- $p_i^{ask}(t)$: $i$-я лучшая цена предложения в момент $t$
- $v_i^{ask}(t)$: объём на $i$-м лучшем уровне предложения
- $p_i^{bid}(t)$: $i$-я лучшая цена спроса в момент $t$
- $v_i^{bid}(t)$: объём на $i$-м лучшем уровне спроса
Это даёт нам $10 \times 2 \times 2 = 40$ признаков на временную метку.
2.2 Нормализация
Перед подачей данных в сеть применяется z-score нормализация по временному измерению для каждого признака $j$:
$$\hat{x}{t,j} = \frac{x{t,j} - \mu_j}{\sigma_j + \epsilon}$$
где $\mu_j$ и $\sigma_j$ --- среднее и стандартное отклонение признака $j$, вычисленные на скользящем окне, а $\epsilon = 10^{-8}$ --- малая константа для числовой стабильности.
2.3 Inception-модуль
Основной строительный блок CNN-компонента DeepLOB --- inception-модуль, который применяет несколько операций свёртки параллельно:
$$h_t^{(k)} = \text{ReLU}\left(\sum_{s \in {1, 3, 5}} W_s^{(k)} * x_t^{(k-1)} + b_s^{(k)}\right)$$
где:
- $W_s^{(k)}$ --- ядро свёртки размера $s$ на слое $k$
- $*$ обозначает операцию свёртки
- Выходы от ядер разного размера конкатенируются по каналовому измерению
Многомасштабный подход позволяет модели обнаруживать:
- Масштаб 1 (свёртка 1x1): Поточечные преобразования отдельных признаков
- Масштаб 3 (свёртка 1x3): Локальные паттерны по смежным ценовым уровням
- Масштаб 5 (свёртка 1x5): Широкие паттерны, охватывающие несколько ценовых уровней
2.4 Компонент LSTM
После извлечения пространственных признаков CNN слоями, LSTM обрабатывает последовательность извлечённых признаков для захвата временной динамики:
$$f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)$$ $$i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)$$ $$\tilde{C}t = \tanh(W_C \cdot [h{t-1}, x_t] + b_C)$$ $$C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}t$$ $$o_t = \sigma(W_o \cdot [h{t-1}, x_t] + b_o)$$ $$h_t = o_t \odot \tanh(C_t)$$
где:
- $f_t$, $i_t$, $o_t$ --- вентили забывания, входа и выхода
- $C_t$ --- состояние ячейки
- $\sigma$ --- сигмоидная функция активации
- $\odot$ обозначает поэлементное умножение
2.5 Сглаженная разметка (трёхклассовая классификация)
DeepLOB предсказывает один из трёх классов: вверх, вниз или стационарный. Метки генерируются с использованием сглаженного изменения средней цены на будущем горизонте $k$:
$$m_t = \frac{p_t^{ask,1} + p_t^{bid,1}}{2}$$
$$\bar{m}{t+k} = \frac{1}{k} \sum{i=1}^{k} m_{t+i}$$
$$l_t = \frac{\bar{m}_{t+k} - m_t}{m_t}$$
Метка присваивается на основе порога $\alpha$ (обычно выбирается так, чтобы каждый класс имел примерно равное представительство):
$$y_t = \begin{cases} 1 \text{ (вверх)} & \text{если } l_t > \alpha \ -1 \text{ (вниз)} & \text{если } l_t < -\alpha \ 0 \text{ (стационарный)} & \text{иначе} \end{cases}$$
Сглаживание по $k$ будущим шагам (обычно $k=5$) уменьшает шум и делает цель предсказания более устойчивой.
2.6 Функция потерь
Модель обучается с категориальной кросс-энтропией с опциональными весами классов для работы с несбалансированными данными:
$$\mathcal{L} = -\sum_{c \in {-1, 0, 1}} w_c \cdot y_c \log(\hat{y}_c)$$
где $w_c$ --- вес класса $c$, а $\hat{y}_c$ --- выход softmax для класса $c$.
3. Трёхклассовое предсказание со сглаженной разметкой
3.1 Почему три класса?
Бинарная классификация вверх/вниз игнорирует реальность, что цены часто остаются практически неизменными в краткосрочной перспективе. Класс «стационарный» захватывает эти периоды, что имеет ряд преимуществ:
- Уменьшение ложных сигналов: Модель избегает генерации ложных торговых сигналов в спокойном рынке.
- Лучшая калиброванная уверенность: Модель может выражать неопределённость через стационарный класс вместо принудительного направленного прогноза.
- Учёт транзакционных издержек: Стационарные прогнозы естественным образом отфильтровывают движения, слишком малые для получения прибыли после транзакционных издержек.
3.2 Выбор порога
Порог $\alpha$ может быть установлен с использованием нескольких стратегий:
- Фиксированный перцентиль: Выбрать $\alpha$ так, чтобы каждый класс содержал приблизительно одну треть обучающих образцов.
- На основе транзакционных издержек: Установить $\alpha$ равным ожидаемым затратам на совершение круговой сделки (спред + комиссии).
- С поправкой на волатильность: Масштабировать $\alpha$ по недавней волатильности, адаптируясь к изменяющимся рыночным условиям.
3.3 Сглаживание меток на практике
Среднее с опережением $\bar{m}_{t+k}$ при $k=5$ служит нескольким целям:
- Фильтрация шума: Изменения средней цены на уровне отдельных тиков чрезвычайно зашумлены; усреднение сглаживает шум микроструктуры.
- Гибкость горизонта: Варьируя $k$, трейдеры могут нацеливаться на различные горизонты прогнозирования.
- Стабильность меток: Сглаженные метки меняются реже, что делает задачу классификации более обучаемой.
4. Реализация на Rust
Наша реализация на Rust предоставляет следующие компоненты:
4.1 Структуры данных LOB
pub struct LOBSnapshot { pub ask_prices: Vec<f64>, // 10 уровней pub ask_volumes: Vec<f64>, // 10 уровней pub bid_prices: Vec<f64>, // 10 уровней pub bid_volumes: Vec<f64>, // 10 уровней pub timestamp: u64,}Структура LOBSnapshot захватывает полную 10-уровневую книгу заявок в заданный момент. LOBNormalizer выполняет z-score нормализацию, поддерживая скользящую статистику по признакам.
4.2 Inception-модуль
Inception-модуль применяет три параллельные 1D-свёртки с размерами ядра 1, 3 и 5, затем конкатенирует результаты. Каждая ветвь свёртки включает дополнение нулями для сохранения временного измерения и активацию ReLU для нелинейности.
4.3 Слой LSTM
Слой LSTM обрабатывает последовательность признаков, извлечённых CNN. Он поддерживает скрытое состояние и состояние ячейки по временным шагам, реализуя стандартные уравнения LSTM с вентилями забывания, входа и выхода.
4.4 Классификатор DeepLOB
Полная модель объединяет:
- Нормализация входа (40 признаков)
- Два inception-модуля (многомасштабное извлечение признаков)
- Слой LSTM (временное моделирование)
- Полносвязный слой с softmax (выход на 3 класса)
4.5 Ключевые детали реализации
- Инициализация весов: Инициализация Xavier/Glorot для стабильного обучения.
- Числовая стабильность: Все экспоненциальные и логарифмические операции включают защиту эпсилон.
- Эффективность памяти: Модель работает с массивами фиксированного размера где возможно, избегая лишних аллокаций.
5. Интеграция с Bybit
5.1 API книги заявок
Bybit предоставляет REST и WebSocket конечные точки для данных книги заявок. Наша реализация использует REST API:
GET https://api.bybit.com/v5/market/orderbook?category=linear&symbol=BTCUSDT&limit=50Это возвращает до 50 уровней книги заявок, из которых мы извлекаем топ-10 уровней спроса и предложения.
5.2 Конвейер данных
Конвейер интеграции состоит из:
- Получение: Периодические REST-запросы для получения текущего состояния книги заявок.
- Парсинг: Извлечение массивов цен и объёмов из JSON-ответа.
- Нормализация: Применение z-score нормализации с использованием скользящей статистики.
- Окно: Поддержание скользящего окна из $T$ недавних снимков.
- Инференс: Запуск модели DeepLOB на текущем окне.
- Генерация сигнала: Преобразование трёхклассового выхода в торговый сигнал.
5.3 Соображения для живой торговли
При развёртывании DeepLOB в продакшн:
- Задержка: Модель должна завершить инференс в пределах интервала обновления книги заявок (обычно 100мс для Bybit).
- Качество данных: Корректно обрабатывать отсутствующие уровни, устаревшие данные и отключения биржи.
- Обнаружение режима: Мониторить уверенность модели и уменьшать размер позиции, когда стационарный класс доминирует.
- Калибровка: Периодически переобучать или дообучать модель по мере эволюции микроструктуры рынка.
5.4 Особенности криптовалют
Данные LOB криптовалют отличаются от традиционных акций в нескольких аспектах:
- Рынки 24/7: Нет аукционов открытия/закрытия, непрерывная торговля.
- Более высокая волатильность: Более широкие спреды и более агрессивные ценовые движения.
- Менее глубокие книги: Меньше покоящихся заявок, особенно в альткоинах.
- Фрагментация: Ликвидность распределена между множеством бирж.
6. Ключевые выводы
-
DeepLOB объединяет CNN и LSTM для изучения пространственных и временных паттернов в данных книги лимитных заявок, достигая лучших результатов в прогнозировании средней цены без ручного конструирования признаков.
-
Inception-модули критически важны: Многомасштабный подход к свёрткам захватывает паттерны на различных уровнях детализации.
-
Трёхклассовое предсказание со сглаженной разметкой даёт более практичные сигналы, чем бинарная классификация, естественным образом фильтруя шум.
-
40-признаковое представление LOB (10 уровней x 2 стороны x 2 атрибута) достигает баланса между информативностью и вычислительной эффективностью.
-
Нормализация важна: Z-score нормализация по признакам необходима для стабильного обучения и обобщения между активами.
-
Параметр горизонта $k$ контролирует компромисс между точностью предсказания (больший $k$) и своевременностью сигнала (меньший $k$).
-
Реализация на Rust обеспечивает инференс с низкой задержкой, что делает DeepLOB практичной для торговых приложений реального времени.
-
Живое развёртывание требует тщательной инженерии помимо самой модели: надёжность конвейера данных, обнаружение режимов и непрерывная калибровка.
Ссылки
- Zhang, Z., Zohren, S., & Roberts, S. (2019). “DeepLOB: Deep Convolutional Neural Networks for Limit Order Books.” IEEE Transactions on Signal Processing, 67(11), 3001-3012.
- Szegedy, C., et al. (2015). “Going Deeper with Convolutions.” CVPR.
- Hochreiter, S., & Schmidhuber, J. (1997). “Long Short-Term Memory.” Neural Computation, 9(8), 1735-1780.
- Sirignano, J., & Cont, R. (2019). “Universal Features of Price Formation in Financial Markets.” PLOS ONE.
- Ntakaris, A., et al. (2018). “Benchmark Dataset for Mid-Price Forecasting of Limit Order Book Data with Machine Learning Methods.” Journal of Forecasting.