July 1

HFT: Анатомия скорости. Часть II из III Почему свечи врут: данные, ликвидность, алгоритмы и симуляция исполнения

Введение:
Рынок до свечи.

В первой части мы вскрыли машину.

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

Теперь мы делаем следующий шаг — и точка обзора смещается.

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

Кто выставил заявку? Кто её отменил? Кто забрал ликвидность, а кто остался стоять в очереди? Кто успел снять котировку за микросекунду до удара, а кто поймал проскальзывание всем объёмом? Кто торговал против информированного потока, даже не подозревая об этом?

Свечной график не отвечает на эти вопросы. Он для этого не предназначен. Он слишком груб.

Свеча — это посмертная справка. Четыре цифры: открытие, максимум, минимум, закрытие. Иногда рядом пристраивают объём. Для классического технического анализа этого, возможно, достаточно. Для HFT это не просто мало — это опасно. Свеча сжимает тысячи микрособытий в аккуратный прямоугольник, уничтожая почти всю микроструктурную информацию. Она делает рынок визуально понятным и одновременно полностью стирает реальность исполнения.

Внутри одной-единственной минуты могли произойти тысячи сообщений:

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

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

В HFT недостаточно знать, что цена «где-то была». Нужно понимать, можно ли было по этой цене купить или продать. Нужно знать, какой объём реально стоял на уровне, сколько заявок было перед вами, как быстро эта ликвидность испарилась, какая задержка отделяла сигнал от вашей реакции и сколько в итоге стоило само исполнение — с учётом комиссий, спреда и проскальзывания.

Так мы приступаем ко вторая части.

Она не про то, как «найти сигнал на графике». Она про то, почему сигнал без исполнения не имеет ценности.

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

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

Свеча стирает всё это. Она превращает живую структуру рынка в удобную, но бесполезную для HFT справку о прошлом.

Именно поэтому HFT-анализ начинается не с вопроса «какая была цена»,
а с вопроса «какое состояние рынка было доступно системе в конкретный момент времени». Первый вопрос опирается на историю. Второй пытается восстановить реальность исполнения. Для обычного участника рынка разница может казаться философской. Для HFT это граница между исследованием и самообманом.

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

Но в реальной книге заявок перед вами на этом уровне уже стояло 50 000 единиц чужого объёма. Сделок прошло только 8 000. До вашей очереди просто не дошло. Формально цена коснулась уровня — практически вы не исполнились.

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

Третий вариант. Вы хотели купить 10 000 единиц по видимой цене, но на лучшем ask стояло только 700. Остальной объём пришлось забирать глубже по книге. Средняя цена исполнения ушла вниз. В свечном бэктесте у вас аккуратный вход одной сделкой. В реальности — каскад частичных исполнений, расширенный спред, impact и ухудшение результата.

Поэтому главный враг HFT-исследования — не отсутствие сложной математики. Главный враг — неправильное представление о том, что именно было доступно для исполнения. Отсюда возникает жёсткая необходимость работать не со свечами, а с потоком рыночных сообщений. Нужны данные, которые позволяют восстановить жизнь книги заявок: добавления, отмены, сделки, сдвиги котировок, изменения глубины, моменты исчезновения объёмов, дисбалансы, моменты ухода маркет-мейкеров.

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

Мы начнём с данных и покажем, почему свечи не подходят для анализа высокочастотной торговли. Разберём, чем отличаются сделки, top of book, market depth, full order book и поток биржевых сообщений. Покажем, почему «больше данных» не означает «больше понимания», если данные не очищены, не синхронизированы и не восстановлены.

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

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

Затем перейдём к алгоритмам исполнения. Крупный объём нельзя просто ударить в рынок, не заплатив за это ухудшением цены. Алгоритмы дробят
parent order на множество child orders, распределяют объём во времени, учитывают ликвидность, срочность, комиссии, impact и риск раскрытия намерения. Их задача — не предсказать будущее, а выполнить торговую задачу с минимальными издержками. Именно эти алгоритмы создают поток, который видит HFT-система: следы крупного исполнения в повторяющихся сделках, устойчивом давлении на одну сторону книги, регулярном участии в обороте.

После этого разберём маркет-мейкинг. Маркет-мейкер не просто «зарабатывает спред». Он продаёт немедленность и принимает взамен inventory risk, adverse selection, latency risk и риск отмены. Спред — это не бесплатный доход, а компенсация за опасность быть исполненным в неправильный момент. Главная тема это — неблагоприятный отбор. Исполнение само по себе не является победой. Победа — это исполнение, после которого цена не доказывает, что вас использовали как выходную ликвидность.

Затем — статистический арбитраж. На бумаге идея аккуратна: два связанных инструмента, расхождение, покупка дешёвого и продажа дорогого. В HFT реальная проблема — успеть исполнить обе стороны, не получить leg risk, не потерять edge на комиссии, не попасть в проскальзывание и не обнаружить, что корреляция сломалась именно в момент открытия позиции. На свечах расхождение существовало — в реальности оно могло исчезнуть до прихода заявки. На свечах обе ноги исполнились — в реальности одна нога могла остаться открытой.

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

Далее — дисбаланс книги заявок. Order book imbalance выглядит соблазнительно: если на bid больше объёма, чем на ask, кажется, что цена пойдёт вверх. Но snapshot может обмануть. Объём может быть временным, заявки могут исчезнуть, большой bid может оказаться не спросом, а механическим следом исполнения. Дисбаланс нужно анализировать не как фотографию, а как процесс: кто агрессор, что с отменами, как быстро восстанавливается глубина, уходит ли ликвидность перед движением.

Финальный крупный блок второй части — бэктестинг и симулятор исполнения. Это центральная проверка всей логики.

Если стратегия не может быть проверена через реалистичный replay рынка, модель очереди, модель задержки, частичные исполнения, отмены, комиссии, spread, slippage, impact и risk state, то её результат нельзя считать серьёзным. Это может быть интересная исследовательская гипотеза, но не доказанная HFT-логика.

Реалистичный HFT-бэктест должен отвечать на жёсткие вопросы. Видела ли система это событие вовремя? Была ли книга восстановлена корректно? Где находилась наша заявка в очереди? Дошёл ли до неё объём? Сколько времени заняли расчёт и риск-контроль? Когда заявка реально пришла на площадку? Была ли она исполнена полностью или частично? Что произошло с остатком? Сколько стоили комиссии и проскальзывание? Как изменился риск после исполнения? Что случилось бы при всплеске задержки?

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

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

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

Данные: почему свечи не подходят.

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

Свеча фиксирует четыре цифры: открытие, максимум, минимум и закрытие. Иногда к ним подклеивают объём. Такая структура отвечает на вопрос
«куда сходила цена», но HFT работает на другом уровне — на уровне последовательности событий. Появление заявки, её отмена, сделка, сдвиг лучшей котировки, изменение глубины, движение очереди — всё это исчезает в свече. Остаётся только силуэт движения, его итоговая тень.

Если за минуту цена открылась на 100.00, сходила к 100.20, упала на 99.90 и закрылась на 100.05, свеча покажет полный диапазон. Но она ничего не расскажет о том, в каком порядке происходили сделки, какая ликвидность была доступна на каждом уровне, сколько объёма стояло перед вашей заявкой, как быстро исчезали котировки, был ли спред стабильным и кто выступал агрессором. Для классического анализа это может быть допустимым упрощением. Для HFT — нет.

На высокочастотном горизонте важно не только то, была ли цена на определённом уровне. Важно, была ли эта цена доступна для конкретного действия конкретной системы в конкретный момент времени. Свеча отвечает на вопрос: «В каком диапазоне торговалась цена за интервал?» HFT-исследование обязано ставить вопрос иначе: «Какие состояния рынка последовательно видел алгоритм, какие решения он мог принять и какие заявки могли быть исполнены с учётом очереди, задержки, глубины и издержек?» Эти два вопроса — не взаимозаменяемы.

Что именно теряется при переходе к свечам.

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

Вторая потеря — отсутствие книги заявок. Свеча не показывает, какие лимитные заявки стояли на покупку и продажу, сколько объёма было на лучших уровнях, какая глубина пряталась за ними и как двигалась очередь. Между тем именно книга заявок определяет, можно ли исполнить ордер без проскальзывания.

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

Четвёртая потеря — направление агрессии. Свечной объём говорит, сколько проторговано, но не говорит, кто забирал ликвидность. Были ли это агрессивные покупатели, долбившие в ask, или агрессивные продавцы, крушившие bid? Для анализа краткосрочного давления это различие существенно.

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

Шестая потеря — очередь. Даже если цена коснулась уровня, ваша лимитная заявка могла не исполниться. Перед ней уже стояли заявки других участников. Если объём сделок на уровне оказался меньше суммарного объёма, стоявшего перед вами, вы остаётесь ни с чем. Свечной бэктест часто игнорирует этот факт и ошибочно засчитывает сделку.

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

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

Цена на графике и цена исполнения.

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

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

Свеча не показывает этот процесс. Она рисует лишь диапазон, внутри которого происходила торговля, но не путь заявки через книгу.

Уровни рыночных данных.

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

Самый грубый уровень — свечи (OHLC + объём). Это удобно для обзора, но полностью лишено микроструктурной информации. Восстановить очередь, оценить отмены или проверить глубину на свечах невозможно.

Следующий уровень — сделки (tick data). Мы видим отдельные факты обмена: цену, объём, время. Это уже детальнее свечей, потому что видна последовательность исполнений. Но книги заявок всё ещё нет. Мы видим результат взаимодействия с ликвидностью, но не саму ликвидность до сделки.

Далее — верх книги заявок (top of book): лучшие цена покупки и продажи, иногда объём на них. Это позволяет оценивать спред и изменения немедленной цены, но не показывает глубину за первыми уровнями. Если заявка крупнее объёма на лучшей цене, этих данных недостаточно.

