Отрицательный дрейф при исполнении лимитной заявки

7.5/10

Тимоти Делиз · Department of Mathematics and Statistics, Université de Montréal · январь 2024

Оригинал: DeLise, T. «The Negative Drift of a Limit Order Fill», 2024 — arxiv.org/abs/2407.16527 (PDF).

Рисунки воспроизведены из оригинальной публикации. Оригинал распространяется по лицензии CC BY 4.0; перевод выполнен на её условиях, изменение по отношению к оригиналу — перевод на русский язык.

Аннотация

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

1. Введение

Финансовые рынки используют лимитные стаканы для сведения покупателей и продавцов, порождая данные о сделках, которые затем публикуются миру (Gould et al., 2013 [4]). Есть два базовых типа заявок: рыночная заявка и лимитная заявка. Лимитные заявки задают цену, количество и направление (покупка/продажа). Участники рынка посылают свои заявки на биржу, и биржа сводит лимитные заявки на покупку и продажу друг с другом по принципу «первым пришёл — первым обслужен». Вновь приходящие заявки сводятся с лучшей доступной ценой ранее существовавших заявок. Контрагенты лимитных заявок могут давать цену не хуже цены лимитной заявки. Пример: приходит лимитная заявка на покупку 1 лота по \$10. Она размещается и ждёт прихода встречной заявки. Мгновениями позже приходит другая заявка — на продажу 1 лота по \$10. Эти заявки сводятся, происходит сделка: они объединились и породили транзакцию. Заявки, приходящие без немедленного совпадения, помещаются в так называемый лимитный стакан (limit order book, LOB). LOB — это список всех действующих неисполненных заявок. Он организован по атрибутам заявки: цене, количеству и направлению (покупка/продажа). О заявках без немедленного совпадения говорят, что они добавляют ликвидность рынку, поскольку увеличивают объём доступных заявок. О рыночных заявках и лимитных заявках с немедленным совпадением говорят, что они изымают ликвидность.

Некоторые свойства динамики лимитных стаканов возникают естественным образом. Всегда существует заявка на продажу с наименьшей ценой — лучший ask. Аналогично, заявка на покупку с наибольшей ценой называется лучшим bid. Как следствие, не бывает стоячих заявок на покупку с ценами, равными лучшему ask или выше, и наоборот для заявок на продажу. Все сделки происходят на лучших bid и ask, поскольку те оптимальны в своих категориях покупки/продажи. Это правило возникает в рынках с лимитным стаканом само собой. Входящие рыночные заявки и изымающие ликвидность лимитные заявки сводятся с лучшими доступными заявками в стакане.

Цены заявок нельзя задавать с произвольной точностью. Цена должна указываться с дискретным шагом, называемым размером тика. Часто размер тика акций равен 0.01, то есть одному центу, но бывает и иным — например, 1/64 для цен фьючерса на 10-летние казначейские ноты США. Цены, порождаемые этой дискретизацией, называются ценовой сеткой. Базовая информация, которую мы извлекаем из снимка лимитного стакана, — количество заявок, доступных на каждой дискретной цене; см. рисунок 1, где показан снимок лимитного стакана рынка фьючерсов на 10-летние казначейские облигации.

Рисунок 1
Рисунок 1. Столбчатая диаграмма, представляющая данные LOB в произвольный момент времени 12 декабря 2023 года из нашего набора данных по фьючерсу на 10-летние казначейские облигации (TY). Данные включают 10 уровней (различных цен) выше и ниже средней цены. Все ценовые уровни выше средней цены соответствуют заявкам на продажу, и наоборот для заявок на покупку. На каждом ценовом уровне мы получаем количество — суммарное число действующих заявок, доступных в данный момент по этой цене.

Рыночные заявки задают количество и направление, но не цену. Рыночная заявка исполняется немедленно по лучшей возможной цене. Для заявки на покупку это цена лучшего ask. Её можно представлять как лимитную заявку с пустым полем цены: биржа заполняет его, сверившись с лимитным стаканом на предмет лучшей доступной цены. С исполнением рыночной заявки связана известная издержка — плата за рыночную цену. Эту издержку легко увидеть на сделке «туда-обратно» (round-trip): покупка с последующей продажей или наоборот. Если мы покупаем что-то по лучшему ask и немедленно продаём по лучшему bid, мы потеряем величину, равную одному тику, на каждый проторгованный лот. Мы купили и сразу продали — и потеряли деньги, хотя рыночные цены не изменились. В этом свете легко убедиться, что издержка проскальзывания рыночной заявки равна половине расстояния между лучшими bid и ask, то есть обычно половине тика. Эта издержка отсчитывается от средней цены. Рыночная заявка на покупку немедленно исполняется по лучшему ask, который на полтика выше средней цены. Это мы стабильно наблюдаем на реальных рынках.

Транзакционные издержки, связанные с исполнением лимитных заявок, анализировать труднее, поскольку такие заявки исполняются не сразу, а помещаются в очередь и ждут прихода встречной заявки. Мотивирующее допущение таково: раз рыночные заявки чего-то стоят, то контрагенту сделки (тому, кто поставил соответствующую лимитную заявку) рыночная заявка должна заплатить эту транзакционную издержку — полтика. Звучит логично. Лимитная заявка на лучшем bid будет исполнена — в предположении, что больше ничего не изменилось, — с результатом, эквивалентным половине тика относительно средней цены. Однако риск в том, что мы не можем решать, когда лимитная заявка исполнится, и должны ждать своей очереди в её начале. Затем наша заявка станет лучшей доступной ценой, сведётся с рыночной заявкой и породит сделку. Так что настоящий вопрос здесь: когда заявка исполнится?

Современная математика высокочастотных финансов стремилась моделировать динамику исполнений лимитных заявок, поставленных на лучший bid или ask, вероятностными распределениями по времени, например экспоненциальным (Cartea et al., 2015; Roldan Contreras and Swishchuk, 2022; Avellaneda and Stoikov, 2008 [2, 8, 1]). Базовый ценовой процесс при этом обычно непрерывный стохастический. Логика такова: чем дольше мы держим заявку выставленной, тем выше шанс исполнения. При таком взгляде лимитные заявки всё же зарабатывают полтика на транзакционных издержках, а риск лишь в том, что они не исполнятся. Хотя это неплохое начало, оно игнорирует тонкую правду высокочастотных рынков: ценовой процесс не непрерывен. Цена движется дискретными скачками с одного ценового уровня на другой. Минимальное изменение цены — один тик. Если мы ставим лимитную заявку на покупку на лучший bid и цена вообще идёт вниз, она обязана сдвинуться на один тик. При этом движении прежний лучший bid становится новым лучшим ask. Теперь на рынке присутствуют заявки на продажу, которые сводятся с лимитной заявкой на покупку, — и исполнение произошло.

