Управление с прогнозирующими моделями для исполнения сделок

8/10

Томас П. Маколифф, Сэмюэл Лью, Ючао Ли, Андрей Ушенин, Чиханг Ван, Александрос Тасос, Джек Пирс, Димитрис Тасулис, Димитри П. Берцекас, Теодорос Цагарис · Bayforest Technologies, London; Arizona State University; MIT · 1 апреля 2026

Оригинал: McAuliffe, T. P. et al. «Model Predictive Control For Trade Execution», 2026 — arxiv.org/abs/2603.28898 (PDF).

Рисунки воспроизведены из оригинальной публикации. Оригинал распространяется по лицензии CC BY-NC-ND 4.0; перевод выполнен в ознакомительных целях с указанием источника.

Аннотация

Мы рассматриваем задачу исполнения крупных клиентских заявок на рынках непрерывного двойного аукциона при ограничениях по времени и ликвидности. Мы предлагаем каркас управления с прогнозирующими моделями (model predictive control, MPC), балансирующий три конкурирующие цели: завершение заявки, рыночное воздействие и издержки упущенной возможности. Наш алгоритм ведётся торговым расписанием (таким как средневзвешенная по времени цена, TWAP, или средневзвешенная по объёму цена, VWAP), но допускает отклонения от него ради снижения ожидаемых издержек исполнения — с должным учётом риска.

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

На шести месяцах данных NASDAQ «level 3» и симулированных заявках мы показываем, что наш MPC-подход сокращает недобор относительно расписания (schedule shortfall) примерно на 40–50% по сравнению с бенчмарками, пересекающими спред, и достигает значимого снижения проскальзывания. Более того, обогащение базовой политики предиктивной информацией о цене дополнительно улучшает результат, подчёркивая гибкость каркаса для интеграции с прогнозными компонентами.

1. Введение

Мы рассматриваем проектирование алгоритма исполнения клиентской заявки на рынке непрерывного двойного аукциона. Это торговый механизм, в котором покупатели и продавцы одновременно подают биды и офферы, а транзакции происходят всякий раз, когда биды и офферы «маркетабельны» (когда бид покупателя равен аску продавца или превышает его). Это доминирующая структура современных бирж и торговых платформ.

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

(1) Одна возможность — послать в рынок рыночную заявку на весь объём. Это значит, что мы немедленно исполнимся по лучшей предложенной цене. При недостатке объёма по лучшей котировке заявка «прометает книгу», исполняясь по частям на всё более плохих ценовых уровнях (для покупки — на всё более высоких асках). Книга затем восполняется по мере того, как другие участники и маркетмейкеры перекотируются, но сильный спрос порождает ценовое воздействие. Заявка завершается почти мгновенно (при достаточном доступном объёме), но ценой максимального рыночного воздействия и средней цены исполнения, существенно худшей цены прибытия из-за прометания.

(2) Противоположная крайность — нарезать клиентскую заявку на крошечные кусочки и выставлять сильно пассивные лимитные заявки (например, предлагать купить по текущему биду или чуть ниже) на протяжении всего окна. Тогда рыночное ценовое воздействие мало, а цена исполнения обычно следует за среднерыночной. Однако риск незавершения высок: заявки могут так и не исполниться, позиция в очереди может теряться из-за отмен и перекотировок, а благоприятные движения цены могут остаться неиспользованными.

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

1.1. Обзор текущих практик

В широком смысле самый распространённый в индустрии подход к исполнению нацелен на минимизацию отклонения от бенчмарка средневзвешенной по объёму цены (VWAP), введённого Berkowitz et al. [1]. На практике такие алгоритмы следуют торговому расписанию, отслеживающему суммарный исполненный объём рынка за торговый день.

Внутридневной профиль объёма имеет характерную U-образную форму: торговая активность максимальна на открытии и закрытии рынка [2]. Эта стратегия согласуется с рыночной интуицией: исполнение большего объёма при обильной ликвидности смягчает рыночное воздействие (которое, как известно, масштабируется с долей участия) [3]. Исполняющие брокеры и электронные торговые платформы реализуют вариации этого VWAP-подхода [4, 5, 6].

Bertsimas и Lo [7] сформулировали задачу оптимального исполнения как задачу динамического программирования (ДП), минимизирующую издержки рыночного воздействия. Для линейной модели импакта они показали, что решением является стратегия средневзвешенной по времени цены (TWAP) — теперь стандартный бейзлайн у практиков. Almgren и Chriss [8] расширили этот каркас, введя формулировку среднее–дисперсия, штрафующую неопределённость издержек. По аналогии с современной портфельной теорией они вывели эффективную границу траекторий исполнения, минимизирующих проскальзывание от цены прибытия при заданном уровне риска. Обе формулировки определяют статическое расписание до начала торговли — на основе моделируемых цены, динамики импакта и заданного параметра неприятия риска.

Cartea и Jaimungal [9] развили эти модели, допустив смесь рыночных и лимитных заявок. Их алгоритм исполняется пассивно, когда идёт впереди расписания, зарабатывая тем самым часть спреда, и прибегает к рыночным заявкам, чтобы догнать, когда отстаёт. Эта структура вводит онлайновую, основанную на правилах компоненту решения, наводя мост между теоретическими моделями и практической логикой исполнения.

Busseti и Boyd [10] изучили оптимальное исполнение под VWAP-бенчмарк для брокера с неприятием риска. Они моделируют проскальзывание как цель среднее–дисперсия с квадратичными транзакционными издержками и предлагают как статическую стратегию исполнения, вычисляемую до торговли, так и динамическую, адаптирующуюся к информации об объёмах, раскрывающейся в течение дня. Динамический метод встраивает задачу в линейно-квадратичный каркас стохастического управления и применяет ДП для работы с неопределённостью суммарного дневного рыночного объёма. На реальных данных NYSE и логнормальной модели внутридневных объёмов они показывают, что динамическая стратегия сокращает и отклонение от VWAP, и издержки исполнения по сравнению со стандартным статическим решением.

