Перейти к содержимому

Глава 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 важна для трейдинга

  1. Автоматическое извлечение признаков: Вместо ручного конструирования признаков LOB (дисбаланс заявок, спред, коэффициенты глубины), DeepLOB изучает оптимальные представления непосредственно из сырых данных LOB.
  2. Многомасштабное распознавание паттернов: Inception-модули захватывают как локальные (отдельный ценовой уровень), так и глобальные (межуровневые) паттерны одновременно.
  3. Временное моделирование: Компонент LSTM захватывает эволюцию состояний LOB во времени, определяя режимы импульса и возврата к среднему.
  4. Применимость в продакшн: Архитектура достаточно легковесна для вывода с низкой задержкой, что делает её подходящей для торговых систем реального времени.

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 Почему три класса?

Бинарная классификация вверх/вниз игнорирует реальность, что цены часто остаются практически неизменными в краткосрочной перспективе. Класс «стационарный» захватывает эти периоды, что имеет ряд преимуществ:

  1. Уменьшение ложных сигналов: Модель избегает генерации ложных торговых сигналов в спокойном рынке.
  2. Лучшая калиброванная уверенность: Модель может выражать неопределённость через стационарный класс вместо принудительного направленного прогноза.
  3. Учёт транзакционных издержек: Стационарные прогнозы естественным образом отфильтровывают движения, слишком малые для получения прибыли после транзакционных издержек.

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

Полная модель объединяет:

  1. Нормализация входа (40 признаков)
  2. Два inception-модуля (многомасштабное извлечение признаков)
  3. Слой LSTM (временное моделирование)
  4. Полносвязный слой с 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 Конвейер данных

Конвейер интеграции состоит из:

  1. Получение: Периодические REST-запросы для получения текущего состояния книги заявок.
  2. Парсинг: Извлечение массивов цен и объёмов из JSON-ответа.
  3. Нормализация: Применение z-score нормализации с использованием скользящей статистики.
  4. Окно: Поддержание скользящего окна из $T$ недавних снимков.
  5. Инференс: Запуск модели DeepLOB на текущем окне.
  6. Генерация сигнала: Преобразование трёхклассового выхода в торговый сигнал.

5.3 Соображения для живой торговли

При развёртывании DeepLOB в продакшн:

  • Задержка: Модель должна завершить инференс в пределах интервала обновления книги заявок (обычно 100мс для Bybit).
  • Качество данных: Корректно обрабатывать отсутствующие уровни, устаревшие данные и отключения биржи.
  • Обнаружение режима: Мониторить уверенность модели и уменьшать размер позиции, когда стационарный класс доминирует.
  • Калибровка: Периодически переобучать или дообучать модель по мере эволюции микроструктуры рынка.

5.4 Особенности криптовалют

Данные LOB криптовалют отличаются от традиционных акций в нескольких аспектах:

  • Рынки 24/7: Нет аукционов открытия/закрытия, непрерывная торговля.
  • Более высокая волатильность: Более широкие спреды и более агрессивные ценовые движения.
  • Менее глубокие книги: Меньше покоящихся заявок, особенно в альткоинах.
  • Фрагментация: Ликвидность распределена между множеством бирж.

6. Ключевые выводы

  1. DeepLOB объединяет CNN и LSTM для изучения пространственных и временных паттернов в данных книги лимитных заявок, достигая лучших результатов в прогнозировании средней цены без ручного конструирования признаков.

  2. Inception-модули критически важны: Многомасштабный подход к свёрткам захватывает паттерны на различных уровнях детализации.

  3. Трёхклассовое предсказание со сглаженной разметкой даёт более практичные сигналы, чем бинарная классификация, естественным образом фильтруя шум.

  4. 40-признаковое представление LOB (10 уровней x 2 стороны x 2 атрибута) достигает баланса между информативностью и вычислительной эффективностью.

  5. Нормализация важна: Z-score нормализация по признакам необходима для стабильного обучения и обобщения между активами.

  6. Параметр горизонта $k$ контролирует компромисс между точностью предсказания (больший $k$) и своевременностью сигнала (меньший $k$).

  7. Реализация на Rust обеспечивает инференс с низкой задержкой, что делает DeepLOB практичной для торговых приложений реального времени.

  8. Живое развёртывание требует тщательной инженерии помимо самой модели: надёжность конвейера данных, обнаружение режимов и непрерывная калибровка.

Ссылки

  • 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.