Locked at Crossed Markets, Ipinaliwanag Gamit ang Data
Ang locked market ay kapag bid ay katumbas ng ask; ang crossed market ay kapag bid ay mas mataas kaysa ask. Bakit ipinagbabawal ng Reg NMS ang dalawa at gaano kadalas silang lumilitaw.
Ang locked market ay isang sandali kung saan ang pinakamagandang bid ng isang stock ay katumbas ng pinakamagandang ask nito — isang bid-ask spread na eksaktong zero. Mas malayo pa ang isang crossed market: ang pinakamagandang bid ay nakatayo sa itaas ng pinakamagandang ask. Ipinagbabawal ng mga patakaran ng merkado sa US na ipakita ng mga exchange ang alinman sa dalawa, ngunit regular na lumilitaw ang pareho sa consolidated quote record. Tinutukoy ng pahinang ito ang dalawa, ipinapaliwanag ang patakaran, at sinusukat kung gaano kadalas lumilitaw ang bawat isa.
Ano ang isang locked market?
Ang bawat US stock ay may dalawang presyo nang sabay: ang bid, ang pinakamataas na presyo na handang bayaran ng sinumang buyer, at ang ask, ang pinakamababang presyo na tatanggapin ng sinumang seller. Karaniwang nasa itaas ang ask kaysa sa bid; ang agwat sa kanila ay ang bid-ask spread, ang natural na gastos ng agarang pag-trade.
Ang locked market ay ang sandaling magsasara ang agwat na iyon sa zero: kung ang isang stock ay naka-quote na $10.00 bid / $10.05 ask, may lima-sentimong spread ito, at kapag bumaba ang pinakamababang ask sa $10.00 habang nananatili ang bid, ang quote ay locked sa $10.00 / $10.00.
Sa isang exchange lamang, hindi maaaring manatili ang ganitong kalagayan — isang buy sa $10.00 na makakatagpo ng sell sa $10.00 ay agad na mag-e-execute. Ang isang locked quote ay nakakapanatili lang sa pagitan ng mga venue. Ang mga US stock ay nagti-trade sa mahigit isang dosenang exchange nang sabay-sabay, at ang NBBO — ang national best bid and offer, ang quote na ipinapakita ng app ng iyong brokerage — ay pinagsasama ang pinakamagandang bid at ask mula sa lahat ng mga ito. Ang isang $10.00 bid sa isang venue at isang $10.00 ask sa isa pang venue ay naglo-lock ng national quote kahit na walang venue na nagpapakita ng locked book.
Ano ang isang crossed market?
Ang isang crossed market ay nagpapabaliktad sa karaniwang ayos: ang pinakamagandang bid ay nakatayo sa itaas ng pinakamagandang ask — halimbawa, isang $10.02 bid laban sa isang $10.00 ask. Sa papel, sinumang makakabili sa $10.00, makakabenta sa $10.02, at makakakuha ng dalawang sentimos bawat share na walang panganib. Ang libreng pera iyan ang dahilan kung bakit hindi maaaring tumagal ang isang crossed quote: ang mga propesyonal na firm — kabilang ang mga market maker na nag-qu-quote sa magkabilang panig ng karamihan ng mga stock — kunin ang arbitrage sa sandaling ito ay totoo, at ang pagkuha nito ay kumakain sa parehong quote. Ang natitira sa data ay ang kisap: isang crossed record na nahuli sa pagitan ng update ng isang venue at ng isa pa.
Bakit ipinagbabawal ng Reg NMS ang mga locked at crossed quote
Ang ban ay nasa Regulation NMS, ang rulebook ng SEC (adopted noong 2005) para sa pagtetrade sa iba't ibang US stock exchange. Ang Rule 610(d) ay nag-aatas sa bawat exchange na pigilan ang mga miyembro nito na mag-display ng mga quote na nag-lo-lock o nag-cro-cross ng protected quotes — ang automated na best bids at offers sa ibang exchange — sa loob ng regular trading hours. Ang layunin: isang bid na katumbas ng ask ng iba ay maaaring mag-trade kaagad, at gusto ng rulebook na i-route at i-execute ito, hindi nakatayo bilang isang magkasalungatang display.
Isang hangganan sa rule ang mahalaga para sa data sa ibaba: nireregulate nito ang pag-display, hindi ang pag-iral. Ang bawat venue ay kumokontrol sa ipinapakita ng sarili nitong book; ang consolidated record ay binubuo sa iba't ibang venue sa real time, mula sa mga feed na nagpapaligsahan. Maaaring lumitaw ang isang locked NBBO doon nang walang sinumang lumalabag sa rule.
Bakit nananatiling tumatama sa tape ang mga naka-lock at crossed na quote
Bilis. Ina-update ng mga exchange ang mga quote sa loob ng microseconds, at muling binubuo ang consolidated feed sa bawat update. Dalawang karaniwang event ang naglalagay ng naka-lock at crossed na record dito:
- Mga race. Isa sa mga exchange ay itinaas ang bid nito sa $10.00 habang naka-display pa rin ang $10.00 ask ng isa. Kapag pinagsama-sama, lumalabas na naka-lock ang NBBO hanggang sa mag-update ang mas mabagal na side; kapag lumampas ng isang sentimo ang parehong race na iyon, lumalabas na crossed.
- Stale at one-sided na record. Ang ilang record ay may lamang isang side — isang bid na walang ask, o kabaliktaran. Mas malaking bahagi ng araw ang ginugugol ng mga thinly-traded na pangalan sa ganitong estado, gaya ng ipinapakita ng census sa ibaba.
Ang mga counting rule sa pahinang ito: locked = pantay ang bid at ask, positibo ang parehong side; crossed = bid na mas mataas kaysa positibong ask; one-sided = alinman sa side ay zero o nawawala. Walang tahimik na ibinababa — ang one-sided na record ay may sariling kolum.
Gaano kadalas nangyayari ang mga locked at crossed market?
Magsimula sa buong tape: bawat NBBO update, para sa bawat listed symbol, sa 2026-07-14 — ang pinakabagong natapos na session sa aming census window.
Ang eksaktong SQL sa likod ng bawat numero
WITH (
SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start < toDateTime(today() - 3)
) AS census_day
SELECT
formatDateTime(census_day, '%Y-%m-%d') AS session_date,
round(count() / 1e6, 0) AS updates_m,
round(countIf(bid_price = ask_price AND bid_price > 0) / 1e6, 2) AS locked_m,
round(countIf(bid_price > ask_price AND ask_price > 0) / 1e3, 1) AS crossed_k,
round(countIf(bid_price = ask_price AND bid_price > 0) / toFloat64(greatest(countIf(bid_price > ask_price AND ask_price > 0), 1)), 0) AS locked_per_crossed,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= toDateTime(census_day)
AND sip_timestamp < toDateTime(census_day + 1)Ang session na iyon ay nagdala ng 477 milyong quote updates: 9.7 milyong locked at 67 libong crossed — sama-sama, 204.9 sa bawat 10,000 updates, mas marami ang locked kaysa crossed nang 145-to-one. Ang mga record na kulang sa isang side ay umabot sa 2.8 kada 10,000. Ipinapakita ng July 7 market recap ang parehong mga bilang sa tabi ng bawat spread na sinusukat nito.
Ang market-wide rate ay pinaghalong libu-libong magkakaibang pangalan. Ang talahanayan sa ibaba ay muling nagpapatakbo ng census sa isang naka-check na set na sampu — walong kilalang ticker plus dalawang tunay na thin na small cap, ang Nathan's Famous (NATH) at Seneca Foods (SENEA) — sa mga kamakailang natapos na session, kasama ang extended hours, na may tipikal na quoted spread ng bawat pangalan sa tabi.
Ang eksaktong SQL sa likod ng bawat numero
SELECT ticker,
round(count() / 1e3, 1) AS updates_k,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS median_spread_cents,
countIf(bid_price = ask_price AND bid_price > 0) AS locked_records,
countIf(bid_price > ask_price AND ask_price > 0) AS crossed_records,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
GROUP BY ticker
ORDER BY tickerBasahin ang spread column laban sa rate. Ang Coca-Cola, karaniwang naka-quote nang 1¢ ang lapad, ay nagpakita ng locked o crossed quote sa 215.9 sa bawat 10,000 updates; ang Nvidia (2¢) ay umabot sa 91 kada 10,000 at ang SPY (2¢) ay 52.2. Ang AMD, na ang tipikal na extended-day quote ay nakaupo nang 44¢ ang lapad, ay pumasok sa 5.9 kada 10,000. Ang isang lock ay nangangailangan ng dalawang venue na darating sa parehong penny sa parehong sandali — mas malawak ang tipikal na quote, mas mahaba ang biyahe na iyon.
Halos hindi nakikita ang mga thin na pangalan: ang Nathan's Famous ay nag-print ng 0 locked at 0 crossed records sa 8.4 libong updates, ang Seneca Foods ay 0 at 0 sa 40.5 libong. Ang kanilang column ang isa pa: ang one-sided records ay umabot sa 41.5 kada 10,000 sa Nathan's Famous at 17 sa Seneca Foods, laban sa 0 sa SPY. Ang mga locked at crossed records ay nakatira kung saan mabilis at tight ang quoting; ang one-sided records ay nakatira kung saan kulang ang quoting.
Kailan nagkukumpulan ang mga locked at crossed na quote?
Ang census ay nagsasabi kung saan; ang orasan ay nagsasabi kung kailan. Narito ang locked-or-crossed rate ng checked set ayon sa 30-minutong Eastern Time bucket, 4:00 a.m. hanggang 8:00 p.m., kasama ang update traffic ng bawat bucket.
Ang eksaktong SQL sa likod ng bawat numero
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(count() / 1e6, 2) AS updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
GROUP BY et_time
HAVING et_time >= '04:00' AND et_time < '20:00'
ORDER BY et_timeAng rate ay tumataas sa buong session. Ang 05:00 premarket bucket ay naka-record ng 3 kada 10,000 sa 0.59 milyong update; ang 09:30 bucket — ang unang kalahating oras ng regular trading, na binuksan ng opening auction — ay tumakbo ng 24.9 kada 10,000 sa 9.98 milyong update. Mula roon, ang rate ay tumataas papuntang close, na umabot sa 109.9 kada 10,000 sa 15:30 bucket, ang paghahanda patungong closing auction. Isang receipt row ang nagpapakilos ng hugis:
Ang eksaktong SQL sa likod ng bawat numero
SELECT
round(countIf(is_locked) / 1e3, 1) AS locked_k,
round(countIf(is_crossed) / 1e3, 1) AS crossed_k,
round(countIf(is_locked) / toFloat64(greatest(countIf(is_crossed), 1)), 1) AS locked_per_crossed,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569)) * 1e4, 1) AS premarket_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599)) * 1e4, 1) AS opening_half_hour_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779)) * 1e4, 1) AS midday_hour_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)) * 1e4, 1) AS closing_half_hour_per_10k,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599))), 1) AS close_to_open_ratio,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779))), 1) AS close_to_midday_ratio,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569))), 1) AS close_to_premarket_ratio
FROM (
SELECT
bid_price = ask_price AND bid_price > 0 AS is_locked,
bid_price > ask_price AND ask_price > 0 AS is_crossed,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_minute
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
)Sa buong window, ang checked set ay nag-print ng 257.2 libong locked records laban sa 25.6 libong crossed — 10.1 locked kada isang crossed. Ang rate ng closing half hour, 109.9 kada 10,000, ay tumakbo nang 4.4 beses ng opening half hour na 24.9 at 2.3 beses ng noon hour na 48.5.
Ang display ban ay hindi pa naisasakatuparan bago ang 9:30 a.m., ngunit ang buong 4:00–9:30 stretch — premarket trading, na nag-quote sa maliit na bahagi ng regular-hours traffic — ay nagpakita lamang ng 10.9 kada 10,000, at ang closing half hour ay tumakbo nang 10.1 beses ng rate na iyon. Ang mga record na ito ay nagtitipon kung saan ang quoting ay mabilis at masikip, hindi kung saan ang rulebook ay pinakaluwag.
Data notes: window at scope
- Ang whole-tape census ay sumasaklaw sa isang buong UTC calendar day, kasama ang bawat listed symbol; ang checked-set panels ay sumasaklaw sa rolling window ng mga kamakailang natapos na session, kasama ang extended hours (4:00 a.m.–8:00 p.m. ET). Bawat window ay nagtatapos tatlong araw na likod sa refresh date — ang quote warehouse ay may one-to-two-day ingest lag sa front edge nito.
- Ang ten-name table ay isang checked set, hindi isang market-wide ranking; ang mga clock bucket pagkatapos ng 4:00 p.m. ay tumatakbo sa maliit na bahagi ng regular-hours traffic (ang update-count column ay ini-chart para sa dahilang iyon).
- Ang mga ito ay mga bilang ng mga record, hindi mga duration. Ang per-update forensics — mga nanosecond gap, kasama ang crossed at zero-bid receipts sa isang session's SPY tape — ay nasa June 29 microstructure deep-dive.
FAQ
Ano ang locked market sa mga stock?
Ang locked market ay isang quote kung saan ang pinakamagandang bid ay katumbas ng pinakamagandang ask — isang spread na zero. Nangyayari ito sa pagitan ng mga exchange — ang bid ng isang venue ay tumutugma sa ask ng isa pa — at pinipigilan ng Regulation NMS ang mga exchange na magpakita ng mga quote na lumilikha nito sa regular na oras.
Ano ang ibig sabihin kapag ang bid ay mas mataas kaysa ask?
Ang bid na mas mataas sa ask ay isang crossed market. Hindi ito maaaring tumayo sa ganoong paraan sa book ng isang exchange — ang mga overlapping na order ay agad na nag-e-execute — at ang isang crossed NBBO ay halos palaging mga quote ng dalawang venue na nahuli sa gitna ng update.
Ilegal ba ang mga locked at crossed market?
Hindi para sa isang regular na mamumuhunan. Ang Rule 610(d) ng Regulation NMS ay nag-uutos sa mga exchange na pigilan ang kanilang mga miyembro na magpakita ng mga locking o crossing quote sa regular na oras. Ang mga transient na tala sa consolidated feed ay mga artifact ng mga venue na nag-uupdate sa bahagyang magkaibang sandali.
Gaano kadalas nangyayari ang mga locked at crossed market?
Regular na: 9.7 milyong locked at 67 libong crossed na tala ang tumama sa consolidated tape sa 2026-07-14 lamang — 204.9 sa bawat 10,000 na update. Mas mataas ang rate sa mga stock na may tight na quote kaysa sa mga manipis, at mas mataas patungo sa close kaysa sa open.
Bawat numero sa pahinang ito ay nagre-render mula sa isang stored query — i-expand ang SQL sa ilalim ng anumang panel upang makita nang eksakto kung paano binibilang ang isang lock o cross. Upang patakbuhin ang parehong census sa mga stock na iyong tine-trade, hingin ito sa simpleng Ingles sa Strasmore terminal.