Преодолевая разрыв с реальностью в симуляции лимитного стакана

9/10

Патрик Ноубл, Матьё Розенбаум, Саад Суильми · Jump Trading; Université Paris Dauphine-PSL; École Polytechnique · 26 марта 2026

Оригинал: Noble, P., Rosenbaum, M. and Souilmi, S. «Bridging the Reality Gap in Limit Order Book Simulation», 2026 — arxiv.org/abs/2603.24137 (PDF).

Рисунки воспроизведены из оригинальной публикации. Все права на оригинальный текст принадлежат авторам; перевод выполнен в ознакомительных целях с указанием источника.

Аннотация

Мы представляем практичный интерактивный симулятор лимитного стакана для активов с крупным тиком, спроектированный так, чтобы давать реалистичные исполнение, издержки и P&L. Состояние книги проецируется на компактное представление на основе спреда и объёмного дисбаланса, что делает оценку по рыночным данным устойчивой. Тайминг событий калибруется так, чтобы воспроизводить тонкую временную структуру реальных рынков, — при этом обнаруживается выраженная мода на времени полного цикла до биржи (round-trip latency), согласующаяся с одновременными реакциями и гонками латентности между участниками. Далее мы встраиваем механизм обратной связи, накапливающий знаковый поток сделок через степенное ядро затухания, который воспроизводит и вогнутый рыночный импакт во время исполнения, и частичный возврат цены после сделки. На нескольких акциях и кейсах стратегий симулятор демонстрирует реалистичное поведение, при котором прибыльность становится крайне чувствительной к параметрам исполнения. Мы формулируем подход как практический рецепт: project, estimate, validate, adapt — для построения реалистичных симуляций лимитного стакана.

Ключевые слова: лимитный стакан, алгоритмическая торговля, высокочастотная торговля, рыночный импакт, симуляция Монте-Карло, оптимизация стратегий, риск исполнения, латентность, управление рисками.

1. Введение

Симуляция лимитного стакана — фундаментальная задача для участников электронных рынков. Маркетмейкеры полагаются на симуляторы для стресс-тестирования котировочных стратегий перед развёртыванием, проп-трейдинговые фирмы используют их для оценки сигнальных стратегий. Брокеры, несущие фидуциарные обязательства перед клиентами, зависят от инструментов симуляции при бенчмаркинге алгоритмов исполнения, оценке транзакционных издержек и демонстрации регуляторам обоснованности своих решений о маршрутизации. Несмотря на разнообразие сценариев использования, ключевое требование одно: симулятор должен воспроизводить статистические свойства реального рынка с точностью, достаточной для того, чтобы выводы, сделанные в симуляции, переносились на живую торговлю. Принципиально важно и то, что симулятор должен быть интерактивным: пользователи должны иметь возможность выставлять заявки, получать исполнения и наблюдать, как рынок реагирует на их собственную активность.

Ранние модели лимитного стакана опирались на агентов «нулевого интеллекта» (Smith et al., 2003; Cont, de Larrard, 2013), у которых заявки приходят с постоянными интенсивностями, независимыми от состояния книги. Queue-reactive-модель (QR) Huang et al. (2015) расширила этот каркас, сделав интенсивности событий зависящими от текущего состояния книги. Она моделирует лимитный стакан как марковский скачкообразный процесс в непрерывном времени, в котором интенсивность каждого события — лимитной заявки, отмены или рыночной заявки — обусловлена наблюдаемыми размерами очередей. Модель управляется данными, интерпретируема и хорошо воспроизводит многие рыночные статистики. Марковская структура упрощает оценивание: достаточно эмпирических интенсивностей переходов, обусловленных наблюдаемым состоянием.

Но марковское предположение имеет цену. Марковский процесс в непрерывном времени по построению порождает экспоненциально распределённые времена между событиями, каким бы изощрённым ни было обусловливание на состояние. На практике распределение межсобытийных времён на рынках акций далеко от экспоненциального. Aquilina et al. (2021) документируют, что гонки латентности — всплески почти одновременных заявок, спровоцированных общим сигналом, — происходят примерно раз в минуту на символ и дают порядка 20% торгового объёма на крупных биржах. QR-модель, трактуя каждое событие как пуассоновское прибытие, полностью усредняет эту кластеризацию. Ей трудно моделировать такие внезапные всплески активности.

У предположения об отсутствии памяти есть и второе следствие: в модели нет полноценного механизма рыночного импакта агрессивных заявок сверх их влияния на очереди. В QR-модели метазаявка действительно влияет на цену во время исполнения, поскольку дочерние заявки меняют размеры очередей в книге. Пассивный импакт воспроизводится хорошо. Однако после завершения метазаявки книга эволюционирует так, будто ничего не произошло. Для оценки стратегий — центрального сценария использования — это серьёзная проблема. Симулятор, игнорирующий след пользователя, завышает прибыль и занижает риск.

Мы сохраняем QR-движок и расширяем его тремя модификациями, превращающими его в практичный интерактивный симулятор:

  1. Мы проецируем книгу на простое состояние из объёмного дисбаланса и спреда, заменяя пооче­редное обусловливание исходной модели, где большинство конфигураций состояния слишком редки для надёжной оценки.
  2. Мы заменяем предположение об экспоненциальных межсобытийных временах гибким распределением, что вскрывает характерную кластеризацию событий на времени полного цикла до биржи и открывает путь к моделированию конкурентной динамики исполнений.
  3. Мы вводим механизм обратной связи, воспроизводящий ключевые аспекты рыночного импакта — вогнутый рост во время исполнения и частичный возврат после. Тот же механизм можно использовать для инъекции пользовательских торговых сигналов в динамику книги.

Мы преподносим наш вклад как рецепт, а не жёсткую модель: спроецировать книгу на состояние $\Phi(\mathrm{LOB})$, оценить условные распределения по данным и провалидировать, сравнив симулированные и наблюдаемые статистики. Рецепт адаптируется под актив, а практик сам решает, какие ключевые свойства должны быть воспроизведены.

Модель спроектирована с расчётом на активы с крупным тиком, где размер тика значим относительно цены базового актива. Мы тестируем её на четырёх компонентах S&P 500, торгующихся в районе отметки \$30: INTC, VZ, T и PFE, на данных Databento. По всей статье результаты иллюстрируются на PFE; эквивалентные графики для остальных тикеров приведены в приложении.1

Остальная часть статьи организована так. Раздел 2 представляет queue-reactive-каркас, наши модификации его пространства состояний, типов событий и процедуры оценивания, а также валидирует базовую модель на эмпирических данных. Раздел 3 заменяет предположение об экспоненциальных межсобытийных временах пользовательским распределением, вскрывая структуру биржевой латентности, которую мы используем для моделирования конкурентной динамики исполнений. Раздел 4 вводит механизм обратной связи для рыночного импакта, накапливающий знаковый поток сделок через степенное ядро затухания и смещающий последующие сделки в сторону возврата к среднему. Раздел 5 демонстрирует практическую значимость на двух кейсах — среднечастотной сигнальной стратегии и высокочастотной стратегии на дисбалансе.

2. Базовая модель: упрощённый QR-каркас со случайными объёмами

2.1. Исходная QR-модель

Queue-reactive-модель (QR) Huang et al. (2015) сначала представляет лимитный стакан как $2K$-мерный вектор размеров очередей $X(t) = (q_{-K}(t), \ldots, q_{-1}(t), q_1(t), \ldots, q_K(t))$, центрированный на фиксированной референсной цене $p_{\mathrm{ref}}$. Затем вводится стохастический механизм, порождающий движения $p_{\mathrm{ref}}$ (за деталями отсылаем читателя к Huang et al. (2015)). Книгу на различных уровнях могут изменять три типа событий: лимитные заявки (вставки), отмены и рыночные заявки. Ключевое модельное предположение состоит в том, что интенсивность прихода каждого события зависит от текущего состояния книги — отсюда и название queue-reactive. В самой общей форме интенсивность $\lambda^e$ прихода каждого события $e$ (лимитная заявка, рыночная заявка или отмена на данном уровне) является функцией всего состояния книги: $\lambda^e = \lambda^e(q_{-K}, \ldots, q_{-1}, q_1, \ldots, q_K)$.

