Як оцінити позицію в черзі за даними L2
Позиція в черзі визначає успіх пасивного ордера. Дізнайтеся, як розрахувати черговість за агрегованими даними книги заявок та коли варто використовувати дані рівня MBO.
Чому позиція в черзі — це єдина перевага
Пасивний ордер розміщується в книзі заявок і очікує, поки хтось інший перетне спред, щоб виконати його. Згідно з пріоритетом за ціною та часом, механізм матчингу ранжує пасивні ордери спочатку за ціною, а потім за часом надходження. Якщо на рівні $10,00 вже стоїть 10 000 акцій на купівлю, а ви додаєте 100 акцій позаду них, ці 10 000 акцій мають бути виконані або скасовані, перш ніж настане ваша черга. Якщо ви скасуєте і знову виставите ордер за тією ж ціною, ви опинитеся в кінці черги.
Це ранжування визначає економіку операції. Ближче до початку черги ви торгуєте часто і збираєте спред плюс будь-який рибейт за надання ліквідності, що є темою комісій та рибейтів для мейкерів і тейкерів. Ближче до кінця ви торгуєте лише після того, як усі перед вами вже виконали свої угоди, що стається, коли надходить значний односторонній потік ордерів. Виконання в кінці черги групуються в моменти безпосередньо перед тим, як ціна проходить крізь ваш рівень. Та сама ціна, той самий ордер, протилежний результат.
Що можуть і чого не можуть показати дані Level 2
Level 1 — це найкраща ціна купівлі (bid) та продажу (ask) з обсягом на кожному рівні. Level 2, також відомий як market by price, додає глибину: список цінових рівнів із загальним обсягом, що стоїть на кожному з них. Обидва типи даних є агрегованими, і порівняння ринкових даних Level 1 та Level 2 розкриває їхні відмінності. Коли обсяг на bid за ціною $10,00 падає з 10 000 до 8 500 акцій, стрічка повідомляє про зникнення 1 500 акцій. Вона не вказує, чи були вони виконані, чи це був один ордер або сорок, і де саме в черзі вони перебували.
Виконані угоди — це видима частина: стрічка друкує кожну угоду з обсягом, тому їх ви віднімаєте точно. Решта — це скасування, і саме тут починаються припущення. Наведена нижче панель підраховує кількість повідомлень на консолідованому верху книги заявок порівняно з виконаними угодами в стрічці для однієї ліквідної акції протягом одного звичайного сеансу, середа, 10 червня 2026 року.
Точний SQL-код для кожного числа
SELECT
q.et_time AS et_time,
q.quote_updates AS quote_updates,
t.trades AS trades,
round(q.quote_updates / t.trades, 1) AS updates_per_trade
FROM
(
SELECT
formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
count() AS quote_updates
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 12:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY et_time
) AS q
INNER JOIN
(
SELECT
formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS trade_hour,
count() AS trades
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 12:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY trade_hour
) AS t ON q.et_time = t.trade_hour
ORDER BY et_timeГодина 08:00 припадає на час до відкриття торгів: верх книги заявок змінювався 0.8 разів на кожну угоду, що менше за кількість повідомлень, ніж угод. Під час основної сесії співвідношення змінюється. У годину 15:00 верх книги заявок змінювався 1.6 разів на кожну угоду, при загальній кількості 233433 повідомлень лише за цю годину. Більшість подій, що відбуваються з ціновим рівнем на відкритому ринку, — це ордери, які надходять і зникають, так і не виконавшись, і кожна така подія змінює ваше місце в черзі на величину, яку не вказує жоден агрегований фід.
Припущення про рівномірне скасування та чому воно вас вводить в оману
Стандартний підхід передбачає, що скасування розподілені рівномірно по всій черзі. Позначимо x як вашу відносну глибину: кількість акцій перед вами, поділена на загальний обсяг на вашому ціновому рівні. Рівномірна модель встановлює ймовірність того, що будь-яка скасована акція була перед вами, як p(x) = x. Якщо ви стоїте посередині черги з 10 000 акцій і бачите, як 1 000 акцій скасовуються без виконання угоди, модель просуває вас на 500 позицій вперед.
Реальні черги мають перекіс. Ордер, який уже стоїть певний час, зазвичай належить тому, хто готовий чекати, тоді як ордер, доданий щойно, швидше за все, є короткочасним котируванням, яке зникне за лічені секунди. Скасування концентруються ближче до кінця черги, поруч із вами та позаду вас. З тих 1 000 скасованих акцій, можливо, лише 200 стояли перед вами, а модель зарахувала вам 500. Повторюйте це весь день, і симульована черга просуватиметься швидше за реальну. Помилка діє в один бік: більше виконань у кращі моменти, ніж отримують реальні ордери.
Як виснажуються черги
Скасування переміщують вас непомітно. Угоди переміщують вас помітно, на обсяг виконаних заявок.
Точний SQL-код для кожного числа
SELECT
multiIf(size < 100, 'under 100 shares',
size = 100, 'exactly 100 shares',
size <= 499, '101 to 499 shares',
size <= 999, '500 to 999 shares',
'1000 shares or more') AS trade_size_group,
round(100 * count() / sum(count()) OVER (), 1) AS share_of_prints_pct,
round(100 * sum(size) / sum(sum(size)) OVER (), 1) AS share_of_shares_pct
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 14:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY trade_size_group
ORDER BY min(size)Угоди обсягом менше одного лота (round lot) становили 90% від загальної кількості за цей сеанс і 42.5% від обсягу акцій. Блоки по тисячі акцій і більше становили 0.2% від кількості угод і 19.9% від обсягу. Черги виснажуються невеликими частинами, тому розрив між позицією 2 000 і 3 500 — це сотні угод очікування. Симулятор, який надає виконання після двох великих угод, пропускає більшу частину стрічки.
Ордер, який ви не бачите
Фіди глибини ринку мають обмеження. Якщо ви отримуєте десять цінових рівнів, а ваш ордер стоїть на одинадцятому, ваш ордер знаходиться поза межами даних: ви не бачите ні обсягу перед ним, ні ордерів, що приєднуються позаду. У цей момент ви вигадуєте число, а не оцінюєте його. Така ситуація є звичайною, а не екзотичною, оскільки ордер, який не «переслідує» ринок, швидко віддаляється від внутрішньої частини книги.
Точний SQL-код для кожного числа
SELECT
formatDateTime(toStartOfFifteenMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
round(avg(toFloat64(bid_price)), 2) AS best_bid,
uniqExact(bid_price) AS bid_levels_touched
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 14:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
AND bid_price > 0
GROUP BY et_time
ORDER BY et_timeУ сегменті 10:00 найкраща ціна купівлі в середньому становила $290.29 і відвідала 187 різних цінових рівнів протягом п'ятнадцяти хвилин. Кожна з цих цін є окремим рівнем для акції, що котирується в центах, тому перегляд десяти рівнів охоплює десять центів книги. Ордер, залишений на одній ціні протягом такої сесії, може тривалий час перебувати нижче найглибшого рівня, який бачить його власник.
Де позиція в черзі має найбільшу цінність
Позиція в черзі має найбільшу цінність там, де покращення ціни неможливе. Акція, затиснута в спред в один цент, не залишає простору для того, щоб випередити чергу кращою ціною: усі вишиковуються на одному тику, і час надходження вирішує все. Там, де спред становить кілька центів, трейдер може випередити всю чергу на один цент, і цінове рішення стає важливішим за чергу.
Точний SQL-код для кожного числа
SELECT
ticker AS symbol,
round(avg(toFloat64(ask_price - bid_price)) * 100, 2) AS avg_spread_cents,
round(100 * countIf(round(toFloat64(ask_price - bid_price) * 100) <= 1) / count(), 1) AS one_cent_pct
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'KO', 'NVDA', 'MSFT', 'BKNG')
AND sip_timestamp >= '2026-06-10 15:00:00'
AND sip_timestamp < '2026-06-10 19:00:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
ORDER BY avg_spread_centsПротягом чотирьох годин середини сесії того самого дня найвужчий із шести інструментів, KO, мав середній спред 1.18 центів і показував спред в один цент на 82.5% своїх оновлень. Найширший, MSFT, мав середній спред 8.46 центів, зі спредом в один цент на 1.1% оновлень. Модель черги, відкалібрована на першому інструменті, не дає нічого корисного для другого. Ордери, що стоять між котируваннями, розглянуті в midpoint peg ордерах, формують власну чергу за тими самими правилами.
Чотири діагностики для вашого бектесту
- Порівняйте симульований рівень виконання з вашим реальним рівнем виконання на тих самих інструментах протягом тих самих годин. Симулятор, який виконує 70% ордерів, що в реальності виконувалися в 40% випадків, описує ваше припущення, а не ринок.
- Розділіть симульовані виконання на дві групи: ті, де ціновий рівень зберігся після угоди, і ті, що сталися лише тоді, коли рівень повністю очистився. Група, зміщена до другого типу, означає, що симулятор надає вам виконання саме в момент, коли ціна проходить крізь вас.
- Встановіть межі припущення. Запустіть тест знову, припускаючи, що кожне скасування відбувається з початку черги, а потім — що з кінця. Ці два прогони є чесними межами похибки для будь-якого p(x), яке ви оберете.
- Виміряйте, як часто ваша ціна перебувала поза межами глибини, яку надає ваш фід. Виконання там були вигаданими. Look-ahead bias у бектестингу описує ту саму помилку з іншого боку: результат, що базується на інформації, якої стратегія ніколи не мала.
Коли припинити моделювання і купити дані про ордери
Дані Market-by-order (MBO) містять повідомлення для кожного окремого ордера, від моменту його надходження до моменту виконання або скасування, кожен з яких позначений власним ідентифікатором. Відтворіть цей фід, і ваше місце в черзі стане підрахунком, а не оцінкою, як тільки ви врахуєте реалістичну затримку надходження вашого власного ордера на майданчик. Це коштує дорожче, ніж фід глибини, і потребує значно більше місця для зберігання.
Діагностика 3 є правилом прийняття рішення. Якщо обидві межі (початок і кінець черги) роблять стратегію прибутковою, середнього припущення буде достатньо. Якщо стратегія заробляє за однієї межі й втрачає за іншою, модель черги і є самою стратегією, і купівля фіду order-by-order дешевша, ніж захист припущення.
Майданчики з пропорційним розподілом (pro-rata) змінюють питання
Деякі ринки ф'ючерсів та опціонів розподіляють вхідний ордер між пасивними ордерами за ціною пропорційно до їхнього обсягу, а не за часом надходження. Час там має значно менше значення, а котирований обсяг стає важелем: подвоєння вашого обсягу приблизно подвоює вашу частку в кожному виконанні. Режим помилки зміщується разом із цим у бік котирування більшого обсягу, ніж ви хочете тримати. Чому опціонні ордери не виконуються описує, як це виглядає з боку роздрібного інвестора в книзі опціонів.
FAQ
Що таке позиція в черзі в трейдингу?
Позиція в черзі — це ваш ранг серед ордерів, що стоять за тією самою ціною на тому самому майданчику. У книзі з пріоритетом за ціною та часом ордери перед вами мають бути виконані або скасовані, перш ніж ваш ордер зможе бути виконаний.
Чи можна розрахувати позицію в черзі за даними Level 2?
Не зовсім. Level 2 показує загальний обсяг на ціновому рівні без ідентифікації ордерів, тому, коли обсяг зникає без угоди, ви не можете сказати, чи стояли ці акції перед вами чи позаду. Ви можете оцінити це число і встановити межі оцінки. Точне значення потребує даних order-by-order.
Чому рівні виконання в бектестах зазвичай занадто високі?
Поширене припущення рівномірно розподіляє скасування по черзі, тоді як реальні скасування концентруються ближче до кінця. Рівномірна модель просуває ваш симульований ордер швидше, ніж рухається реальна черга, що виглядає як більша кількість виконань і кращі ціни, ніж у реальній торгівлі.
Що таке MBO дані?
Дані Market-by-order надають повідомлення для кожного окремого ордера, від надходження до виконання або скасування. Це фід, де ваше місце в черзі можна порахувати, а не змоделювати, що найважливіше для стратегій, які працюють зі спредом в один тик.
Чи має значення позиція в черзі на майданчиках із пропорційним розподілом (pro-rata)?
Менше. Пропорційний розподіл ділить вхідний ордер між пасивними ордерами за обсягом, тому перше місце в черзі дає мало переваг, а котирований обсяг виконує основну роботу. Перевірка того, яку модель розподілу використовує майданчик, має передувати будь-якому моделюванню черги.
Кожна панель тут містить SQL-запит, який її створив. Змініть тікер, змініть дату і поставте те саме питання щодо інструментів, якими ви торгуєте на терміналі Strasmore.