Strasmore Research
Leren Matt ConnorDoor Matt Connor · Bijgewerkt 2026-07-24 · data as of July 24, 2026 · refreshed weekly

Uitleg locked en crossed markets met data

Wat is een locked market of een crossed market? Ontdek de impact van Reg NMS en hoe vaak deze situaties voorkomen in de handelsgegevens.

Een locked market vindt plaats wanneer de beste bid gelijk is aan de beste ask — een bid-ask spread van exact nul. Een crossed market gaat verder: de beste bid staat boven de beste ask. Volgens de Amerikaanse marktvormen mogen beurzen geen van beide tonen, maar beide komen regelmatig voor in de geconsolideerde quote-gegevens. Deze pagina definieert beide situaties, legt de regel uit en meet hoe vaak deze voorkomen.

Wat is een locked market?

Elk Amerikaans aandeel heeft tegelijkertijd twee prijzen: de bid, de hoogste prijs die een koper bereid is te betalen, en de ask, de laagste prijs die een verkoper accepteert. De ask ligt normaal gesproken boven de bid; het verschil tussen deze twee is de bid-ask spread, de ingebouwde kosten voor directe handel.

Een locked market vindt plaats op het moment dat dit verschil naar nul gaat: een aandeel met een quote van $10.00 bid / $10.05 ask heeft een spread van vijf cent. Als de beste ask daalt naar $10.00 terwijl de bid gelijk blijft, is de quote locked op $10.00 / $10.00.

Op een enkele exchange kan deze situatie niet voortbestaan — een kooporder voor $10.00 die een verkooporder voor $10.00 ontmoet, wordt direct uitgevoerd. Een locked quote komt alleen voor tussen verschillende handelsplatformen. Amerikaanse aandelen worden tegelijkertijd op meer dan een dozijn exchanges verhandeld. De NBBO — de national best bid and offer, de quote die uw brokerage-app toont — voegt de beste bid en ask van al deze platformen samen. Een bid van $10.00 op het ene platform en een ask van $10.00 op het andere platform zorgt voor een locked nationale quote, terwijl geen van beide platformen een locked orderboek laat zien.

Wat is een crossed market?

Een crossed market keert de gebruikelijke volgorde om: de beste bid staat boven de beste ask — bijvoorbeeld een bid van $10.02 tegenover een ask van $10.00. Op papier zou iedereen voor $10.00 kunnen kopen en voor $10.02 kunnen verkopen, waardoor er zonder risico twee cent per aandeel wordt verdiend. Dit gratis geld is precies de reden waarom een crossed quote niet kan blijven bestaan: professionele firma's — waaronder de market makers die aan beide zijden van de meeste aandelen quoten — nemen de arbitrage zodra deze reëel is, waarbij beide quotes worden verbruikt. Wat in de data overblijft is de flicker: een crossed record dat wordt vastgelegd tussen de update van de ene venue en die van de andere.

Waarom Reg NMS het verbieden van locked en crossed quotes voorschrijft

Het verbod is vastgelegd in Regulation NMS, het regelboek van de SEC (aangenomen in 2005) voor de handel op Amerikaanse effectenbeurzen. Regel 610(d) vereist dat elke beurs voorkomt dat haar leden quotes tonen die protected quotes — de geautomatiseerde beste biedingen en gevraagde prijzen op andere beurzen — locken of crossen tijdens de reguliere handelsuren. Het doel: een bied dat gelijk is aan de ask van een andere partij kan direct worden verhandeld, en het regelboek wil dat dit wordt gerouteerd en uitgevoerd, in plaats van dat het als een blijvende tegenstrijdigheid wordt getoond.

Eén grens in de regel is van belang voor de onderstaande gegevens: deze reguleert het tonen, niet het bestaan. Elke marktplaats controleert wat de eigen orderboeken tonen; het geconsolideerde overzicht wordt in real time samengesteld uit feeds van verschillende marktplaatsen. Een locked NBBO kan in dat overzicht verschijnen zonder dat een individuele deelnemer de regel overtreedt.