Более информативный уровень — глубина рынка (market depth).
Видны несколько уровней bid и ask с объёмами. Можно приблизительно моделировать прохождение рыночного ордера по книге и оценивать потенциальное проскальзывание. Однако часто глубина агрегирована: показывает суммарный объём на уровне, но не отдельные заявки и их очерёдность.

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

Наиболее детальный уровень — поток заявка-за-заявкой (order-by-order). Видны отдельные заявки, их идентификаторы, все операции с ними. Это даёт возможность строить точную модель очереди, но требует гораздо более тяжёлой инфраструктуры обработки и хранения.

Именно поэтому нельзя говорить о «рыночных данных» как о чём-то однородном. Для разных задач нужны разные данные. Для визуального анализа достаточно свечей. Для грубой оценки внутридневной активности — сделок. Для анализа спреда нужен верх книги. Для оценки исполнимости требуется глубина. А для реалистичной HFT-симуляции необходим полный поток событий, позволяющий восстановить книгу и очередь.

Данные как поток событий.

Электронный рынок корректнее рассматривать не как ценовой ряд, а как поток событий. Каждое событие меняет состояние системы. Вот типовые элементы этого потока:

  • добавление лимитной заявки
  • изменение объёма существующей заявки
  • отмена заявки
  • совершение сделки
  • изменение лучшего bid или ask
  • изменение спреда
  • изменение глубины на уровне
  • торговая пауза или технический статус инструмента
  • подтверждение, отклонение или частичное исполнение собственной заявки.

Каждое из этих событий может быть значимым. Сделка показывает уже совершённый обмен. Отмена — изменение готовности предоставлять ликвидность. Появление новой заявки — новый интерес. Сдвиг лучшей котировки мгновенно меняет спред и цену немедленного исполнения. Изменение глубины переопределяет способность рынка принять объём.

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

События → Состояние книги → Признаки → Решение → Исполнение

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

Почему «больше данных» не означает «лучше»?

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

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

Во-вторых, данные должны иметь корректную последовательность.

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

В-третьих, временные метки обязаны быть осмысленными. Нужно различать: время события на бирже, время отправки сообщения, время получения участником, время записи в базу. Эти времена не равны, и для модели задержки различие между ними — не техническая мелочь, а основа реализма.

В-четвёртых, данные должны соответствовать задаче. Если стратегия оценивает очередь, а данные содержат лишь агрегированную глубину по уровням, точную очередь восстановить невозможно. Можно строить приближение, но его ограничения придётся явно осознавать.

В-пятых, нужна инфраструктура воспроизведения (replay). Сами по себе данные не проверяют стратегию. Необходим механизм, который проигрывает поток событий во времени, восстанавливает книгу, передаёт события стратегии и моделирует реакции системы.

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

Полезные данные = Сырые события + Корректная реконструкция + Точное время + Контекст исполнения

Сырой поток без реконструкции — это не фундамент для анализа, а груда неразобранного металла.

Реконструкция книги заявок.

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

Упрощённо цепочка выглядит так:

Сырые сообщения → Проверка целостности → Упорядочивание → строитель книги → Локальная книга заявок

Система проверяет полноту и порядок, затем каждое событие применяется к локальной структуре: новая заявка — добавляем объём на уровень, отмена — убираем, сделка — уменьшаем объём и сдвигаем очередь. При смене лучшей цены пересчитываются best bid, best ask, spread и связанные признаки. Результатом становится состояние рынка, которое стратегия считает текущей реальностью.

Ключевое слово здесь — «локальное». HFT-система никогда не торгует «истинный рынок» напрямую. Она оперирует тем состоянием, которое успела получить, обработать и восстановить. Между биржей и локальной книгой всегда существует задержка. Если данные пришли поздно, были пропущены или восстановлены с ошибкой, стратегия принимает решения на основе искажённой картины. Поэтому строитель книги — не вспомогательный модуль, а один из центральных элементов HFT-исследования. Ошибка в этом слое делает бессмысленными любые, даже самые изощрённые признаки и модели.

Последовательность сообщений и пропуски данных.

Особое значение имеет контроль последовательности. Биржи часто нумеруют сообщения. Если система получила пакеты 101, 102 и 104, отсутствие 103 — это критическое событие. Одно пропущенное сообщение может изменить состояние книги катастрофически. Представьте, что сообщение 103 содержало отмену крупного ask-объёма. Если система его пропустила, локальная книга уверена, что ликвидность всё ещё доступна. Стратегия может отправить заявку, ожидая исполнения по цене, которой в реальности уже нет. Это не ошибка стратегии в чистом виде — это ошибка состояния данных.

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

Временные метки и проблема синхронизации.

В HFT-данных у времени несколько смыслов. Одно и то же событие имеет биржевую метку, сетевую метку, время получения на сервере, время обработки приложением и время записи в журнал. Эти значения могут отличаться. Для анализа критически важно понимать, какое именно время используется.

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

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

Время события ≠ Время получения ≠ Время принятия решения ≠ Время прибытия заявки на биржу.

Это не философия, а математика выживания. Если задержка не моделируется явно, HFT-симуляция становится слишком благоприятной и завышает результаты.

Сделка и котировка — принципиально разная информация. Сделка говорит: обмен уже произошёл. Котировка говорит: есть готовность купить или продать по определённой цене. Если анализировать только сделки, мы видим историю исполнений, но не видим, какая ликвидность была доступна перед ними. Если анализировать только котировки, мы видим предложения, но не знаем, какие из них действительно забрали. Для HFT важна связь между ними.

Возьмём крупный bid на уровне 100.00. Он может выглядеть как поддержка. Но если агрессивные продажи начинают проходить по нему и bid не восстанавливается, ситуация меняется радикально. Если же после каждой продажи bid мгновенно пополняется — это может указывать на скрытый или устойчивый спрос. Свеча не различает эти сценарии. Поток сделок и заявок — различает. Именно поэтому признаки, построенные на книге, должны учитывать не только статический объём, но и его динамику: как быстро появляется и исчезает объём, что происходит после сделки, восстанавливается ли глубина, расширяется ли спред, меняется ли направление агрессии, растёт ли поток отмен. Без этой динамики даже подробный снимок книги остаётся просто фотографией, а не фильмом.

Агрегированная глубина и индивидуальные заявки.

Не всякая информация о книге одинаково полезна. Агрегированная глубина показывает общий объём на ценовом уровне: например, на 100.00 стоит 25 000 единиц. Но этот объём может состоять из одной гигантской заявки или из сотен мелких. Для общей глубины разницы нет, а вот для очереди и поведения участников — колоссальная. Если данные позволяют видеть отдельные заявки, можно оценить структуру очереди точнее: различать добавления, частичные отмены, возраст заявок, поведение отдельных групп ордеров. Если же доступна только агрегированная глубина, приходится использовать приближения.

Это особенно важно для моделирования лимитных заявок. Когда ваша стратегия выставляет ордер на уровне, где уже есть объём, нужно знать, сколько именно заявок находится перед вами. При агрегированных данных точное положение в очереди обычно неизвестно. Симулятор может использовать консервативные предположения, но не должен автоматически считать заявку исполненной только потому, что цена коснулась уровня. Основная ошибка простого бэктеста именно в этом и состоит: он заменяет очередь фактом касания цены. Для HFT это недопустимо.

Данные и признаки

После восстановления книги стратегия редко работает с сырым потоком напрямую.

Из состояния рынка извлекаются признаки — числовые или категориальные описания, которые подаются в логику принятия решений. К базовым признакам относятся:

  • спред
  • средняя цена между лучшими bid и ask
  • глубина на нескольких уровнях
  • дисбаланс объёма
  • поток сделок (частота и направление)
  • поток отмен
  • скорость изменения лучшей цены
  • восстановление ликвидности после сделки
  • частота обновления котировок
  • возраст объёма на уровне
  • соотношение агрессивных покупок и продаж.

Например, дисбаланс объёма на лучших уровнях можно описать простым соотношением: разность между объёмом на покупку и объёмом на продажу, делённая на их сумму. Если на bid стоит намного больше, чем на ask, показатель будет положительным, что часто интерпретируется как давление вверх. Но даже такая простая формула требует осторожности. Большой объём на bid не всегда означает устойчивый спрос. Он может быть отменён через долю секунды. Он может стоять далеко в очереди. Он может быть частью алгоритма исполнения, а не выражением мнения. Поэтому признак всегда должен рассматриваться в контексте динамики книги. Задача данных — не просто дать больше чисел, а позволить построить признаки, сохраняющие связь с исполнимостью.

Почему свечной бэктест переоценивает HFT-стратегии.

Свечной бэктест систематически завышает результаты высокочастотных стратегий по нескольким причинам.

Во-первых, он предполагает безусловную доступность цены. Если внутри свечи был минимум 99.90, тест считает, что покупка по этой цене возможна. Но на этом уровне могло не оказаться достаточной ликвидности.

Во-вторых, он игнорирует очередь. Лимитная заявка могла стоять после тысяч других. Сделки по уровню прошли, но до вашей очереди не дошло.

В-третьих, он упрощает задержку. В тесте решение принимается на основе данных, которые в реальности стали бы доступны системе позже. Это создаёт эффект недопустимого знания будущего.

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

В-пятых, он не учитывает полные издержки. Комиссии, спред, проскальзывание, рыночное воздействие и частичные исполнения способны полностью уничтожить теоретическую прибыль.

В-шестых, он игнорирует операционные состояния заявки. В реальности ордер может быть отправлен, отклонён, частично исполнен, отменён, исполнен до подтверждения отмены или зависнуть в неопределённом статусе. Свечной тест сводит всё к примитивному «входу» и «выходу».

Именно поэтому результат свечного теста для HFT следует рассматривать не как доказательство, а как предварительную гипотезу, если вообще допускать её в таком контексте.