Настоящая статья обсуждает именно эти вопросы. С исполнениями лимитных заявок связано замысловатое рыночное поведение, порождающее особый вид транзакционных издержек. Это поведение действительно затрагивалось в литературе по маркетмейкингу под терминами вроде неблагоприятного отбора (adverse selection) (Cartea et al., 2015, 2018 [2, 3]), где на процесс средней цены влияет активность рыночных заявок. Понятие неблагоприятного отбора родственно отрицательному дрейфу этой статьи. Однако модели маркетмейкинга в литературе по-прежнему исключают то, что исполнения лимитных заявок индуцируются всякий раз при неблагоприятном движении цены, — а это ключевая идея, которую следует ценить.

1.1. Отрицательный дрейф

В высокочастотной финансовой математике нас часто интересует симуляция исполнений в стакане для анализа стратегий маркетмейкинга или трейдинга. Обычно мы пытаемся с помощью изощрённых математических моделей или моделей машинного обучения выдавать сигналы в реальном времени, порождая решение, ставить или не ставить лимитные заявки на рынок, — часто на уровнях лучшего ask или лучшего bid. В примере, который мы подробнее используем позже, авторы (Cartea et al., 2015 [2]) описывают задачу стохастического оптимального управления, моделируя ценовой процесс стохастическими дифференциальными уравнениями и решая её относительно оптимального управления для двух переменных решения: ставить или не ставить лимитные заявки на лучший bid и/или лучший ask. Предполагается, что рыночные заявки приходят случайно, а лимитные заявки исполняются с постоянной интенсивностью. Другая популярная работа, выводящая маркетмейкерские решения с лимитными заявками (Avellaneda and Stoikov, 2008 [1]), следует допущению, что ценовой процесс движется как непрерывная диффузия, а лимитные заявки исполняются с пуассоновскими интенсивностями — без упоминания какой-либо связи динамики рыночных заявок и ценового процесса. Ещё одна популярная работа, на этот раз использующая машинное обучение, и в частности глубокое обучение, для выработки высокочастотных торговых сигналов (Zhang et al., 2019 [11]), приводит торговую симуляцию. Предполагается, что можно вести направленную торговую стратегию, входя в сделки лимитными заявками и выходя рыночными; штраф лишь в том, что можно не успеть исполниться для входа в очередную сделку. Лимитная заявка рассматривается как бесплатная замена рыночной, позволяющая сэкономить те полтика проскальзывания, которые мы обычно теряем на рыночной заявке.

Общая нить перечисленных работ — допущение, что движения ценового процесса независимы от происходящих исполнений лимитных заявок. Как будто цена движется сама по себе, а лимитные заявки случайно исполняются на лучших bid и ask безо всякой связи с самим движением цены. Но что движет ценой? Разве сделки по заявкам не могут иметь отношения к ценовому процессу? На современных ликвидных рынках спред между bid и ask бóльшую часть времени равен одному тику. Как мы яснее увидим позже, если средняя цена вообще движется, она обязана сдвинуться на один тик. Когда средняя цена идёт вниз, лучший bid мгновенно становится лучшим ask, и наоборот для движения вверх. Если на лучшем bid стоит лимитная заявка и цена вообще идёт вниз, лучший bid становится лучшим ask, и любая лимитная заявка будет исполнена встречными заявками, пришедшими на этот ценовой уровень. Этот простой факт отсутствует в текущей литературе.

Мы покажем, что существуют устойчивые характерные закономерности, демонстрирующие: исполнения лимитных заявок тесно связаны и коррелированы с движениями средней цены. Мы анализируем шансы исполнения лимитной заявки, поставленной на лучший bid или лучший ask, по настоящим рынкам. Такой вид торговли также называется маркетмейкингом «у касания» (at-the-touch) в (Cartea et al., 2015 [2]). Мы противопоставляем это тому, как исполнения лимитных заявок обычно устроены в математических моделях. Мы покажем, что общепринятые допущения слишком оптимистичны. Они ведут к нереалистичным симуляциям и даже могут вводить в заблуждение начинающего исследователя этой темы. Взамен мы предполагаем, что на рынке существуют определённые неслучайные закономерности, которые должны быть непременной частью любой высокочастотной модели рынка: 1) цены движутся дискретными интервалами в целый тик; 2) существует устойчивый будущий отрицательный дрейф движения средней цены относительно каждого исполнения лимитной заявки. Второй пункт равносилен своего рода штрафу, связанному с исполнением лимитной заявки, — весьма значительному и устойчивому. Термин «отрицательный» отсылает к направлению самой лимитной заявки. Исполнения заявок на покупку сопровождаются движениями средней цены вниз, а заявок на продажу — движениями вверх, в среднем. Мы утверждаем, что любой симулятор исполнений в высокочастотных финансах должен учитывать эту динамику дрейфа.

Мы подкрепляем наше утверждение двумя основными аргументами. Первый использует очень простую дискретную модель рынка с базовыми допущениями, чтобы теоретически доказать: исполнение лимитной заявки в среднем сопровождается движением средней цены против направления заявки. Второй — эмпирический анализ: мы симулируем простую маркетмейкерскую стратегию в реальном времени на фьючерсном рынке и собираем статистику по каждой заявке и окружающей её рыночной динамике. Мы используем торговую платформу Trading Technologies, Inc. (TT), у которой есть изощрённый торговый симулятор, очень близкий к реальности. Сочетанием теории и практики мы даём сильные свидетельства истинности наших утверждений. Мы оцениваем величину отрицательного дрейфа, с которым сталкиваются исполнения лимитных заявок, и находим её существенной и устойчивой. Величина дрейфа в живой симуляции и в нашей теоретической модели рынка совпадает, как показано в таблице 2.

Остальная часть статьи организована следующим образом. В разделе 2 мы разберём некоторые из самых популярных допущений об исполнении лимитных заявок, наводнивших литературу по маркетмейкингу в последние годы, иллюстрируя проблему. Затем раздел 3 описывает дискретную модель рынка и теоретические аргументы в пользу отрицательного дрейфа при исполнении лимитной заявки. Далее идёт раздел 4, описывающий живую маркетмейкерскую симуляцию TT и связанные с ней результаты. Наконец, в разделе 5 мы предлагаем лучший способ симулировать исполнения лимитных заявок для целей бэктестинга, с подкрепляющим эмпирическим анализом.

