Paano tantyahin ang queue position gamit ang L2 data
Ang queue position ang nagtatakda kung ang passive order ay makakakuha ng spread. Alamin kung paano ito tantyahin gamit ang aggregated book data at kailan dapat bumili ng MBO.
Ang queue position ay ang iyong puwesto sa pila ng mga order na nakapending sa isang presyo. Sa isang venue na may price-time priority, ito ang nagtatakda kung ang isang passive order ay makakakuha ng spread o hindi kailanman magkakaroon ng trade. Hindi ibinibigay ng aggregated market data ang numerong ito: ang Level 2 book ay nagpapakita lamang ng kabuuang laki (size) sa bawat presyo, hindi kung kanino ito. Ang sumusunod ay kung paano tantyahin ang queue position mula sa data na karaniwang hawak ng mga trader, at kung paano malalaman kung hindi na sapat ang pagtatantya.
Bakit ang queue position ang buong edge
Ang isang passive order ay nakapending sa book at naghihintay na may ibang pumasok sa spread nito. Sa ilalim ng price-time priority, inuuna ng matching engine ang mga order base sa presyo, at pangalawa ang oras ng pagdating. Kung may 10,000 shares na naka-bid sa $10.00 at nagdagdag ka ng 100 sa likod nito, kailangang ma-trade o ma-cancel muna ang 10,000 shares na iyon bago dumating ang iyong pagkakataon. Kung mag-cancel at mag-re-enter ka sa parehong presyo, babalik ka sa dulo ng pila.
Ang ranking na ito ang nagtatakda ng ekonomiya ng trade. Malapit sa unahan, madalas kang mag-trade at makakakuha ng spread kasama ang anumang add-liquidity rebate, na siyang paksa ng maker-taker fees and rebates. Malapit sa dulo, mag-te-trade ka lang kapag naubos na ang lahat ng nasa harap mo, na nangyayari kapag may malaking one-sided flow. Ang mga fill sa dulo ay nagkukumpulan sa mga sandali bago lampasan ng presyo ang iyong level. Parehong presyo, parehong order, magkaibang resulta.
Ano ang kaya at hindi kayang ipakita ng Level 2 data
Ang Level 1 ay ang best bid at offer kasama ang size sa bawat isa. Ang Level 2, na tinatawag ding market by price, ay nagdaragdag ng depth: isang listahan ng mga price level na may kabuuang size sa bawat isa. Parehong aggregates ang mga ito, at ang Level 1 vs Level 2 market data ay nagkukumpara sa kanila nang buo. Kapag ang bid sa $10.00 ay bumaba mula 10,000 shares patungong 8,500, ang feed ay nag-uulat na 1,500 shares ang nawala. Hindi nito sinasabi kung na-trade ba ang mga ito, kung isang order lang ang umalis o apatnapu, o kung saan sila nakapila.
Ang mga execution ang nakikitang bahagi: ang tape ay nagpi-print ng bawat trade na may size, kaya eksakto mong mababawas ang mga iyon. Ang natitira ay cancellation, at dito nagsisimula ang hulaan. Ang panel sa ibaba ay nagbibilang ng mga mensahe sa consolidated top of book laban sa mga print sa tape para sa isang liquid stock sa isang ordinaryong session, Miyerkules, June 10, 2026.
Ang eksaktong SQL sa likod ng bawat numero
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_timeAng 08:00 hour ay nasa harap ng opening bell: ang top of book ay nagbago ng 0.8 beses bawat print doon, mas kaunti ang mga mensahe kaysa sa mga print. Sa loob ng regular session, nagbabago ang ratio. Sa 15:00 hour, ang top of book ay nagbago ng 1.6 beses bawat print, sa kabuuang 233433 na mensahe sa oras na iyon lamang. Karamihan sa nangyayari sa isang price level sa bukas na merkado ay ang pagdating at pag-alis ng mga order nang hindi nag-te-trade, at ang bawat event na iyon ay nagpapagalaw sa iyong puwesto sa pila nang hindi sinasabi ng anumang aggregated feed.
Ang uniform cancellation assumption, at kung bakit ka nito nililinlang
Ang standard na unang hakbang ay ipagpalagay na ang mga cancellation ay nakakalat nang pantay sa buong pila. Tawagin nating x ang iyong fractional depth: ang mga shares sa harap mo na hinati sa kabuuang nakapending sa iyong presyo. Ang uniform model ay nagtatakda na ang tsansa na ang anumang na-cancel na share ay nasa harap mo ay katumbas ng x, na isinusulat bilang p(x) = x. Kung nasa gitna ka ng 10,000 share queue, at nakakita ka ng 1,000 shares na na-cancel nang walang print, iaabante ka ng model ng 500 na puwesto.
Ang mga totoong pila ay hindi pantay. Ang order na matagal nang nakapending ay karaniwang pag-aari ng taong kampanteng maghintay, habang ang order na idinagdag lang sandali ang nakalipas ay mas malamang na isang panandaliang quote na mawawala sa loob ng ilang segundo. Ang mga cancellation ay nagkukumpulan sa dulo ng pila, malapit sa iyo at sa likod mo. Sa 1,000 na na-cancel na shares, marahil ay 200 lang ang nasa harap mo, ngunit ang model ay nagbigay sa iyo ng 500. Ulitin mo ito buong araw at ang simulated queue ay mas mabilis na aabante kaysa sa totoo. Ang error ay tumatakbo sa isang direksyon: mas maraming fill, sa mas magandang sandali, kaysa sa nakukuha ng mga live order.
Paano nauubos ang pila
Ang mga cancellation ay nagpapagalaw sa iyo nang hindi nakikita. Ang mga trade ay nagpapagalaw sa iyo nang nakikita, base sa laki ng mga print.
Ang eksaktong SQL sa likod ng bawat numero
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)Ang mga print na mas mababa sa isang round lot ay 90% ng bilang sa session na ito at 42.5% ng mga shares. Ang mga block na isang libong shares o higit pa ay 0.2% ng mga print at 19.9% ng volume. Ang mga pila ay nauubos sa maliliit na kagat, kaya ang agwat sa pagitan ng position 2,000 at position 3,500 ay daan-daang print ng paghihintay. Ang isang simulator na nagbibigay ng fill pagkatapos ng dalawang malalaking trade ay nakalampas na sa karamihan ng tape.
Ang order na hindi mo nakikita
Ang mga depth feed ay nagka-truncate. Kung makakatanggap ka ng sampung price level at ang iyong order ay nasa pang-labing-isa, ang iyong order ay nasa labas na ng data: hindi mo alam ang size sa harap nito, at hindi mo alam ang mga order na sumasama sa likod nito. Sa puntong iyon, nag-iimbento ka na ng numero sa halip na nagtatantya. Ang sitwasyong ito ay karaniwan, dahil ang order na hindi humahabol sa merkado ay mabilis na napag-iiwanan mula sa loob.
Ang eksaktong SQL sa likod ng bawat numero
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_timeSa 10:00 bucket, ang best bid ay nag-average ng $290.29 at bumisita sa 187 na magkakaibang presyo sa loob ng labinlimang minuto. Ang bawat isa sa mga presyong iyon ay hiwalay na level sa isang stock na naka-quote sa mga sentimo, kaya ang ten-level view ay sumasakop sa sampung sentimo ng book. Ang isang order na naiwan sa isang presyo sa isang session na tulad nito ay maaaring magtagal nang matagal sa ilalim ng pinakamalalim na level na nakikita ng may-ari nito.
Saan pinakamahalaga ang queue position
Ang queue position ay pinakamahalaga kung saan imposible ang price improvement. Ang isang stock na naka-pin sa isang-sentimong spread ay walang puwang para maunahan ang pila gamit ang mas magandang presyo: lahat ay nakasalansan sa parehong tick, at ang oras ng pagdating ang nagtatakda ng lahat. Kung ang spread ay ilang sentimo ang lapad, ang isang trader ay maaaring maunahan ang buong pila sa halagang isang sentimo, at ang desisyon sa presyo ay mas matimbang kaysa sa pila.
Ang eksaktong SQL sa likod ng bawat numero
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_centsSa loob ng apat na oras ng tanghali sa parehong session, ang pinakamahigpit sa anim na pangalan, KO, ay nag-average ng 1.18 sentimo ang lapad at nagpakita ng isang-sentimong spread sa 82.5% ng mga update nito. Ang pinakamalapad, MSFT, ay nag-average ng 8.46 sentimo, na may isang-sentimong spread sa 1.1% ng mga update. Ang isang queue model na naka-calibrate sa unang pangalan ay walang silbi para sa pangalawa. Ang mga order na nakapending sa pagitan ng mga quote, na tinatawag na midpoint peg orders, ay bumubuo ng sarili nilang pila sa ilalim ng parehong mga panuntunan.
Apat na diagnostic para sa iyong sariling backtest
- Ipagkumpara ang simulated fill rate sa iyong live fill rate sa parehong mga pangalan sa parehong mga oras. Ang simulator na nagbibigay ng fill sa 70% ng mga order na nag-fill lamang ng 40% sa live ay naglalarawan lamang ng iyong assumption, hindi ng merkado.
- Hatiin ang mga simulated fill sa dalawang grupo: ang mga kung saan nanatili ang price level pagkatapos, at ang mga nangyari lamang nang maubos na nang tuluyan ang level. Ang grupong nakatutok sa pangalawang uri ay nangangahulugang binibigyan ka ng simulator ng mga fill sa mismong sandali na nilampasan na ng presyo ang iyong order.
- I-bracket ang assumption. Ulitin ang test kung saan ang bawat cancellation ay kinuha mula sa unahan ng pila, at pagkatapos ay kung saan ang bawat cancellation ay kinuha mula sa dulo. Ang dalawang run na iyon ang tapat na error bars sa paligid ng anumang p(x) na pipiliin mo.
- Sukatin kung gaano kadalas ang iyong presyo ay nasa labas ng depth na dala ng iyong feed. Ang mga fill doon ay inimbento lamang. Ang Look-ahead bias in backtesting ay naglalarawan ng parehong pagkakamali mula sa ibang anggulo: isang resulta na nakabase sa impormasyong hindi kailanman hawak ng estratehiya.
Kailan dapat itigil ang pag-model at bumili na lang ng order data
Ang market-by-order data (MBO) ay may dalang mensahe para sa bawat indibidwal na order, mula sa sandaling dumating ito hanggang sa sandaling ma-execute o ma-cancel, bawat isa ay may sariling identifier. I-replay ang feed na iyon at ang iyong puwesto sa pila ay isang bilang na, hindi na tantya, kapag nagtakda ka ng makatotohanang delay para sa iyong sariling order na makarating sa venue. Mas mahal ito kaysa sa depth feed at mas malaki ang kailangang storage.
Ang Diagnostic 3 ang nagsisilbing decision rule. Kung ang front at back brackets ay parehong nagpapakita ng kita sa estratehiya, sapat na ang middle assumption. Kung ang estratehiya ay kumikita sa ilalim ng isang bracket at nalulugi sa isa pa, ang queue model ang mismong estratehiya, at mas mura ang bumili ng order-by-order feed kaysa ipagtanggol ang isang hula.
Binabago ng pro-rata venues ang tanong
Ang ilang futures at options market ay hinahati ang isang papasok na order sa mga nakapending na order sa isang presyo nang proporsyonal sa laki (size) sa halip na base sa pagkakasunod-sunod ng pagdating. Hindi gaanong mahalaga ang oras doon, at ang quoted size ang nagiging lever: ang pagdodoble ng iyong size ay halos nagdodoble rin ng iyong bahagi sa bawat fill. Ang failure mode ay sumasama rin dito, patungo sa pag-quote ng mas malaking size kaysa sa gusto mong pag-aari. Ang Why options orders do not get filled ay nagpapaliwanag kung paano ito hitsura mula sa retail side ng isang options book.
FAQ
Ano ang queue position sa trading?
Ang queue position ay ang iyong ranggo sa gitna ng mga order na nakapending sa parehong presyo sa parehong venue. Sa isang price-time priority book, ang mga order na nasa harap mo ay kailangang ma-trade o ma-cancel bago ma-trade ang sa iyo.
Maaari bang kalkulahin ang queue position mula sa Level 2 data?
Hindi eksakto. Ang Level 2 ay nagpapakita ng kabuuang size bawat price level nang walang pagkakakilanlan ng order, kaya kapag nawala ang size nang walang print, hindi mo malalaman kung ang mga shares na iyon ay nasa harap mo o sa likod mo. Maaari mong tantyahin ang numero at i-bracket ang estimate. Ang eksaktong figure ay nangangailangan ng order-by-order data.
Bakit karaniwang masyadong mataas ang backtested fill rates?
Ang karaniwang assumption ay ipinapakalat ang mga cancellation nang pantay sa buong pila, habang ang mga totoong cancellation ay nagkukumpulan sa dulo. Ang isang pantay na model ay nagpapaabante sa iyong simulated order nang mas mabilis kaysa sa paggalaw ng totoong pila, na nagreresulta sa mas maraming fill, at mas magaganda, kaysa sa nakukuha sa live trading.
Ano ang MBO data?
Ang market-by-order data ay nagbibigay sa bawat indibidwal na order ng sarili nitong mga mensahe, mula sa pagdating hanggang sa execution o cancel. Ito ang feed kung saan ang iyong puwesto sa pila ay mabibilang sa halip na ma-model, na pinakamahalaga para sa mga estratehiyang nabubuhay sa isang-tick na spread.
Mahalaga ba ang queue position sa mga pro-rata venue?
Hindi gaanong. Ang pro-rata allocation ay hinahati ang isang papasok na order sa mga nakapending na order base sa size, kaya ang pagdating nang maaga ay walang gaanong silbi at ang quoted size ang gumagawa ng trabaho. Ang pag-check kung anong allocation model ang ginagamit ng isang venue ay dapat gawin bago ang anumang queue modelling.
Ang bawat panel dito ay may dalang SQL na gumawa nito. Palitan ang ticker, ilipat ang petsa, at itanong ang parehong tanong tungkol sa mga pangalang pino-trade mo sa Strasmore terminal.