Какие данные нужны для серьёзного HFT-исследования.

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

  • поток сделок с точными временными метками — чтобы понимать фактические исполнения и направление агрессии;
  • данные по лучшим bid и ask — чтобы оценивать спред и изменение немедленной цены;
  • глубина рынка — чтобы оценивать доступный объём и проскальзывание;
  • поток изменений книги — чтобы восстановить эволюцию ликвидности;
  • информация о статусах собственных заявок — чтобы моделировать жизненный цикл ордеров;
  • корректные временные метки на всех этапах — чтобы реалистично учесть задержку;
  • данные о комиссиях, правилах площадки, типах заявок и ограничениях по потоку сообщений — исполнение существует не в вакууме, а внутри конкретной инфраструктуры;
  • механизм проверки пропусков и восстановления книги — без него нельзя доверять локальному состоянию рынка.

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

Ложь?

Свечи не «лживы» в абсолютном смысле. Они просто отвечают на слишком грубый вопрос. Для высокочастотной торговли нужен иной масштаб наблюдения.

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

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

Итог можно записать кратко, но жёстко:

  • Данные для HFT — это не история цен.
  • Данные для HFT — это события + книга заявок + очередь + временные метки + контекст исполнения.

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

Мимолётная ликвидность и поток отмен.

Теперь перед нами встаёт следующий вопрос — что из того, что мы видим в книге заявок, реально можно потрогать? Интуиция подсказывает: если в стакане стоит 10 000 единиц на продажу по 100.10, значит, рынок готов продать нам ровно столько. И если на покупку висит 15 000 по 100.00 — значит, купят у нас ровно столько. Для неторопливого взгляда такое допущение ещё простительно. Для HFT оно равносильно смертельному самообману.

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

Корректнее смотреть на ликвидность как на величину, имеющую временно́е измерение. Между наблюдением рыночного состояния и попаданием нашей заявки на биржу проходит промежуток, внутри которого другая сторона успевает переиграть всё: снять объём, исполниться раньше, расширить спред, перестроить очередь. Ликвидность, которая была видна в момент получения данных, к моменту торгового действия может уже не существовать.

Ликвидность — это вероятность, а не фотография.

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

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

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

Почему ликвидность исчезает?

Отмена заявки в электронном рынке — не аномалия, а нормальная часть управления риском.

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

Основных причин исчезновения ликвидности несколько.

Изменение справедливой оценки: приток данных смещает равновесную цену, и прежняя заявка становится токсичной.

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

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

Отмена заявки как управление риском.

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

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

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

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

Поток отмен как информационный слой рынка.

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

Для анализа микроструктуры необходимо учитывать обе категории. Если на стороне продаж постоянно появляются и исчезают крупные объёмы, а сделок почти нет, — один тип поведения. Если ask-объём стабилен и постепенно исполняется агрессивными покупателями — другой. Если bid-ликвидность исчезает до прихода крупных продаж — третий. Свеча покажет лишь итоговое движение цены, но не механику исчезновения ликвидности.

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

Основные метрики потока отмен.

Для количественного анализа потока отмен можно использовать несколько базовых показателей.

Доля отмен в общем потоке заявок: количество отменённых заявок, делённое на количество поданных заявок за выбранный интервал. Эта метрика показывает интенсивность отмен, но сама по себе недостаточна. Высокое значение может быть нормой для ликвидного инструмента с активным маркет-мейкингом, низкое для менее активной книги. Интерпретировать нужно в контексте инструмента, времени, волатильности и структуры участников.

Соотношение отмен и сделок: количество отмен, делённое на количество сделок. Помогает оценить, насколько изменения книги происходят через отмены, а не через фактические исполнения. Если книга активно перестраивается, но сделок мало, значительная часть движения ликвидности происходит без обмена активом.

Объём отмен — просто сумма отменённых объёмов. Количество отменённых заявок и отменённый объём — разные вещи: можно снять много мелких заявок или несколько крупных. Для оценки ликвидности важен именно объём, который исчезает из книги.

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

Среднее время жизни заявки: момент отмены или исполнения минус момент подачи. Короткое время жизни может отражать интенсивное обновление котировок, но его интерпретация зависит от контекста. Для одних инструментов это норма, для других — признак смены режима.

Изменение глубины после отмен: глубина до отмены минус глубина после. Помогает понять, насколько отмена реально повлияла на способность книги принять объём. Не всякая отмена важна: снятие маленькой заявки далеко от лучшей цены почти не меняет картину, а отмена крупного объёма на лучшем bid или ask способна резко изменить цену немедленного исполнения.

Возраст ликвидности?

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

Для HFT важна не только глубина, но и её устойчивость. Два ценовых уровня с одинаковой глубиной могут иметь разное качество, если на одном объём стабилен, а на другом постоянно исчезает и появляется заново.

Мимолётная ликвидность.

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

Пример. В момент t₀ система видит на лучшем ask 8 000 единиц по 100.10. Стратегия рассчитывает купить 5 000 без перехода на следующий уровень. Система принимает решение, проходит внутреннюю обработку, риск-контроль и отправляет заявку. В момент t₁, ещё до прихода заявки на биржу, другие участники снимают значительную часть ask-ликвидности. В момент t₂ заявка достигает рынка, но на 100.10 осталось лишь 500. Остальное исполняется по худшим ценам или не исполняется вовсе. Исторический снимок на t₀ говорит: ликвидность была. Реальность исполнения говорит: она оказалась недоступной.

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

Восстановление ликвидности

Исчезновение ликвидности — лишь одна сторона процесса. Другая — её восстановление. После сделки или отмены книга может восстановиться быстро или медленно. Если после агрессивной покупки ask-объём быстро возвращается, это указывает на устойчивое предложение или активное присутствие
маркет-мейкеров. Если глубина не восстанавливается, рынок становится тонким, и следующая агрессивная заявка пройдёт глубже.

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

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

Отмены и очередь.

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

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

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

Отмены как реакция на токсичный поток.

Одно из центральных понятий микроструктуры — неблагоприятный, или токсичный, поток.

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

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

Когда участники подозревают, что встречный поток стал токсичным, они начинают снимать ликвидность.
Глубина уменьшается, спред расширяется.
Типичная последовательность выглядит так:

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

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

Спред и глубина в условиях исчезающей ликвидности.

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

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

Видимая ликвидность и скрытая ликвидность.

Кроме мимолётности существует ещё одна проблема: не вся ликвидность видна. Некоторые площадки и типы заявок допускают скрытый или частично скрытый объём. Часть интереса может находиться вне публичной книги — в альтернативных торговых системах или внутренних механизмах исполнения. Публичная книга заявок — важная, но неполная картина рынка.

Наличие скрытой ликвидности не отменяет необходимости анализировать видимую книгу, а усложняет задачу. Если видимая глубина мала, но сделки проходят без значительного сдвига цены, возможно, присутствует скрытый объём. Если видимая глубина велика, но исчезает до исполнения, она может быть менее полезной, чем кажется. Для HFT-анализа важно различать три категории: отображаемая ликвидность, скрытая или частично скрытая ликвидность и фактически доступная ликвидность после учёта задержки и очереди. Последняя — самая важная для исполнения, но её нельзя просто прочитать из стакана, её нужно оценивать через поток событий, сделки, отмены, восстановление глубины и результаты собственных заявок.

Ошибки анализа мимолётной ликвидности

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

Как учитывать мимолётную ликвидность в исследовании.

Серьёзное HFT-исследование обязано встроить мимолётность ликвидности в модель данных и симуляции. Необходимо измерять время жизни заявок и объёмов на уровнях, чтобы отличать устойчивую глубину от краткосрочных всплесков.

Анализировать отмены по сторонам книги и по расстоянию от лучшей цены: отмена объёма на лучшем bid имеет один смысл, отмена далеко от рынка — другой.

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

Моделировать задержку между наблюдением и торговым действием — мгновенная реакция переоценивает доступность ликвидности.

Моделировать очередь — даже если ликвидность видна, заявка в конце очереди имеет низкую вероятность исполнения.

Различать режимы рынка: в спокойном состоянии ликвидность устойчивее, в периоды новостей и высокой волатильности мимолётность возрастает.

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

Связь с алгоритмами исполнения?

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

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

В этом смысле ликвидность эндогенна: она зависит от действий самого участника. Нельзя считать рынок пассивным фоном, крупная заявка меняет условия собственного исполнения. Мимолётная ликвидность увеличивает вероятность проскальзывания и рыночного воздействия, потому что видимый объём может исчезать быстрее, чем заявка его использует.

Связь с маркет-мейкингом?

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

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

Связь с симулятором исполнения?

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

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

И что из этого ?

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

Для HFT это означает: стратегия должна анализировать не только состояние книги, но и её устойчивость во времени. Ключевой принцип можно сформулировать так: исполнимая ликвидность равна отображаемой ликвидности, умноженной на вероятность её сохранения и на доступность через очередь. Отображаемая ликвидность — лишь начальный слой. Вероятность сохранения и место в очереди определяют, можно ли действительно использовать этот объём.

Следовательно, ликвидность в HFT — это не то, что видно в стакане. Это то, что остаётся доступным к моменту исполнения.

Алгоритмы исполнения.

Теперь идем на новый уровень: как крупному участнику вообще провести значимый объём через эту турбулентную среду? В обывательском представлении сделка выглядит просто:
хочешь купить — отправляешь заявку, хочешь продать — отправляешь встречную. Но для институционального капитала такая логика непригодна. Значительный объём нельзя просто «ударить в рынок», не изменив условия собственного исполнения.

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

Алгоритм исполнения не обязательно пытается предсказать направление рынка. Он не спрашивает «куда пойдёт цена?». Он отвечает на другой, более приземлённый вопрос: «Как исполнить уже принятое решение с наименьшими издержками и наименьшим раскрытием намерения?» Это не спекулятивная стратегия в чистом виде, а инженерная задача оптимального преобразования объёма.