Waarom locked en crossed quotes nog steeds in de tape verschijnen

Snelheid. Beurzen updaten quotes in microseconden en de geconsolideerde feed wordt bij elke update opnieuw opgebouwd. Twee gewone gebeurtenissen veroorzaken locked en crossed records:

  • Races. De ene beurs verhoogt de bid naar $10.00 terwijl een andere nog een ask van $10.00 toont. Samengevoegd leest de NBBO locked totdat de tragere zijde is bijgewerkt; dezelfde race waarbij de prijs met één cent wordt overschreden, leest crossed.
  • Stale en one-sided records. Sommige records bevatten slechts één zijde — een bid zonder ask, of het omgekeerde. Illiquide namen verkeren veel vaker in deze situatie, zoals de onderstaande census laat zien.

De rekenregels op deze pagina: locked = bid is gelijk aan ask, beide zijden zijn positief; crossed = bid is hoger dan een positieve ask; one-sided = een van de zijden is nul of ontbreekt. Niets wordt stilzwijgend verwijderd — one-sided records krijgen een eigen kolom.

Hoe vaak komen locked en crossed markets voor?

Begin met de volledige tape: bij elke NBBO-update, voor elk genoteerd symbool, in 2026-07-14 — de meest recente voltooide sessie in ons censusvenster.

QueryWhole-tape census: locked, crossed en one-sided records per NBBO-update gedurende de sessie
De exacte SQL achter elk getal
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)

Die sessie bevatte 477 miljoen quote updates: 9.7 miljoen locked en 67 duizend crossed — samen 204.9 van elke 10.000 updates, waarbij locked de crossed overstijgt met 145-tegen-één. Records zonder zijde kwamen 2.8 per 10.000 voor. De Marktoverzicht van 7 juli vermeldt dezelfde aantallen naast elke gemeten spread.

Het marktbrede percentage is een gemiddelde van duizenden zeer verschillende namen. De onderstaande tabel herhaalt de census voor een geselecteerde set van tien — acht bekende tickers plus twee zeer illiquide small caps, Nathan's Famous (NATH) en Seneca Foods (SENEA) — over recente voltooide sessies, inclusief extended hours, met de typische quoted spread per naam.

QueryCensus per name: acht liquide tickers en twee thin small caps, recente voltooide sessies
De exacte SQL achter elk getal
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 ticker

Vergelijk de spread-kolom met het percentage. Coca-Cola, met een typische spread van 1¢, vertoonde een locked of crossed quote in 215.9 van elke 10.000 updates; Nvidia (2¢) zat op 91 per 10.000 en SPY (2¢) op 52.2. AMD, met een typische quote tijdens de extended-day van 44¢ breed, kwam uit op slechts 5.9 per 10.000. Een lock ontstaat wanneer twee venues op hetzelfde moment op dezelfde penny komen — hoe groter de typische quote, hoe langer die weg is.

De illiquide namen vallen nauwelijks op: Nathan's Famous registreerde 0 locked en 0 crossed records over 8.4 duizend updates, Seneca Foods 0 en 0 over 40.5 duizend. Hun kolom is de andere: eenzijdige records kwamen 41.5 per 10.000 voor bij Nathan's Famous en 17 bij Seneca Foods, tegenover 0 bij SPY. Locked en crossed records komen voor waar de quoting snel en tight is; eenzijdige records komen voor waar de quoting schaars is.

Wanneer clusteren locked en crossed quotes?

De naamcensus geeft de locatie aan; de klok geeft het tijdstip aan. Hieronder staat het percentage locked-of-crossed quotes van de checked set per 30-minuten interval Eastern Time, van 04:00 uur tot 20:00 uur, inclusief het updateverkeer per interval.

QueryLocked-or-crossed records per 10.000 updates per 30-min ET bucket, checked set, inclusief extended hours
De exacte SQL achter elk getal
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_time

