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

Глава 276: Attention LOB - Торговля на основе книги заявок с механизмом внимания

Введение

Книга лимитных заявок (LOB - Limit Order Book) является фундаментальной структурой данных современных электронных рынков, в которой записаны все ожидающие исполнения заявки на покупку и продажу на различных ценовых уровнях. Традиционные подходы к моделированию LOB обрабатывают ценовые уровни равномерно или опираются на вручную сконструированные признаки, такие как дисбаланс потока заявок или взвешенная средняя цена. Однако не все ценовые уровни несут одинаковую информационную нагрузку в каждый момент времени. Внезапный всплеск объёма на третьем уровне бидов или необычно тонкий аск на лучшей цене могут быть гораздо более предсказательными, чем агрегированная статистика.

Механизмы внимания (attention), изначально разработанные для обработки естественного языка в архитектуре Transformer, предоставляют элегантное решение этой проблемы. Позволяя модели динамически взвешивать важность различных ценовых уровней и различных временных шагов, модели LOB на основе attention могут обучаться определять, какие части книги заявок наиболее важны для данной задачи прогнозирования.

В этой главе рассматриваются три формы attention, применённые к данным LOB:

  1. Межуровневое внимание (self-attention по ценовым уровням): модель обучается определять, на какие ценовые уровни обращать внимание при формировании прогноза. Например, лучший бид может сильно «смотреть» на второй лучший аск при наличии паттерна забивания котировок.

  2. Временное внимание (attention по снимкам LOB во времени): вместо равномерной обработки всех исторических снимков (как это делает LSTM или простое скользящее среднее) модель обучается определять, какие прошлые состояния наиболее релевантны. Снимок 50 мс назад, показывающий отмену крупной заявки, может быть более информативным, чем снимок 10 мс назад.

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

Математические основы

Матрица признаков LOB

В каждый момент времени $t$ мы представляем LOB в виде матрицы признаков $\mathbf{X}_t \in \mathbb{R}^{L \times F}$, где $L$ - количество ценовых уровней, а $F$ - количество признаков на уровень. Типичные признаки включают:

  • Цена $p_i$
  • Объём $v_i$
  • Количество заявок $n_i$
  • Кумулятивный объём $\sum_{j=1}^{i} v_j$
  • Расстояние от средней цены: $\delta_i = |p_i - p_{mid}|$

Для 10-уровневой книги заявок с обеими сторонами (бид и аск) имеем $L = 20$ (10 уровней бид + 10 уровней аск) и $F = 5$ признаков на уровень.

Self-Attention по ценовым уровням

Дана матрица признаков LOB $\mathbf{X}_t \in \mathbb{R}^{L \times F}$, мы проецируем её в пространства запросов, ключей и значений:

$$\mathbf{Q} = \mathbf{X}_t \mathbf{W}_Q, \quad \mathbf{K} = \mathbf{X}_t \mathbf{W}_K, \quad \mathbf{V} = \mathbf{X}_t \mathbf{W}_V$$

где $\mathbf{W}_Q, \mathbf{W}_K \in \mathbb{R}^{F \times d_k}$ и $\mathbf{W}_V \in \mathbb{R}^{F \times d_v}$.

Веса внимания вычисляются как:

$$\text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{softmax}\left(\frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d_k}}\right) \mathbf{V}$$

Матрица внимания $\mathbf{A} = \text{softmax}\left(\frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d_k}}\right) \in \mathbb{R}^{L \times L}$ имеет чёткую интерпретацию: $A_{ij}$ показывает, насколько сильно уровень $i$ обращает внимание на уровень $j$.

Многоголовое внимание

Многоголовое внимание запускает $H$ параллельных функций внимания с различными обученными проекциями:

$$\text{MultiHead}(\mathbf{X}) = \text{Concat}(\text{head}_1, \ldots, \text{head}_H) \mathbf{W}_O$$

где $\text{head}_h = \text{Attention}(\mathbf{X}\mathbf{W}_Q^h, \mathbf{X}\mathbf{W}_K^h, \mathbf{X}\mathbf{W}_V^h)$.

Каждая голова может специализироваться на захвате различных паттернов LOB: одна голова может фокусироваться на динамике спреда, другая - на дисбалансе объёмов, третья - на давлении в глубине книги.

Временное внимание по снимкам LOB

Дана последовательность представлений LOB ${\mathbf{h}_1, \mathbf{h}_2, \ldots, \mathbf{h}_T}$ (где каждый $\mathbf{h}_t$ - выход уровневого слоя внимания), мы применяем временное внимание:

$$\alpha_t = \frac{\exp(e_t)}{\sum_{s=1}^{T} \exp(e_s)}, \quad e_t = \mathbf{v}^T \tanh(\mathbf{W}_h \mathbf{h}_t + \mathbf{b})$$