Родительская заявка и дочерние ордера.

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

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

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

Основные компоненты стоимости исполнения.

Крупное исполнение всегда сопряжено с несколькими видами издержек.

Комиссии — прямые биржевые, брокерские и клиринговые расходы. Для высокочастотных и высокооборотных стратегий они способны съесть значительную часть экономического результата.

Спред — плата за немедленность. Покупатель, использующий рыночную заявку, обычно взаимодействует с ask, продавец — с bid. Разница между ними является стоимостью мгновенного исполнения.

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

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

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

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

Алгоритм исполнения постоянно балансирует между этими конфликтующими факторами.

Срочность против рыночного воздействия.

Центральный конфликт исполнения — противостояние между срочностью и рыночным воздействием. Если нужно исполниться быстро, приходится агрессивно забирать ликвидность, что увеличивает спредовые расходы, проскальзывание и воздействие. Если исполняться медленно, можно снизить давление на книгу и лучше скрыть намерение, но тогда растёт риск, что цена уйдёт против вас.
Этот компромисс можно выразить просто:
общая стоимость = рыночное воздействие + риск времени.

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

TWAP: равномерное распределение по времени.

Один из базовых подходов — TWAP (средневзвешенная по времени цена).
Идея проста: родительская заявка делится на равные доли и исполняется равномерно в течение заданного временного горизонта. Если нужно исполнить сто тысяч единиц за десять периодов, базовая схема предполагает примерно по десять тысяч единиц на каждый период.

Преимущество TWAP — простота и предсказуемость. Он не требует прогноза рыночного объёма и помогает избежать слишком концентрированного воздействия. Недостаток — игнорирование реальной динамики ликвидности. Рыночный объём в разные периоды может сильно различаться: книга то глубока, то тонка. Равномерное исполнение по времени не всегда равномерно с точки зрения воздействия на рынок. Кроме того, механическое появление заявок с одинаковым шагом может быть обнаружено другими участниками и сделает поведение предсказуемым.

Поэтому в реальных системах TWAP модифицируют: добавляют случайность во времени и объёме, контроль ликвидности, ограничения по спреду, запрет на исполнение в неблагоприятных состояниях книги и реакцию на отклонение от графика.

VWAP: Привязка к рыночному объёму.

Другой распространённый подход — VWAP (средневзвешенная по объёму цена). Здесь исполнение пропорционально рыночной активности: в периоды, когда рынок торгует больше, алгоритм исполняет бо́льшую долю родительской заявки. Ориентиром служит исторический или прогнозируемый профиль внутридневного объёма. Если, скажем, в первый час обычно проходит двадцать процентов дневного оборота, алгоритм может стремиться исполнить около двадцати процентов родительского объёма в этот период.

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

POV: Доля участия в рынке.

POV (participation of volume, или исполнение с заданной долей участия) исходит из того, что алгоритм исполняет не фиксированный объём за интервал, а определённый процент от фактического рыночного объёма. Если задано участие в десять процентов, а рынок проторговал пятьдесят тысяч единиц, алгоритм может попытаться исполнить около пяти тысяч. Если рыночный объём вырос до двухсот тысяч, допустимый объём алгоритма увеличивается.

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

Стоимость реализации решения (Implementation Shortfall).

Более глубокая рамка для оценки исполнения — Implementation Shortfall, или стоимость реализации решения. Она сравнивает фактический результат исполнения с ценой, которая была доступна в момент принятия инвестиционного решения. Если инвестор решил купить актив при ориентировочной цене 100.00,
а в результате всех частичных исполнений средняя цена составила 100.25,
то эти 0.25 (плюс комиссии) — часть стоимости реализации. Для продажи логика зеркальна: фактическая цена ниже цены решения означает ухудшение.

Этот подход важен тем, что учитывает не только качество отдельных сделок относительно рыночного ориентира, но и цену промедления. Если алгоритм был слишком осторожен, а рынок ушёл против него, итоговое исполнение окажется хуже, даже если проскальзывание на каждом шаге было небольшим.
Отказ от сделки или чрезмерная медлительность тоже имеют свою цену.

Пассивное и агрессивное исполнение.

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

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

Ограничения и контроль.

Серьёзный алгоритм не швыряет заявки в рынок бездумно. Он обязан иметь систему ограничений.

Предельная цена — для покупки максимально допустимая, для продажи минимально допустимая. Это страхует от катастрофического ухудшения цены.

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

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

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

Допустимая волатильность — при резких скачках цены исполнение временно приостанавливается, чтобы не взаимодействовать с нестабильным рынком.

Состояние данных — если книга рассинхронизирована, есть пропуск сообщений или задержка превысила порог, исполнение ограничивается.

Эти ограничения превращают алгоритм из механического расписания в систему управления торговым процессом.

Рыночное воздействие и его природа.

Рыночное воздействие — это изменение цены или состояния книги, вызванное собственными действиями участника. Чем больше объём относительно доступной ликвидности, тем выше вероятность воздействия. Оно бывает временным (книга быстро восстанавливается) и более устойчивым (крупный поток воспринимается как сигнал, и другие участники перестраивают котировки). Устойчивый поток покупок могут интерпретировать как наличие крупного покупателя или информированного спроса, и продавцы поднимут цены, а маркет-мейкеры снимут предложение.

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

Раскрытие намерения.

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

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

Выбор площадки

Если инструмент торгуется на нескольких площадках, алгоритм обязан решать не только «когда» и «сколько», но и «где». Выбор зависит от доступной ликвидности, спреда, комиссий, вероятности исполнения, скорости доступа, качества данных, риска отмены ликвидности, правил приоритета заявок, вероятности неблагоприятного отбора и технических ограничений.

Лучшая отображаемая цена не всегда означает лучшее фактическое исполнение — важны совокупные характеристики площадки.
Маршрутизация заявок становится частью исполнения: система оценивает качество ликвидности на каждом направлении и распределяет поток соответствующим образом.

Следы алгоритмов в книге заявок.

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

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

Взаимодействие с мимолётной ликвидностью? Что это такое ?

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

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

Связь с HFT.

Алгоритмы исполнения не всегда являются HFT в узком смысле, но они глубоко встроены в высокочастотную среду.

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

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

Типичные ошибки при моделировании.

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

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

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

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

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

Забывать про частичные исполнения — крупный объём редко исполняется идеально; остатки, переносы, отмены и повторные размещения являются нормой.

Не учитывать комиссии и правила площадки — для высокооборотных систем комиссия может кардинально изменить предпочтительность пассивного или агрессивного режима.

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

Использовать фиксированную модель без обратной связи — реальный алгоритм должен реагировать на изменение рынка, а не тупо следовать расписанию.

Минимальные требования к симуляции алгоритма исполнения.

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

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

Алгоритмы исполнения как источник рыночной информации.

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

Исполнение не нейтрально. Оно оставляет отпечатки в сделках, глубине, отменах, восстановлении ликвидности, спреде, дисбалансе книги, краткосрочном движении цены и реакции других участников. Для HFT это означает, что поток исполнения может быть объектом анализа. Но такой анализ должен быть осторожным: не всякий устойчивый поток является сигналом будущего движения. Иногда это просто механическое завершение крупного объёма, иногда хеджирование, ребалансировка или реакция на внешний риск. Без контекста ошибочная интерпретация такого потока приводит к плохому собственному исполнению.

Алгоритмы-поведения ,
зачем они нужны нам ?

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

Главная задача алгоритма — не «угадать цену», а реализовать уже принятое решение с минимальными совокупными издержками. Эти издержки складываются из комиссий, спреда, проскальзывания, рыночного воздействия и альтернативной стоимости.

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

Для HFT эта тема важна вдвойне.

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

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

Маркет-мейкинг.

Маркет-мейкинг — это, пожалуй, самая мифологизированная и одновременно самая непонятая деятельность в электронной микроструктуре. Обывателю её преподносят как механический заработок: выставил две заявки, купил подешевле, продал подороже, разницу в карман. Формально это верно,
но экономически такая картинка безнадёжно неполна. В реальности маркет-мейкер не просто «собирает спред» — он продаёт немедленность остальному рынку и принимает взамен целый букет рисков: риск позиции, риск неблагоприятного отбора, риск задержки, риск изменения справедливой цены, риск очереди, риск частичного исполнения и операционный риск.

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

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

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

Роль маркет-мейкера в электронной книге заявок.

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

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

Двухсторонняя котировка.

Базовая форма поведения маркет-мейкера — одновременное выставление цены покупки и цены продажи. В упрощённом виде котировки симметричны относительно внутренней оценки справедливой цены: цена покупки равна справедливой цене минус половина спреда, цена продажи — справедливой цене плюс половина спреда.

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

Поэтому более реалистичная схема выглядит так:

цена покупки равна справедливой цене минус половина спреда, минус поправка на текущую позицию, минус дополнительная премия за риск; цена продажи равна справедливой цене плюс половина спреда, минус поправка на позицию, плюс премия за риск.

Смысл в том, что маркет-мейкер не стоит механически вокруг середины — он непрерывно корректирует котировки, исходя из собственного состояния и состояния рынка.

Справедливая цена.

Для маркет-мейкера критически важна не просто текущая середина между лучшим bid и ask, а собственная оценка справедливой цены — того уровня, относительно которого он готов котировать.

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

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

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

Спред как компенсация за риск.

Спред — это видимая плата за вход, но его экономическое содержание гораздо сложнее. Он должен покрывать несколько источников риска.

Риск неблагоприятного отбора: маркет-мейкера исполняют именно тогда, когда встречная сторона обладает лучшей информацией или рынок уже пошёл против его котировки.

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

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

Операционные и инфраструктурные издержки: комиссии, каналы связи, рыночные данные, размещение серверов, разработка и контроль системы — всё это формирует минимальный экономически оправданный спред.

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

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