2. Допущения об исполнении в существующих моделях маркетмейкинга

Первый случай, который мы обсудим, взят из популярного учебника по высокочастотным финансам (Cartea et al., 2015 [2]), используемого в некоторых магистерских курсах. С ним также связаны многочисленные онлайн-ресурсы с рабочими python-ноутбуками для начинающих.1 Конкретно мы имеем в виду задачу стохастического оптимального управления для маркетмейкинга, глава 10. Здесь много хороших идей, и выводы получены изощрёнными математическими рассуждениями, которые имеют смысл. К сожалению, несколько допущений приводят авторов к анализу рынка, которого не существует. Их рынок не похож на то, что мы видим эмпирически. Рисунок 10.3 учебника показывает пример ценовой траектории с лучшими bid и ask как непрерывным процессом. Исполнения лимитных заявок происходят по обе стороны от средней цены будто бы случайно. С такими допущениями можно построить бэктест-симуляции на синтетических данных, которые выглядят прибыльными, но в реальности прибыли не приносят. Мы установили, что одна из главных причин расхождения — отрицательный дрейф, связанный с исполнениями заявок.

В одной из рыночных симуляций — раздел 10.2.2, маркетмейкинг «у касания» — авторы предполагают, что лимитная заявка исполняется встречной рыночной заявкой с вероятностью 1. Позже мы покажем, что на практике эта вероятность гораздо ниже 1. Более общая идея главы — предположить экспоненциальную интенсивность исполнений, которая зависит от экспоненциального распределения и совпадает по времени с активностью рыночных заявок. Это в целом лучше, чем 100-процентная доля исполнений, но всё равно неадекватно, как мы покажем позже в наших маркетмейкерских симуляциях. Модель изощрённая, но такие допущения о высокочастотных рынках приводят к чрезмерно оптимистичной симуляции.

Более реалистичные допущения представлены в разделе 10.4 работы (Cartea et al., 2018 [3]), где входящие рыночные заявки толкают среднюю цену в направлении, пропорциональном активности рыночных заявок. Казалось бы, это должно создавать торможение исполнений лимитных заявок, раз исполнения должны сводиться только с рыночными заявками. Однако здесь предполагается, что сами движения цены никогда не достигают заявок: маркетмейкер всегда достаточно быстр, чтобы вовремя убрать заявку с дороги (Cartea et al., 2018 [3]). Затем для маркетмейкинга «у касания» предполагается 100-процентная доля исполнений — и движения цены никогда не вызывают исполнений. Следующие пункты выделяют проблемы этих допущений.

  1. Цена движется согласно непрерывному процессу, как настоящий рынок никогда не смог бы на интервале в десять секунд. Синтетический ценовой процесс не движется дискретными скачками, как в реальности.
  2. Есть рыночные заявки, которые, по-видимому, исполняют лимитные заявки глубоко на противоположной стороне стакана; эти заявки могут и двигать среднюю цену, но движение цены никогда не вызывает исполнений. Таким образом, ценовой процесс по-прежнему нереалистично независим от исполнений лимитных заявок.
  3. Лимитные заявки никогда не исполняются неблагоприятными движениями цены — только рыночными заявками. Процитируем (Cartea et al., 2018 [3]): «Заметим, что агент непрерывно корректирует своё размещение относительно средней цены; следовательно, средняя цена не может пройти сквозь заявки агента». В настоящей статье мы показываем, что это допущение нереалистично и что лимитные заявки действительно исполняются неблагоприятными движениями цены в 100% случаев.

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

Второй случай связан с торговой симуляцией модели глубокого обучения для предсказания краткосрочной альфы (Zhang et al., 2019 [11]). В этом исследовании авторы разрабатывают модель глубокого обучения, способную предсказывать будущее направление средней цены лимитного стакана — вверх, на месте или вниз — на высокой частоте и коротком горизонте. Для торговой симуляции авторы конвертируют эти предсказания в позиции в реальном времени, исполняя сделки по средней цене без транзакционных издержек. Авторы поясняют, почему это допущение не может описывать полную торговую стратегию, но логика такая: они полагают, что могут входить в сделки лимитной заявкой и выходить рыночной, так что чистые транзакционные издержки равны нулю. Тем самым предполагается, что результат лимитной заявки — плюс полтика транзакционных издержек, гасящие минус полтика рыночной заявки. В нашей работе мы показываем, что это допущение об исполнении лимитной заявки ошибочно: каждое исполнение лимитной заявки в среднем влечёт значительный отрицательный дрейф средней цены. Более того, доля исполнений при верном предсказании гораздо ниже, чем при неверном. Мы покажем, что на обычных рынках заявка исполнится всякий раз, когда средняя цена движется в неблагоприятном направлении, но лишь иногда — когда движение благоприятно.

Третий и последний случай, который мы здесь затронем, — тоже из известной работы по высокочастотным финансам (Avellaneda and Stoikov, 2008 [1]). Там делаются допущения, схожие с (Cartea et al., 2015 [2]), описанными выше. Лимитные заявки размещаются выше и ниже средней цены и исполняются рыночными заявками с пуассоновской интенсивностью. Предпринята попытка учесть рыночное воздействие: крупные рыночные заявки исполняют лимитные заявки сразу на нескольких уровнях из-за своего размера. Однако вся эта активность заявок не оказывает ровно никакого влияния на эволюцию средней цены, которая остаётся непрерывным диффузионным процессом. И снова эти допущения не дотягивают до того, что мы видим в реальности. Рынки движутся дискретными скачками, обычно равными одному тику, причём неблагоприятные движения исполняют заявки чаще, чем благоприятные. И снова: хотя результаты интересны и математически изощрённы, они будут чрезмерно оптимистичны.

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

3. Дискретная модель рынка

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

Наша дискретная модель работает на дискретных ценах и временных интервалах. Настоящие рынки торгуются по дискретным ценам, а события стакана и сделки — мгновенные события, которые уместнее моделировать точечными, а не непрерывными процессами. Для целей нашей симуляции будем считать, что события стакана приходят в дискретные моменты времени. Итак, мы начинаем в момент $t = 0$, и $t \in \{0, 1, 2, ...\}$.