В простейшей версии QR-модели каждая очередь трактуется независимо: у $q_i$ свои интенсивности прихода и отмены $\lambda^e(q_i)$. Оценивание тогда тривиально — нужно лишь достаточно наблюдений на каждый размер очереди. Однако предположение о независимости игнорирует совместную динамику: например, на практике поведение очереди лучшего ask явно зависит от состояния лучшего bid, и наоборот. Оригинальная статья решает это обусловливанием на обе лучшие очереди $\lambda^e(q_1, q_{-1})$, но это требует агрессивного биннинга размеров очередей, чтобы накопить достаточно наблюдений на ячейку.

Мы полагаем, что объёмный дисбаланс на лучшем уровне уже захватывает большую часть значимой зависимости bid–ask. Хорошо известно, что именно в дисбалансе стакана сосредоточена большая часть краткосрочной предсказательной силы книги (Cont et al., 2013; Stoikov, 2018; Pulido et al., 2026). Поэтому мы проецируем книгу на дисбаланс и спред, кодируя межочередное взаимодействие одним скаляром и сохраняя оценивание податливым.

2.2. Представление стакана

Мы отходим от исходной QR-конвенции индексирования очередей относительно фиксированной референсной цены $p_{\mathrm{ref}}$. Вместо этого $q_{-1}$ всегда обозначает лучший bid, а $q_1$ — лучший ask, независимо от текущего спреда, который мы обозначаем $n$. Более глубокие очереди $q_{\pm i}$ при $i \ge 2$ находятся на $i-1$ тиков позади лучшей цены на стороне bid ($-$) или ask ($+$).

Рисунок 1
Рисунок 1. Стакан с очередями, индексированными относительно текущих лучших bid и ask. Лучшие очереди $q_{-1}, q_1$ по определению никогда не пусты. Более глубокие очереди (пунктир) могут быть пустыми.

Во время симуляции мы отслеживаем очереди вплоть до $q_{\pm 4}$. Когда сделка опустошает лучший ask (или bid), все очереди сдвигаются: старая $q_2$ становится новой $q_1$, и так далее. Вновь открывшаяся самая глубокая очередь сэмплируется из эмпирического стационарного распределения на этом уровне. Рисунок 2 иллюстрирует эту переиндексацию.

Рисунок 2
Рисунок 2. Движение цены после полного опустошения лучшего ask $q_1$ сделкой. Поскольку $q_2$ была пуста, старая $q_3$ становится новой $q_1$: лучший ask прыгает с \$30.02 до \$30.04, а средняя цена — с \$30.01 до \$30.02, движение на один тик вверх. Вновь открывшиеся глубокие очереди (зелёные) сэмплируются из эмпирического стационарного распределения.

Рисунок 3 показывает обратную ситуацию: лимитная заявка внутрь спреда сужает его со стороны bid.

Рисунок 3
Рисунок 3. Лимитная заявка внутрь спреда сужает его. Bid-заявка по \$30.01 создаёт новый лучший bid, сдвигая все bid-очереди: спред сужается с $n=2$ до $n=1$.

2.3. Проекция состояния

Мы проецируем книгу на две величины: объёмный дисбаланс на лучшем уровне

\[ \mathrm{Imb} = \frac{q_{-1} - q_1}{q_{-1} + q_1} \in [-1, 1] \]

и спред bid–ask $n$ в тиках. Полное состояние сводится к $\Phi(\mathrm{LOB}) = (\mathrm{Imb}, n)$.

Дисбаланс дискретизируется в 21 бин ширины 0.1. Отрицательные бины закрыты слева и помечены левым краем: наблюдённый дисбаланс $-0.47$ попадает в бин $-0.5$ через $[-0.5, -0.4)$. Положительные бины закрыты справа и помечены правым краем: $0.13$ попадает в бин $0.2$ через $(0.1, 0.2]$. Центральный бин $\mathrm{Imb} = 0$ — точечный, захватывающий только точное равенство. Значения в $(-0.1, 0)$ и $(0, 0.1)$ попадают в бины $-0.1$ и $0.1$ соответственно. Этот выбор сделан намеренно, чтобы не смешивать в одном бине противоположные знаки дисбаланса.

Выбор ширины бина балансирует детализацию и достаточный размер выборки. Можно опасаться, что точечный бин $\mathrm{Imb} = 0$ слишком ограничителен: точное равенство $q_{-1} = q_1$ для сырых размеров очередей выглядит маловероятным. Однако размеры очередей сначала нормируются медианным размером события на каждом уровне и округляются вверх до целых, что заметно концентрирует распределение. На практике бин 0 относительно хорошо населён.

Рисунок 4
Рисунок 4. Схема биннинга дисбаланса. Бины имеют ширину 0.1; бин 0 (выделен) захватывает только точный баланс. Показаны три примера значений и их привязка к бинам.
Рисунок 5
Рисунок 5. Слева: число наблюдений на бин дисбаланса; бин 0 населён плотнее, чем сильно несбалансированные книги. В центре: среднее межсобытийное время $E[\Delta t \mid \mathrm{Imb}, n=1]$ по бинам дисбаланса; экстремальные дисбалансы соответствуют более быстрой активности. Справа: вероятности событий на лучшем bid $q_{-1}$ при данном дисбалансе ($n=1$). Положительный дисбаланс означает $q_{-1} > q_1$; вероятности не суммируются в 1, так как события получают и другие очереди. Все статистики откалиброваны на данных 12/2023 → 12/2025.

Заметим, что дисбаланс — это отношение: книга с $q_{-1} = 1, q_1 = 1$ и книга с $q_{-1} = 50, q_1 = 50$ обе отображаются в $\mathrm{Imb} = 0$, несмотря на совершенно разную динамику: в первом случае единственная отмена опустошает очередь, во втором — пренебрежимо мала. Чтобы учесть это, состояние можно обогатить суммарным объёмом в книге:

\[ \Phi(\mathrm{LOB}) = (\mathrm{Imb}, n, \ell) \quad \text{где } \ell = q_{-1} + q_1 \]

На практике $\ell$ дискретизируется в небольшое число бинов (например, 5 уровней: очень низкий, низкий, средний, высокий, очень высокий), заданных эмпирическими квантилями $\ell$, наблюдёнными в данных. Однако мы эмпирически обнаружили (приложение B), что это дополнительное измерение не улучшает существенно воспроизводящую способность модели, при этом размывая наблюдения по большему числу бинов: каждая ячейка накапливает меньше выборок, что даёт более шумные оценки. Поэтому всюду используем $\Phi(\mathrm{LOB}) = (\mathrm{Imb}, n)$.

2.4. Моделирование событий

В нашей модели событие — это тройка $e = (\mathcal{T}, s, i)$, где $\mathcal{T}$ — тип (лимитная заявка (Add), отмена (Cancel) или рыночная заявка (Trade)), $s \in \{-1, +1\}$ — сторона, а $i \ge 1$ — уровень очереди, так что целевая очередь — $q_{s \cdot i}$. Здесь добавления и отмены могут нацеливаться на очереди вплоть до $q_{\pm 2}$. Сделки нацеливаются только на лучшие очереди $q_{\pm 1}$: хотя сделки, проходящие через несколько ценовых уровней, случаются, они достаточно редки, чтобы не моделировать их отдельным типом события (особая аккуратность соблюдается при оценке объёмов, см. раздел 2.5). На практике большинство агрессивных заявок подаются как маркетабельные лимитные заявки по лучшей встречной котировке, а не как рыночные заявки, прометающие книгу. При спреде $n = 1$ возможные события — это, таким образом, добавления и отмены на $q_{\pm 1}$ и $q_{\pm 2}$ и сделки на $q_{\pm 1}$.

Рисунок 6
Рисунок 6. Распределение спреда в момент сделки (PFE).

Когда спред расширяется ($n \ge 2$), мы вводим два дополнительных типа событий: CreateBid и CreateAsk. CreateBid ставит новую лимитную заявку на тик выше текущего лучшего bid, сужая спред со стороны bid. Симметрично, CreateAsk ставит заявку на тик ниже текущего лучшего ask. Модель спроектирована для активов с крупным тиком. Рисунок 6 показывает распределение спреда в момент сделки для PFE: менее 5% сделок происходят при спреде больше одного тика. Поэтому разумно трактовать $n \ge 2$ как переходное состояние, разрешаемое исключительно Create-событиями: спред закрывается прежде, чем возобновляется любая другая активность. Для Create-событий уровень очереди неприменим, и мы по конвенции полагаем $i = 0$.