Риск позиции.

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

Управление позицией — центральная часть маркет-мейкинга. Есть несколько способов контроля. Смещение котировок: при слишком длинной позиции ухудшается bid и улучшается ask, чтобы снизить вероятность новых покупок и повысить вероятность продаж; при короткой — зеркально. Ограничение размера позиции: система задаёт предельные значения, при достижении которых новые котировки на опасной стороне запрещаются или существенно ухудшаются. Хеджирование: если доступен связанный инструмент, участник может частично снизить риск через встречную позицию — например, позиция в акции хеджируется фьючерсом или ETF. Но хеджирование само по себе несёт издержки и риск исполнения. Временное прекращение котирования: если позиция стала слишком большой или рынок перешёл в нестабильный режим, система может снизить активность или отменить часть заявок.

Таким образом, маркет-мейкинг — это не постоянное равномерное присутствие в книге, а адаптивный процесс, в котором готовность предоставлять ликвидность зависит от текущего риска.

Неблагоприятный отбор?

Неблагоприятный отбор — главный враг маркет-мейкера. Он возникает, когда пассивная заявка исполняется участником, который либо обладает лучшей информацией, либо быстрее реагирует на изменение рынка.

Ситуация классическая. Маркет-мейкер выставил ask по 100.10. Агрессивный покупатель исполняет эту заявку, и сразу после этого справедливая цена поднимается до 100.20. Формально маркет-мейкер продал по своей котировке, но экономически — продал слишком дёшево относительно новой информации. Аналогично на bid: маркет-мейкер купил по 100.00, а цена тут же упала до 99.90 — формально исполнение есть, фактически покупка перед ухудшением.

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

Качество исполнения.

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

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

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

Очередь и приоритет?

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

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

Это можно сформулировать так: приоритет в очереди против риска устаревшей котировки. Маркет-мейкер постоянно решает, что важнее в данный момент сохранить очередь или отменить заявку для защиты от плохого исполнения. Решение зависит от волатильности, скорости изменения книги, текущей позиции, объёма перед заявкой, вероятности исполнения, токсичности потока и задержки системы. Если рынок стабилен и поток не опасен, сохранение очереди рационально. Если рынок быстро меняется, сохранение котировки становится опасным.

Обновление котировок

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

Типовая цепочка выглядит так: рыночные данные → оценка справедливой цены → учёт риск-состояния → формирование котировок → проверка риска → обновление заявок. Важно, что обновление не должно запускаться только из-за последней цены сделки. Для маркет-мейкера изменение состояния книги и риск исполнения часто важнее самой сделки. Иногда последняя сделка прошла далеко от лучшей котировки и не имеет прямого значения, а небольшое изменение глубины или всплеск отмен гораздо информативнее.

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

Размер котировки.

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

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

Комиссии и биржевые стимулы

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

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

Хеджирование позиции.

Маркет-мейкер может снижать риск позиции через хеджирование. Если после исполнений накопился риск в одном инструменте, можно открыть встречную позицию в связанном инструменте или на другой площадке. Например, позиция в акции частично хеджируется фьючерсом на индекс или ETF; позиция в фьючерсе — базовым активом или близким контрактом; позиция в криптовалюте на одной площадке — позицией на другой, при условии достаточной ликвидности и приемлемого риска перевода.

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

Маркет-мейкинг и волатильность.

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

Качественно эта связь проста: рост волатильности → расширение спреда и уменьшение размера котировки. Это не механическое правило для каждого тика, но генеральное направление. При росте неопределённости поставщики ликвидности требуют бо́льшую компенсацию за риск либо уменьшают объём присутствия в книге. Именно поэтому во время новостей и резких движений рынок стремительно теряет ликвидность: маркет-мейкеры не обязаны сохранять прежние котировки, если риск исполнения резко вырос. Они расширяют спред, сжимают объём или временно уходят.

Маркет-мейкинг и задержка.

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

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

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

Маркет-мейкинг и режимы рынка.

Маркет-мейкинговая стратегия не может быть одинаковой во всех рыночных режимах. Поведение, работающее в спокойной книге, становится смертельно опасным при новостях, всплеске волатильности или исчезновении ликвидности.

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

Таким образом, стратегия обязана включать не только модель котирования, но и модель рыночного режима.

Ошибки в понимании маркет-мейкинга.

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

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

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

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

Считать позицию второстепенной — небольшие, но асимметричные исполнения быстро накапливаются в значимый риск.

Не учитывать очередь — даже правильная котировка может не приносить исполнений при слабом положении на уровне, или приносить их только в худшие моменты.

Игнорировать задержку отмены — решение снять котировку не означает,
что она уже снята на площадке; в промежутке она остаётся уязвимой.

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

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

Минимальные требования к симуляции маркет-мейкинга?

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

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

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

Маркет-мейкинг как управление условиями исполнения

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

Если ответ — «другому участнику просто нужна немедленность», исполнение может быть качественным. Если ответ — «другая сторона быстрее поняла изменение справедливой цены», исполнение неблагоприятно. В этом смысле маркет-мейкинг является задачей отбора потока: нужно предоставлять ликвидность там, где компенсация достаточна, и избегать условий,
где вероятность токсичного исполнения слишком высока.

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

Что мы имеем ? Маркетос ?

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

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

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

Статистический арбитраж.

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

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

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

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

Что считать связанными инструментами?

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

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

Фьючерс и базовый актив. Их связь определяется стоимостью фондирования, дивидендами, временем до экспирации и ставками. Отклонения могут быть объектом арбитражного анализа, но требуют синхронной работы с двумя рынками.

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

Индекс и его компоненты. Фьючерс на индекс или ETF может двигаться быстрее, чем отдельные акции, создавая временное рассогласование. Для его использования нужна высокая скорость обработки данных, точная синхронизация и способность исполняться на множестве инструментов одновременно.

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

Актив и его производные. Опционы, фьючерсы, бессрочные контракты,
свопы — здесь связь определяется более сложными моделями, включающими волатильность, фондирование, срок и параметры риска.

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

Спред как объект охоты

Основным объектом анализа становится не цена отдельного инструмента,
а спред между ними. Для двух активов А и B спред можно представить как разность между ценой первого и ценой второго, умноженной на коэффициент β, который отражает их историческое или модельное соотношение. Если β равен единице, речь идёт о простой ценовой разнице. Если инструменты имеют разную волатильность или масштаб цены, коэффициент должен это учитывать.

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

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

Стандартизированное отклонение
не торговая инструкция.

Для оценки величины отклонения часто используют стандартизированное значение спреда (z-score). Оно вычисляется просто: из текущего спреда вычитается его среднее значение за выбранный период, и результат делится на стандартное отклонение спреда. Если полученное число сильно выше нуля, первый инструмент считается относительно дорогим; если сильно ниже относительно дешёвым.

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

Основная ошибка новичка: увидел большое отклонение — автоматически предположил возврат к среднему.

Однако статистическое отклонение может быть не временной ошибкой,
а началом нового режима.

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

Корреляция и коинтеграция.

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

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

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

От сигнала до сделки: Обязательная проверка реальности.

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

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

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

Кошмар неисполненной ноги.

Центральный риск статистического арбитража — риск незавершённой второй стороны сделки (leg risk). Предположим, стратегия видит расхождение между инструментами A и B и должна купить A и продать B. Если покупка A исполнилась, а продажа B — нет, участник остаётся с чистой направленной позицией вместо нейтральной относительной. Арбитражная сделка мгновенно превращается в открытую ставку на движение одного инструмента. Пока система пытается завершить вторую сторону, связь может восстановиться или измениться,
и убыток фиксируется.

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

Задержка и асинхронность.

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

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

Bid, ask и проблема средней цены.

Многие модели строятся на последней цене сделки или на середине спреда.
Для статистического арбитража это смертельно опасно. Последняя цена сделки не обязательно является ценой немедленной покупки или продажи.
Середина спреда — тоже неисполнимая цена: купить можно по ask,
продать — по bid (если не использовать пассивные лимитные заявки).

Поэтому модель, видящая спред между mid-ценами, переоценивает возможность исполнения. Реальная сделка обязана учитывать сторону рынка. Если стратегия покупает A и продаёт B, стоимость входа — это ask инструмента A минус коэффициент β, умноженный на bid инструмента B. Если наоборот — продажа A и покупка B, используется bid A минус β умножить на ask B. Спред между серединами может выглядеть привлекательно, но после подстановки реальных bid/ask преимущество исчезает. Дополнительно нужно проверить глубину: даже bid и ask не гарантируют исполнение нужного объёма без проскальзывания.

Комиссии и минимальный порог.

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

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

Проскальзывание и ёмкость.

Если объём стратегии мал относительно доступной ликвидности, проскальзывание может быть терпимым. Но как только объём становится значимым, исполнение начинает двигать рынок. Статистический арбитраж уязвим вдвойне, потому что требует работы минимум с двумя сторонами. Совокупное проскальзывание складывается из проскальзывания по каждому инструменту, и если инструментов много — издержки растут. Для корзин, ETF и индексных стратегий это особенно болезненно: чем больше компонентов,
тем сложнее добиться модельной цены.

Рыночное воздействие часто асимметрично: один инструмент ликвиден,
другой — тонок.
Вся стратегия фактически ограничена самой слабой ногой.
Какой выводи из этого ? Ёмкость стратегии не может превышать ёмкость самого трудного для исполнения элемента.

Миф о нейтральности

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

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

Расхождение — это просто инфа, а не обязательно ошибка.

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

Поэтому отклонение ≠ неверная цена. Отклонение — это факт данных,
а неверная цена — интерпретация. Между ними обязана стоять проверка режима, ликвидности, новостного фона и устойчивости связи.

Смена режима?