Обучение с подкреплением (RL) — естественный каркас для моделирования онлайнового последовательного принятия решений в условиях неопределённости. Значительный корпус работ исследовал RL-стратегии исполнения [11, 12, 13]. Nevmyvaka et al. [11] разработали одну из первых эмпирических RL-систем, обученных непосредственно на данных лимитного стакана NASDAQ. Их агент управляет агрессивностью заявки $u_t$: выставляется пассивно при $u_t < 0$ и пересекает спред при $u_t > 0$. Hendricks и Wilcox [14] предложили формулировку, отображающую пространство действий в долю расписания Алмгрена–Крисса, исполняемую в каждом интервале. Интуиция: превышение расписания может быть выгодным, когда объём высок, а спреды узки. Их подход использует Q-обучение для динамической подстройки.

Moallemi и Wang [12] сосредоточились на оптимизации дочерних заявок, моделируя текущую стадийную стоимость вокруг краткосрочных прогнозов ценовой траектории. Они рассмотрели несколько приближений: (1) прямой прогноз суммы ценовых доходностей, (2) вариант обучения на временных разностях (TD), эксплуатирующий промежуточные доходности, и (3) подход через стоимость продолжения, оценивающий выгоду отложенного исполнения. Для (2) и (3) применялись двойные глубокие Q-сети (DDQN).

Li et al. [13] предложили разделение задач по трём уровням: (1) макроуровневая оценка дневных профилей объёма, (2) метауровневый выбор промежуточных количеств для данного транша родительской заявки и (3) микроструктурная подача отдельных дочерних заявок. Такое разделение задач, часто называемое иерархическим обучением с подкреплением [15, 16], обычно улучшает масштабируемость и интерпретируемость.

Есть интерес и к применению методов управления с прогнозирующими моделями (MPC) для исполнения сделок и оптимизации портфеля. Например, Clinet et al. [17] предложили MPC-метод, моделируя задачу исполнения линейным уравнением состояния, квадратичной стоимостью и дополнительными ограничениями положительности. Plessen и Bemporad [18] исследовали производительность нескольких MPC-методов для торговли акциями в предположении пропорциональных транзакционных издержек. Другие родственные MPC-методы можно найти в ссылках, цитируемых в этих работах. Отметим, что MPC тесно связан с RL. Фактически некоторые из самых надёжных RL-методов можно рассматривать как форму MPC; см. [19], [20].

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

1.2. Краткое описание нашего подхода

Наша работа нацелена на построение политики размещения заявок в каждый из $T$ временных периодов. Она балансирует высокую долю завершения, малые ожидаемое среднее и дисперсию торговых издержек и относительно малое отклонение от расписания, такого как VWAP. В каждый временной период политика подаёт несколько заявок по разным ценам на основе MPC-оптимизации. Она использует аппроксимацию стоимости будущих стадий и накладывает ограничения на отклонение от расписания. Детальная математическая формулировка будет дана позже. Оптимизация очень быстра и позволяет одновременно размещать большое число заявок на разных ценовых уровнях. Наш подход учитывает стохастические неопределённости относительно исполнения размещённых заявок в текущий момент и относительно рыночной цены в будущие моменты.

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

  1. Управляемость данными. Мы не хотим делать много предположений о рыночной динамике, предпочитая измерять и реагировать онлайн. Подобно Hendricks и Wilcox [14] и другим, мы должны встраивать в систему как можно больше свежей информации о состоянии рынка для улучшения онлайновых решений. Различные компоненты нашего каркаса естественно поддаются обучению на данных.
  2. Быстрые времена решения. В живой торговой среде мы управляем сотнями–тысячами одновременных заявок. Если каждое внутридневное решение требует многих миллисекунд, информация о состоянии будет сильно устаревшей к моменту фактического действия.
  3. Хорошо разделённые ответственности. Подобно Li et al. [13], мы считаем, что устойчивая система должна состоять из сервисов с единственной ответственностью и чётко определёнными ключевыми показателями. Такое разделение обеспечивает строгое тестирование, изолированное улучшение и интроспекцию отдельных компонент, а также лучшее распараллеливание между исследователями и разработчиками.
  4. Богатое пространство действий. Литература сосредоточена исключительно на пространствах действий из простых лимитных и рыночных заявок (взаимодействующих с симулированной биржей); самые продвинутые используют данные заявок «level 3» (L3) для генерации исполнений. На практике существует огромное разнообразие типов и параметризаций заявок, брокерских алгоритмов, бирж и альтернативных торговых систем, доступных как источники ликвидности. Мы хотим полностью учесть эти возможности в реализованном алгоритме.

2. Постановка задачи и методология MPC

В этом разделе мы даём высокоуровневое описание алгоритмического каркаса MPC в применении к нашей задаче. Он включает стохастическую систему в дискретном времени и последовательное принятие решений на протяжении $T$ временных периодов (см. учебник Берцекаса [20] и цитируемые там источники).

Обозначая время через $t$, система включает состояние (обозначаемое $x_t$2), решение/управление (обозначаемое $u_t$), случайную величину, моделирующую неопределённость (обозначаемую $w_t$), и функцию $f_t$, управляющую эволюцией состояния системы:

\[ x_{t+1} = f_t(x_t, u_t, w_t), \qquad t = 0, 1, \ldots, T-1. \]

Управление $u_t$ выбирается из заданного множества ограничений $U_t(x_t)$, зависящего от состояния $x_t$. Распределение вероятностей $w_t$ задано и может зависеть от $(x_t, u_t)$. Переход из $x_t$ в $x_{t+1}$ несёт стоимость $g_t(x_t, u_t, w_t)$, и есть дополнительная стоимость $g_T(x_T)$ в терминальный момент $T$, учитывающая терминальное состояние $x_T$.

Мы стремимся минимизировать ожидаемое значение полной стоимости

\[ g_T(x_T) + \sum_{t=0}^{T-1} g_t(x_t, u_t, w_t) \]

подходящим выбором каждого $u_t \in U_t(x_t)$ как функции $x_t$.

2.1. Точный алгоритм ДП

Оптимальное решение в принципе можно найти алгоритмом ДП. Точная версия ДП вычисляет для всех $x_t$ и $t$ скаляр $J_t^*(x_t)$ — оптимальную стоимость, начиная из состояния $x_t$ и до конца горизонта $T$. Тогда оптимальное решение в момент $t$ и состоянии $x_t$ получается из минимизации