В этой модели рынка мы стартуем при $t = 0$ с начальной цены, где лучшие bid и ask разделены одним тиком. Каждый дискретный шаг времени порождает одно из трёх возможных случайных событий: цены сдвигаются на тик вверх, цены остаются на месте (среднее событие) или цены сдвигаются на тик вниз (см. рисунок 2).

Пространство элементарных исходов нашего вероятностного эксперимента — $\{U, M, D\}$. Эти три события несовместны, их вероятности положительны и в сумме дают единицу, а значит, задают дискретную плотность вероятности.

\[ P(U) + P(M) + P(D) = 1 \tag{1}\]

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

Рисунок 2
Рисунок 2. Вверху показаны 3 дискретных события, возможных в нашей модели рынка. Внизу мы используем вероятности $P(D) = P(U) = 0.017$ и $P(M) = 0.976$ и симулируем 1000 шагов этого процесса. Эти вероятности откалиброваны по настоящим данным рынка фьючерсов на 10-летние облигации на интервалах в 1 секунду.

Мы хотим смоделировать процесс средней цены относительно исполнения лимитной заявки. Для этого мы используем условные вероятности. Событие, на которое мы будем обусловливаться, — исполнение лимитной заявки, $f$. Итак, как исполняется наша заявка? В момент событийного времени $t = 0$ мы ставим заявку на покупку в лимитный стакан на лучший bid. В течение каждого события заявка может исполниться с бернуллиевской вероятностью $R_f$ независимо от прочей рыночной активности. Дополнительно мы требуем $R_f < 1$: доля исполнений не стопроцентна. Мы также должны определить событие, когда цена лимитной заявки становится равна будущей цене лучшего ask, — оно происходит при движении цены вниз и вызывает исполнение лимитной заявки на покупку. Именно это событие часто опускается в литературе по маркетмейкингу, хотя оно относится к базовым принципам работы лимитного стакана. Любая заявка на покупку будет исполнена заявкой на продажу по той же цене на совпадающее количество. Когда происходит движение цены вниз, лучший bid становится лучшим ask, и все лимитные заявки, стоявшие на лучшем bid, должны исполниться прежде, чем этот ценовой уровень станет лучшим ask. Пример того, как это происходит, — правая верхняя панель рисунка 2.

Теперь мы покажем математически, через ожидания и условные вероятности, что среднее движение средней цены (дрейф), связанное с исполнением лимитной заявки на покупку, отрицательно. Иначе говоря, дрейф отрицателен относительно направления лимитной заявки сразу после её исполнения. Определим $d_t$ как чистое изменение средней цены в момент $t$.

Для начала запишем среднее движение средней цены как ожидание, используя формулу полного математического ожидания:

\[ E_t[d_t] = (1)P(U) + (0)P(M) + (-1)P(D) = P(U) - P(D) \tag{2}\]

Теперь мы хотим вычислить ожидаемое движение средней цены при условии, что наша лимитная заявка была исполнена, то есть $E_t[d_t|f]$. Уравнение (2) даёт дрейф по всем возможным событиям на рынке. Множество событий, при которых наша заявка исполнилась бы, — подмножество всех возможных событий, и оно определяется долей исполнений. Мы считаем, что доли $P(f|M)$ и $P(f|U)$ относятся к средним и восходящим движениям, тогда как нисходящие движения исполняют лимитную заявку всегда. Далее используется формула условной вероятности $P(A|B) = P(A \cap B)/P(B)$ для произвольных событий $A$ и $B$ некоторого вероятностного пространства.

Последняя строка использует формулу полной вероятности: если $\{B_n : n = 1, 2, 3, ...\}$ — набор попарно несовместных и в совокупности исчерпывающих событий (а у нас это так), то вероятность события $A$ равна $P(A) = \sum_n P(A \cap B_n)$. Условное ожидание — это сумма исходов событий, умноженных на условные вероятности их наступления:

\[ \begin{aligned} E_t[d_t|f] &= (1)P(U|f) + (0)P(M|f) + (-1)P(D|f) \\[4pt] &= (1)\frac{P(U \cap f)}{P(f)} + (0)\frac{P(M \cap f)}{P(f)} + (-1)\frac{P(D \cap f)}{P(f)} \\[4pt] &= (1)\frac{R_f P(U)}{P(f)} + (0)\frac{R_f P(M)}{P(f)} + (-1)\frac{P(D)}{P(f)} \\[4pt] &= \frac{R_f P(U) - P(D)}{P(f)} \end{aligned} \tag{3}\]

Поскольку $R_f < 1$, и если дополнительно предположить $P(U) = P(D)$, мы показали, что ожидаемое движение средней цены при условии исполнения лимитной заявки на покупку всегда отрицательно. По эмпирическим данным, которые последуют дальше, реальное значение $R_f$ на настоящих рынках ближе к нулю, чем к единице. Также эмпирические вероятности $P(U)$ и $P(D)$ на протяжении одного торгового дня во фьючерсах на 10-летние облигации оказываются очень близки, так что эти допущения вполне пригодны для наших иллюстративных целей. То, что $R_f$ на практике так мала, делает относительные размеры $P(U)$ и $P(D)$ довольно несущественными.

3.1. Отрицательный дрейф в общем составном процессе Хоукса

Предыдущая дискретная модель рынка выбрана потому, что она проста, но достаточно реалистична, чтобы уловить суть происходящего в настоящих стаканах. Модель проста, но её важные части работают как настоящий рынок. Другие существующие в литературе дискретные модели рынка устроены похоже. Например, тот же вывод можно получить из модели общего составного процесса Хоукса (General Compound Hawkes Process, GCHP) (Swishchuk and Huffman, 2018; Sjogren and DeLise, 2021 [10, 9]), которая моделирует изменения средней цены марковской цепью. В этой модели есть лишь два состояния — вверх или вниз, — соответствующие направлению предыдущего движения средней цены. Цена всегда движется дискретными скачками в один тик, как и у нас. Вместо среднего состояния, как в нашей модели, для моделирования времён между изменениями средней цены используется процесс Хоукса — отсюда и название. Марковские вероятности будем обозначать так, как ниже. Дополнительно предполагаем, что все вероятности ненулевые и образуют неприводимую матрицу переходных вероятностей марковской цепи, а значит, существуют стационарные вероятности. Дрейф средней цены для этой хоуксовской модели обозначим $dh_t$:

Мы придерживаемся соглашений математики марковских цепей и условных вероятностей: $P(U|U) + P(D|U) = 1$ и $P(U|D) + P(D|D) = 1$. Вычислим ожидаемые члены дрейфа для модели, которые зависят от того, каково текущее состояние — вверх ($U$) или вниз ($D$):

