Matching engine (движок сопоставления ордеров): как биржа исполняет сделки

Matching engine (движок сопоставления ордеров) — это “сердце” централизованной биржи: система, которая принимает ордера, поддерживает стакан и определяет, по какой цене и в какой очередности исполняются сделки. Если упрощать: именно matching engine решает, чей ордер будет исполнен первым и почему вы получили именно такую цену.

Эта страница объясняет механику исполнения без маркетинговых обещаний: очередность, частичные исполнения, влияния ликвидности и почему алгоритмы вроде TWAP/VWAP помогают крупным заявкам. Термины по рынку: ордербук и order flow.

Matching engine: как биржа сопоставляет заявки

Из чего состоит matching engine

На практике движок биржи включает несколько логических модулей:

  • Order gateway — принимает заявки (API/UI), проверяет формат и ограничения.
  • Risk checks — проверка баланса, маржи, лимитов и правил инструмента.
  • Order book — структура данных стакана: bid/ask, уровни, очереди.
  • Matching logic — правила сопоставления (приоритеты, частичное исполнение).
  • Trade/position ledger — фиксация сделок, обновление позиций и PnL.
  • Market data — стрим котировок, сделок, глубины, “ленты”.

На CEX вы видите часть этой системы как стакан и ленту сделок, но внутри ещё много проверок и очередей.

Стакан и очередность: главный принцип price-time priority

В большинстве биржевых моделей базовый принцип такой:

  • Price priority: лучшая цена имеет приоритет.

Для покупки — выше bid лучше; для продажи — ниже ask лучше.

  • Time priority: при одинаковой цене исполняется тот, кто встал раньше.

Это называется price-time priority. Именно поэтому “встать лимиткой в стакан” — это не просто “поставить цену”, а ещё и занять очередь на этой цене.

Связанные термины:

Как исполняются ордера: market, limit, stop

Market-ордер Исполняется сразу по лучшим доступным ценам в стакане (по факту “съедает” ликвидность). Минус: при тонком стакане растёт проскальзывание (см. slippage).

Limit-ордер Вы задаёте цену. Он либо сразу матчится (если пересёк спред), либо становится в стакан и ждёт. Лимит часто используется для контроля цены и для статуса maker.

Stop-ордера (trigger) На CEX стоп — это обычно “условие превращения” в market/limit после триггера. В момент резкого движения стоп может исполниться хуже ожидаемого из-за стакана и задержек.

Partial fill: почему ордер исполняется частями

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

  • часть по лучшей цене,
  • затем “пойдёт по стакану” дальше, пока не заполнит объём или не закончится ликвидность по заданным условиям.

Это частичное исполнение (partial fill) и оно нормально. Именно оно создаёт среднюю цену исполнения и может приводить к проскальзыванию при больших объёмах.

Maker/Taker и комиссии: почему это связано с движком

По смыслу:

  • maker — добавляет ликвидность (ордер встаёт в стакан),
  • taker — забирает ликвидность (исполняется сразу по стакану).

Комиссии обычно различаются: см. maker/taker и комиссии.

Важный нюанс: лимитный ордер может стать taker, если он выставлен “внутрь” спреда и матчится сразу. Поэтому управление типом исполнения — это не “лимит vs маркет”, а “встал в стакан vs пересёк стакан”.

Почему возникают задержки и “плохое исполнение”

Даже на CEX возможны ситуации, когда ожидания по цене расходятся с фактом. Основные причины:

  • тонкая ликвидность и большой размер ордера (см. ликвидность);
  • быстрое движение и обновление стакана быстрее вашего подтверждения;
  • очередь на цене: вы далеко в хвосте и вас “не успели” исполнить;
  • латентность (задержка сети, API, перегрузка);
  • защитные механизмы биржи (лимиты, риск-чек, price band и т. п.).

Результат ощущается как проскальзывание и “не туда” — это следствие механики очередей и стакана.

Order flow и лента: как движок формирует «картину рынка»

Order flow (поток ордеров) — это то, что реально происходит “внутри”:

  • какие ордера добавляются,
  • какие снимаются,
  • какие исполняются рыночными.

Движок фиксирует сделки и отдаёт рынку:

  • обновления стакана,
  • принты в ленте.

Именно поэтому анализ order flow и чтение стакана order book — это попытка понять активность участников через то, что движок публикует наружу.

Почему крупные ордера “ломают” цену

Крупный маркет-ордер:

  • быстро съедает лучшие уровни,
  • уходит на более плохие цены,
  • двигает цену против себя (market impact).

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

TWAP/VWAP как способы “исполнить аккуратнее”

Алгоритмы исполнения дробят ордер на серии меньших:

  • TWAP — равными порциями по времени,
  • VWAP — с учётом объёмов (старается “быть как рынок”).

Цель — снизить impact и проскальзывание, не “показать” рынку всю заявку сразу и не сдвинуть цену слишком сильно. Подробно — TWAP/VWAP.

Практика: как трейдеру улучшить исполнение

  • Для входа/выхода большими объёмами — избегайте “чистого маркет-ордера”.
  • Используйте лимит и понимайте очередь (price-time priority).
  • В высокую волатильность увеличивайте допуски и уменьшайте размер сделки.
  • Для чувствительных инструментов используйте дробление (алго-исполнение, TWAP/VWAP).
  • Следите за ликвидностью и глубиной стакана перед сделкой (см. order book).

FAQ

Почему мой лимитный ордер исполнился как taker? Потому что он пересёк текущий стакан (по сути стал рыночным) и исполнился сразу.

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

Можно ли “встать первым” в очереди? Только если вы выставили цену раньше других на этом уровне или поставили лучше цену. Иначе вы будете исполняться после тех, кто в очереди впереди.

См. также

Task Runner