\[ u_t^* \in \operatorname*{argmin}_{u_t \in U_t(x_t)} E\Big\{ g_t(x_t, u_t, w_t) + J_{t+1}^*\big(f_t(x_t, u_t, w_t)\big) \Big\}, \tag{2.1}\]

где $E\{\cdot\}$ обозначает ожидаемое значение по распределению вероятностей $w_t$.

Это кодирует классический принцип ДП: в каждый момент $t$ следует минимизировать сумму стоимости в текущий момент $t$ и будущих стоимостей, предполагая, что в будущие моменты $t+1, \ldots, T-1$ мы будем принимать оптимальные решения.

2.2. Приближённый алгоритм ДП

Поскольку вычисление оптимальных функций стоимости $J_t^*$ для нашей задачи неподъёмно, приближённое ДП/RL заменяет $J_{t+1}^*$ приближением $\tilde{J}_{t+1}$ в (2.1) и вычисляет приближённо оптимальное решение $\tilde{u}_t$ согласно

\[ \tilde{u}_t \in \operatorname*{argmin}_{u_t \in U_t(x_t)} E\Big\{ g_t(x_t, u_t, w_t) + \tilde{J}_{t+1}\big(f_t(x_t, u_t, w_t)\big) \Big\}. \tag{2.2}\]

Это метод MPC с одношаговой lookahead-минимизацией. [Многошаговая версия MPC включает минимизацию стоимости нескольких стадий, скажем $k$, с последующим $\tilde{J}_{t+k}(x_{t+k})$. Мы не будем рассматривать её здесь, хотя это интересная возможность для будущей работы.]

Метод также называют аппроксимацией в пространстве значений; это один из самых эффективных и надёжных RL-методов. Естественно, вычисление $\tilde{J}_{t+1}$ — важный вопрос. В нашем случае оно будет выполняться формой алгоритма роллаута (rollout), при котором $\tilde{J}_{t+1}$ аппроксимирует функцию стоимости, соответствующую некоторой политике, начиная с момента $t+1$.

3. Модель исполнения сделок

Теперь опишем наш MPC-метод (2.2) в применении к исполнению сделок. В каждый момент $t$ он решает задачу квадратичного программирования вида:

\[ \min_{u_t \in U_t(x_t)} E \begin{Bmatrix} \text{торговые издержки текущей стадии} \\ {} + \text{штраф за отклонение от расписания} \\ {} + \text{аппроксимация будущей стоимости} \end{Bmatrix} \]

Первый и второй члены соответствуют $g_t$ из (2.2), а третий — $\tilde{J}_{t+1}$.

Для простоты в этом разделе предположим равномерную дискретизацию времени: горизонт делится на $T$ равноотстоящих шагов, а заявки подаются, исполняются и отменяются в моменты $t = 0, 1, \ldots, T-1$. Однако наша MPC-методология применима и к более общему случаю, когда длительность заявки может быть больше или меньше одной единицы. Теоретически это не составляет большой трудности и делается через более сложное определение состояния $x_t$, дополнительно кодирующее бэклог заявок, не обработанных к концу периода; см. [20, раздел 1.6]. Действительно, наша реализация, описанная в разделе 4, может быть модифицирована для учёта заявок переменной длительности.

В обозначениях, вводимых ниже, и при предположении равномерной дискретизации приведённая минимизация принимает вид