\[ E_t[dh_t] = Q(U)\left(P(U|U) - P(D|U)\right) + Q(D)\left(P(U|D) - P(D|D)\right). \tag{4}\]

Снова мы должны предположить, что для заявки на покупку движение вниз всегда приводит к исполнению лимитной заявки. Если читатель ещё не убеждён в этом факте, пусть обратится к предыдущему подразделу. По формуле полного математического ожидания мы сначала записали ожидаемый дрейф самого ценового процесса в уравнении (4). Напомним, что исход движения вверх — это +1 тик средней цены, а движения вниз — −1 тик. Как и в прошлый раз, используем условное ожидание при условии события исполнения $f$ и 100-процентную долю исполнений при движении вниз.

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

\[ E_t[dh_t|f] = \frac{Q(U)\left(R_f P(U|U) - P(D|U)\right) + Q(D)\left(R_f P(U|D) - P(D|D)\right)}{P(f)}. \tag{5}\]

Уравнение (5) можно переписать как

\[ E_t[dh_t|f] = \frac{R_f\left(Q(U)P(U|U) + Q(D)P(U|D)\right) - \left(Q(U)P(D|U) + Q(D)P(D|D)\right)}{P(f)}. \tag{6}\]

Если сделать упрощающее предположение, что стационарные вероятности движений вверх и вниз одинаковы, то есть $Q(U) = Q(D)$ (что реалистично и достаточно для нашей цели), получаем

\[ E_t[dh_t|f] = \frac{R_f\left(P(U|U) + P(U|D)\right) - \left(P(D|U) + P(D|D)\right)}{P(f)}. \tag{7}\]

При упрощающем предположении о равенстве стационарных вероятностей быстро заключаем, что $P(U|U) + P(U|D) = P(D|U) + P(D|D)$. В сочетании с предположением $R_f < 1$ это позволяет заключить, что $E_t[dh_t|f] < 0$. На практике точные вероятности, управляющие движениями вверх и вниз, не так уж важны для этого вывода: вероятности вверх и вниз примерно равны, а величина $R_f$ очень мала по сравнению с величинами движений цены вверх и вниз.

Суть в том, что этот отрицательный дрейф должен возникать в любой модели рынка, признающей реалистичное допущение: лимитная заявка на покупку, поставленная на лучший bid, исполнится при любом движении цены в противоположную сторону (вниз), но лишь иногда — при движении цены в ту же сторону (вверх). Во время таких неблагоприятных движений заявка на покупку исполняется на лучшем ask, а не на лучшем bid, как изначально хотелось. Рынок сдвинулся против новой позиции трейдера. Таким образом, это эквивалентно форме проскальзывания, которую мы называем отрицательным дрейфом.

4. Живой симулятор TT

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

В этом разделе мы приведём дополнительные свидетельства через статистический анализ маркетмейкерской симуляции на рынке фьючерсов на 10-летние казначейские облигации США, тикер TY. Мы реализовали наивную маркетмейкерскую стратегию в реальном времени, используя собственный конвейер данных с платформой Trading Technologies, Inc (TT) и собственную инфраструктуру данных. Наш конвейер получает, обрабатывает и сохраняет потоковые тиковые данные в реальном времени напрямую из предоставляемого .NET API. Поток данных состоит из глубины рынка (level 2) и ленты сделок time & sales (level 1). Значения приходят асинхронно, времена между событиями зачастую составляют малые доли секунды. Приходящие данные одновременно публикуются в ПО ретрансляции сообщений RabbitMQ и сохраняются в базу PostgreSQL. Так мы можем использовать данные и в реальном времени, и для исторического анализа и бэктестинга. ПО TT предлагает симуляционную среду, позволяющую пользователям симулировать лимитные заявки, которые сводятся с реальной рыночной активностью в реальном времени. Для максимально точной симуляции каждого исполнения лимитной заявки используются, среди прочего, рыночные заявки и размеры позиций в очереди. Это не бэктест, а симуляция в реальном времени, где исполнения заявок происходят по прихоти рынков, настолько реалистично, насколько возможно.

Мы приводим кейс, охватывающий время с 6:00 до 13:00 по восточному времени США 21 ноября 2023 года для контракта с экспирацией в декабре 2023. Мы реализуем наивную маркетмейкерскую стратегию, которая ставит лимитные заявки на 1 лот на лучший bid и лучший ask — на покупку и продажу соответственно — во фьючерсах TY. Если позиция отлична от нуля, то есть трейдер находится в лонге или шорте на 1 лот, он ставит только ту заявку, которая вернёт систему к нулевой позиции. Например, если позиция — лонг 1 лот (позиция равна 1), трейдер ставит только заявку на продажу на лучшем ask. Как только заявка исполнена и позиция вернулась к нулю, трейдер снова ставит обе заявки — на покупку и на продажу. Это вся стратегия. Робот-трейдер пассивно исполняется на лимитных заявках на покупку и продажу, всегда стоящих на лучших bid или ask. Хотя стратегия наивна, размещение заявок на лучших bid и ask — стандартная практика литературы по маркетмейкингу (Cartea et al., 2015 [2]). Закономерности, извлечённые из этого анализа, должны относиться к средним исполнениям лимитных заявок на рынках вообще.

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

Рисунок 3
Рисунок 3. Небольшой фрагмент первых 5000 событий, записанных нами в данных TY 21 ноября 2023 года. Хотя у нас есть до 10 уровней данных стакана, мы отображаем лучший ask и лучший bid вместе со средней ценой. Поразительно, насколько это похоже на данные нашей дискретной модели рынка.

Наша симуляция содержит в общей сложности 1683 заявки. Каждая заявка состоит из двух событий. Первое — событие добавления заявки, второе — либо исполнение, либо отмена. Не каждая заявка исполняется: если цена уходит от лимитной заявки, взамен ставится новая заявка на новом ценовом уровне. На рисунке 4 мы разбираем четыре заявки из ранней части дня. Интересно, что уже эти несколько заявок демонстрируют отрицательный дрейф в действии. Мы видим, что первое исполнение совпадает с одним из тех неблагоприятных движений цены, когда лучший bid мгновенно становится лучшим ask. Вторая заявка (вверху справа) — заявка на продажу, которая так и не исполняется до того, как цена ушла от неё. Третий и четвёртый примеры (нижний ряд) показывают случай, выгодный маркетмейкеру: заявки исполняются без неблагоприятного движения цены. Мы также отображаем синим активность рыночных заявок, поскольку позже используем эти рыночные заявки для симуляции случайных исполнений лимитных заявок.