Рыночный режим может измениться быстрее, чем модель успеет адаптироваться. Признаки смены режима: рост волатильности спреда, увеличение времени возврата, устойчивое смещение среднего, расширение bid/ask-спредов, ухудшение глубины, рост отмен, падение корреляции, увеличение частичных исполнений и ложных сигналов. Если модель продолжает использовать старые параметры, она видит серию «привлекательных» отклонений, которые на деле являются распадом связи.

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

Переподгонка модели.

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

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

Ошибки данных.

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

Поэтому качественный статистический арбитраж начинается не с формулы, а с проверки данных.

Высокочастотный статистический арбитраж и книга заявок.

На высокочастотном горизонте нельзя ограничиваться ценами — нужно работать с книгой заявок. Краткосрочное расхождение может существовать только на уровне видимых котировок, но быть неисполнимым.
Например, инструмент A выглядит дешевле B, но чтобы купить A, н
ужно заплатить ask, а чтобы продать B — получить bid.
После перехода от mid к реальным bid/ask расхождение исчезает.
Далее нужно учесть глубину: если объёма на нужных уровнях недостаточно, цена исполнения ухудшится.
Затем — очередь: лимитные заявки могут не исполниться, даже если цена коснулась уровня, а агрессивные заявки платят спред и проскальзывание.

Следовательно, торгуемый спред ≠ модельный спред.
Модельный рассчитывается по удобным ценам, торгуемый — по тем ценам и объёмам, которые реально доступны.

Закрытие позиции.

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

Ограничение ёмкости.

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

Конкуренция и исчезновение преимущества.

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

Пересечение с маркет-мейкингом.

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

Пример логики

Рассмотрим абстрактную пару A и B с историческим соотношением β.
Модель вычисляет спред и стандартизированное отклонение. Если оно сильно выходит за обычный диапазон — гипотеза о временном расхождении.
Но прежде чем торговать, система обязана проверить: по каким bid и ask можно войти, какой объём доступен на каждой стороне, сколько стоят комиссии, какова задержка, есть ли риск неполного исполнения, не изменился ли режим,
нет ли новостей, как быстро расхождение исчезало в прошлом и можно ли будет закрыть позицию. Если после всех проверок ожидаемое преимущество исчезает, сигнал отбрасывается. Если остаётся — ограничивается лимитами.
Этот пример показывает, что формула спреда — лишь начало, а торговое решение рождается только после проверки исполнимости.

Минимальные требования к симуляции

Симуляция статистического арбитража должна быть на порядок сложнее обычного ценового бэктеста. Необходимо: синхронный поток данных по всем инструментам, корректные bid и ask, глубина книги, модель задержки для каждого потока и отправки заявок, комиссии, модель частичного исполнения, модель риска незавершённой второй стороны, учёт очереди, проскальзывание, правила закрытия позиции, контроль лимитов, режимные фильтры и учёт технических пропусков.

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

Без такой проверки исторический статистический арбитраж — это иллюзия, показывающая красивое сжатие спреда, но не доказывающая реальную способность исполнить связку.

Главные ошибки

Первая — использовать средние цены вместо исполнимых bid/ask. Вторая — считать расхождение гарантированным возвратом. Третья — игнорировать риск второй ноги. Четвёртая — не учитывать задержку и асинхронность. Пятая — считать историческую корреляцию достаточной. Шестая — не включать комиссии, проскальзывание и воздействие по всем инструментам. Седьмая — не проверять закрытие позиции. Восьмая — игнорировать смену режима. Девятая — переоценивать ёмкость. Десятая — тестировать на данных, недоступных в момент решения. Все эти ошибки смертельно опасны в HFT, где расхождения малы, издержки велики, а время жизни возможности исчезающе коротко.

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

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

Событийные алгоритмы и новости.

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

На первый взгляд логика примитивна: появилась новость — робот её прочитал, определил направление и выстрелил заявкой. Но реальность далека от этой картины. В профессиональной системе новость не превращается в сделку автоматически. Между событием и заявкой лежит длинная цепочка: получение данных, проверка источника, выделение смысла, сравнение с ожиданиями, оценка важности, определение затронутых инструментов, анализ ликвидности, контроль риска и только затем — торговое действие. Событийный алгоритм отвечает не на вопрос «Что произошло?», а на гораздо более сложные: «Действительно ли это новая и достоверная информация? К каким инструментам она относится? Насколько она отличается от того, что рынок уже заложил в цену? Как быстро рынок уже отреагировал? Есть ли ликвидность, чтобы действовать? Не стала ли книга заявок устаревшей? И что опаснее — отправить заявку или отменить уже висящие котировки?»

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

Новость и рыночное событие.

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

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

Сюрприз как основа реакции.

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

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

Типы событий

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

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

Корпоративные отчёты и сообщения — выручка, прибыль, прогнозы, дивиденды, слияния, поглощения, судебные решения, смена руководства. Они могут быть регулярными или внезапными, их сложность
в необходимости интерпретировать не только числа, но и текстовые формулировки.

Регуляторные решения — ставки, ограничения, санкции, лицензии, требования к капиталу. Такие события часто имеют асимметричный эффект: один сектор выигрывает, другой проигрывает.

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

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

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

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

Структурированные и неструктурированные данные.

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

Путь события до заявки.

Полная цепочка обработки события выглядит так:
событие → проверка источника → разбор (парсинг) → классификация → определение релевантности → формирование сигнала → проверка ликвидности → контроль риска → ордер или отмена.
Сначала система получает событие из источника и проверяет его тип.
Затем данные разбираются: числа извлекаются из структуры, текст превращается в набор признаков. Далее событие классифицируется как макроэкономическое, корпоративное, регуляторное, техническое или иное.

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

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

Защитная реакция на событие.

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

Направленная реакция.

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

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

Ожидание рынка важнее абсолютного значения.

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

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

Пересмотр данных.

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

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

Многоступенчатая реакция рынка.

Реакция рынка на событие не одномоментна, она имеет несколько фаз.

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

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

Влияние события на книгу заявок.

Событие меняет не только цену, но и всю микроструктуру рынка. Типовые изменения: резкое увеличение отмен, уменьшение объёма на лучших уровнях, расширение спреда, скачок агрессивных сделок, рост частичных исполнений, ухудшение глубины, задержка восстановления книги, изменение дисбаланса bid и ask, рост отказов или технических задержек. Для событийного алгоритма это означает, что после новости нужно анализировать не только направление движения, но и качество рынка. Цена может указывать на покупку, но ask-ликвидность уже исчезла, спред расширился, и заявка исполнится с большим проскальзыванием. Правильное направление не спасает результат.
Событийный сигнал становится исполнимым только после проверки книги заявок.

Новость как источник токсичного потока.

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

Ложные сигналы и ошибки интерпретации.

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

Проверка достоверности и уникальности.

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

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

События с заранее известным временем

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

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

Внезапные события.

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

Реакция связанных инструментов.

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

Событийная торговля и статистический арбитраж.

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

Событийная торговля и маркет-мейкинг.

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

Влияние задержки.

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

Новость и ликвидность.

События ухудшают ликвидность именно тогда, когда потребность в исполнении максимальна. В момент публикации участники снимают заявки, спред расширяется, глубина падает, рыночные заявки проходят по нескольким уровням. Стоимость немедленного действия резко возрастает:
событие → расширение спреда, падение глубины, рост проскальзывания.
Если алгоритм учитывает только направление новости, но игнорирует изменение ликвидности, он систематически переоценивает результат.
Модель верно определила, что новость положительна, но ask-ликвидность исчезла, спред расширился, и фактическая цена исполнения оказалась значительно хуже.
Событийный сигнал должен быть скорректирован на стоимость ликвидности, задержки и буфер риска.

Событийные алгоритмы и отмены.

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

Ошибка «быстрее значит лучше».

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

Модель уверенности.

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

Рыночное подтверждение.

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

Событийный режим в системе риска.

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

События и симуляция.

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

Ошибки при моделировании событийных алгоритмов.

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

Событийный алгоритм как система решений.

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

Что по событиям?

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

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

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

Дисбаланс книги заявок и краткосрочное давление потока.

тот блок следует читать не как “индикатор из терминала”, а как синтетическую реконструкцию того, как в HFT-стеке может строиться модуль краткосрочного давления потока.

В production-grade логике imbalance-модуль не берётся из свечи и не считается по одной последней цене.
Он строится поверх event-driven market data pipeline: raw feed → нормализация сообщений → tick / event storage → book builder → feature engine → queue model → short-term pressure model → execution filter.

На уровне технологий такой исследовательский контур может выглядеть так:

Auto-generated by HFT Order Book Imbalance Research Compiler v0.2 
This module is a synthetic educational simulation. Text, diagrams, market-event logic and imbalance scenarios are generated to illustrate how a professional order-book pressure / HFT feature-engineering stack may be structured. It does not represent live trading activity, proprietary exchange data, real fills or the operation of a production trading system.
* raw market data feed — поток quote, trade, cancel, replace и book update events;
* Kafka / Redpanda / Aeron — доставка и replay сообщений;
* ArcticDB / kdb+ / Parquet — хранение tick, quote, trade и order book event data;
* ClickHouse — быстрые аналитические выборки по spread, depth, imbalance, cancel rate и trade flow;
* C++ / Rust book builder — восстановление книги заявок и очереди;
* Python research layer — анализ признаков, гипотезы, визуализация и валидация;
* feature engine — расчёт bid/ask imbalance, depth imbalance, queue imbalance, trade imbalance, cancel imbalance и microprice;
* latency / execution filter — проверка, можно ли было использовать этот сигнал до того, как книга изменилась.
Дисбаланс книги заявок — это попытка описать рынок не одной ценой, а относительным перевесом ликвидности между bid и ask. На коротком горизонте важно не только, где находится best bid или best ask, но и какой объём стоит по обеим сторонам, как быстро он меняется и кто реально забирает ликвидность.
Дисбаланс книги заявок — это попытка описать рынок не одной ценой, а относительным перевесом ликвидности между bid и ask. На коротком горизонте важно не только, где находится best bid или best ask, но и какой объём стоит по обеим сторонам, как быстро он меняется и кто реально забирает ликвидность.
Глубина по нескольким уровням меняет интерпретацию дисбаланса. Один уровень книги может показывать спрос, но несколько уровней могут показывать обратную картину. Для HFT важна не фотография лучшего bid и ask, а структура depth: где сосредоточен объём, насколько он устойчив и какой размер заявки рынок способен принять без ухудшения цены.
Для лимитной заявки важен не только общий объём на уровне, но и место в очереди. На одном и том же ценовом уровне может стоять большой объём, но если большая его часть находится перед вашей заявкой, вероятность исполнения остаётся низкой. Видимая ликвидность не равна доступной ликвидности для конкретного участника.
Давление рынка проявляется не только в стоящих заявках, но и в исполненном потоке. Покупки по ask показывают агрессивный спрос: кто-то не ждёт пассивного исполнения и забирает предложение. Продажи по bid показывают агрессивное предложение: кто-то ударяет в покупателя и забирает bid.
Дисбаланс может возникать не только через сделки, но и через отмены. Если объём на bid массово исчезает без сделок, поддержка рынка ослабевает. Если объём на ask снимается быстрее, чем появляется новый, предложение становится тоньше. В обоих случаях книга меняется, хотя trade tape может не показать крупного обмена.
Microprice пытается сжать локальное давление книги в одну численную оценку. В отличие от midprice, он учитывает не только лучшие цены, но и объёмы на best bid и best ask. Если объём на bid значительно больше объёма на ask, microprice смещается вверх. Если ask-side тяжелее, оценка смещается вниз.
Главная ошибка — считать imbalance механическим сигналом направления. Сильный bid imbalance не означает, что цена обязана пойти вверх. Объём может исчезнуть до исполнения. Агрессивный поток может смениться. Глубина может оказаться мимолётной. Большой bid может быть следом чужого алгоритма исполнения, а не устойчивым спросом.
В реальной HFT-системе imbalance редко используется отдельно. Он входит в вектор признаков вместе с trade flow, spread, depth, queue, cancel rate, volatility и latency context. Один признак может дать полезную подсказку, но не описывает рынок полностью.
Дисбаланс книги заявок полезен только тогда, когда он связан с реальностью исполнения. Bid / ask перекос даёт локальную информацию. Глубина и очередь уточняют качество сигнала. Сделки и отмены меняют интерпретацию. Spread и latency определяют, можно ли вообще использовать это состояние рынка.

Бэктестинг HFT и симулятор исполнения.

Свечной бэктест не проверяет HFT-стратегию. Он проверяет ценовую фантазию: будто цена была доступна, заявка исполнилась мгновенно, очередь отсутствовала, ликвидность не исчезала, задержки не было, комиссии не влияли, а весь объём можно было исполнить по удобной цене.

Этот блок следует читать не как обычный “бэктест стратегии по истории”, а как синтетическую реконструкцию того, как в HFT-стеке может строиться модуль replay, исполнения и проверки исполнимости.

В production-grade логике HFT-бэктест не строится на свечах и не предполагает идеальный fill.

Он работает поверх event-driven replay pipeline: raw feed → нормализация сообщений → tick / event storage → deterministic replay → book builder → feature engine → strategy engine → risk control → latency model → queue model → order simulator → cost model → net PnL.

Смысл такого стека не в том, чтобы “ускорить график” или нарисовать гладкую equity curve. Его задача — восстановить, что именно система могла видеть в конкретный момент времени, какую заявку она могла отправить, где эта заявка оказалась в очереди, дошла ли до неё ликвидность и могла ли она реально исполниться.

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

На уровне технологий такой исследовательский контур может выглядеть так:

Auto-generated by HFT Replay Research Compiler v0.2  
This module is a synthetic educational simulation. Text, diagrams, market-event logic and execution scenarios are generated to illustrate how a professional HFT replay / execution-testing stack may be structured. It does not represent live trading activity, proprietary exchange data, real fills or the operation of a production trading system.

* raw market data feed — поток quote, trade, cancel, replace, order book update и exchange acknowledgement events;
* Kafka / Redpanda / Aeron — доставка, запись и replay рыночных сообщений;
* ArcticDB / kdb+ / Parquet — хранение tick, quote, trade, event и book-state данных;
* ClickHouse — быстрые аналитические выборки по spread, depth, latency, fill ratio, cancel rate, slippage и market impact;
* C++ / Rust replay engine — детерминированное проигрывание событий в строгом временном порядке;
* C++ / Rust book builder — восстановление локальной книги заявок, best bid / ask, depth, spread и queue state;
* Python research layer — анализ признаков, гипотезы, визуализация, sanity checks и валидация результатов;
* feature engine — расчёт spread, depth imbalance, trade imbalance, cancel flow, microprice, short-term volatility и liquidity regime;
* strategy engine — генерация решений: quote, cancel, replace, cross spread, hedge, reduce inventory или do nothing;
* pre-trade risk control — проверка лимитов, stale data, max order size, exposure, open orders и kill-switch rules;
* latency model — моделирование event time, receive time, decision time, send time и arrival time;
* queue model — оценка места заявки в очереди, объёма впереди, отмен перед заявкой и вероятности partial fill;
* order state machine — состояния created, sent, accepted, working, partially filled, cancel pending, filled, cancelled или rejected;
* execution simulator — моделирование fills, missed fills, rejects, cancels, replace, queue loss и adverse selection;
* fee / slippage / impact model — комиссии, spread, slippage, market impact, exchange fees и infrastructure cost.
Реалистичный HFT-бэктест должен отвечать не на вопрос «куда пошла цена», а на вопрос: могла ли система увидеть событие, принять решение, пройти risk check, отправить заявку и получить исполнение в конкретном состоянии книги. Проверяется не график, а цепочка: observe → decide → risk check → send → fill / cancel.
Вместо свечи нужен replay рынка. История должна проигрываться как последовательность событий: add order, cancel order, modify order, trade, bid / ask update, exchange acknowledgement. Каждое событие меняет состояние книги, а стратегия должна реагировать только на то, что было доступно ей в этот момент.
Перед симуляцией нужно восстановить книгу заявок во времени. Сырые сообщения нужно упорядочить, проверить на пропуски, дубликаты и неправильную последовательность, затем обновлять локальный order book после каждого события. Если book reconstruction ошибочен, вся симуляция торгует не рынок, а повреждённую копию рынка.
Следующий слой — модель задержки. Между рыночным событием и действием системы всегда есть временной разрыв: получение данных, расчёт признаков, решение модели, risk check, отправка заявки и обработка на площадке. За это время книга могла измениться, ликвидность могла исчезнуть, а старая цена могла стать неисполняемой.
Дальше нужна модель очереди. Касание ценового уровня не означает исполнение лимитной заявки. Перед нашей заявкой может стоять чужой объём. Сделки должны пройти через очередь. Отмены перед нами могут улучшить позицию. Новые заявки, сделки и cancels меняют вероятность fill во времени.
Симулятор обязан учитывать частичные исполнения. В реальном рынке заявка редко исполняется одной идеальной точкой. Часть объёма может исполниться, остаток может остаться в книге, быть отменён, переставлен или исполниться позже по другому состоянию рынка. Позиция и риск обновляются поэтапно.
Результат до издержек не является результатом HFT-стратегии. Нужно вычитать комиссии, биржевые сборы, spread, slippage, market impact и инфраструктурные расходы. Если преимущество исчезает после этих затрат, стратегия существовала только в исследовательской модели, а не в исполнимом рынке.
Если стратегия крупная относительно доступной ликвидности, она должна менять симулируемый рынок. Собственная заявка забирает depth, ухудшает следующие цены, может вызвать исчезновение ликвидности и реакцию других участников. Capacity не бесконечна: чем больше размер относительно книги, тем менее реалистичен тест без impact model.
Главная ошибка наивной симуляции — идеальный fill. Если тест исполняет заявку по last price, при касании уровня, без очереди, без задержки, без проверки глубины и без комиссии, он почти неизбежно завышает результат. Такой тест делает исполнение лучше, чем оно могло быть в реальности.
Наивный тест почти всегда завышает качество исполнения, потому что подставляет идеальный fill.

Replay-движок, очередь, задержка и финальная сборка логики.

После проверки базовых ошибок HFT-бэктеста нужно собрать симулятор как производственную систему. Он не должен просто “прогонять стратегию по истории”. Он должен последовательно воспроизводить рыночные события, строить книгу заявок, обновлять признаки, проводить решение через risk control, моделировать заявки, fills, отмены, очередь, задержку и итоговый PnL.

Auto-generated by HFT Replay Research Compiler v0.2  
This module is a synthetic research simulation: text, diagrams, market-event logic and execution scenarios are generated to illustrate professional HFT replay architecture, not to represent live trading activity or proprietary exchange data.

После проверки базовых ошибок HFT-бэктеста симулятор нужно собирать не как “прогон стратегии по истории”, а как событийную инфраструктуру, максимально близкую к production-grade replay stack.

Такой симулятор должен воспроизводить рынок не свечами, а последовательностью сообщений: market data events, изменения книги, сделки, отмены, подтверждения, отказы, частичные исполнения и изменение статуса заявок. Его задача — восстановить не красивую траекторию цены, а то состояние рынка, которое стратегия действительно могла видеть в конкретный момент времени.

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

Первый слой — хранение и подготовка данных. Raw market data feed сохраняется как tick / event history: trades, quotes, order book updates, cancels, auction events, venue timestamps и exchange acknowledgements. Для такого слоя могут использоваться ArcticDB, kdb+, Parquet / Iceberg-хранилище или другой time-series / tick-data store. Здесь важны не только скорость чтения, но и воспроизводимость: версия данных, порядок сообщений, контроль пропусков, дубликатов, out-of-order events и точность временных меток.