\[ \min_{u_t \in U_t(x_t)} \underbrace{(c_t \circ \pi_t)' u_t}_{\text{торговые издержки}} + \underbrace{\gamma\, (q_t + \pi_t' u_t - s_{t+1})^2}_{\text{отклонение от расписания}} + \underbrace{\xi_t\, (Q - q_t - \pi_t' u_t)}_{\text{будущая стоимость}} \tag{3.1}\]

где $\circ$ обозначает покомпонентное произведение векторов, а штрих — транспонирование. Наши обозначения:

В привязке к MPC-уравнению (2.2) состояние $x_t$ состоит из $q_t$ вместе с рыночным состоянием (лимитным стаканом) в момент $t$. Управление — $u_t$, как определено выше. Множество ограничений $U_t(x_t)$ задаётся рыночными и риск-условиями в текущем состоянии (см. далее раздел 4.1.2). Вектор вероятностей $\pi_t$ кодирует неопределённость и надлежащим образом оценивается в нашей реализации (см. раздел 4.1.3).

Отклонение от расписания в момент $t+1$ — случайная величина

\[ \epsilon_{t+1} = q_{t+1} - s_{t+1}. \]

Её среднее,

\[ \hat{m}_t = q_t + \pi_t' u_t - s_{t+1}, \]

входит в член штрафа за отклонение от расписания в минимизации (3.1).

4. Реализация модели

Теперь приведём детали реализации нашей MPC-системы исполнения. В соответствии с требованиями раздела 1.2 компоненты нашей реализации образуют модульную инфраструктуру — управляемую данными, быструю и гибкую. Вместе они решают задачу оптимизации (3.1) на каждом шаге $t$.

В разделе 1.2 мы указали требование, чтобы алгоритм полностью эксплуатировал множественные источники ликвидности, доступные в живой торговой среде. Каждый элемент вектора управления $u_t$ соответствует количеству, выделенному одному из $d$ заранее заданных шаблонов заявок. Эти шаблоны частично параметризованы в том смысле, что все атрибуты заявки, кроме количества, фиксированы на момент оптимизации, а размер заявки определяется оптимизатором.

Конкретно, в момент $t$ мы строим вектор из $d$ кандидатных заявок $o_t$, где $i$-я компонента $u_{i,t}$ вектора управления $u_t$ задаёт количество, выделенное соответствующему шаблону $o_{i,t}$. Каждая кандидатная заявка определяется как

\[ o_{i,t} = (p_i, \mathrm{venue}_i, \mathrm{type}_i, \ldots), \]

где $p_i$ — цена заявки, длительность заявки — один временной шаг, а остальные поля задают целевую площадку (NASDAQ, NYSE, IEX и т.д.), тип заявки (лимитная, рыночная, immediate-or-cancel и т.д.) и любые другие требуемые параметры, кроме количества.

4.1. Компоненты системы

Задача MPC в (3.1) — простая программа с квадратичной стоимостью и ограничениями, входы которой поставляются несколькими ключевыми элементами инфраструктуры:

  1. Функция-планировщик $s_{t+1} = F_s(t)$. Эта компонента выполняет функцию, аналогичную «макротрейдеру» Li et al. [13].
  2. Модель кандидатных заявок $o_t = F_o(x_t, t)$. Генерирует набор кандидатных заявок в момент $t$.
  3. Модель вероятности исполнения $\pi_t = F_\pi(x_t, o_t)$. Например, у рыночной заявки вероятность исполнения равна 1.0.
  4. Модель ковариации исполнений $\Sigma_t = F_\Sigma(x_t, o_t)$; см. раздел 4.1.3.
  5. Ограничения управления $U_t(x_t) = F_u(\Sigma_t, x_t)$. Серия ограничений, поддерживаемых на протяжении всего процесса управления заявкой.
  6. Модель торговых издержек $c_t = F_c(x_t, o_t)$. Моделирует торговые издержки на акцию для кандидатной заявки.
  7. Будущая стоимость на акцию $\xi_t = F_\xi(x_t)$. Оценивает удельную стоимость остаточного количества, следуя простой базовой политике.

4.1.1. Планировщик

Компонента-планировщик может выбирать $s_t$ статически или в ответ на рыночные условия. В нашей начальной реализации мы держим её статической, следуя VWAP-профилю, предвычисляемому до торговой сессии. VWAP-реализация $F_s$ задаётся как

\[ F_s(t) = Q\, \frac{\hat{\nu}_t}{\hat{\nu}_T}, \]

где $\hat{\nu}_t$ — прогноз накопленного объёма к моменту $t$. TWAP-реализация, напротив, задаётся как

\[ F_s(t) = Q\, \frac{t}{T}. \]

Альтернативно можно использовать профиль Алмгрена–Крисса или обучить модель предсказывать подходящее $s_t$ по входному состоянию $x_t$, как Hendricks и Wilcox [14]. В таком случае $F_s$ становится функцией $x_t$ и $t$.

4.1.2. Ограничения

На каждом шаге компонента $F_u(\Sigma_t, x_t)$ выбирает набор ограничений $U_t(x_t)$ для MPC-оптимизации.

  1. $u_t \ge 0$ — все количества положительны; нам нельзя продавать, если родительская заявка на покупку, и наоборот.
  2. $u_t \le \kappa$ — индивидуальный максимальный размер заявки $\kappa$ (скажем, 50% от $Q$).
  3. $\mathbf{1}' u_t + q_t \le s_{t+1} + \rho_t^{\mathrm{upper}}$ — верхняя граница «трубы» (может начинаться, скажем, с 20% количества заявки и убывать до 0 при $t = T$).
  4. $\mathbf{1}' u_t^m + q_t \ge s_{t+1} - \rho_t^{\mathrm{lower}}$ — нижняя граница «трубы» (заставит оптимизацию выбирать более дорогие заявки с более высокой вероятностью исполнения, если мы слишком отстанем от расписания). Вектор $u_t^m$ — срез $u_t$, соответствующий рыночным заявкам (с гарантированным исполнением).
  5. $\hat{v}_t = u_t' \Sigma_t u_t \le \beta$ — ограничивает неопределённость, которую мы готовы допустить вокруг целевого расписания. Здесь $\beta$ — скалярный гиперпараметр, а $\Sigma_t$ — ковариация исполнений, то есть ковариация вектора заявок $u_t$; см. следующий раздел.

4.1.3. Модели вероятности и ковариации исполнений

Системы $F_\pi$ и $F_\Sigma$ идут рука об руку, но в принципе могут моделироваться раздельно. Способов моделировать вероятность исполнения множество — например, Maglaras et al. [21] используют рекуррентную нейросеть (RNN) и микроструктуру лимитного стакана.

Для иллюстрации модели ковариации исполнений рассмотрим случай двух лимитных заявок. Пусть в книге два уровня: один ближе к средней цене (уровень 1) и один глубже (уровень 2). Пусть $z_1$ и $z_2$ — зависимые бернуллиевские случайные величины, соответствующие тому, исполнены ли (полностью) уровни 1 и 2, с вероятностями

\[ P\{z_1 = 1\} = \pi_1, \qquad P\{z_2 = 1\} = \pi_2. \]

Ковариация между ними:

\[ \Sigma_{12} = \mathrm{Cov}(z_1, z_2) = E\{z_1 z_2\} - E\{z_1\} \cdot E\{z_2\}, \]

где $\mathrm{Cov}(z_1, z_2)$ — ковариация случайных величин $z_1$ и $z_2$. Матрица вероятностей совместных исходов:

$z_1 = 0$$z_1 = 1$
$z_2 = 0$$1 - \pi_1$$\pi_1 - \pi_2$
$z_2 = 1$$0$$\pi_2$

Заметим, что элементы суммируются в 1. Асимметрия объясняется тем, что невозможно исполнить более глубокий уровень, не исполнив и мелкий. Из этой матрицы

\[ E\{z_1 z_2\} = 0 \cdot (1 - \pi_1) + 0 \cdot 0 + 0 \cdot (\pi_1 - \pi_2) + 1 \cdot \pi_2 = \pi_2, \]

так что

\[ \mathrm{Cov}(z_1, z_2) = E\{z_1 z_2\} - E\{z_1\} \cdot E\{z_2\} = \pi_2 - \pi_1 \pi_2. \]

Обобщая на произвольные уровни $i$ и $j$: совместная вероятность исполнения обоих равна вероятности исполнения более глубокого уровня, то есть

\[ E\{z_i z_j\} = \min\{\pi_i, \pi_j\}. \]

Поэтому модель матрицы ковариации исполнений для этих заявок:

\[ \Sigma_{ij} = \min\{\pi_i, \pi_j\} - \pi_i \pi_j, \]

которую мы можем использовать для построения $F_\Sigma$. Заметим, что на практике заявки могут исполняться частично; это простая модель для бутстрапа нашей системы. Для более сложных типов заявок (и площадок) ковариацию исполнений можно измерять эмпирически.

Более сложная модель вероятности исполнения включает обусловливание на механизм быстрой отмены. Вместо моделирования безусловной вероятности исполнения $\pi_i = P\{z_i = 1\}$ мы моделируем условную вероятность

\[ \pi_i^c = P\{z_i = 1 \mid \text{не отменена}\}, \]

где отмена инициируется отдельным модулем, отслеживающим неблагоприятные рыночные условия в реальном времени.3

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

С точки зрения моделирования эта декомпозиция выгодна, поскольку условную вероятность исполнения $\pi_i^c$ можно выучить по историческим данным, где логика быстрой отмены была активна. Полученная модель захватывает эффективную динамику исполнений, реально переживаемую торговой системой в продакшене. Подход разделяет ответственности: модель вероятности исполнения $F_\pi$ оценивает шанс исполнения при условии, что заявки остаются активными, а модуль быстрой отмены независимо управляет риском неблагоприятного отбора. Обе компоненты можно обучать и улучшать изолированно, в соответствии с требованиями модульности раздела 1.2. Все остальные компоненты не меняются.

4.1.4. Торговые издержки на акцию

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

\[ \phi\, \frac{p_i - p_t^m}{\delta_t} \]

где $\phi$ — множитель стороны ($=1$ для покупок, $-1$ для продаж). Здесь $p_i$ — цена, привязанная к $o_i$. Для рыночных заявок, пересекающих спред (и не несущих лимитной цены), она полагается равной $p_t^m + 0.5 \cdot \delta_t$, а для mid-IOC (immediate-or-cancel по средней цене) — просто $p_t^m$.

Эта форма $F_c$ измеряет заплаченную цену (в единицах спреда) относительно средней. Альтернативные функции издержек демонстрируют похожие свойства. Например, рассмотрим издержку, определённую как разность между ценой сделки и средней ценой в момент $t+1$ (в индустрии это часто называют «markout»). Обе спецификации дают издержку, растущую как функция вероятности исполнения. Эта закономерность обусловлена рыночной микроструктурой. Эвристически рассмотрим два случая: (A) нас исполнили в начале длинной стабильной очереди; (B) нас исполнили в конце очереди при схлопывании уровня. В случае (A) мы собираем половину спреда относительно средней цены на конец интервала, в случае (B) — платим её. Заявки с низкой вероятностью, глубже в книге, чаще исполняются на стабильных уровнях. Эквивалентно: очень пассивные заявки обычно несут меньшее рыночное воздействие, чем агрессивные. Учитывая сходство свойств, мы принимаем более простую функцию издержек ради скорости и интерпретируемости. Существуют и другие разумные методы ценообразования заявок: можно обучить нейросеть предсказывать проскальзывание интервального VWAP для кандидатной заявки $o_{i,t}$ или отобразить функцию издержек на традиционную модель импакта, например по Cont et al. [3]. Мы считаем это открытым исследовательским вопросом.

4.1.5. Будущая стоимость на акцию

Аппроксимация будущей стоимости полагается равной стоимости следования простой базовой политике. Скаляр $\xi_t$ кодирует ожидаемую (удельную) стоимость исполнения оставшихся акций при этой политике, выраженную в единицах спредов (в единицах, согласованных с $F_c$). Для простоты мы рассматриваем базовую политику, подающую рыночные заявки на остаточное количество, что даёт $\xi_t = 0.5$, то есть половину спреда. Этот механизм вмещает и ценовые прогнозы: если мы ожидаем движения цены против нас, можно соответственно увеличить $\xi_t$. Это обсуждается в разделе 5.5.

4.2. Оптимизация

Собирая всё вместе, мы подставляем члены в (3.1) и получаем финальную задачу квадратичного программирования, решаемую на каждом шаге $t$. Наша реализация использует быстрый конический решатель второго порядка Clarabel [22] и занимает около 1 миллисекунды при пространстве действий $d = 11$,4 что согласуется с требованием 2 раздела 1.2.

5. Эксперименты

В этом разделе мы обсуждаем производительность нашего алгоритма в симулированной среде.

5.1. Среда симуляции

Мы торгуем 1200 инструментов в день на симулированном NASDAQ. Для каждого инструмента в каждый торговый день на протяжении шести месяцев (2025-01-02 — 2025-07-02) мы управляем родительской заявкой на \$10K в течение полной сессии, чередуя покупку и продажу по дням. Это соответствует ≈170 000 родительских заявок. Для каждого инструмента мы поддерживаем полный стакан, построенный по сообщениям L3 ITCH. Дополнительно мы симулируем консервативную латентность 10 мс между подачей заявки и её взаимодействием с книгой. В нашей среде можно подавать и рыночные, и лимитные заявки. Рыночные заявки изымают ликвидность по прибытии, лимитные — присоединяются к очереди ценового уровня или создают её. Исполнение лимитной заявки симулируется, когда исполняется заявка позади нас в очереди. Если исполненное количество меньше количества нашей заявки, мы исполняемся частично, и остаток продолжает лежать в очереди.

5.2. Метрики

Мы оцениваем качество исполнения тремя взаимодополняющими ценовыми метриками, спроектированными так, чтобы изолировать разные аспекты качества исполнения. Все метрики выражены в базисных пунктах (б.п.) и нормированы так, что положительные значения соответствуют худшему исполнению и для покупок, и для продаж. Пусть:

С множителем стороны $\phi$ ($=1$ для покупок, $-1$ для продаж) определяются следующие метрики:

Проскальзывание от прибытия (б.п.):

\[ z_{\mathrm{arrival}} = 10\,000\, \frac{p_{\mathrm{fwap}} - p_0}{p_0}\, \phi \]

Измеряет, насколько наша реализованная цена исполнения ушла от цены на момент прихода заявки.

Проскальзывание от VWAP (б.п.):

\[ z_{\mathrm{vwap}} = 10\,000\, \frac{p_{\mathrm{fwap}} - p_{\mathrm{vwap}}}{p_{\mathrm{vwap}}}\, \phi \]

Сравнивает нашу цену исполнения со среднерыночной ценой за то же окно.

Недобор относительно расписания (б.п.):

\[ z_{\mathrm{schedule}} = 10\,000\, \frac{p_{\mathrm{fwap}} - p_{\mathrm{swap}}}{p_{\mathrm{swap}}}\, \phi \]

Измеряет, насколько хуже (или лучше) алгоритм отработал относительно собственного намеченного расписания.

5.3. Производительность по типам расписаний

Торговые расписания TWAP, VWAP и Алмгрена–Крисса определяются так:

Если не указано иное, все эксперименты раздела 5.3 используют одни и те же оптимизацию, решатель, гиперпараметры и набор кандидатных заявок; между TWAP, VWAP и Алмгреном–Криссом различается только планировщик $F_s$ (а значит, $s_t$). Эта общая параметризация показана в таблице 1.

Таблица 1. Базовые параметры симуляции.
ПараметрЗначение
Интервал5 минут
$\xi_t$0.5
$\rho_t^{\mathrm{upper}}$, $\rho_t^{\mathrm{lower}}$15%
$\beta$5
$\gamma$1
$d$11
$o_{t,0}$рыночная заявка
$o_{t,i}$всё более пассивные лимитные заявки, $i = 1, \ldots, 10$
$\pi_{t,0}$вероятность исполнения рыночной заявки, 1.0
$\pi_{t,i}$линейно убывает от 0.9 до 0.1, $i = 1, \ldots, 10$

5.3.1. Стоимость исполнения

Измерения проскальзывания проводятся для трёх расписаний, чтобы проиллюстрировать гибкость нашей формулировки. Мы не хотим сравнивать производительность между типами профилей. Эти структуры выбираются в живой торговле для минимизации рыночного воздействия, которое мы не симулируем. Наш выбор статических 5 б.п. для параметра Алмгрена–Крисса, например, произволен и должен уточняться по каждому инструменту.

Для каждого кандидатного профиля мы прогоняем две симуляции: одну с MPC-оптимизацией, описанной в разделе 2, и одну, пересекающую спред на каждом шаге оптимизации на запланированное количество (помечена «crossing»).

Метрики проскальзывания сведены в таблице 2, но больше внимания мы обращаем на таблицу 3, сравнивающую производительность каждого типа расписания с его бейзлайном через пересечение спреда.

Для ясности и единообразия таблиц и рисунков мы используем следующую конвенцию именования всех рассматриваемых политик исполнения:

Таблица 2. Метрики производительности (в базисных пунктах) по стратегиям. Положительные значения означают худшее исполнение и для покупок, и для продаж.
Издержки / б.п.$z_{\mathrm{arrival}}$$z_{\mathrm{schedule}}$$z_{\mathrm{vwap}}$
VWAP/MPC18.104.534.36
VWAP/Crossing19.596.756.12
TWAP/MPC16.984.715.49
TWAP/Crossing19.156.756.83
AC/MPC20.999.0312.46
AC/Crossing21.7013.2117.22
Таблица 3. Улучшения MPC-политик относительно бейзлайна с пересечением спреда для каждого типа профиля.
Улучшение / %$\Delta z_{\mathrm{arrival}}$$\Delta z_{\mathrm{schedule}}$$\Delta z_{\mathrm{vwap}}$
VWAP/MPC8.2348.8540.37
TWAP/MPC12.7743.1424.55
AC/MPC3.3746.3438.20

Результаты таблиц 2 и 3 ясно демонстрируют, что MPC-алгоритм даёт значительный прирост производительности, включая более чем 40%-е улучшение стоимости следования каждому кандидатному расписанию. Улучшения по прибытию и VWAP более разнородны: они в большей степени зависят от самих профилей относительно фактических движений рынка.

5.3.2. Точность следования расписанию

Рисунок 1 показывает плотности среднего внутридневного темпа завершения. Оптимизация поддерживает стабильную «трубу» вокруг расписания, наиболее явно для TWAP-политик. Для профилей Алмгрена–Крисса и VWAP это виднее на рисунке 2. Сводные статистики этих отклонений приведены в таблице 4, соответствующие гистограммы — на рисунке 3.

Рисунок 1
Рисунок 1. Следование расписанию для трёх кандидатных типов профилей: MPC против простого пересечения спреда. Красный соответствует более высокой плотности.
Рисунок 2
Рисунок 2. Эволюция отклонения от расписания в течение торгового дня.
Рисунок 3
Рисунок 3. Гистограммы отклонения от расписания.
Таблица 4. Сводные статистики отклонения от расписания.
$\epsilon_t$ / %СреднееСт. откл.Медиана
TWAP/MPC−0.7652.471−1.062
TWAP/Crossing−0.2710.534−0.030
AC/MPC−2.8494.807−1.459
AC/Crossing−2.7564.827−0.712
VWAP/MPC−0.5742.450−0.912
VWAP/Crossing−0.2310.545−0.024

В среднем все симуляции слегка отстают от предписанного расписания. Для crossing-симуляций это объясняется нашей симулированной латентностью. Конкретно, движения цены в направлении торговли между оптимизацией и подачей заявки могут приводить к тому, что часть рыночных заявок остаётся неисполненной, поскольку такие заявки симулируются как лимитные, поставленные по дальней котировке (far touch). В MPC-симуляциях отставание объясняется, скорее, несовершенной калибровкой вероятностей исполнения: хотя оптимизатор целится в следование расписанию в ожидании, реализованные исполнения при этой модели вероятностей склонны к недобору.

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

Рисунок 4 показывает распределение поданных количеств (значений выбранного вектора действий $u_t$) для MPC-симуляций. Значительно более высокая плотность рыночных заявок для профилей Алмгрена–Крисса представлена и в поданных, и в исполненных. Профили TWAP и VWAP демонстрируют похожее поведение, распределяя максимально возможное количество на заявки с низкой вероятностью и высокой выгодой, как ранее обсуждалось в разделе 4.1.4.

Рисунок 4
Рисунок 4. Поданные и исполненные ценовые уровни.

5.4. Выбор гиперпараметров

Гиперпараметры $\gamma$ и $\beta$ играют важную роль в управлении оптимизацией. В частности, $\gamma$ управляет силой штрафа за $|\hat{m}_t|^2$. Это мягкое ограничение: оптимизатор волен целиться в позиции выше или ниже расписания (с учётом остальных ограничений) в зависимости от значения $\xi_t$. Если исполнить больше акций на текущей стадии относительно дёшево, может быть желательно положительное ожидаемое отклонение от расписания $E\{\epsilon_{t+1}\} > 0$ (и наоборот для относительно дорогой текущей стадии).

Напротив, $\beta$ управляет объёмом «риска», который может брать оптимизатор. Более высокий $\beta$ поощряет большую концентрацию количества заявок на ценовых уровнях с низкой вероятностью, но лучшей выгодой.

Используя ту же базовую параметризацию, что и в таблице 1, и TWAP-профиль, рисунок 5 показывает распределения $\epsilon_t$, $\hat{m}_t$ и $\hat{v}_t$ по симуляциям при варьировании $\gamma$. При базовой политике пересечения спреда $\hat{m}_t$ почти всегда положительно, поскольку стоимость роллаута выше любого действия на текущей стадии. С ростом $\gamma$ плотность $\hat{m}_t$ всё сильнее кластеризуется в нуле. Это ясно показано на рисунке 6.

Рисунок 5
Рисунок 5. Гистограммы $\epsilon_t$ и целевых моментов как функция $\gamma$.
Рисунок 6
Рисунок 6. $E\{\hat{m}_t\}$ против целевого $\gamma$.

Рисунок 7 показывает отклонение от расписания $\epsilon_t$ и его целевые моменты по симуляциям при варьировании $\beta$. Замысел здесь — управлять дисперсией $\epsilon_t$, обозначаемой $\mathrm{Var}\{\epsilon_t\}$, и видно, что с ростом $\beta$ распределение $\epsilon_t$ расширяется. Для проверки калибровки нашего управления мы строим реализованную $\mathrm{Var}\{\epsilon_t\}$ как функцию $\beta$ по тем же симуляциям на рисунке 8. При больших значениях $\beta$ объём риска, который мы можем практически взять, по-видимому, ограничивается внешней «трубой» ($\rho^{\mathrm{upper}}, \rho^{\mathrm{lower}}$), но в этих симуляциях мы наблюдаем хорошую калибровку. Чтобы убедиться, что взятый риск того стоит, мы строим улучшение метрик проскальзывания (относительно бейзлайна пересечения спреда, как в таблице 3) как функцию $\beta$. Брать риск окупается: производительность монотонно улучшается по всем метрикам с ростом $\beta$ (рисунок 9). Это можно приписать возросшей плотности (исполненных) заявок с низкой вероятностью и высокой выгодой.

Рисунок 7
Рисунок 7. Гистограммы $\epsilon_t$ и целевых моментов как функция $\beta$.
Рисунок 8
Рисунок 8. $\mathrm{Var}\{\epsilon_t\}$ против целевого $\beta$. Пунктирная линия показывает идеальную калибровку.
Рисунок 9
Рисунок 9. Улучшение по метрикам проскальзывания (относительно бейзлайна пересечения спреда) при увеличении $\beta$.

5.5. Проектирование базовой политики

До сих пор мы использовали для роллаута базовую политику пересечения спреда и полагали $\xi_t = 0.5$ (полспреда). Это простой, но довольно пессимистичный выбор. Роль базовой политики — дать механизм аппроксимации $J_t^*(x_t)$. В практической торговле может существовать краткосрочный ценовой прогноз, который мы хотим учесть. Если мы предсказываем, что цена вырастет в следующие 5 минут (а мы покупаем), эту информацию можно встроить в роллаут-стоимость $\xi_t$. Базовая политика становится «пересечь спред по нашему прогнозному ценовому уровню». Это повышает стоимость остаточного количества относительно исполнения этих акций сейчас, поощряя оптимизацию опережать расписание — желательное поведение.

Чтобы продемонстрировать этот эффект, мы фиксируем остальные параметры симуляции и оптимизации и измеряем производительность базовой политики-«оракула», полагая

\[ \xi_t = \phi\, \frac{p_{\mathrm{close}} - p_t^m}{\delta_t}, \]

где $\phi$ — множитель стороны, а $p_{\mathrm{close}}$ — цена дневного закрывающего аукциона (происходящего в конце торговой сессии, после завершения нашей заявки).

Таблицы 5 и 6 демонстрируют значительное улучшение, достигаемое, когда оптимизации предоставлена будущая ценовая информация. Хотя такой подход, очевидно, нереалистичен ($p_{\mathrm{close}}$ неизвестна), наши результаты показывают, что включение точных ценовых прогнозов в базовую политику может давать значительный прирост производительности.

Таблица 5. Сравнение производительности с политикой-оракулом в роли базовой. Здесь «MPC-Oracle» обозначает MPC-политику с базовой политикой-оракулом.
Издержки / б.п.$z_{\mathrm{arrival}}$$z_{\mathrm{schedule}}$$z_{\mathrm{vwap}}$
TWAP/MPC16.984.715.49
TWAP/Crossing19.156.756.83
TWAP/MPC-Oracle7.298−5.62−5.42
Таблица 6. Улучшение относительно бейзлайна пересечения спреда для политик MPC и MPC-Oracle.
Улучшение / %$\Delta z_{\mathrm{arrival}}$$\Delta z_{\mathrm{schedule}}$$\Delta z_{\mathrm{vwap}}$
TWAP/MPC12.7743.1424.55
TWAP/MPC-Oracle162.43220.06226.06

6. Обсуждение

Наш алгоритмический MPC-каркас для исполнения сделок балансирует следование расписанию с контролируемым принятием риска. Он модулен, быстр и агностичен к выбранному расписанию исполнения. Представленные экспериментальные результаты демонстрируют значительные улучшения производительности для статической стратегии, торгующей чередующимися родительскими заявками на покупку и продажу по \$10K, по трём типам расписаний (TWAP, VWAP и Алмгрен–Крисс).

Как описано в разделе 4.1, в живой торговой среде мы можем задействовать существенно более богатое пространство действий, чем простые лимитные и рыночные заявки. Помимо прямого размещения заявок, доступен широкий спектр брокерских алгоритмов исполнения (см., например, [4, 5, 6]) и множество торговых площадок. В нашем каркасе каждая такая конфигурация заявки соответствует элементу вектора $o_t$ на момент оптимизации. Поэтому мы можем присвоить каждому кандидатному типу заявки издержку, точнее отражающую его реализованную стоимость как функцию текущего состояния рынка $x_t$. Например, пассивные лимитные заявки обычно дают более выгодную отдачу при исполнении, а следующие VWAP брокерские алгоритмы обычно работают лучше, когда цены уходят от трейдера. Эти эффекты можно выучить из данных, что позволяет использовать офлайн (или даже онлайн) обученную модель для $F_c$ (как функцию брокера, площадки, состояния и т.д.) вместо упрощённой спецификации издержек по агрессивности, применённой в наших симуляциях.

Выборы гиперпараметров $\beta$ и $\gamma$ важны, как обсуждалось в разделе 5.4, и мы наблюдаем эффективное управление средним и дисперсией отклонения от расписания. Однако отметим, что эти ограничения нужны лишь из-за нашего ограниченного lookahead: они сужают пространство поиска действий до областей, которые, как мы полагаем, хорошо отработают на полном горизонте. Лучшее приближение ожидаемой будущей стоимости — возможно, через улучшенную функцию перехода (в литературе часто называемую «моделью мира», world model) — позволило бы более дальний lookahead, давая оптимизатору полноценно оценивать последствия действий. Это, в свою очередь, снижает необходимость ограничивать поиск.

Наша формулировка также допускает расширение, в котором внешний контроллер выбирает кортеж гиперпараметров оптимизации $(\beta, \gamma, \rho_t^{\mathrm{upper}}, \rho_t^{\mathrm{lower}}, \xi_t)$ как действие, исходя из того же наблюдаемого состояния рынка $x_t$. Такой механизм позволил бы системе динамически адаптировать свой риск-профиль, беря больше риска в более спокойных рыночных условиях. Кроме того, отметим, что каркас легко расширяется на заявки с длительностью в несколько временных шагов. Мы фиксируем эти возможности здесь, а их реализацию и эмпирическую оценку оставляем для будущей работы.

7. Выводы

Мы представили MPC-каркас исполнения родительской заявки, информированного расписанием. Он свободен от какого-либо моделирования рыночной динамики, масштабируем и модулен. С помощью симуляций на NASDAQ L3 мы показали:

Литература

Приложение A. Справочник обозначений

Таблица 7. Справочник обозначений.
СимволОписание
$T$длительность родительской заявки (число временных периодов)
$t$индекс времени, $0 \le t \le T$
$x_t$состояние в момент $t$ (включает $q_t$ и рыночное состояние)
$u_t$вектор управления — количества заявок в момент $t$
$w_t$случайная величина, моделирующая неопределённость
$f_t$функция динамики системы
$g_t$функция стадийной стоимости
$J_t^*(x_t)$оптимальная стоимость-до-конца из состояния $x_t$
$\tilde{J}_{t+1}$приближённая стоимость-до-конца (роллаут-аппроксимация)
$U_t(x_t)$множество ограничений управления в момент $t$
$Q$количество родительской заявки
$q_t$исполненная позиция в момент $t$
$s_t$позиция по расписанию в момент $t$
$d$размерность пространства действий (число кандидатных заявок)
$o_{i,t}$кандидатная заявка $i$ в момент $t$
$p_i$лимитная цена кандидатной заявки $o_i$
$\pi_t$вектор вероятностей исполнения
$\Sigma_t$матрица ковариации исполнений
$c_t$вектор торговых издержек на акцию (в единицах спредов)
$\kappa$максимальный размер отдельной заявки
$\delta_t$спред bid–ask в момент $t$
$p_t^m$средняя цена в момент $t$
$p_{\mathrm{close}}$цена закрытия (будущая)
$\gamma$гиперпараметр штрафа за отклонение от расписания
$\beta$гиперпараметр ограничения дисперсии
$\xi_t$роллаут-стоимость на акцию (в единицах спредов) в момент $t$
$\psi$параметр импакта Алмгрена–Крисса
$\rho_t^{\mathrm{upper}}, \rho_t^{\mathrm{lower}}$верхняя и нижняя границы «трубы»
$\hat{\nu}_t$прогноз накопленного объёма к моменту $t$
$\epsilon_{t+1}$отклонение от расписания в момент $t+1$ ($q_{t+1} - s_{t+1}$)
$\hat{m}_t$ожидаемое отклонение от расписания, $E\{\epsilon_{t+1}\}$
$\hat{v}_t$дисперсия отклонения от расписания, $\mathrm{Var}\{\epsilon_{t+1}\}$
$p_0$цена прибытия (средняя цена при получении заявки)
$p_{\mathrm{fwap}}$средневзвешенная по исполнениям цена
$p_{\mathrm{vwap}}$рыночная средневзвешенная по объёму цена
$p_{\mathrm{swap}}$средневзвешенная по расписанию цена
$\phi$множитель стороны ($+1$ покупка, $-1$ продажа)
$z_{\mathrm{arrival}}$проскальзывание от прибытия (б.п.)
$z_{\mathrm{vwap}}$проскальзывание от VWAP (б.п.)
$z_{\mathrm{schedule}}$недобор относительно расписания (б.п.)
$F_s$функция-планировщик
$F_o$генератор кандидатных заявок
$F_u$контроллер ограничений
$F_\pi$модель вероятности исполнения
$F_\Sigma$модель ковариации исполнений
$F_c$модель торговых издержек заявки
$F_\xi$модель роллаут-стоимости

Сноски

  1. Проскальзыванием (slippage) обычно называют меру разности между ценой исполнения заявки и заданной бенчмарк-ценой. Несколько типов проскальзывания, значимых для нашей постановки, будут обсуждены позже; см. раздел 5.2. — Прим. авторов.
  2. Это состояние содержит и рыночные данные (цены, волатильность и т.д.), и данные уровня заявки (исполненное количество, расписание и т.д.). — Прим. авторов.
  3. На практике система такого типа обычно работает на программируемой логической интегральной схеме (FPGA) со сверхнизкой латентностью. — Прим. авторов.
  4. Эксперименты проводились на сервере с двумя процессорами AMD EPYC 7R13. — Прим. авторов.

Оригинал статьи: Thomas P. McAuliffe et al., «Model Predictive Control For Trade Execution», arXiv:2603.28898