Контекстный вектор:

$$\mathbf{c} = \sum_{t=1}^{T} \alpha_t \mathbf{h}_t$$

Перекрёстное внимание между бид и аск

Пусть $\mathbf{B} \in \mathbb{R}^{L/2 \times d}$ - эмбеддинги стороны бидов, а $\mathbf{A} \in \mathbb{R}^{L/2 \times d}$ - эмбеддинги стороны асков. Перекрёстное внимание:

$$\text{CrossAttn}(\mathbf{B}, \mathbf{A}) = \text{softmax}\left(\frac{\mathbf{B}\mathbf{W}_Q (\mathbf{A}\mathbf{W}_K)^T}{\sqrt{d_k}}\right) \mathbf{A}\mathbf{W}_V$$

Применения

Прогнозирование средней цены

Основное применение - прогнозирование направления движения средней цены на коротком горизонте (1-10 секунд):

$$p_{mid}(t) = \frac{p_{ask,1}(t) + p_{bid,1}(t)}{2}$$

Модель предсказывает, будет ли $p_{mid}(t+\Delta) - p_{mid}(t)$ положительным (рост), отрицательным (падение) или приблизительно нулевым (стационарность).

Прогнозирование спреда

Прогнозирование бид-аск спреда критично для стратегий маркет-мейкинга:

$$s(t) = p_{ask,1}(t) - p_{bid,1}(t)$$

Модель на основе attention превосходит другие подходы, поскольку динамика спреда зависит от сложных взаимодействий между несколькими уровнями LOB.

Дисбаланс потока заявок

Дисбаланс потока заявок (OFI) измеряет разницу давления между сторонами покупки и продажи:

$$\text{OFI}(t) = \sum_{i=1}^{K} \left( v_{bid,i}(t) - v_{bid,i}(t-1) \right) - \sum_{i=1}^{K} \left( v_{ask,i}(t) - v_{ask,i}(t-1) \right)$$

В то время как традиционный OFI использует фиксированные веса по уровням, механизм attention обучает адаптивные веса, производя более информативную меру дисбаланса.

Реализация на Rust

Реализация на Rust в rust/src/lib.rs предоставляет полную систему торговли на основе attention для LOB. Ключевые компоненты включают структуру LobSnapshot для захвата состояния книги заявок, MultiHeadAttention для самовнимания по ценовым уровням, TemporalAttention для внимания по временной последовательности снимков и интеграцию с API Bybit для получения данных в реальном времени.

Интеграция с Bybit

Реализация подключается к публичному REST API Bybit для получения снимков книги заявок:

  1. Эндпоинт: https://api.bybit.com/v5/market/orderbook?category=spot&symbol={symbol}&limit={limit}
  2. Формат данных: Возвращает массивы бид и аск с парами [цена, объём]
  3. Лимиты запросов: Публичный эндпоинт позволяет частые запросы, подходящие для исследований

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

  1. Механизмы внимания естественно подходят для данных LOB: Ценовые уровни аналогичны токенам в NLP, и attention может обнаруживать, какие уровни наиболее информативны для данной задачи прогнозирования.

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

  3. Временное внимание превосходит фиксированные окна: Вместо равного взвешивания всех исторических снимков модель обучается фокусироваться на наиболее информативных прошлых состояниях.

  4. Перекрёстное внимание между сторонами бид и аск захватывает динамику спроса и предложения, невидимую для моделей, обрабатывающих каждую сторону независимо.

  5. Интерпретируемость - ключевое преимущество: Веса внимания обеспечивают естественное объяснение прогнозов модели.

  6. Реализация на Rust обеспечивает низкую задержку: Характеристики производительности Rust делают его подходящим для обработки LOB в реальном времени.

  7. Интеграция с биржевыми API (такими как Bybit) обеспечивает бесшовный переход от исследований к реальной торговле.

  8. Инженерия признаков остаётся важной: Хотя attention снижает необходимость в ручных признаках, выбор признаков на уровне (цена, объём, кумулятивный объём, расстояние от средней) существенно влияет на производительность модели.

Ссылки

  • Vaswani, A., et al. (2017). “Attention Is All You Need.” NeurIPS.
  • Zhang, Z., Zohren, S., & Roberts, S. (2019). “DeepLOB: Deep Convolutional Neural Networks for Limit Order Books.” IEEE Transactions on Signal Processing.
  • Tran, D. T., Iosifidis, A., Kanniainen, J., & Gabbouj, M. (2019). “Temporal Attention-Augmented Bilinear Network for Financial Time-Series Data Analysis.” IEEE Transactions on Neural Networks and Learning Systems.
  • Sirignano, J. A. (2019). “Deep Learning for Limit Order Books.” Quantitative Finance.