Рисунок 4
Рисунок 4. Здесь мы визуализируем 4 отдельные заявки на протяжении их жизни. В первом кадре (вверху слева) видна заявка на покупку, поставленная на лучший bid, — отмечена чёрной звездой. Заявка исполнена в месте оранжевой звезды. Заметьте, что это исполнение совпадает с падением средней цены, при котором лучший bid становится лучшим ask. Следующая сделка (вверху справа) — заявка на продажу, и мы видим, что она так и не исполнена, поскольку цена идёт вниз. Две нижние заявки показывают случай, когда заявка исполняется без неблагоприятного движения цены: в обоих случаях заявка исполнена при неизменном ценовом уровне. Мы также отображаем синим сделки по рыночным заявкам, размер маркера соответствует количеству в заявке.

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

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

Результаты анализа показаны на рисунке 5. Каждая выборка состоит из 521 точки. Тренд ясен. После исполнений заявок на покупку наблюдается значимый дрейф цены вниз, а после исполнений заявок на продажу — столь же значимый дрейф вверх. Сравните с контрольной выборкой, в которой чистого направленного дрейфа почти нет. В каждом случае направление дрейфа противоположно направлению заявки. Вдобавок мы вычислили средний дрейф в каждом случае — он составляет примерно $-0.0065$. Чтобы дать этой метрике масштаб: размер тика во фьючерсах TY равен $1/64 = 0.015625$. Традиционно принятое правило гласит, что рыночная заявка всегда несёт издержку проскальзывания в полтика относительно средней цены, то есть $0.0078125$. Это потому, что рыночной заявкой мы можем немедленно исполниться о лучший bid или ask противоположной стороны книги, которые обычно на полтика от средней цены. Традиционно также предполагалось, что лимитной заявкой можно избежать этого штрафа, используя пассивные заявки на своей стороне книги, — с риском, что заявка не исполнится немедленно. Мы же показали, что исполнение лимитной заявки несёт свой вид штрафа проскальзывания, и величина этого штрафа оказывается очень близка к полутика. Более того, согласно нашей симуляции, 1/3 заявок вообще не исполнилась. То есть отрицательный дрейф $-0.0065$ мы понесли на всех исполненных заявках, но они составляют лишь 2/3 наших заявок. Оставшаяся треть осталась неисполненной: цена ушла от них. Чтобы совершить сделку, нам пришлось бы передвинуть свою лимитную цену в невыгодную сторону. Этот случай проиллюстрирован в правом верхнем подграфике рисунка 4. Это объясняет, почему допущения симуляции (Zhang et al., 2019 [11]) так проблематичны: отрицательный дрейф бьёт по исполненным заявкам, но многие заявки не исполняются — особенно тогда, когда цены уходят от них в благоприятную сторону.

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

4.1. Калибровка дискретной модели

Теперь мы оценим по эмпирическим данным значения переходных вероятностей и доли исполнений нашей дискретной модели рынка: $P(U)$, $P(D)$, $P(M)$ и $R_f$. Для этого расчёта мы нормализуем наш временной ряд к равномерным временным интервалам, схожим с допущениями дискретной модели. Мы выбираем временное разрешение в 1 секунду. Мы отслеживаем информацию, необходимую для расчёта переходных вероятностей и доли исполнений. Для каждого дискретного интервала мы записываем последние лучший bid, лучший ask и среднюю цену, а также была ли активна заявка в течение периода. Мы также записываем, была ли заявка исполнена в течение периода.

Для расчёта вероятностей берём передискретизированные данные, которые теперь состоят из 20 743 односекундных интервалов. Передискретизация к более крупным равномерным интервалам несколько упрощает анализ. Действительно, среди стремительно меняющихся событий чистых тиковых данных уловить суть отрицательного дрейфа немного труднее. На равномерных односекундных интервалах происходящее очевидно. Симулировать лимитные стаканы на равномерных интервалах — к тому же стандартная практика, пусть и не идеально реалистичная. При передискретизации мы берём последние цены bid и ask, а также признаки того, были ли заявки выставлены и исполнены в течение каждого интервала. Позже, в разделе о симуляции заявок, мы покажем, что этот анализ работает и для непередискретизированных данных.

Мы вычисляем изменения средней цены между шагами. Суммируем число раз, когда цена выросла, и делим на общее число шагов — получаем $P(U)$. Суммируем число раз, когда цена упала, и делим на общее число шагов — получаем $P(D)$. Берём число раз без движения — получаем $P(M)$. Это эмпирические вероятности. Результаты — в таблице 1.

Таблица 1. Статистики дискретной модели, откалиброванные по рыночным данным.
СтатистикаЗначение
$P(U)$0.0173
$P(D)$0.0173
$P(M)$0.965
$R_f$0.018
$P(f|D)$0.99

Доля исполнений лимитной заявки при неблагоприятном движении цены в нашей дискретной модели предполагается равной 100%. А $R_f$ — доля, с которой заявки исполняются в случаях, когда движение цены не было неблагоприятным. Здесь мы предполагаем распределение Бернулли с вероятностью $R_f$ исполнения в каждом временном интервале. Чтобы проверить эти допущения, мы вычислили вероятность исполнения при неблагоприятных движениях цены: подсчитали, сколько раз мы наблюдали неблагоприятное движение цены при выставленной противостоящей ему лимитной заявке. Сюда входят случаи, когда у нас стояла заявка на покупку при движении цены вниз или заявка на продажу при движении вверх. Затем мы проверили, какая доля этих событий закончилась исполнением лимитной заявки. Это эмпирический расчёт $P(f|D)$ для заявок на покупку по дискретной модели. Вывод: такие заявки в самом деле исполняются в 99% случаев. Отдельно мы вычисляем эмпирическое $R_f$, рассматривая долю событий, когда лимитные заявки были выставлены, но цена не двигалась в неблагоприятную сторону. Доля этих событий, закончившихся исполнением, и есть $R_f$. Результаты представлены в таблице 1.

Таблица 2. Теоретический и эмпирический дрейф после исполнений заявок. Числа приведены в тиках.
СтатистикаЗначение
$E_t[d_t|f]$−0.48 тика
$\hat{E}_t[d_t|f]$−0.45 тика