Het percentage stijgt gedurende de sessie. Het interval van 05:00 uur in de premarket bedroeg 3 per 10.000 op 0.59 miljoen updates; het interval van 09:30 uur — de eerste halfie van de reguliere handel, geopend door de opening auction — bedroeg 24.9 per 10.000 op 9.98 miljoen updates. Vanaf dat punt stijgt het percentage richting de sluiting en bereikt 109.9 per 10.000 in het interval van 15:30 uur, de aanloop naar de closing auction. Eén rij met gegevens illustreert dit verloop:

QueryDe receipts: locked vs crossed totalen, en de rate per session stretch (premarket, open, noon, close — ET)
De exacte SQL achter elk getal
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)
)

Over de gehele periode registreerde de checked set 257.2 duizend locked records tegenover 25.6 duizend crossed — 10.1 locked voor elke crossed. Het percentage in het laatste half uur, 109.9 per 10.000, was 4.4 keer zo hoog als het percentage van het eerste half uur van 24.9 en 2.3 keer zo hoog als dat van het middaguur van 48.5.

Het display ban is vóór 09:30 uur niet van toepassing, maar de volledige periode van 04:00 tot 09:30 uur — premarket trading, met quotes op een fractie van het verkeer tijdens reguliere uren — vertoonde slechts 10.9 per 10.000, terwijl het laatste half uur 10.1 keer zo hoog was als dat percentage. Deze records komen voor waar de quoting snel en tight is, niet waar de regels het meest versoepeld zijn.

Datanotities: venster en omvang
  • De volledige tape-census beslaat één volledige UTC-kalenderdag, inclusief elk genoteerd symbool; de panels van de checked set beslaan een rollend venster van recente voltooide sessies, inclusief extended hours (04:00 uur–20:00 uur ET). Elk venster eindigt drie dagen vóór de datum van verversing — het quote warehouse heeft een ingest-lag van één-tot-twee dagen aan de voorzijde.
  • De tabel met tien namen is een checked set, geen marktbrede ranglijst; intervallen na 16:00 uur zijn gebaseerd op een kleine fractie van het verkeer tijdens reguliere uren (de kolom met het aantal updates is om die reden gechart).
  • Dit zijn aantallen records, geen duur. Forensisch onderzoek per update — nanoseconde-intervallen, plus crossed en zero-bid receipts op de SPY-tape van een enkele sessie — is te vinden in de microstructure deep-dive van 29 juni.

FAQ

Wat is een locked market bij aandelen?

Een locked market is een quote waarbij de beste bid gelijk is aan de beste ask — een spread van nul. Dit ontstaat tussen beurzen wanneer de bid van de ene markt overeenkomt met de ask van de andere. Regulation NMS verbiedt beurzen om tijdens de reguliere handelsuren quotes te tonen die dit veroorzaken.

Wat betekent het als de bid hoger is dan de ask?

Een bid boven de ask is een crossed market. Het orderboek van een enkele beurs kan niet op deze manier bestaan, omdat overlappende orders direct worden uitgevoerd. Een crossed NBBO is bijna altijd het resultaat van quotes van twee verschillende venues die op verschillende tijdstippen worden bijgewerkt.

Zijn locked en crossed markets illegaal?

Niet voor een reguliere belegger. Regel 610(d) van Regulation NMS verplicht beurzen om te voorkomen dat hun leden tijdens de reguliere handelsuren locking of crossing quotes tonen. De tijdelijke gegevens in de consolidated feed zijn het gevolg van venues die op licht verschillende momenten worden bijgewerkt.

Hoe vaak komen locked en crossed markets voor?

Routineus: 9.7 miljoen locked en 67 duizend crossed records bereiken de consolidated tape op 2026-07-14 alleen al — 204.9 van elke 10.000 updates. Het percentage ligt veel hoger bij aandelen met een krappe quote dan bij aandelen met een lage liquiditeit, en het percentage is hoger richting de close dan bij de open.


Elk getal op deze pagina wordt gegenereerd vanuit een opgeslagen query — open de SQL onder elk paneel om precies te zien hoe een lock of een cross wordt geteld. Om dezelfde analyse uit te voeren op de aandelen die u handelt, kunt u dit in het Engels vragen via de Strasmore terminal.

#locked market#crossed market#market structure#quotes#liquidity