Глава 268: Моделирование спреда с помощью ML для трейдинга
Введение
Спред между ценой покупки и продажи (bid-ask spread) является одной из наиболее фундаментальных величин в микроструктуре рынка. Он представляет собой стоимость немедленности: премию, которую трейдер платит за исполнение сделки прямо сейчас, а не в ожидании контрагента. Для маркет-мейкеров спред является доходом; для институциональных инвесторов — издержкой исполнения, которая снижает альфу. Понимание, прогнозирование и декомпозиция спреда поэтому критически важны для обеих сторон уравнения предоставления ликвидности.
Традиционная теория микроструктуры предоставляет элегантные модели поведения спреда. Модель Ролла (1984) оценивает эффективный спред по серийной ковариации изменений цен сделок. Модели Глостена-Милгрома (1985) и Кайла (1985) разлагают спред на компоненты неблагоприятного отбора, инвентарного риска и обработки ордеров. Однако эти модели основаны на стилизованных предположениях — нормально распределённых поступлениях, постоянной информационной асимметрии, одноактивных сценариях — которые редко выполняются на современных электронных рынках.
Машинное обучение предлагает мощный инструментарий для расширения этих классических идей. Модели ML могут улавливать нелинейные зависимости между детерминантами спреда, адаптироваться к режимным переключениям волатильности и ликвидности, а также включать высокоразмерные признаки из книги лимитных ордеров. В этой главе мы разработаем полный фреймворк для моделирования спреда с помощью ML, охватывающий расчёт, декомпозицию, прогнозирование и применение спреда для оценки торговых стратегий.
Мы реализуем всё на Rust для производительности и демонстрируем интеграцию с API Bybit для получения данных стакана криптовалют в реальном времени. Техники применимы к акциям, фьючерсам, валютному рынку и любому рынку с видимым стаканом ордеров.
Математические основы
Определения спреда
Котируемый спред — это разница между лучшей ценой продажи и покупки в момент времени $t$:
$$S_t^{quoted} = P_t^{ask} - P_t^{bid}$$
Относительный спред (или пропорциональный спред) нормализуется по средней точке:
$$S_t^{relative} = \frac{P_t^{ask} - P_t^{bid}}{M_t}, \quad M_t = \frac{P_t^{ask} + P_t^{bid}}{2}$$
Эффективный спред измеряет фактические издержки исполнения через цены сделок:
$$S_t^{effective} = 2 \cdot D_t \cdot (P_t^{trade} - M_t)$$
где $D_t \in {+1, -1}$ — индикатор направления сделки (покупка или продажа).
Оценка спреда по Роллу
Ролл (1984) показал, что при предположении эффективного рынка с постоянным спредом эффективный спред может быть оценён по автоковариации изменений цен. Пусть $\Delta P_t = P_t - P_{t-1}$ — изменение цены. Тогда:
$$\text{Cov}(\Delta P_t, \Delta P_{t-1}) = -c^2$$
где $c$ — полуспред. Оценка Ролла:
$$\hat{S}{Roll} = 2\hat{c} = 2\sqrt{-\text{Cov}(\Delta P_t, \Delta P{t-1})}$$
Когда автоковариация положительна (что происходит на трендовых рынках), оценка Ролла не определена. На практике мы устанавливаем $\hat{S}_{Roll} = 0$ в этом случае или используем абсолютное значение с корректировкой знака.
Декомпозиция спреда
Спред может быть разложен на три экономических компонента:
-
Компонент неблагоприятного отбора ($\alpha$): Компенсация за торговлю с информированными трейдерами, обладающими частной информацией. Когда маркет-мейкер совершает сделку с информированным трейдером, цена движется против него. Этот компонент больше при высокой информационной асимметрии — перед отчётностью, во время новостных событий или для неликвидных инструментов.
-
Инвентарный компонент ($\beta$): Компенсация за риск удержания несбалансированной позиции. Маркет-мейкеры, накопившие большую позицию, подвержены ценовому риску. Этот компонент увеличивается с волатильностью и размером позиции.
-
Компонент обработки ордеров ($\gamma$): Фиксированные издержки предоставления ликвидности — биржевые комиссии, технологические затраты, альтернативные издержки капитала. Это «базовый» спред, существующий даже без неблагоприятного отбора или инвентарного риска.
Общий спред:
$$S = \alpha + \beta + \gamma$$
Декомпозиция Хуанга-Столла (1997) оценивает эти компоненты из совместного поведения цен сделок и корректировок котировок. Пусть $Q_t$ — направление сделки, а $\Delta M_t$ — изменение средней точки после сделки. Тогда:
$$\Delta M_t = \frac{S}{2}(\alpha + \beta) Q_t - \frac{S}{2} \beta Q_{t-1} + \epsilon_t$$
Регрессируя изменения средней точки на текущее и запаздывающее направления сделок, мы можем оценить $\alpha$, $\beta$ и $\gamma = 1 - \alpha - \beta$.
Линейная регрессия для прогнозирования спреда
Мы моделируем спред как линейную функцию наблюдаемых признаков:
$$S_t = \beta_0 + \beta_1 \sigma_t + \beta_2 V_t + \beta_3 D_t + \beta_4 OI_t + \epsilon_t$$
где:
- $\sigma_t$ — недавняя реализованная волатильность
- $V_t$ — недавний объём торгов
- $D_t$ — глубина стакана (общая видимая ликвидность)
- $OI_t$ — дисбаланс ордеров (нормализованная разница объёмов бидов и асков)
Параметры оцениваются методом наименьших квадратов:
$$\hat{\boldsymbol{\beta}} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}$$
где $\mathbf{X}$ — матрица признаков, а $\mathbf{y}$ — вектор наблюдаемых спредов.
Модели ML для анализа спреда
Регрессия для прогнозирования спреда
Простейший подход — линейная регрессия, но спреды обладают несколькими свойствами, которые делают наивный МНК субоптимальным:
- Гетероскедастичность: Дисперсия спреда увеличивается в волатильные периоды
- Неотрицательность: Спреды не могут быть отрицательными, но МНК может предсказать отрицательные значения
- Тяжёлые хвосты: Распределения спредов правосторонне асимметричны с периодическими выбросами
- Режимная зависимость: Связь между признаками и спредами меняется при смене рыночных условий
Для решения этих проблем можно использовать:
- Регрессия с логарифмическим преобразованием: Моделирование $\log(S_t)$ вместо $S_t$ для обеспечения положительности и снижения асимметрии.
- Квантильная регрессия: Прогнозирование конкретных квантилей распределения спреда, что полезно для анализа худшего случая издержек исполнения.
- Ридж/LASSO регрессия: Добавление регуляризации при использовании многих коррелированных признаков из стакана.
В нашей реализации мы используем стандартную линейную регрессию как основу, которую можно расширить до этих вариантов.
Классификация режимов спреда
Рынки чередуются между режимами узкого спреда (ликвидный) и широкого спреда (неликвидный). Определение текущего режима ценно для:
- Маркет-мейкинга: Корректировка агрессивности котирования в зависимости от режима
- Исполнения: Выбор между агрессивной и пассивной стратегиями
- Управления рисками: Расширение стоп-лоссов в неликвидных режимах
Мы реализуем пороговый классификатор режимов, который маркирует наблюдения спреда как «узкий» или «широкий» на основе настраиваемого порога (например, исторической медианы спреда).
Применения
Рентабельность маркет-мейкинга
Маркет-мейкер, котирующий по лучшим ценам покупки и продажи, зарабатывает спред на каждой круговой сделке. Ожидаемая прибыль в единицу времени:
$$\Pi = \lambda \cdot S - \lambda_{informed} \cdot \alpha \cdot S - \text{инвентарный риск}$$
где $\lambda$ — общая частота поступления сделок, а $\lambda_{informed}$ — частота поступления информированных сделок. Прогнозирование спреда с помощью ML помогает маркет-мейкеру:
- Устанавливать оптимальные котировки: Котировать шире, когда прогнозируемый спред (и, следовательно, неблагоприятный отбор) высок
- Управлять инвентарём: Смещать котировки в сторону уменьшения позиции, когда инвентарный компонент велик
- Выбирать инструменты: Концентрироваться на активах, где декомпозиция спреда благоприятствует компоненту обработки ордеров
Оценка издержек исполнения
Для институциональных трейдеров точное прогнозирование спреда необходимо для:
- Предторгового анализа: Оценка ожидаемых издержек исполнения планируемого ордера
- Выбора площадки: Маршрутизация ордеров на площадку с наименьшим прогнозируемым спредом
- Выбора алгоритма: Использование агрессивных алгоритмов при узких спредах и пассивных при широких
Общие транзакционные издержки для ордера размером $Q$:
$$TC(Q) = \frac{S_{predicted}}{2} + \text{рыночное воздействие}(Q) + \text{временной риск}$$
Особенности криптовалютных рынков
Криптовалютные рынки имеют уникальные характеристики спреда:
- Торговля 24/7: Нет аукционов открытия/закрытия; паттерны спреда следуют глобальным циклам часовых поясов
- Межбиржевой арбитраж: Спреды на одной бирже зависят от цен на других
- Высокая волатильность: Спреды резко расширяются при крупных движениях цен
- Фрагментированная ликвидность: Разные пары стейблкоинов (USDT, USDC, BUSD) для одного актива
Bybit предоставляет стаканы как спотового рынка, так и бессрочных фьючерсов. Бессрочные фьючерсы обычно имеют более узкие спреды благодаря более высокой ликвидности и механизму ставки финансирования.
Реализация на Rust
Наша реализация на Rust включает следующие компоненты:
Базовые расчёты спреда
absolute_spread(): Вычисляет разницу между лучшими ценами покупки и продажиrelative_spread(): Нормализует спред по средней точке для межактивного сравненияeffective_spread(): Вычисляет фактические издержки исполнения
Оценка спреда по Роллу
roll_spread_estimator(): Реализует модель Ролла (1984) с использованием автоковариации изменений цен
Линейная регрессия
- Структура
LinearRegressionс методамиfit()иpredict() - Использует нормальное уравнение для оценки параметров
- Поддерживает многопризнаковое прогнозирование с термом смещения
Классификатор режимов спреда
SpreadRegimeClassifierс настраиваемым порогом- Маркирует наблюдения как режимы
TightилиWide - Вычисляет вероятности переходов между режимами
Оценщик транзакционных издержек
- Комбинирует прогнозирование спреда с оценкой рыночного воздействия
- Использует модель корневого воздействия: $\text{impact} = k \cdot \sigma \cdot \sqrt{Q/V}$
Интеграция с Bybit
fetch_bybit_orderbook(): Получает данные стакана в реальном времени через API Bybit v5- Парсит уровни бидов и асков с ценами и объёмами
Ключевые выводы
-
Спред bid-ask — это не одно число, а композиция неблагоприятного отбора, инвентарного риска и издержек обработки ордеров. Понимание декомпозиции необходимо как для маркет-мейкеров, так и для исполнителей.
-
Оценка Ролла предоставляет простую, модельно-свободную оценку эффективного спреда только из ценовых данных, без необходимости данных о котировках.
-
Модели ML могут прогнозировать будущие спреды из наблюдаемых признаков: волатильности, объёма, глубины стакана и дисбаланса ордеров.
-
Классификация режимов спреда определяет периоды узких и широких спредов. Это непосредственно применимо: маркет-мейкеры должны быть осторожнее в режимах широкого спреда.
-
Оценка транзакционных издержек комбинирует прогнозирование спреда с моделями рыночного воздействия для предторговых прогнозов издержек.
-
Криптовалютные рынки представляют уникальные вызовы для моделирования спреда, включая круглосуточную торговлю, высокую волатильность и межбиржевые эффекты.
-
Реализация на Rust обеспечивает производительность, необходимую для расчёта и прогнозирования спреда в реальном времени.
Ссылки
- Roll, R. (1984). A simple implicit measure of the effective bid-ask spread in an efficient market. The Journal of Finance, 39(4), 1127-1139.
- Glosten, L., & Milgrom, P. (1985). Bid, ask, and transaction prices in a specialist market with heterogeneously informed traders. Journal of Financial Economics, 14(1), 71-100.
- Kyle, A. S. (1985). Continuous auctions and insider trading. Econometrica, 53(6), 1315-1335.
- Huang, R., & Stoll, H. (1997). The components of the bid-ask spread: A general approach. Review of Financial Studies, 10(4), 995-1034.