Второй слой — аналитическое хранилище и контроль качества. ClickHouse или другой columnar OLAP-слой может использоваться для быстрых выборок, агрегаций, sanity checks, отчётов по ликвидности, spread, depth, cancel rate, fill ratio и статистике симуляции. Это не execution layer, а исследовательский и контрольный слой: он помогает понять, где данные повреждены, где режим рынка изменился, где стратегия получает слишком “идеальное” исполнение.

Третий слой — deterministic replay engine. Он последовательно проигрывает market events в том порядке, в котором они могли быть получены системой. В production-grade логике такой движок должен быть детерминированным: один и тот же набор данных, seed, latency profile и параметры стратегии должны давать один и тот же результат. Это нужно для воспроизводимости исследований, поиска ошибок и сравнения разных версий модели.

Четвёртый слой — book builder. Он восстанавливает локальную книгу заявок из потока сообщений. Здесь важны sequence numbers, venue time, receive time, обработка cancel / replace, trades, hidden liquidity assumptions и корректная реконструкция best bid / best ask / depth. Если book builder ошибается, вся стратегия тестируется не на рынке, а на повреждённой копии рынка.

Пятый слой — feature engine. Он считает признаки только из того состояния рынка, которое было доступно стратегии на данном такте replay: spread, depth imbalance, queue imbalance, trade imbalance, cancel rate, short-term volatility, microprice, order flow toxicity, latency context и режим ликвидности. Feature engine не имеет права смотреть в будущее состояние книги.

Шестой слой — strategy engine. Здесь исследовательская логика превращается в решение: quote, cancel, replace, cross spread, reduce inventory, hedge, stop trading или do nothing. Но решение стратегии ещё не является исполнением. Оно должно пройти через risk layer и только затем попасть в order simulator.

Седьмой слой — pre-trade risk control. Перед отправкой заявки проверяются position limits, notional limits, max order size, open orders, exposure by venue, kill-switch rules, stale data checks, latency thresholds и запрет торговли при повреждённых данных. В нормальной HFT-системе risk control — это не формальность, а часть каждого решения.

Восьмой слой — latency model. Симулятор должен различать event time, receive time, decision time, send time и arrival time. Между появлением события на рынке и прибытием нашей заявки в matching environment проходит время. За это время книга могла измениться, ликвидность могла исчезнуть, а прежняя цена могла стать неисполняемой.

Девятый слой — queue model. Касание цены не означает fill. Для лимитной заявки нужно моделировать место в очереди, объём впереди, сделки по уровню, отмены перед нашей заявкой, новые заявки, priority rules и вероятность частичного исполнения. Без queue model тест почти всегда завышает качество пассивных стратегий.

Десятый слой — order state machine. Заявка должна проходить реальные состояния: created, sent, accepted, working, partially filled, cancel pending, filled, cancelled или rejected. Ошибка в статусах ломает симуляцию: стратегия начинает действовать так, будто заявка уже исполнена, ещё жива или уже отменена, хотя в реальности это не так.

Одиннадцатый слой — execution simulator. Он моделирует fills, partial fills, rejects, cancels, replace, queue loss, adverse selection, missed fills и изменение позиции после каждого события. Это центральное отличие HFT replay от обычного бэктеста: проверяется не только сигнал, но и возможность превратить сигнал в исполнение.

Двенадцатый слой — fee / slippage / impact model. Итоговая доходность должна считаться после комиссий, биржевых сборов, spread, slippage, market impact, borrow / funding cost при необходимости и инфраструктурных затрат. Gross PnL в HFT мало что значит: стратегия существует только если преимущество остаётся после всех execution costs.

Схематично такой стек можно описать так:

raw feed → validation → tick / event store → deterministic replay → book builder → feature engine → strategy engine → pre-trade risk → latency model → queue model → order state machine → execution simulator → cost model → net PnL.

На уровне технологий это может выглядеть как исследовательско-производственный контур:

* ArcticDB / kdb+ / Parquet — хранение tick, quote, trade и order book event data;
* ClickHouse — быстрые аналитические выборки, отчёты и контроль качества данных;
* Kafka / Redpanda / Aeron — потоковая доставка сообщений и replay-инфраструктура;
* Python — research layer, анализ признаков, эксперименты и валидация гипотез;
* C++ / Rust — latency-sensitive replay engine, book builder и execution simulator;
* PostgreSQL — метаданные экспериментов, параметры стратегий, версии датасетов и конфигурации;
* Prometheus / Grafana — мониторинг задержек, ошибок, throughput, dropped events и состояния симулятора;
* Docker / Kubernetes или bare-metal Linux servers — воспроизводимое окружение для research и batch replay;
* NVMe storage — быстрый локальный слой для тяжёлых tick / event datasets;
* PTP / NTP time sync — контроль временных меток и согласованности времени между источниками.

Сам технологический стек не создаёт edge. ArcticDB, kdb+, ClickHouse или C++-движок не делают стратегию прибыльной. Они только убирают самообман: позволяют проверить, что стратегия действительно могла видеть рынок, принять решение, попасть в очередь, получить исполнение и сохранить положительный результат после издержек.

Поэтому production-grade HFT-бэктест — это не “график против истории”. Это инженерная проверка исполнимости: данные → книга → признаки → решение → риск → задержка → очередь → исполнение → costs → net result.
Архитектура HFT-симулятора начинается с market data replay. Сырые события поступают в book builder, книга восстанавливается во времени, strategy engine получает только доступное состояние рынка, risk module проверяет действия, order simulator моделирует исполнение, а PnL engine считает результат после всех издержек.
Симуляция должна быть событийной. Каждое новое сообщение меняет состояние книги, пересчитывает признаки и может изменить решение стратегии. Это не свечной проход по времени, а цикл: event → book → features → decision → risk → order state.
Заявка в HFT-симуляторе не может быть просто “открыта” или “закрыта”. У неё есть жизненный цикл: created, sent, accepted, working, partially filled, cancel pending, filled, cancelled или rejected. Ошибка в статусах заявки ломает весь тест, потому что стратегия начинает действовать по состоянию, которого в реальности не было.
После каждого fill меняется не только PnL, но и risk state системы. Обновляется позиция, открытые заявки, exposure, лимиты и возможность новых действий. Симулятор должен учитывать, что частичное исполнение может приблизить систему к лимиту, изменить допустимый размер следующей заявки или полностью запретить дальнейшее действие.
Главный принцип реалистичного теста: нельзя использовать информацию, которая ещё не была доступна алгоритму. Event time, receive time, decision time и arrival time — разные моменты. Если тест случайно использует будущее состояние книги, он создаёт ложное преимущество.
Перед тем как доверять результату, нужно проверить, не подставляет ли симулятор идеальный рынок. Есть ли очередь? Есть ли задержка? Есть ли отмены? Есть ли partial fills? Есть ли комиссии? Есть ли market impact? Если хотя бы часть этих слоёв отсутствует, тест завышает качество стратегии.
Исследовательская гипотеза становится стратегией только после прохождения всей цепочки: данные, реконструкция книги, replay, execution model, risk model и net result. До этого момента красивая идея остаётся лабораторной конструкцией, а не проверенной HFT-логикой.
Главный враг HFT-исследования — не отсутствие сложной математики, а самообман исполнения. Цена была, но очередь не дошла. Объём был, но исчез. Сигнал был, но пришёл поздно. Gross PnL был, но после fees, spread, slippage и latency стал отрицательным.
Вся логика второй части сходится в одном критерии: исполнимость. Данные показывают события. Книга показывает состояние. Ликвидность показывает возможность. Очередь показывает вероятность fill. Задержка показывает доступность действия. Симулятор показывает результат.
HFT-стратегия существует только тогда, когда проходит через реальность исполнения. Свеча показывает прошлое. Книга показывает механизм. Ликвидность показывает возможность. Очередь показывает вероятность. Исполнение показывает правду.

Дисклеймер

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

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

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

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

инвестиционная рекомендация;

персональный финансовый совет;

торговый сигнал;

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

предложение финансовых услуг;

обещание доходности;

гарантия результата;

инструкция по созданию торгового алгоритма;

инструкция по запуску HFT-системы;

руководство по подключению к биржам, брокерам, поставщикам данных, торговым площадкам или API;

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

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

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

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

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

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

Особо следует отметить, что такие практики, как spoofing, layering, front-running, фиктивное размещение заявок без намерения исполнения, создание ложного представления о спросе или предложении, манипулятивные отмены, злоупотребление рыночными данными, обход технических ограничений, использование непубличной информации или иные формы рыночного злоупотребления, не рассматриваются в настоящем материале как допустимые стратегии. Их возможное упоминание допускается только в критическом, историческом, регуляторном или образовательном контексте и не является рекомендацией, инструкцией или оправданием подобных действий.

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

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

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

Автор не несёт ответственности за любые прямые, косвенные, случайные, сопутствующие, специальные, штрафные или иные убытки, включая, но не ограничиваясь:

потерей капитала;

убытками от сделок;

упущенной выгодой;

ошибками в интерпретации материала;

ошибками в самостоятельных расчётах;

неверным использованием терминов, моделей, схем, графиков или технических описаний;

убытками от ручной, автоматической, алгоритмической или высокочастотной торговли;

ошибками программного кода, торговых роботов, симуляторов, риск-модулей, систем управления заявками или систем обработки рыночных данных;

проблемами с брокерами, биржами, поставщиками данных, API, дата-центрами, облачными сервисами или торговыми площадками;

потерей доступа к аккаунтам, ключам, серверам, данным, капиталу или иным ресурсам;

действиями третьих лиц, совершёнными после ознакомления с материалом;

использованием текста вне его исходного образовательного, аналитического и дискуссионного контекста.

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

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

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