2.5. Объёмы заявок

В исходной queue-reactive-модели все заявки имеют единичный размер: каждое событие добавляет или убирает из очереди ровно одну единицу. «Единица» — это нормировка сырого объёма характерным размером. У Huang et al. (2015) это средний размер события; мы вместо этого используем медианный размер события (median event size, MES), более устойчивый к выбросам. MES вычисляется отдельно для каждого уровня очереди $q_1, q_2, q_3, \ldots$ и симметризуется между bid и ask (так что $q_{-i}$ и $q_i$ имеют общий MES). Поскольку MES различается между уровнями, одна единица на $q_1$ соответствует иному числу акций, чем одна единица на $q_2$. Нужна аккуратность при движении цены, когда очереди меняют уровни: очередь, бывшая на уровне $q_2$ и ставшая $q_1$ после движения цены, должна быть перевыражена в MES нового уровня.

На практике размеры заявок сильно варьируются и несут информацию об агрессивности участников рынка. Роль размеров заявок исследована в (Bodor, Carlier, 2024). Более того, важный механизм динамики LOB — когда сделка съедает всю лучшую очередь, из-за чего спред расширяется. С единичными размерами это может происходить только по одной единице за раз, что требует отдельного типа события для захвата опустошения очереди за один шаг. Мы вводим случайные объёмы: при текущем состоянии $\Phi(\mathrm{LOB})$ и событии $e$ размер заявки извлекается из зависящего от состояния распределения:

\[ v \sim p(v \mid \Phi(\mathrm{LOB}), e) \]

где $p(v \mid \Phi(\mathrm{LOB}), e)$ оценивается как эмпирическое распределение размеров в каждой ячейке $(\Phi(\mathrm{LOB}), e, q_{\pm i})$, симметризованное между bid и ask. Размеры ограничены сверху 50 MES — за этой границей эмпирическая плотность пренебрежима. Опустошение очереди тогда возникает естественно всякий раз, когда лучшая очередь мала и по ней бьёт сделка умеренного размера, без какой-либо специальной обработки.

Предобработка объёмов. Сырые размеры событий требуют некоторой аккуратности перед оцениванием.

Create-события заслуживают особого внимания. В данных за созданием уровня обычно следует всплеск Add-сообщений по той же цене — другие участники присоединяются к только что созданному уровню. Если оценивать объём Create только по первому сообщению, мы недооценим истинный размер новой очереди. Поэтому мы агрегируем последовательные Add-сообщения по той же цене в Create-событие, останавливаясь, как только наблюдается любое другое событие (поскольку последующие добавления уже нельзя надёжно приписать исходному созданию). Отдельные добавления отбрасываются как самостоятельные события, а их объёмы поглощаются единым Create с суммарным размером. Рисунок 7 иллюстрирует это.

Рисунок 7
Рисунок 7. Агрегация объёмов для Create-событий. В сыром потоке — CreateBid по \$30.02 ($v=2$), за которым следуют два Add-сообщения по той же цене ($v=3$ и $v=1$). Мы агрегируем их в единый Create с $v=6$.

Trade-сообщения требуют похожей аккуратности. Когда агрессивная заявка исполняется против нескольких лежащих в книге заявок по лучшей цене, поток сообщает о каждом исполнении отдельным Trade-сообщением с одинаковым таймстемпом. Мы агрегируем все такие последовательные сообщения в одну сделку с их суммарным объёмом (рисунок 8). Реже крупная агрессивная заявка может пройти через несколько ценовых уровней; их мы тоже агрегируем и записываем только суммарный проторгованный объём. События прохода по книге достаточно редки, чтобы моделирование их отдельным типом события не окупалось: в нашем каркасе каждая сделка трактуется как маркетабельная лимитная заявка, и любой неисполненный остаток объёма вновь появляется как лимитная заявка на противоположной стороне.

Рисунок 8
Рисунок 8. Агрегация объёмов для Trade-событий. В сыром потоке — три Trade-сообщения по \$30.01 ($v=3$, $v=2$, $v=1$), соответствующие одной агрессивной заявке, ударившей по трём лежащим заявкам. Мы агрегируем их в единый Trade с $v=6$.

2.6. Сэмплирование

Хотя события нацеливаются только на очереди до $q_{\pm 2}$, книгу мы отслеживаем до $q_{\pm 4}$. Более глубокие очереди $q_{\pm 3}$ и $q_{\pm 4}$ напрямую никогда не изменяются, но становятся значимыми после движения цены: когда сделка опустошает лучшую очередь, все очереди сдвигаются, и бывшая глубокая очередь может стать новой лучшей. Отслеживание этих уровней гарантирует, что состояние книги после движения цены информировано данными, а не пересэмплировано целиком.

Пусть $\mathcal{E}(\Phi(\mathrm{LOB}))$ обозначает множество возможных событий для данного состояния книги, как описано в разделе 2.4. Как и у Huang et al. (2015), модель — марковский скачкообразный процесс: в состоянии $\Phi(\mathrm{LOB})$ у каждого возможного события $e \in \mathcal{E}(\Phi(\mathrm{LOB}))$ свои экспоненциальные часы с интенсивностью $\lambda^e(\Phi(\mathrm{LOB}))$. Определив суммарную интенсивность и вероятности событий:

\[ \Lambda(\Phi(\mathrm{LOB})) = \sum_{e \in \mathcal{E}(\Phi(\mathrm{LOB}))} \lambda^e(\Phi(\mathrm{LOB})), \qquad p^e(\Phi(\mathrm{LOB})) = \frac{\lambda^e(\Phi(\mathrm{LOB}))}{\Lambda(\Phi(\mathrm{LOB}))} \]

сэмплирование следующего события сводится к двум независимым розыгрышам:

\[ \Delta t \sim \mathrm{Exp}\big(\Lambda(\Phi(\mathrm{LOB}))\big), \qquad e^* \sim \sum_{e \in \mathcal{E}(\Phi(\mathrm{LOB}))} p^e(\Phi(\mathrm{LOB}))\, \delta_e \]

Симуляция затем идёт следующим образом.

Алгоритм 1: цикл симуляции queue-reactive.
Вход: оценённые параметры $\hat{p}^e$, $\hat{\Lambda}$, $\hat{p}(v \mid \cdot)$; начальный стакан; $t \leftarrow 0$.

  1. пока симуляция продолжается:
  2. вычислить текущее состояние $\Phi(\mathrm{LOB})$;
  3. сэмплировать событие $e^* \sim \sum_{e \in \mathcal{E}(\Phi(\mathrm{LOB}))} p^e(\Phi(\mathrm{LOB}))\, \delta_e$;
  4. сэмплировать время ожидания $\Delta t \sim \mathrm{Exp}\big(\Lambda(\Phi(\mathrm{LOB}))\big)$; положить $t \leftarrow t + \Delta t$;
  5. сэмплировать объём $v^* \sim p(v \mid \Phi(\mathrm{LOB}), e^*)$;
  6. применить событие $e^*$ с размером $v^*$ к стакану.

2.7. Оценивание параметров

Наш набор данных состоит из переходов $K = \{(\Delta t_k, e_k, \Phi(\mathrm{LOB}_k))\}_{k=1}^N$, где $N$ — число наблюдённых событий. Определим:

\[ K(\Phi(\mathrm{LOB})) = \{k : \Phi(\mathrm{LOB}_k) = \Phi(\mathrm{LOB})\}, \qquad K(\Phi(\mathrm{LOB}), e) = \{k \in K(\Phi(\mathrm{LOB})) : e_k = e\} \]

Все параметры оцениваются методом максимального правдоподобия. Вероятности событий — это эмпирические частоты в каждом бине $\Phi(\mathrm{LOB})$:

\[ \hat{p}^e(\Phi(\mathrm{LOB})) = \frac{\#K(\Phi(\mathrm{LOB}), e)}{\#K(\Phi(\mathrm{LOB}))} \]

Суммарная интенсивность — величина, обратная среднему времени ожидания:

\[ \hat{\Lambda}(\Phi(\mathrm{LOB})) = \left( \frac{1}{\#K(\Phi(\mathrm{LOB}))} \sum_{k \in K(\Phi(\mathrm{LOB}))} \Delta t_k \right)^{-1} \]

После оценивания все статистики симметризуются между bid и ask: вероятность bid-события при дисбалансе $+x$ усредняется с вероятностью соответствующего ask-события при дисбалансе $-x$, и аналогично для времён ожидания и параметров размеров. Любая остаточная асимметрия оценённых параметров транслировалась бы в систематический дрейф цены на макроскопическом масштабе — свойство, которого мы не хотим в базовой модели. Симметризация устраняет этот артефакт, вдвое сокращает эффективное число параметров и даёт более гладкие оценки.

В приложении A мы проверяем, что параметры, оценённые на непересекающихся полугодовых окнах, остаются согласованными на протяжении всего выборочного периода. Вероятности событий поразительно стабильны; межсобытийные времена сохраняют функциональную форму, но сдвигаются по уровню, что согласуется с изменяющейся во времени рыночной активностью, которую практик захватывает периодической переоценкой.

Всё оценивание выполняется на данных Databento MBP-10, покрывающих период с декабря 2023 по декабрь 2025. Чтобы избежать особенностей открытия и закрытия, мы отбрасываем первые и последние 30 минут каждого торгового дня, фактически работая в окне 10:00–15:30.

2.8. Валидация базовой модели

Мы проверяем, воспроизводит ли симулятор маргинальные статистики, которые практик проверил бы, прежде чем доверять его выдаче: состав типов событий, состояния книги, при которых происходят сделки, общие уровни активности, волатильность цены и распределение доходностей. Эти статистики тестируют всё более глубокие аспекты модели — от посoбытийной точности до эмерджентной ценовой динамики.

Мы калибруем QR-модель на PFE на двух годах данных 12/2023 → 12/2025, даём модели проработать эквивалент 1000 торговых часов и сравниваем получившуюся симуляцию с нашими данными.

Распределение типов событий. Рисунок 9a сравнивает относительные частоты возможных событий в эмпирических данных и QR-симуляции. Модель точно воспроизводит доминирующий баланс Add/Cancel: вместе они дают примерно 97% всех событий, сделки — около 2%, а события создания уровня — менее 1%.

Дисбаланс перед сделками. Рисунок 9b показывает распределение знакового дисбаланса очередей непосредственно перед каждой сделкой. Оба распределения имеют U-образную форму, подтверждая, что сделки наиболее вероятны, когда одна сторона книги сильно истощена. QR-модель слегка переоценивает крайние бины дисбаланса относительно эмпирических данных, что согласуется с отсутствием какой-либо обратной связи между сделками и потоком заявок.

Уровни активности. В качестве проверки на здравый смысл мы убеждаемся, что симулированный часовой объём торгов (рисунок 9c) согласуется с подогнанными интенсивностями. QR-модель концентрируется вокруг эмпирического среднего, что ожидаемо по построению. Более узкий разброс симулированного распределения отражает отсутствие дневной вариации рыночных условий: модель захватывает среднее поведение, а не смену режимов.

Пятиминутная реализованная волатильность. Исходная QR-модель Huang et al. (2015) сообщала о систематической недооценке волатильности, что потребовало введения параметра $\theta^{\mathrm{reinit}}$ для моделирования экзогенных движений цены. В нашем каркасе волатильность в среднем совпадает с наблюдаемой в данных (рисунок 9d). Мы приписываем это двум отличиям: введению случайных объёмов (Bodor, Carlier, 2024), позволяющих одной сделке опустошить целую очередь, и нашему представлению стакана, отказавшемуся от фиксированной референсной цены $p_{\mathrm{ref}}$ и связанного с ней механизма переиндексации исходной модели. В качестве меры волатильности мы вычисляем:

\[ \sigma_{\mathrm{day}} = \sqrt{ \frac{1}{T-1} \sum_{t=1}^{T-1} (p_{t+1} - p_t)^2 } \]

где $p_t$ — последняя цена сделки в $t$-м пятиминутном бине, а $T = 66$ — число бинов в дне (6.5 торговых часов минус 30 минут от открытия и 30 минут от закрытия, поделённые на пятиминутные интервалы).

Пятиминутные доходности. Рисунок 9e сравнивает распределение пятиминутных доходностей mid-to-mid. QQ-график (справа) подтверждает, что основная масса распределения захвачена хорошо: точки плотно ложатся на диагональ для доходностей в пределах ±5 тиков. Хвосты легче, чем в данных. Это ожидаемо: QR-модель эргодична, и средняя цена асимптотически броуновская (Huang, Rosenbaum, 2017), поэтому она не может порождать крупные движения цены, вызванные экзогенными шоками или персистентным потоком заявок.

Рисунок 9
Рисунок 9. Статистики валидации базовой модели. Эмпирические данные (синий) против QR-симуляции (зелёный/оранжевый) для PFE. (a) Распределение типов событий. (b) Дисбаланс перед сделками. (c) Часовой объём торгов. (d) Пятиминутная реализованная волатильность. (e) Распределение пятиминутных доходностей. (f) QQ-график пятиминутных доходностей.

Ограничения. У базовой модели два главных ограничения, которые мы устраняем в следующих разделах.

Межсобытийные времена. Как показано на рисунке 10, эмпирическое распределение $\Delta t$ далеко от экспоненциального типа, предполагаемого QR-моделью, — расхождение, которое, насколько нам известно, в queue-reactive-литературе не рассматривалось. Это не просто статистический курьёз: реальное распределение показывает, что заметная доля событий приходит почти одновременно — слишком быстро, чтобы быть последовательными реакциями. Для любой стратегии, зависящей от того, кто первым отреагирует на сигнал, именно тайминг конкурирующих заявок определяет, получит ли она исполнение. Экспоненциальные часы, размазывающие события равномерно во времени, не могут захватить эту кластеризацию и систематически завышают частоту исполнений.

Рыночный импакт. В QR-модели нет механизма рыночного импакта сверх эффекта изменения очередей: вероятности переходов зависят только от текущего состояния книги, а не от истории сделок. Пассивный импакт воспроизводится хорошо, но когда мы симулируем агрессивную метазаявку в базовой модели, средняя траектория цены не показывает ни вогнутого роста во время исполнения, ни возврата после (рисунок 10). Это фундаментально расходится с эмпирическими наблюдениями, где метазаявки влияют на цены специфическим, зависящим от пути образом (Bouchaud et al., 2009; Tóth et al., 2011; Durin et al., 2026; Muhle-Karbe et al., 2026).

Рисунок 10
Рисунок 10. Слева: средняя траектория цены вокруг симулированной метазаявки в базовой QR-модели — импакт не наблюдается. Справа: распределение межсобытийных времён $\Delta t$ (синий — эмпирика, зелёный — QR).

Упомянем и две другие немарковские особенности эмпирических данных, которые при желании легко встроить в QR-каркас.

Автокорреляция потока заявок. Эмпирически знаки сделок обладают долгой памятью: их автокорреляция убывает медленно, по степенному закону. QR-симуляция воспроизводит автокорреляцию на коротких лагах из одного лишь состояния книги, но затухание гораздо быстрее. Это не обязательно свойство, которое пользователь стремится воспроизвести: долгая память возникает из стратегического поведения институциональных участников, а не из микроструктуры книги. Если это свойство принципиально для пользователя, его легко получить хоуксовской компонентой в потоке рыночных заявок, см., например, (Bodor, Carlier, 2024).

Зависящее от пути время выживания очереди. Среднее время до полного опустошения маленькой лучшей очереди на практике зависит не только от состояния, но и от пути. QR-модель трактует очередь размера 5 одинаково независимо от того, как это состояние было достигнуто. В реальности же очередь, постепенно сократившаяся с 50, скорее всего состоит из заявок участников с сильной убеждённостью. Такие заявки правдоподобно реже отменяются, чем недавно поставленные. Этот эффект можно захватить, обогатив пространство состояний модели явным учётом зависимости от пути.

3. Queue-reactive-модель с гонками

3.1. Структура биржевой латентности

Если рассмотреть эмпирическое распределение межсобытийных времён $\Delta t$ в шкале $\log_{10}$ (рисунок 11), проявляется поразительная особенность: по всем тикерам — устойчивая мода около $\log_{10}(\Delta t) \approx 4.47$, что соответствует примерно 29 микросекундам. При увеличении области пика интервал, где плотность падает до 70% максимума, оказывается замечательно узким: $[4.3, 4.7]$ в шкале $\log_{10}$, то есть примерно $[20, 50]$ микросекунд.

Рисунок 11
Рисунок 11. Слева: распределение межсобытийных времён $\Delta t$ в $\log_{10}$ наносекунд (синий — эмпирика, зелёный — GMM-аппроксимация). Справа: увеличение моды с выделенной областью, где плотность падает до 70% пикового значения.

Наблюдаемые нами таймстемпы — биржевые: время, в которое движок сведения заявок получает каждую заявку. У биржи много внутренних таймстемпов, но тот, что выставляется в публичный поток, можно смело считать согласованным между сообщениями. Рисунок 12 иллюстрирует полный цикл: обновление книги покидает движок сведения, доходит до участника, участник обрабатывает его и посылает заявку обратно, а движок сведения записывает результат.

Рисунок 12
Рисунок 12. Петля полного цикла до биржи. Участник получает обновление книги из фида ($\Delta t_4$), принимает решение ($\Delta t_1$) и посылает заявку в движок сведения ($\Delta t_2$). Движок обрабатывает и публикует обновление ($\Delta t_3$). Латентность полного цикла $\delta = \Delta t_2 + \Delta t_3 + \Delta t_4$; измеряемое межсобытийное время $\Delta t = \Delta t_1 + \delta$.

Полный цикл раскладывается на четыре ноги (рисунок 12): $\Delta t_1$ — время принятия решения участником, $\Delta t_2$ — сетевая задержка от системы участника до движка сведения, $\Delta t_3$ покрывает обработку движком и публикацию в фид, а $\Delta t_4$ — сетевая задержка от фида обратно к участнику. Мы определяем латентность полного цикла $\delta = \Delta t_2 + \Delta t_3 + \Delta t_4$ — время между отправкой участником заявки и появлением соответствующего обновления в фиде. Измеряемое межсобытийное время тогда равно $\Delta t = \Delta t_1 + \delta$. Для колоцированных участников сетевые ноги фактически одинаковы между фирмами, поэтому $\delta$ общая. Поскольку у высокочастотных систем времена принятия решения $\Delta t_1$ составляют несколько микросекунд, мода на $\approx 29\,\mu s$ в эмпирическом распределении $\Delta t$ объясняется естественно: она соответствует $\delta$ при пренебрежимо малом $\Delta t_1$. Мы моделируем $\delta$ как случайное время, сконцентрированное вокруг этой моды.

Примерно 25% событий происходят при $\Delta t < \delta$ — слишком быстро, чтобы быть реакцией на предыдущее событие в публичном фиде. Эти события можно, в частности, объяснить коррелированными откликами на общий сигнал: когда несколько участников наблюдают одну и ту же направленную подсказку, например дисбаланс стакана, они бросаются торговать. Резкий пик на $\Delta t \approx \delta$ соответствует первой заявке гонки — самой быстрой возможной реакции. Последующие выжившие приходят вскоре после, разделённые лишь задержкой обработки движка сведения, что даёт кластер быстрых событий чуть ниже пика. Однако некоторые события при $\Delta t < \delta$ вообще не связаны с гонками: участники также подают заявки асинхронно по причинам, не связанным с последним обновлением книги, и такие заявки могут случайно оказаться рядом. Более того, публичный фид показывает только победителей гонок, поэтому истинный масштаб конкурентной активности больше, чем видно в данных.

Рисунок 13
Рисунок 13. Распределение дисбаланса перед сделками. Безусловное (Control, $\Delta t > \delta$) против быстрых событий (Fast, $\Delta t \approx \delta$).

Рисунок 13 сравнивает распределение дисбаланса непосредственно перед сделками с разбивкой по межсобытийному времени. Сделки, приходящие как немедленная реакция ($\Delta t \approx \delta$), то есть первое событие всплеска, значимо сильнее сконцентрированы на экстремальных дисбалансах, чем сделки после длинной паузы ($\Delta t > \delta$). Это согласуется с феноменом гонок, изученным в Aquilina et al. (2021): когда одна сторона книги сильно истощена, несколько участников сходятся к одному направленному взгляду и наперегонки действуют. Цифра 25%, однако, лишь частично отражает истинные гонки. С одной стороны, в публичном фиде мы видим только победителей гонок, так что реальное число конкурирующих участников выше. С другой стороны, многие из этих быстрых событий — просто шум: заявки, случайно обработанные близко друг к другу без причинной связи, поскольку участники подают заявки и асинхронно, по причинам, не связанным с последним обновлением книги.

3.2. Аппроксимация межсобытийных времён

Чтобы встроить реалистичный тайминг в модель, можно заменить экспоненциальные часы эмпирическим распределением, воспользовавшись правилом Байеса:

\[ p(\Delta t, e \mid \Phi(\mathrm{LOB})) \propto p(e \mid \Phi(\mathrm{LOB}))\, p(\Delta t \mid \Phi(\mathrm{LOB}), e) \]

Первый множитель — категория события, уже оценённая в разделе 2.7. Для компоненты тайминга $p(\Delta t \mid \Phi(\mathrm{LOB}), e)$ можно использовать эмпирическое распределение напрямую или подогнать параметрическую модель. Подход на основе гауссовской смеси, точно воспроизводящий эмпирическое распределение $\Delta t$ (рисунок 11, слева), мы детализируем в приложении F.

Важно, что замена экспоненциальных часов эмпирическим распределением тайминга не меняет траекторию событий симулятора: состояние книги, последовательность событий и направление движений цены целиком определяются вероятностями событий и механизмом импакта. Часы имеют значение лишь тогда, когда стратегии нужно знать, пришла ли её заявка раньше или позже конкурирующей.

3.3. Моделирование исполнений в гонках латентности

Описанная структура латентности имеет прямое следствие для любого, кто использует этот симулятор для оценки высокочастотной стратегии. Рассмотрим, например, стратегию, которая мониторит дисбаланс стакана и подаёт рыночную заявку, когда сигнал превышает порог. Если межсобытийное время после её заявки $\Delta t > \delta$, заявка стратегии пришла в одиночестве и может разумно рассчитывать на исполнение. Но при $\Delta t < \delta$ ситуация иная: следующее событие не было реакцией на заявку стратегии — это был одновременный отклик на тот же сигнал. В этом режиме стратегия участвует в гонке латентности с другими участниками, которые увидели ту же подсказку и подействовали в то же время.

Практический вывод: вероятности исполнения не всегда следует полагать равными единице. Если сигнал достаточно силён, чтобы сработала стратегия, он, скорее всего, достаточно силён и для срабатывания конкурентов. Вероятность исполнения должна убывать с силой сигнала: на высокой частоте более сильный сигнал, вероятно, разделяется с большим числом гонщиков, снижая шанс любого отдельного участника оказаться первым в очереди.

Точное моделирование исхода гонки — кто выигрывает, с какой вероятностью и как эта вероятность зависит от состояния книги — крайне сложно на одних лишь данных публичного фида. Публичный фид не раскрывает ни идентичности конкурирующих участников, ни заявки, не дошедшие до движка сведения. Подгонка структурной модели динамики гонок потребовала бы проприетарных биржевых данных, которые в общем случае недоступны.

Поэтому мы довольствуемся простым прокси: если у следующего QR-события $\Delta t > \delta$, стратегия исполняется. Иначе исполнение происходит с некоторой вероятностью и может быть даже частичным. То есть вероятность исполнения $p_{\mathrm{fill}}(\Delta t)$ активируется при $\Delta t < \delta$. Эта вероятность может зависеть от $\Delta t$, а также от величины сигнала, спровоцировавшего гонку, и может калиброваться пользователем по собственным проприетарным данным о неисполненных заявках.

4. Queue-reactive с учётом импакта

4.1. Механизм рыночного импакта

Когда инвестор исполняет крупный приказ, называемый метазаявкой, тот обычно разбивается на множество дочерних заявок, растянутых во времени. Накопленный поток заявок в среднем толкает цену в направлении торговли: покупки — вверх, продажи — вниз. Эмпирически импакт во время исполнения следует вогнутому росту, хорошо аппроксимируемому законом квадратного корня (см. ссылки выше). После окончания исполнения цена частично возвращается: лишь доля пикового импакта сохраняется как перманентный импакт, остальное временно и затухает за минуты–часы.

У QR-модели нет памяти о прошлом потоке заявок: вероятности событий зависят только от текущего состояния книги. Метазаявка двигает цену во время исполнения, но когда она останавливается, у модели нет механизма вернуть цену. Мы вводим механизм обратной связи, воспроизводящий эту динамику.

Состояние импакта. Пусть $\phi_t$ — бегущая переменная состояния, накапливающая знаковый поток сделок и затухающая во времени:

\[ \phi_t = \sum_{k:\, t_k < t} G(t - t_k)\, \varepsilon_k \sqrt{V_k} \tag{1}\]

где $t_k$ — время $k$-й транзакции, $\varepsilon_k = +1$ для сделок на стороне ask (покупок), $\varepsilon_k = -1$ для сделок на стороне bid (продаж), $V_k$ — размер сделки, а $G$ — неотрицательное ядро затухания, задаваемое ниже.

Одностороннее смещение. Состояние $\phi_t$ смещает вероятности сделок в сторону возврата к среднему, но только на той стороне, которая противостоит накопленному потоку:

\[ \begin{cases} p^{\mathrm{bid\ trade}}(\cdot) \propto p_0^{\mathrm{bid\ trade}}(\cdot) \cdot e^{\,m\,[\phi_t]^+} \\[4pt] p^{\mathrm{ask\ trade}}(\cdot) \propto p_0^{\mathrm{ask\ trade}}(\cdot) \cdot e^{\,m\,[-\phi_t]^+} \end{cases} \tag{2}\]

где $p_0^{\mathrm{bid\ trade}}$ и $p_0^{\mathrm{ask\ trade}}$ — базовые вероятности, оценённые по данным в разделе 2.7, $[x]^+ = \max(x, 0)$, а $m > 0$ — масштабирующий параметр. При $\phi_t > 0$ (недавние чистые покупки) более вероятными делаются только bid-сделки (продажи); при $\phi_t < 0$ (недавние чистые продажи) усиливаются только ask-сделки (покупки). Заметим, что можно использовать разные множители $m^+$ и $m^-$ для сторон bid и ask, если считать, что покупки и продажи имеют асимметричный импакт, как это бывает на рынках акций.

Ядро и калибровка. Механизм обратной связи гибок: ядро $G$ и множитель $m$ можно калибровать под любой критерий импакта, важный для практика. Это может быть теоретический бенчмарк, эмпирические данные метазаявок или подгонка максимального правдоподобия к наблюдаемой ценовой динамике (последнее — в приложении E). Здесь мы описываем наш собственный выбор, нацеленный на теоретический профиль импакта Jusselin, Rosenbaum (2020).

Поскольку $\phi_t$ действует на цену как сила ($dP/dt \propto -\phi_t$), воспроизведение импакта, затухающего как $t^{-1/2}$ после исполнения, требует $G(t) \propto t^{-3/2}$ — в согласии с безарбитражными ограничениями Jusselin, Rosenbaum (2020). Мы используем

\[ G(t) = \left(1 + \frac{t}{\tau}\right)^{-3/2}, \]

где $\tau$ управляет переходом от плоского участка к степенному затуханию (рисунок 14). Аппроксимация $G$ суммой экспонент, обеспечивающая обновление за $O(1)$ на событие, детализирована в приложении D.

Рисунок 14
Рисунок 14. Ядро затухания $G(t) = (1 + t/\tau)^{-3/2}$ с $\tau = 50$ с на 17-минутном окне.

Мы берём $\tau = 50$ с, что даёт разумную форму ядра (рисунок 14). Более принципиальный подход — оценить $\tau$ методом максимального правдоподобия по наблюдаемой ценовой динамике; мы делаем это в приложении E и получаем качественно похожие результаты.

Для калибровки $m$ мы выбираем типичный профиль метазаявки (TWAP, 10% часового объёма, исполнение $T = 10$ мин, каждая дочерняя заявка размера 2, наблюдение 60 мин) и теоретическую форму импакта, которую хотим воспроизвести:

\[ I_{\mathrm{target}}(t) = \begin{cases} \sqrt{t/T} & t \le T \\ \sqrt{t/T} - \sqrt{t/T - 1} & t > T. \end{cases} \]

Мы находим $m$ бинарным поиском по 100 000 траекторий Монте-Карло, минимизируя MSE относительно $I_{\mathrm{target}}$. Это даёт $m = 0.036$. Эти параметры используются во всех последующих кейсах.

Результаты. Рисунок 15 показывает среднюю траекторию цены по 500 000 симулированных метазаявок. Без импакта цена после исполнения остаётся на пике. С механизмом обратной связи она возвращается и стабилизируется на доле пика — в согласии с частичным возвратом, наблюдаемым эмпирически.

Рисунок 15
Рисунок 15. Слева: средний ценовой импакт метазаявки с механизмом обратной связи и без него, нормированный пиковым значением. Справа: импакт во время исполнения против исполненного объёма в log-log шкале.

Рисунок 15 (справа) показывает импакт во время исполнения против исполненного объёма в log-log шкале. Без обратной связи импакт растёт с объёмом линейно. Со степенным ядром рост вогнутый.

Подчеркнём, что выбор целевого профиля иллюстративен: структура ядра достаточно гибка, чтобы воспроизвести любой вогнутый профиль импакта, а не только предсказанный Jusselin, Rosenbaum (2020). На практике калибровка $\tau$ и $m$ требует либо данных метазаявок, либо теоретической цели. Когда доступны проприетарные данные исполнений, можно калиброваться напрямую к наблюдаемой кривой импакта; в их отсутствие разумным дефолтом служит теоретический бенчмарк вроде использованного здесь.

5. Кейсы

Имея на руках механизм импакта и расширение тайминга, мы демонстрируем их эффект, встраивая в симулятор две стратегии: среднечастотную, управляемую альфа-сигналом вне стакана, и высокочастотную, эксплуатирующую дисбаланс стакана и подверженную гонкам латентности.

5.1. Среднечастотная стратегия

Альфа-сигнал. Мы моделируем среднечастотный торговый сигнал как процесс Орнштейна–Уленбека $\alpha_t$ со скоростью возврата к среднему $\kappa$ и коэффициентом диффузии $\sigma$:

\[ d\alpha_t = -\kappa\, \alpha_t\, dt + \sigma\, dW_t. \]

Сигнал входит в модель через комбинированный член смещения

\[ b_t = m\, \phi_t - \lambda\, \alpha_t \]

где $\lambda > 0$ — масштабирующий коэффициент. Смещение $b_t$ входит в вероятности сделок ровно как в (2): компонента импакта $m \phi_t$ создаёт давление возврата к среднему, а сигнальная компонента $-\lambda \alpha_t$ наклоняет вероятности в направлении прогноза. Два члена конкурируют: импакт толкает цену назад, информированный поток — вперёд, и чистое смещение $b_t$ определяет преобладающее направление.

Рисунок 16
Рисунок 16. Предсказательная сила сигнала: $E[\alpha \cdot \Delta P(h)]$ как функция горизонта $h$ (в минутах).

Рисунок 16 подтверждает, что сигнал действительно предсказателен в симуляции: $E[\alpha \cdot \Delta P(h)]$ положительна и растёт с горизонтом $h$, как с импактом, так и без. С импактом предсказательная сила снижена на всех горизонтах, отражая цену собственного следа стратегии на рынке. Примечательно, что кривые расходятся через несколько минут, и кривая с импактом выходит на плато около $h = 20$ мин, что позволяет предположить: накопленный самоимпакт постепенно исчерпывает преимущество сигнала. Доверительные полосы — 95%-е бутстрап-интервалы.

Описание стратегии. Стратегия торгует всякий раз, когда $|\alpha_t|$ превышает порог $\theta$: покупает по лучшему ask при $\alpha_t > \theta$ и продаёт по лучшему bid при $\alpha_t < -\theta$. Её поведение ограничивают два риск-параметра:

В качестве прокси латентности исполнения и «остывания» между сделками мы требуем, чтобы между любыми двумя последовательными сделками стратегии происходило QR-событие (обычное рыночное событие стакана). Это не даёт стратегии выпускать серию заявок подряд и гарантирует, что книга успевает восполниться между исполнениями.

Результаты. Размер заявки $q_{\max}$ в нашей постановке слабо влияет на P&L (рисунок 17, слева): поскольку он ограничен доступной глубиной на лучшем уровне, которая обычно мала, увеличение $q_{\max}$ сверх этой глубины поведения не меняет. Мы фиксируем $q_{\max} = 5$ и сосредотачиваемся на эффекте максимального инвентаря.

Рисунок 17 показывает реализованный P&L как функцию максимального инвентаря при нескольких значениях порога $\theta$. Без импакта P&L монотонно растёт с максимальным инвентарём: чем больше стратегии позволено накопить, тем больше преимущества она захватывает. С импактом возникает явный компромисс: за определённым уровнем инвентаря дополнительные сделки создают достаточно рыночного импакта, чтобы съесть преимущество сигнала, и P&L выполаживается или падает. Порог $\theta$ управляет селективностью: более высокие пороги торгуют реже, но на более сильных сигналах, сдвигая кривые вверх ценой меньшего общего объёма.

Рисунок 17
Рисунок 17. Слева: реализованный P&L против размера заявки $q_{\max}$; кривые быстро выполаживаются, подтверждая, что связывающее ограничение — доступная глубина. Справа: P&L против максимального инвентаря, порог $\theta$ показан цветовым градиентом. Без импакта больший инвентарь всегда лучше; с импактом возникает компромисс.

5.2. Высокочастотная стратегия

Описание стратегии. Стратегия мониторит дисбаланс стакана и подаёт рыночную заявку всякий раз, когда дисбаланс превышает порог 0.85, покупая по ask (продавая по bid), когда книга наклонена в соответствующую сторону. Поскольку стратегия реагирует на сигнал, видимый всем участникам, её латентность извлекается из $\delta$ — задержки полного цикла до биржи, описанной в разделе 3.1. Исполнение здесь определяется простой версией правила из раздела 3.3: если у следующего QR-события $\Delta t^{\mathrm{QR}} < \delta$, заявка стратегии не исполняется (она проигрывает гонку); иначе — исполняется.

Риском управляют два параметра: максимальный инвентарь $\bar{I}$ и размер заявки $q_{\max}$. Мы перебираем оба и прогоняем стратегию в двух режимах импакта:

  1. Без самоимпакта: механизм импакта активен (сделки других участников двигают цены через $\phi_t$), но собственные исполнения стратегии исключены, то есть для сделок стратегии в (1) мы полагаем $\varepsilon_k = 0$.
  2. С самоимпактом: сделки стратегии входят в $\phi_t$ наравне со всеми остальными.

Разрыв между двумя режимами изолирует цену собственного следа стратегии на рынке.

Результаты. Рисунок 18 показывает реализованный P&L как функцию максимального инвентаря $\bar{I}$ (слева) и размера заявки $q_{\max}$ (справа). Бледные линии соответствуют отдельным значениям параметров; жирные — средние. Оба режима демонстрируют вогнутый рост по $\bar{I}$, но кривая с самоимпактом выполаживается раньше и на более низком уровне. Вертикальный разрыв между двумя жирными линиями — это P&L, потерянный из-за собственного импакта стратегии: издержка, растущая с инвентарём, которую симулятор, игнорирующий самоимпакт, упустил бы целиком. В разрезе по $q_{\max}$ (справа) обе кривые быстро выполаживаются: связывающее ограничение — доступная глубина на лучшем уровне, поэтому увеличение $q_{\max}$ сверх нескольких единиц даёт мало дополнительного эффекта. Издержка самоимпакта примерно постоянна по $q_{\max}$, что подтверждает: она определяется накопленной позицией, а не размером отдельной заявки.

Рисунок 18
Рисунок 18. Реализованный P&L высокочастотной стратегии. Слева: против максимального инвентаря; бледные линии — отдельные значения $q_{\max}$. Справа: против $q_{\max}$; бледные линии — отдельные значения максимального инвентаря. Жирные линии — средние. Разрыв между двумя кривыми измеряет цену собственного импакта стратегии.

Эти результаты иллюстрируют, почему моделирование самоимпакта важно для HFT-бэктестинга. Симулятор, исключающий собственные сделки стратегии из ядра импакта, будет систематически завышать прибыльность — именно в агрессивном режиме параметризации, где практику точная оценка нужнее всего.

Литература

Приложение A. Стабильность параметров

Рисунок 19
Рисунок 19. Вероятности событий на лучшем bid ($q_{-1}$) по бинам дисбаланса, оценённые на непересекающихся полугодовых окнах (PFE, $n=1$).

Чтобы понять, отражают ли оценённые параметры стабильные микроструктурные свойства, а не артефакты конкретного выборочного периода, мы переоцениваем модель на четырёх непересекающихся полугодовых окнах (2024 H1, 2024 H2, 2025 H1, 2025 H2) и сравниваем результаты.

Рисунок 19 показывает вероятности событий на лучшем bid как функцию дисбаланса для каждого окна. Кривые практически неразличимы по всем четырём периодам, подтверждая, что условная структура событий — стабильное свойство рынка.

Рисунок 20
Рисунок 20. Среднее межсобытийное время $E[\Delta t \mid \mathrm{Imb}, n=1]$ по бинам дисбаланса, оценённое на непересекающихся полугодовых окнах (PFE).

Межсобытийные времена (рисунок 20) сохраняют форму — активность монотонно растёт с величиной дисбаланса, — но уровень слегка сдвигается: более поздние окна демонстрируют несколько большие времена на экстремальных дисбалансах. Это согласуется с изменяющейся во времени общей рыночной активностью, а не с нестабильностью модели: структура параметров стабильна, а их масштаб следует за рыночными условиями.

Приложение B. Эффект суммарного объёма в книге

Мы исследуем, улучшает ли модель обогащение проекции состояния суммарным объёмом $\ell = q_{-1} + q_1$. Мы дискретизируем $\ell$ в пять бинов по эмпирическим квантилям и сравниваем вероятности событий, число наблюдений и межсобытийные времена по уровням.

Рисунок 21 показывает вероятности событий на лучшем bid со стратификацией по $\ell$. Кривые довольно схожи на всех уровнях: условное распределение событий зависит в первую очередь от дисбаланса, а не от абсолютного размера книги.

Рисунок 21
Рисунок 21. Вероятности событий на лучшем bid ($q_{-1}$) по бинам дисбаланса, стратифицированные по суммарному уровню очередей $\ell$ (PFE, $n=1$). Кривые довольно схожи, что говорит: $\ell$ добавляет мало предсказательной силы сверх одного дисбаланса.

Рисунок 22 показывает число наблюдений на бин дисбаланса для каждого уровня $\ell$. Хотя общая форма сохраняется, счётчики размываются по пяти бинам, и, в частности, бин 0 становится довольно разреженным при больших $\ell$.

Рисунок 22
Рисунок 22. Слева: число наблюдений на бин дисбаланса, стратифицированное по суммарному уровню очередей $\ell$ (PFE, $n=1$). Справа: среднее межсобытийное время по бинам дисбаланса, стратифицированное по $\ell$. Кривые в основном перекрываются, подтверждая, что $\ell$ добавляет мало сверх одного дисбаланса.

Приложение C. Статистики валидации базовой модели для INTC, VZ и T

Рисунок 23
Рисунок 23. Статистики валидации базовой модели. Эмпирические данные (синий) против QR-симуляции (зелёный/оранжевый) для INTC.
Рисунок 24
Рисунок 24. Статистики валидации базовой модели. Эмпирические данные (синий) против QR-симуляции (зелёный/оранжевый) для VZ.
Рисунок 25
Рисунок 25. Статистики валидации базовой модели. Эмпирические данные (синий) против QR-симуляции (зелёный/оранжевый) для T.

Приложение D. Параметры ядра

Мы аппроксимируем целевое ядро $G(t) = (1 + t/\tau)^{-\beta}$ суммой $K = 12$ экспонент с геометрически расположенными периодами полураспада:

\[ G(t) \approx \sum_{i=1}^{K} w_i\, e^{-\lambda_i t}, \qquad \lambda_i = \frac{\log 2}{h_i}, \]

где периоды полураспада $h_i$ расположены логарифмически от 0.01 с до 1000 с. Веса $w_i \ge 0$ находятся неотрицательным методом наименьших квадратов: мы решаем

\[ \min_{w \ge 0} \|Xw - y\|^2, \]

где $y_j = G(t_j)$ и $X_{ji} = e^{-\lambda_i t_j}$ на логарифмической временной сетке $\{t_j\}$. Отрицательные веса обрезаются до нуля. Ключевое вычислительное преимущество этого представления в том, что каждая компонента $\phi_t^{(i)} = \sum_{k:\, t_k < t} w_i\, e^{-\lambda_i (t - t_k)}\, \varepsilon_k \sqrt{V_k}$ удовлетворяет простой рекурсии с обновлением за $O(1)$ на событие, так что полная стоимость поддержания $\phi_t$ — $O(K)$ на событие, независимо от числа прошлых сделок.

Таблица 1 приводит подогнанные веса для $\tau = 50$ с и $\beta = 1.5$. Большинство компонент получают нулевой вес; основная масса ядра концентрируется на периодах полураспада 15 с и 43 с с умеренным хвостовым вкладом вплоть до 1000 с.

Таблица 1. Веса ядра из суммы экспонент для $\tau = 50$ с, $\beta = 1.5$, $K = 12$. Компоненты 1, 3, 5, 6 получают нулевой вес. Основная масса сидит на периодах полураспада 15 с и 43 с.
$i$123456789101112
$h_i$ (с)0.0100.0290.0810.2310.6571.8745.3315.243.31233511000
$w_i$0$1.9{\times}10^{-4}$0$6.5{\times}10^{-4}$000.0390.3980.3940.1240.0360.009

Множитель импакта $m = 0.035$ был откалиброван бинарным поиском по 50 000 симулированных метазаявок (10% часового объёма, TWAP на 10 мин, каждая дочерняя заявка размера 2, наблюдение 60 мин).2

Приложение E. Калибровка импакта максимальным правдоподобием

Альтернатива калибровке через симуляции из раздела 4 — считать $\beta$ свободным параметром и подгонять $(\tau, \beta, m)$ совместно методом максимального правдоподобия прямо по наблюдаемым данным о сделках. Ядро $G(t) = (1 + t/\tau)^{-\beta}$ со свободным $\beta > 0$ аппроксимируется суммой экспонент, как описано в приложении D.

Правдоподобие. Смещение $b_n = m\, \phi_{t_n}$ модифицирует базовые вероятности событий на каждом шаге, как в (2). Модифицированная вероятность события $e_n$ в состоянии $\Phi_n$ равна

\[ \tilde{p}_{e_n} = \frac{p_{e_n}^0(\Phi_n) \cdot f_{e_n}(b_n)}{Z_n(b_n)} \]

где $f_{e_n}(b_n) = e^{b_n}$, если $e_n$ — bid-сделка и $b_n > 0$; $f_{e_n}(b_n) = e^{-b_n}$, если $e_n$ — ask-сделка и $b_n < 0$; иначе $f_{e_n}(b_n) = 1$. Нормировка:

\[ Z_n(b_n) = P_{\mathrm{bid}}(\Phi_n)\, e^{[b_n]^+} + P_{\mathrm{ask}}(\Phi_n)\, e^{[-b_n]^+} + P_{\mathrm{rest}}(\Phi_n) \]

где $P_{\mathrm{bid}}$, $P_{\mathrm{ask}}$, $P_{\mathrm{rest}}$ — суммарные базовые вероятности bid-сделок, ask-сделок и всех прочих событий в состоянии $\Phi_n$. Поскольку $\log p_{e_n}^0$ не зависит от $(\tau, \beta, m)$, мы максимизируем редуцированное лог-правдоподобие:

\[ L^*(\tau, \beta, m) = \sum_{n=1}^{N} \Big( \log f_{e_n}(b_n) - \log Z_n(b_n) \Big). \]

Нормировочный член $Z_n > 1$ при любом $b_n \ne 0$ штрафует чрезмерное смещение и гарантирует конечный оптимум.

Оптимизация. Для фиксированных $(\tau, \beta)$ веса ядра $\{w_i\}$ вычисляются через NNLS, а $\phi_{t_n}$ обновляется рекурсивно за $O(K)$ на событие. Профильное правдоподобие $\max_m L^*(\tau, \beta, m)$ затем вычисляется на грубой сетке по $(\tau, \beta)$ с одномерной оптимизацией по $m$ в каждой точке сетки.

Результаты. Рисунок 26a (слева) показывает поверхность отрицательного лог-правдоподобия по $(\tau, \beta)$ с испрофилированным $m$. У поверхности есть чёткий, хорошо идентифицируемый минимум (красная звезда), подтверждающий, что данные информативны о форме ядра. Рисунок 26b (справа) сравнивает ММП-ядро с референсным ядром из раздела 4. Оба имеют одинаковую качественную форму — быстрое начальное затухание со степенным хвостом, — но ММП-ядро затухает медленнее в первые несколько минут, отражая более долгую память о прошлом потоке заявок.

Рисунок 26
Рисунок 26. Результаты калибровки импакта максимальным правдоподобием. (a) Поверхность отрицательного лог-правдоподобия по $(\tau, \beta)$ с испрофилированным $m$. (b) Референсное ядро (синее, $\tau = 50$ с, $\beta = 1.5$) против ММП-ядра (зелёное).

Приложение F. Гауссовская смесь для межсобытийных времён

Эмпирическое распределение $\log_{10} \Delta t$ в принципе можно использовать напрямую как справочную таблицу. Мы вместо этого выбираем параметрическую подгонку, поскольку распределение демонстрирует визуально яркую мультимодальную структуру в шкале $\log_{10}$, хорошо захватываемую гауссовской смесью. Этот выбор не принципиален для подхода — эмпирическое распределение работало бы так же хорошо, — но он даёт гладкое, компактное представление и упрощает сэмплирование.

Мы моделируем условное распределение межсобытийных времён в шкале $\log_{10}$ как смесь гауссиан:

\[ \log_{10} \Delta t \mid \Phi, e \;\sim\; \sum_{j=1}^{k} \pi_j\, \mathcal{N}(\mu_j, \sigma_j^2) \]

где параметры $(\pi_j, \mu_j, \sigma_j^2)$ оцениваются методом максимального правдоподобия через EM-алгоритм независимо для каждой ячейки $(\Phi(\mathrm{LOB}), e)$. Рисунок 27 показывает примеры подогнанных смесей поверх эмпирических распределений; подгонка точна для широкого диапазона бинов дисбаланса и типов событий.

Рисунок 27
Рисунок 27. Слева: примеры подогнанной пятикомпонентной GMM (пунктир) поверх эмпирического распределения $\log_{10} \Delta t$ (серый) для четырёх ячеек $(\Phi, e)$. Справа: агрегированный $\Delta \mathrm{BIC}(k) = \mathrm{BIC}(k) - \mathrm{BIC}(1)$, просуммированный по всем ячейкам $(\Phi, e)$. Излом на $k=5$ мотивирует наш выбор пяти компонент смеси.

Для выбора числа компонент $k$ мы используем байесовский информационный критерий (BIC), балансирующий качество подгонки и сложность модели штрафом за число параметров. Мы суммируем BIC по всем ячейкам $(\Phi, e)$ и сравниваем с однокомпонентной базой (рисунок 27, справа). Агрегированный $\Delta \mathrm{BIC}$ резко убывает до $k = 5$ и затем выполаживается, поэтому мы глобально фиксируем $k = 5$.

Приложение G. Структура биржевой латентности по тикерам

Рисунок 28 показывает распределение межсобытийных времён с увеличением моды латентности для INTC, VZ и T. Мода на $\log_{10}(\Delta t) \approx 4.47$ устойчива по всем тикерам, подтверждая, что она отражает латентность уровня биржи, а не специфичную для актива динамику.

Рисунок 28
Рисунок 28. Распределение межсобытийных времён с увеличением моды латентности для INTC (слева), VZ (в центре) и T (справа).

Рисунок 29 показывает распределение дисбаланса перед сделками с разбивкой по межсобытийному времени для INTC, VZ и T. Как и у PFE, быстрые события ($\Delta t \approx \delta$) сконцентрированы на экстремальных дисбалансах, поддерживая интерпретацию через гонки латентности.

Рисунок 29
Рисунок 29. Дисбаланс перед сделками: контрольные против быстрых событий для INTC (слева), VZ (в центре) и T (справа).

Сноски

  1. Код доступен на GitHub. — Прим. авторов.
  2. Так в оригинале: в разделе 4 указано $m = 0.036$ и 100 000 траекторий, в приложении D — $m = 0.035$ и 50 000 метазаявок. — Прим. пер.

Оригинал статьи: Patrick Noble, Mathieu Rosenbaum, Saad Souilmi, «Bridging the Reality Gap in Limit Order Book Simulation», arXiv:2603.24137