Наконец, подставив эти вероятности в уравнение (3), мы можем вычислить ожидаемый дрейф исполнения лимитной заявки $E_t[d_t|f]$ после настройки модели на реальные данные. Затем мы вычисляем $\hat{E}_t[d_t|f]$ — эмпирический средний дрейф средней цены в интервале после исполнения заявки. Эти два результата оказываются очень близки: модель откалибрована хорошо, и явление действительно существует.

5. Лучший способ симулировать исполнения лимитных заявок

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

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

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

Эксперимент этого раздела состоит из трёх техник бэктест-симуляции, сравниваемых с живой симуляцией TT как базой. Первые две техники описаны в (Cartea et al., 2015, 2018 [2, 3]) и предлагаются как осуществимые в литературе по маркетмейкингу. Первая техника предполагает, что лимитные заявки на лучшем bid (или ask) будут исполнены рыночными заявками на продажу (или покупку) со 100-процентной долей исполнений. То есть наша лимитная заявка всегда исполняется первой же пришедшей рыночной заявкой. Вторая техника упоминается в (Cartea et al., 2015 [2]) и (Avellaneda and Stoikov, 2008 [1]): исполнения приходят согласно экспоненциальному распределению с интенсивностью $\lambda_f$, откалиброванной по рыночным данным. По этой модели лимитная заявка исполняется первой рыночной заявкой, у которой время с момента прошлого события больше или равно реализации экспоненциальной случайной величины с откалиброванным параметром $\lambda_f$. Третья техника — наша новая: лимитные заявки на лучшем bid (ask) исполняются неблагоприятными движениями цены вниз (вверх). Помимо этого, заявки, не столкнувшиеся с неблагоприятным движением цены, исполняются согласно распределению Бернулли с долей $R_f$, откалиброванной по рыночным данным, как описано в разделе 4.1.

  1. Техника бэктеста 1: 100% исполнений о рыночные заявки.
  2. Техника бэктеста 2: экспоненциальные исполнения о рыночные заявки.
  3. Техника бэктеста 3 (наша): неблагоприятные исполнения и бернуллиевская доля.
  4. База: живая симуляция.

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

Данные взяты за время с 8:00 до 17:00 по восточному времени 30 ноября 2023 года по мартовскому контракту 2024 года фьючерса на 10-летние облигации. В этом эксперименте мы вовсе не прореживаем данные, а используем сырые тиковые данные, событие за событием, — чтобы получить максимально точный бэктест. Наивная маркетмейкерская стратегия та же: ставим заявки на покупку и продажу на лучшие bid/ask в зависимости от текущей позиции маркетмейкера. Если позиция нулевая, ставятся обе заявки. Если позиция +1, ставятся только заявки на продажу. Если позиция −1 — только заявки на покупку. Количество в заявке всегда 1 лот. Так позиция маркетмейкера колеблется между 1 и −1 на протяжении всего теста. Это та же постановка стратегии, что и раньше.

Таблица 3. Описание данных живой симуляции.
ПараметрЗначение
КонтрактTY Mar24
Период8:00 – 17:00 EST, 30.11.2023
Число событий576 670
$P(U)$0.00186
$P(D)$0.00187
$P(M)$0.9962

Для техники 1 калибровка модели не нужна: доля исполнений — просто 100%, лимитные заявки сводятся со входящими рыночными. Для техники 2 мы калибруем экспоненциальную интенсивность как величину, обратную среднему времени между исполнениями заявок из симуляции TT, опираясь на допущение экспоненциального распределения. Затем мы сводим лимитные заявки со входящими реальными рыночными заявками, если время между приходами достигает или превышает случайные экспоненциальные приходы с интенсивностью $\lambda_f$. Для техники 3 (нашей) мы калибруем модель и долю исполнений $R_f$, как описано в предыдущем разделе, по живой симуляции. Сводные статистики данных даны в таблице 3, откалиброванные интенсивности исполнений — в таблице 4, а число заявок и исполнений каждой симуляции — в таблице 5.

Таблица 4. Интенсивности бэктестов.
ТехникаПараметрЗначение
2$\lambda_f$0.0842
3$R_f$0.000625
Таблица 5. Заявки и исполнения.
ТехникаЧисло заявокЧисло исполненийОбщая доля исполнений
113 93511 85985%
23 7851 13430%
33 4592 25965%
База3 3051 98560%

На рисунке 7 мы представляем P&L по рыночной переоценке (mark-to-market) для четырёх техник за экспериментальный период. Повторим: все четыре прогона используют одни и те же рыночные данные для симуляции исполнений.

Техника 1 наслаждается 100-процентной долей исполнений о приходящие рыночные заявки, и заявки никогда не исполняются при неблагоприятных движениях цены. Заявки исполняются часто и быстро заменяются новыми. Результат — большое суммарное число заявок и исполнений по сравнению с базой. Высокая доля исполнений создаёт великолепную траекторию прибыли (синяя). Это самый нереалистичный случай: его P&L расходится с базой сильнее всего.

Техника 2 сводит лимитные заявки с рыночными согласно экспоненциальной случайной величине. Хотя общее число заявок ближе к базе, число исполнений гораздо ниже. Мы относим это на счёт неверной спецификации распределения времён между приходами заявок. Времена между исполнениями заявок, по-видимому, не подчиняются экспоненциальному распределению — см. рисунок 6. Это расхождение отмечалось в предыдущей литературе (Swishchuk and Huffman, 2018 [10]). Вместо экспоненциального форма распределения времён между приходами заявок, возможно, лучше описывается распределениями с тяжёлыми хвостами, типа Парето. Если симулировать исполнения на реальных данных, предполагая экспоненциальные времена между приходами, среднее перестаёт совпадать. В реальности больше коротких интервалов, но те немногие длинные — намного длиннее, чем предполагает экспоненциальное распределение. В результате исполнений меньше, а у тех, что есть, среднее время между приходами выше, что сокращает общее число исполнений. Тем не менее в отсутствие логики исполнения неблагоприятным движением цены эта стратегия всё равно зарабатывала бы приличные деньги даже при низкой доле исполнений. Сравните P&L с базой: настоящие рыночные исполнения далеко не так щедры.

Рисунок 6
Рисунок 6. Сравнение распределений времён между исполнениями заявок по живой симуляции с синтетическими экспоненциальными интервалами после калибровки среднего под реальные данные. Всего за симуляцию исполнено 1985 заявок со средним временем между исполнениями 11.9 секунды — из них построена синяя гистограмма. Экспоненциальные интервалы (оранжевые) имеют то же среднее время, и мы просимулировали их столько же. Если бы настоящие интервалы следовали экспоненциальному распределению, гистограммы плотно совпали бы. Однако мы видим, что в реальности гораздо больше коротких и длинных времён и меньше средних, чем предполагает экспоненциальное распределение. Видимый диапазон оси x здесь сокращён, потому что наибольший интервал живой симуляции превышал 250, из-за чего гистограммы было трудно разглядеть.

