Waarom zijn spreads breder bij de opening?
Ontdek waarom de bid-ask spread bij de opening groter is. Analyseer tick-level data over de spread en de kosten van market orders tijdens de eerste halfie uur.
De spreads zijn bij de opening breder dan in bijna elk ander deel van de reguliere Amerikaanse sessie. Hoe minder liquide het aandeel, hoe groter de penalty. In het onderstaande rolling window was de mediane bid-ask spread in de eerste halfie uur van de handel 3.34x die van het middaguur op Etsy, een mid-cap, en 2.02x op Apple. SPY, de meest verhandelde van de drie, vertoonde een gecombineerde ratio van 1x; dit is een vlakke lijn die het gevolg is van het prijsgrid van één cent, en niet van een vrije opening. Deze pagina berekent de tijd op basis van tick-level quotes.
Wat de spread een market order kost
Elk aandeel toont tegelijkertijd twee prijzen: de bid, de beste lopende biedprijs, en de ask, de beste lopende laatprijs. Het verschil tussen deze prijzen is de bid-ask spread. Een market order — een order die direct tegen de beste beschikbare prijs wordt uitgevoerd — betaalt deze spread: aankopen gebeuren tegen de ask, verkopen tegen de bid, en het verschil gaat naar de partij die de quote heeft uitgebracht, meestal een market maker. Twee kenmerken van die quote zijn hier van belang: de spread is afhankelijk van de tijd, waarbij de kosten in de ochtend het hoogst zijn, en de spread beweegt in stappen van hele centen. De kleinste spread die een dure ETF en een veel goedkopere mid-cap kunnen laten zien, is dezelfde penny.
De spread-klok: één vorm, drie liquiditeitsniveaus
De grafiek volgt drie liquiditeitsniveaus: SPY, de S&P 500 ETF; Apple, een mega-cap; Etsy, een mid-cap. Elke geldige NBBO-update — de beste bid en offer over de gehele markt die uw broker toont, uitgelegd in onze NBBO-uitleg — valt in een recente meerdaagse periode binnen een 30-minuten bucket van de reguliere sessie. De mediane spread van elke bucket wordt gedeeld door de kleinste spread van die naam; een waarde van 1 betekent de kleinste spread die het aandeel bereikt.
De exacte SQL achter elk getal
SELECT et_time,
round(anyIf(rel, ticker = 'SPY'), 2) AS spy_x,
round(anyIf(rel, ticker = 'AAPL'), 2) AS aapl_x,
round(anyIf(rel, ticker = 'ETSY'), 2) AS etsy_x
FROM (
SELECT ticker,
et_time,
median_bps / min(median_bps) OVER (PARTITION BY ticker) AS rel
FROM (
SELECT ticker,
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
quantileExact(0.5)(toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS median_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker, et_time
)
)
GROUP BY et_time
ORDER BY et_timeIn tekstboeken wordt het intraday-patroon een U-vorm genoemd: breed bij de opening, krap rond het middaguur, breder richting de sluiting. Hier gemeten is het een skihelling — voor namen waarvan de spread ruimte heeft om te bewegen. Etsy opende op 5.78x het kleinste niveau, daalde naar 2.99x om 10:30 en naar 1.86x tijdens de lunch; Apple opende op 3.04x. Voor alle drie is het kleinste half uur de laatste periode — 1x, 1x, 1x — dus de verbreding die handelaren associëren met "the close" hoort bij de extended session, na de sluitingsveiling.
De lijn van SPY is vlak: 1x in de openingsbucket, 1x tijdens de lunch. De mediane spread beweegt de hele dag niet. Dat is niet de afwezigheid van een opening premium — het is het penny grid.
Het penny-raster: waar de premium verborgen blijft bij de meest liquide namen
De mediane spread van SPY bedraagt 2¢ bij de opening en 2¢ halverwege de dag — dezelfde twee pennies, waardoor de mediaan geen informatie biedt. De onderliggende distributie doet dat wel. Dit overzicht telt per half uur het aandeel quote-updates dat op het minimum van één cent staat.
De exacte SQL achter elk getal
SELECT et_time,
round(100 * countIf(ticker = 'SPY' AND spread_c <= 1.0001) / countIf(ticker = 'SPY'), 1) AS spy_pct_penny,
round(100 * countIf(ticker = 'AAPL' AND spread_c <= 1.0001) / countIf(ticker = 'AAPL'), 1) AS aapl_pct_penny,
round(100 * countIf(ticker = 'ETSY' AND spread_c <= 1.0001) / countIf(ticker = 'ETSY'), 1) AS etsy_pct_penny
FROM (
SELECT ticker,
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
toFloat64(ask_price - bid_price) * 100 AS spread_c
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND bid_price > 0
AND ask_price > bid_price
)
GROUP BY et_time
ORDER BY et_timeSPY stond voor 20.7% van de updates in het eerste half uur op de bodem van één cent, tegenover 43.1% in het laatste half uur; Apple, 3.1% tegenover 30.6%; Etsy, 0.2% tegenover 8.3%. Elke naam opent verder van de bodem dan de afsluiting, en ook de tail beweegt mee: de 90e-percentiel opening spread van SPY bedroeg 4¢ tegenover 3¢ halverwege de dag — 1.32x, terwijl de mediaan 1x liet zien. De premium is aanwezig bij SPY; het penny-raster is te grof om dit via een mediaan te registreren.
Waarom zijn de spreads breder bij de opening?
Drie omstandigheden komen samen in het eerste half uur van de handel, en geen van deze blijft bestaan tot de lunchtijd.
- De overnight backlog komt in één keer vrij. Tussen de sluiting om 16:00 uur en de volgende opening auction in de ochtend stapelt zeventienënhalf uur aan informatie zich op — resultaten, guidance, buitenlandse sessies — terwijl de handel in continuïteit gesloten is. De eerste quotes volgen de gap, niet de vorige sluitingskoers.
- Price discovery is nog in volle gang. De auction comprimeert die backlog tot één print; de markt besteedt vervolgens minuten aan het vinden van een range rondom die prijs, en quotes worden het snelst opnieuw geprijsd terwijl dit proces loopt.
- Het orderboek is nog volop in opbouw. Premarket trading vindt plaats met aanzienlijk minder deelnemers die quotes uitbrengen, en de bel reset het orderboek niet onmiddellijk.
Wat een halt doet met de tijdlijn
Een halt is de extreme vorm van dezelfde mechanismen. Onder limit up-limit down (LULD) regels krijgt een aandeel waarvan de prijs buiten een band rond het recente gemiddelde valt een pauze van vijf minuten; een beurs kan een aandeel ook pauzeren in afwachting van nieuws. Tijdens een halt is er geen two-sided quote om tegen te handelen — de one-sided or crossed book op het scherm is geen verhandelbare markt. De handel wordt hervat via een reopening auction, waarvan de eerste quotes de last van de backlog en de price discovery van een opening om 9:30 uur dragen, gecomprimeerd in enkele minuten. Een aandeel dat vlak na de opening een halt krijgt, betaalt de premie twee keer.
Premarket is een andere markt
De beperkte orderboeken zijn meestal de drijfveer; dit paneel prijst dit — dezelfde namen, hetzelfde tijdsbestek, vijf fasen per dag, in basis points (bps), honderdsten van een procent van de aandelenkoers, zodat namen met verschillende prijzen vergeleken kunnen worden.
De exacte SQL achter elk getal
SELECT phase,
round(quantileExact(0.5)(spy_b), 2) AS spy_bps,
round(quantileExact(0.5)(aapl_b), 2) AS aapl_bps,
round(quantileExact(0.5)(etsy_b), 2) AS etsy_bps
FROM (
SELECT multiIf(et_min >= 240 AND et_min < 420, 'Premarket 04:00-07:00',
et_min >= 420 AND et_min < 570, 'Premarket 07:00-09:30',
et_min >= 570 AND et_min < 600, 'Open 09:30-10:00',
et_min >= 720 AND et_min < 840, 'Midday 12:00-14:00',
et_min >= 960 AND et_min < 1200, 'After-hours 16:00-20:00', 'other') AS phase,
if(ticker = 'SPY', spread_bps, NULL) AS spy_b,
if(ticker = 'AAPL', spread_bps, NULL) AS aapl_b,
if(ticker = 'ETSY', spread_bps, NULL) AS etsy_b
FROM (
SELECT ticker,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min,
toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000 AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND bid_price > 0
AND ask_price > bid_price
)
WHERE phase != 'other'
)
GROUP BY phase
ORDER BY indexOf(['Premarket 04:00-07:00', 'Premarket 07:00-09:30', 'Open 09:30-10:00', 'Midday 12:00-14:00', 'After-hours 16:00-20:00'], phase)Premarket is geen slechtere opening; het is een andere markt. De mediane quoted spread van Etsy bedroeg 306.25 bps tussen 4:00 en 7:00 uur ET en 307.57 bps van 7:00 uur tot de opening, tegenover 30.79 bps in het eerste half uur van de handel en 9.21 bps halverwege de dag — percentagepunten van de prijs, niet centen. Apple quoteerde 9.82 bps vroeg in de ochtend tegenover 0.96 bps halverwege de dag; zelfs SPY verbreedde naar 0.8 bps tegenover 0.27 bps. Na de closing om 16:00 uur keert de spread terug — 240.45 bps voor Etsy, 6.99 bps voor Apple.
De kosten in cents: de opening versus het middaguur
Kosten worden uitgedrukt in cents. De tabel vergelijkt dezelfde instrumenten — de mediane spread gedurende de eerste halfie van de opening (9:30–10:00 a.m. ET) tegenover het middaguur (noon–2:00 p.m. ET), de quote in het 90ste percentiel per venster, het aantal quote-updates, en de uitgesloten eenzijdige, locked of crossed quotes.
De exacte SQL achter elk getal
SELECT ticker,
round(countIf(isNotNull(spread_cents)) / 1e6, 2) AS valid_updates_m,
round(quantileExactIf(0.5)(spread_cents, clock_min BETWEEN 810 AND 839), 2) AS open30_cents,
round(quantileExactIf(0.5)(spread_cents, clock_min BETWEEN 960 AND 1079), 2) AS midday_cents,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 810 AND 839), 2) AS open30_bps,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS midday_bps,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 810 AND 839)
/ quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS open_vs_midday_x,
round(quantileExactIf(0.9)(spread_cents, clock_min BETWEEN 810 AND 839), 2) AS open30_p90_cents,
round(quantileExactIf(0.9)(spread_cents, clock_min BETWEEN 960 AND 1079), 2) AS midday_p90_cents,
round(quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 810 AND 839), 2) AS open30_p90_bps,
round(quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 810 AND 839)
/ quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS p90_x,
toString(countIf(isNull(spread_cents))) AS dropped_onesided_locked_crossed
FROM (
SELECT ticker,
toHour(sip_timestamp) * 60 + toMinute(sip_timestamp) AS clock_min,
if(bid_price > 0 AND ask_price > bid_price, toFloat64(ask_price - bid_price) * 100, NULL) AS spread_cents,
if(bid_price > 0 AND ask_price > bid_price, toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, NULL) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'AAPL', 'ETSY'], ticker)Cents per aandeel en dollars per 100 aandelen zijn hetzelfde getal, waardoor de tabel een factuur is: een round trip van 100 aandelen in Etsy tegen de mediane openingquote kost $24 tegenover $7 bij de quotes van het middaguur; Apple, $6 tegenover $3. De premium stijgt naarmate het handelsvolume afneemt — 1x voor SPY, 2.02x voor Apple, 3.34x voor Etsy, waarvan de 0.19 miljoen quote updates een klein deel vormen van de 8.97 miljoen van Apple. De spread overtreft de tijd: de eerste halfie van de opening van SPY, 0.27 bps, is strakker dan het rustigste middaguur van Etsy (9.21 bps), waarvan de slechtste deciel bij de opening 75.67 bps bedroeg.
Is de premium bij elke sessie zichtbaar?
Het samenvoegen van quoteringen over meerdere dagen tot één mediaan geeft antwoord op een vraag over de periode, niet over een specifieke ochtend. Dit panel berekent de open-vs-midday ratio per sessie: de typische sessie, de rustigste, de slechtste, en het aandeel met de breedste opening.
De exacte SQL achter elk getal
SELECT ticker,
count() AS sessions,
round(quantileExact(0.5)(ratio), 2) AS median_session_x,
round(min(ratio), 2) AS calmest_session_x,
round(max(ratio), 2) AS worst_session_x,
round(100 * countIf(ratio > 1) / count(), 0) AS pct_sessions_open_wider
FROM (
SELECT ticker,
toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session_date,
quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 810 AND 839)
/ quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 960 AND 1079) AS ratio
FROM (
SELECT ticker,
sip_timestamp,
toHour(sip_timestamp) * 60 + toMinute(sip_timestamp) AS clock_min,
toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000 AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND bid_price > 0
AND ask_price > bid_price
)
GROUP BY ticker, session_date
HAVING countIf(clock_min BETWEEN 810 AND 839) > 0
AND countIf(clock_min BETWEEN 960 AND 1079) > 0
)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'AAPL', 'ETSY'], ticker)In 7 sessies was de opening breder dan de midday voor 71% van de SPY's, 100% van de Apple's en 100% van de Etsy's. De premium van een typische sessie: 1x voor SPY — bij het meest liquide aandeel op de tape blijft de constante verbreding bijna onzichtbaar — tegenover 2.03x voor Apple en 3.29x voor Etsy, waar de premium onmiskenbaar is. De les is dispersie: de rustigste ochtend van Etsy opende op 2.08x van de eigen midday, de slechtste op 4.5x. Een opening premium is een gemiddelde en een tail, nooit een belofte voor de 9:31 van morgen.
A stress test: the MU morning of July 7, 2026
Rolling windows smooth away single mornings, so here is one pinned: Micron on Tuesday, July 7, 2026, inside the semiconductor break that day's recap walks through.
De exacte SQL achter elk getal
WITH prev AS (
SELECT argMax(toFloat64(close), window_start) AS prev_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= '2026-07-06 13:30:00'
AND window_start < '2026-07-06 20:00:00'
),
day AS (
SELECT argMin(toFloat64(open), window_start) AS day_open
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= '2026-07-07 13:30:00'
AND window_start < '2026-07-07 20:00:00'
)
SELECT round((SELECT prev_close FROM prev), 2) AS prior_close,
round((SELECT day_open FROM day), 2) AS jul7_open,
round(((SELECT day_open FROM day) - (SELECT prev_close FROM prev)) / (SELECT prev_close FROM prev) * 100, 1) AS overnight_gap_pctMU closed at $984.31 and opened at $923.01 — an overnight gap of -6.2%. Its spread clock that day:
De exacte SQL achter elk getal
SELECT et_time,
median_spread_cents,
median_spread_bps,
round(100 * median_spread_cents / max(median_spread_cents) OVER (), 1) AS pct_of_widest,
dropped_onesided_locked_crossed
FROM (
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) * 100, bid_price > 0 AND ask_price > bid_price), 1) AS median_spread_cents,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price > bid_price), 1) AS median_spread_bps,
toString(countIf(NOT (bid_price > 0 AND ask_price > bid_price))) AS dropped_onesided_locked_crossed
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'MU'
AND sip_timestamp >= '2026-07-07 13:30:00'
AND sip_timestamp < '2026-07-07 20:00:00'
GROUP BY et_time
)
ORDER BY et_timeThe clock kept time. MU's opening half hour ran a median spread of 62¢ — 6.7 bps on a stock opening at $923.01 — the widest half-hour bucket of its session. One bucket later the median was 45¢, then 39¢ at noon and 38¢ in the last half hour. The premium arrived on schedule — and the liquidity tier still ruled: even here MU stayed tighter in percentage terms than Etsy's ordinary open (30.79 bps).
::: Data notes: window, filters, method
The SPY/Apple/Etsy panels roll: eleven calendar days of NBBO updates ending three days before the last refresh (clear of the feed's ingest lag). The regular-hours panels cut the session with a UTC minute-of-day filter on the summer (EDT) clock; the guard below checks it still lands on a 9:30 a.m. ET start at both ends of the window (570 is 9:30 a.m.) — on the winter clock it trips and holds the page for rework. The phases panel converts to the Eastern clock directly, covering 4:00 a.m.–8:00 p.m. ET either way. One-sided (zero bid or ask) and locked or crossed (bid at or above ask) quotes are excluded throughout; session stability keeps only sessions quoting in BOTH windows. Medians and 90th percentiles are exact; the MU panels are pinned to July 6–7, 2026.
De exacte SQL achter elk getal
SELECT toHour(toTimeZone(toDateTime(today() - 14) + toIntervalMinute(810), 'America/New_York')) * 60
+ toMinute(toTimeZone(toDateTime(today() - 14) + toIntervalMinute(810), 'America/New_York')) AS win_start_et_min,
toHour(toTimeZone(toDateTime(today() - 4) + toIntervalMinute(810), 'America/New_York')) * 60
+ toMinute(toTimeZone(toDateTime(today() - 4) + toIntervalMinute(810), 'America/New_York')) AS win_end_et_min:::
FAQ
Wanneer zijn de bid-ask spreads het breedst?
Premarket — de mediane quoted spread van Etsy bedroeg 306.25 bps tussen 4:00 en 7:00 a.m. ET, tegenover 9.21 bps halverwege de dag. Tijdens de reguliere handelsuren is de grootste spreiding de eerste half uur na de opening; de kleinste spreiding is het laatste half uur voor de sluiting.
Waarom lijkt de spread van SPY vlak te zijn bij de opening?
Amerikaanse aandelen worden gekoteerd in hele centen. De mediane spread van SPY ligt het grootste deel van de dag op 2¢ — een te grof raster om een kleine verbreding te registreren. Sessie voor sessie was de opening nog steeds breder dan het midden van de dag in 71% van de sessies, en de opening-spread in het 90ste percentiel bedroeg 4¢ tegenover 3¢.
Is het ongunstig om een market order te plaatsen bij de opening?
Dit is een van de duurste periodes van de reguliere sessie voor wie onmiddellijke uitvoering vereist — $24 tegenover $7 voor een round trip van 100 aandelen Etsy in het bovengenoemde tijdsvenster. Een limit order beperkt die kosten, met het risico dat de order niet wordt uitgevoerd. Een order die kan wachten, kan een smallere spread benutten: de premie van Etsy daalde van 5.78x naar 2.99x binnen een uur.
Worden spreads bij de sluiting weer breder?
Niet tijdens de reguliere handelsuren — het laatste half uur was de periode met de kleinste spread voor alle drie de namen. Die verbreding vindt plaats na de klok van 16:00 uur, tijdens de minder liquide extended session: Apple werd daar gekoteerd op 6.99 bps tegenover 0.96 bps halverwege de dag.
Worden option spreads bij de opening ook breder?
De panelen hier meten uitsluitend aandelenkoteringen en doen geen uitspraken over opties. De mechanica wijzen in dezelfde richting — de koers van een optie hangt af van de prijs van het onderliggende aandeel, die het minst stabiel is in de eerste minuten — en onze optie-kostenanalyse meet option spreads direct.
Elk paneel bevat de SQL die het heeft gegenereerd — vervang een ticker die u verhandelt en controleer de spread-tijd op de Strasmore terminal.