Техника 3, сочетающая неблагоприятные исполнения и откалиброванную бернуллиевскую долю исполнений, достигает самой близкой к базовой модели общей доли исполнений, а также P&L. В частности, в правой верхней панели рисунка 7 в ранней части графика виден участок с быстрой просадкой P&L у базовой модели. Наша симуляция ловит этот тренд идеально — скорее всего, благодаря логике неблагоприятных исполнений. Оставшиеся расхождения графика P&L между техникой 3 и базой указывают, что пространство для улучшений ещё есть. Результат нашей техники бэктеста намного ближе к базе и по P&L, и по числу заявок, исполнений и доле исполнений, чем у двух других техник.

Рисунок 7
Рисунок 7. Сводка результатов бэктест-эксперимента. Все изображения основаны на накопленном P&L по рыночной переоценке в 5-минутных окнах в течение дня. В верхнем ряду — накопленная прибыль и убыток за день, правая панель приближена, чтобы показать детали вокруг базы. Нижний ряд показывает те же данные в форме гистограмм, справа — снова с приближением для деталей вокруг результата базы. Прибыль от допущения о 100-процентной доле исполнений действительно создаёт поток доходности совершенно иного масштаба, чем у остальных. Наша техника (№3) совпадает с базовым ориентиром с большим отрывом от прочих.

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

Хотя такие темы, как неблагоприятный отбор, в литературе по маркетмейкингу обсуждались (Cartea et al., 2015 [2]), ни одно существующее исследование прежде не описывало явление отрицательного дрейфа при исполнении лимитной заявки так сжато, как настоящая статья. Мы описали простыми теоретическими моделями и воспроизводимыми эмпирическими результатами, что явление существует. Вывод основан на простом допущении о лимитной заявке на лучшем bid или ask: в базовых обстоятельствах она будет исполнена неблагоприятным движением цены в 100% случаев. Мы показали, что это допущение логически точно и действительно наблюдается на финансовых рынках.

Можно возразить, что этот вывод основан на действиях наивной (неинформированной) торговой стратегии, тогда как информированный трейдер сумеет вовремя передвинуть или снять свои лимитные заявки, чтобы избежать неблагоприятных движений цены, используя так называемый сигнал краткосрочной альфы. Хотя это за рамками настоящей статьи, кое-что мы можем прокомментировать. На практике ни один сигнал краткосрочной альфы не является полностью надёжным. Мы экспериментировали с сигналами краткосрочной альфы на основе потока заявок, машинного обучения и марковских цепей. Мы находим, что такие сигналы действительно способны в значимой степени предсказывать краткосрочную альфу (направление следующего движения средней цены). Однако финансовые данные шумны, и даже у хороших предсказаний корреляция с будущим движением средней цены составляет лишь 15–25%. То есть многие наши предсказания будут ошибочны, и избежать каждого неблагоприятного движения цены мы не сможем. Отрицательный дрейф по-прежнему сильно бьёт и по таким стратегиям. Хотя работы в этой области ещё предстоит немало, мы считаем, что наша модель отрицательного дрейфа должна быть настройкой по умолчанию, в которой оцениваются сигналы краткосрочной альфы. Используя стратегию симуляции из предыдущего раздела, можно оценивать методы, нацеленные на избегание отрицательного дрейфа.

В разделе 3 мы показали, что отрицательный дрейф моделируется в модели GCHP (Swishchuk and Huffman, 2018 [10]), если предположить, что лимитные заявки исполняются неблагоприятными движениями цены и бернуллиевской долей для неблагоприятными не являющихся. Мы предполагаем, что оставшиеся расхождения между нашей реализацией бэктеста и живой симуляцией сократились бы, если считать, что времена между не-неблагоприятными исполнениями следуют процессу Хоукса (Hawkes, 1971 [5]) вместо бернуллиевской или экспоненциальной интенсивности, — это допущение набирает всё больше веса в свежих исследованиях (Kirchner and Vetter, 2020; Swishchuk and Huffman, 2018; Sjogren and DeLise, 2021 [6, 10, 9]). Возможно, имеет смысл взять модель GCHP за основу процедуры симуляции. У модели GCHP есть приятные математические свойства, развитые недавно (Swishchuk and Huffman, 2018 [10]), такие как закон больших чисел и функциональная центральная предельная теорема. Однако эти результаты опираются на предельные теоремы, фактически превращающие GCHP в непрерывный диффузионный процесс, что ведёт к неверной спецификации высокочастотного ценового процесса и уводит нас в неправильную сторону.

Мы выбрали текущую постановку, потому что она проста, но выразительна. Мы задаём простые правила и находим, что итоги совпадают с реальностью намного точнее, чем у любой предыдущей маркетмейкерской модели для лимитных заявок. Богатство и точность симуляций на основе столь простых правил вдохновляют. Простые строительные блоки, повторённые много раз, порождают богатые свойства и интересные паттерны (Mandelbrot, 1983 [7]). Наша уверенность в выводах крепнет, когда простая модель создаёт динамику, неотличимую от природы.

Рынки — дискретные системы, где цены прыгают с одной точки ценовой сетки на другую. Если цена вообще движется, она движется минимум на один тик. Движения на один тик достаточно, чтобы вызвать исполнение лимитной заявки, стоящей на лучшем bid или лучшем ask, на ликвидных рынках. Это должно быть непременной частью любой высокочастотной модели маркетмейкинга в лимитных стаканах. Удивительно, но эти базовые элементы до сих пор отсутствовали или были недопредставлены в литературе по маркетмейкингу и высокочастотным финансам. Мы сделали шаг — встроили эти допущения в математическую модель рынка. Сделав это, мы обнаружили и определили отрицательный дрейф средней цены относительно исполнения лимитной заявки — в теории и на практике.

Сноски

  1. Мы искренне отдаём должное авторам этого учебника. Доступный студентам рабочий код — по-настоящему замечательный вклад, который помог нам совершить открытие, представленное в настоящей работе. Мы также понимаем, что не вся математика написана самими авторами.

Литература

Оригинал статьи: Timothy DeLise, «The Negative Drift of a Limit Order Fill», arXiv:2407.16527 · лицензия CC BY 4.0