Strasmore Research
Formazione Matt ConnorDi Matt Connor · Aggiornato 2026-07-24 · data as of July 24, 2026 · refreshed weekly

Perché lo spread è più ampio all'apertura

Analisi dei dati tick-level sulla variazione dello spread durante la prima mezz'ora di trading e confronto con la liquidità del premarket.

Gli spread sono più ampi all'apertura rispetto a quasi ogni altra fase della sessione regolare statunitense; più il titolo è poco liquido, maggiore è la penalità. Nella finestra temporale sottostante, la prima mezz'ora di trading ha registrato un bid-ask spread mediano di 3.34x rispetto a quello di Etsy, una mid-cap, e di 2.02x su Apple — mentre SPY, il più quotato dei tre, ha registrato un rapporto medio di 1x, una linea piatta che risulta essere un artefatto dovuto alla griglia dei prezzi da un centesimo, e non un'apertura libera. Questa pagina calcola il tempo partendo dalle quotazioni tick-level.

Quanto costa lo spread a un market order

Ogni azione presenta due prezzi contemporaneamente: il bid, la migliore offerta di acquisto disponibile, e l'ask, la migliore offerta di vendita disponibile. La differenza tra i due è il bid-ask spread, e un market order — un ordine che scambia immediatamente al miglior prezzo disponibile — la paga: l'acquisto avviene al prezzo ask, la vendita al prezzo bid, e la differenza va a chi ha pubblicato la quotazione, solitamente un market maker. Di questa quotazione contano due caratteristiche: segue un orario la cui fase più costosa è la mattina, e si muove a scatti di un centesimo intero — lo spread più stretto che un ETF ad alto prezzo e una mid-cap molto più economica possano mostrare è lo stesso centesimo.

L'orologio dello spread: un unico andamento, tre livelli di liquidità

Il grafico segue tre livelli di liquidità: SPY, l'ETF sull'S&P 500; Apple, una mega-cap; Etsy, una mid-cap. Ogni aggiornamento valido del NBBO — il miglior bid e offer di mercato mostrato dal broker, analizzato in la nostra spiegazione del NBBO — in un recente intervallo di più giorni rientra in un bucket di 30 minuti della sessione regolare; lo spread mediano di ogni bucket è diviso per il valore minimo registrato per quel titolo, quindi un valore pari a uno indica lo spread più stretto possibile per il titolo.

QueryMedian spread ogni mezz'ora, come multiplo del bucket più stretto di ogni name (regular hours, ET)
L'esatto SQL dietro ogni numero
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_time

I manuali descrivono il pattern intraday come una U: spread ampio all'apertura, stretto a metà giornata, più ampio verso la chiusura. Qui la misurazione mostra una pendenza discendente — per i titoli che hanno margine di movimento dello spread. Etsy ha aperto a 5.78x del suo livello minimo, è scesa a 2.99x entro le 10:30 e a 1.86x a pranzo; Apple ha aperto a 3.04x. Per tutti e tre, la mezz'ora più stretta è l'ultima — 1x, 1x, 1x — quindi l'allargamento associato dai trader alla "chiusura" appartiene alla sessione estesa, oltre la closing auction.

La linea di SPY è piatta: 1x nel bucket di apertura, 1x a pranzo. Il suo spread mediano non varia durante la giornata. Non si tratta dell'assenza di un premio di apertura, ma della griglia a penny.

La griglia dei centesimi: dove si nasconde il premium sui titoli più compressi

Lo spread mediano di SPY misura 2¢ all'apertura e 2¢ a metà giornata — gli stessi due centesimi, quindi la sua mediana non ha ulteriori dati da fornire. La distribuzione sottostante, invece, sì. Questo pannello conta, ogni mezz'ora, la quota di aggiornamenti delle quotazioni fermi al minimo di un centesimo.

QueryQuota di quote updates al minimum spread di un centesimo, per mezz'ora (regular hours, ET)
L'esatto SQL dietro ogni numero
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_time

SPY è rimasto al limite di un centesimo per il 20.7% dei suoi aggiornamenti nella prima mezz'ora rispetto al 43.1% nell'ultima mezz'ora; Apple, 3.1% rispetto a 30.6%; Etsy, 0.2% rispetto a 8.3%. Ogni titolo si apre più lontano dal limite rispetto alla chiusura, e anche la coda si sposta: lo spread all'apertura al 90° percentile di SPY era di 4¢ rispetto a 3¢ a metà giornata — 1.32x, mentre la sua mediana mostrava 1x. Il premium è presente su SPY; la griglia dei centesimi è troppo grossolana perché la mediana possa registrarlo.

Perché lo spread è più ampio all'apertura?

Tre condizioni coincidono nella prima mezz'ora di negoziazione, ma nessuna di esse persiste fino a pranzo.

  • L'accumulo di ordini overnight si presenta tutto in una volta. Tra la chiusura delle 16:00 e la asta di apertura della mattina successiva, si accumulano diciassette ore e mezza di informazioni — utili, guidance, sessioni estere — mentre il trading continuo è sospeso. Le prime quotazioni seguono il gap, non la chiusura precedente.
  • Il price discovery è ancora in corso. L'asta comprime quell'accumulo in un unico prezzo; il mercato impiega poi diversi minuti per individuare un range attorno ad esso, e le quotazioni si ri-prezzano più velocemente durante questa fase di ricerca.
  • Il book si sta ancora riempiendo. Il premarket trading coinvolge molti meno partecipanti che quotano, e la campana non resetta istantaneamente il book.

L'impatto di un halt sulla gestione temporale

Un halt è la forma estrema della medesima dinamica. Sotto le regole limit up-limit down (LULD), un titolo il cui prezzo esce da una banda attorno alla sua media recente subisce una pausa di cinque minuti; una borsa può anche sospendere un titolo in attesa di notizie. Durante l'halt non esiste una quotazione bid-ask per l'esecuzione — il book unilatrale o incrociato a schermo non è un mercato scambiabile. Il trading riprende tramite un'asta di riapertura le cui prime quotazioni portano il carico di accumulo e price discovery tipico di una campana delle 9:30, ma compresso in pochi minuti. Un titolo sospeso vicino all'apertura paga il premio due volte.

Il premarket è un mercato differente

La scarsa liquidità del book è solitamente un fattore determinante; questo pannello ne quantifica l'impatto — stessi titoli, stessa finestra temporale, cinque fasi giornaliere, espresso in basis points (bps), ovvero centesimi di percentuale del prezzo dell'azione, per permettere il confronto tra titoli con prezzi diversi.

QueryMedian quoted spread per fase della sessione, in basis points (ET clock)
L'esatto SQL dietro ogni numero
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)

Il premarket non è un'apertura peggiore; è un mercato differente. Lo spread mediano quotato di Etsy è stato di 306.25 bps tra le 4:00 e le 7:00 ET e di 307.57 bps dalle 7:00 alla chiusura, contro i 30.79 bps della prima mezz'ora di negoziazione e i 9.21 bps di metà giornata — punti percentuali del prezzo, non centesimi. Apple ha quotato 9.82 bps nelle fasi iniziali contro i 0.96 bps di metà giornata; anche SPY ha visto un ampliamento a 0.8 bps rispetto ai 0.27 bps. Dopo la chiusura delle 16:00 lo spread si restringe: 240.45 bps per Etsy, 6.99 bps per Apple.

Il costo in centesimi: apertura vs. metà giornata

I costi si misurano in centesimi. La tabella confronta gli stessi asset — lo spread mediano durante la prima mezz'ora (9:30–10:00 a.m. ET) rispetto alla metà giornata (mezzogiorno–2:00 p.m. ET), il 90° percentile delle quotazioni in ogni finestra, il numero di aggiornamenti delle quotazioni e le quotazioni escluse (unilaterali, bloccate o incrociate).

QueryPremium di apertura: median e 90th-percentile spread all'apertura (9:30-10:00 ET) vs. midday (12:00-14:00 ET)
L'esatto SQL dietro ogni numero
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)

I centesimi per azione e i dollari per 100 azioni corrispondono allo stesso valore, quindi la tabella funge da conto: un round trip da 100 azioni su Etsy con la quotazione mediana di apertura comporta una perdita di $24 rispetto a $7 con le quotazioni di metà giornata; Apple, $6 rispetto a $3. Il premio aumenta con la riduzione dei volumi: 1x per SPY, 2.02x per Apple, 3.34x per Etsy, i cui 0.19 milioni di aggiornamenti delle quotazioni rappresentano una piccola frazione dei 8.97 milioni di Apple. La volatilità supera il fattore temporale: la prima mezz'ora di apertura di SPY, 0.27 bps, è più stretta della fase più calma di metà giornata di Etsy (9.21 bps), il cui peggior decile all'apertura ha registrato 75.67 bps.

Il premium si manifesta in ogni sessione?

Calcolare la mediana su più giorni di quotazioni risponde a un quesito sulla finestra temporale, non sulla singola mattinata. Questo panel ricalcola il rapporto tra l'apertura e il valore midday sessione per sessione: la sessione tipica, la più calma, la peggiore e il titolo con l'apertura più ampia in assoluto.

QuerySessione per sessione: frequenza e ampiezza dello spread all'apertura rispetto al midday
L'esatto SQL dietro ogni numero
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)

Su 7 sessioni, l'apertura è stata più ampia rispetto al midday nel 71% dei casi per SPY, nel 100% per Apple e nel 100% per Etsy. Il premium della sessione tipica è: 1x per SPY — nel titolo più liquido del mercato, il grid dei centesimi mantiene un ampliamento costante quasi invisibile — contro lo 2.03x di Apple e lo 3.29x di Etsy, dove il premium è inequivocabile. La dispersione è il dato chiave: la mattinata più calma di Etsy ha aperto a 2.08x rispetto al proprio midday, la peggiore a 4.5x. Un premium di apertura è una media e un valore estremo, mai una garanzia per le 9:31 di domani.

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.

QueryMU verso il 7 luglio 2026: chiusura regular-session, opening print, overnight gap
L'esatto SQL dietro ogni numero
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_pct

MU closed at $984.31 and opened at $923.01 — an overnight gap of -6.2%. Its spread clock that day:

QueryMU — median quoted spread ogni mezz'ora il 7 luglio 2026 (ET, regular hours)
L'esatto SQL dietro ogni numero
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_time

The 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.

QueryWindow guard: il filtro sessione UTC corrisponde a un inizio alle 9:30 a.m. ET su entrambi i lati della rolling window
L'esatto SQL dietro ogni numero
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

What time of day are bid-ask spreads widest?

Premarket — Etsy's median quoted spread measured 306.25 bps between 4:00 and 7:00 a.m. ET against 9.21 bps midday. Inside regular hours the widest stretch is the first half hour after the open; the tightest, the last before the close.

Why does SPY's spread look flat at the open?

US stocks are quoted in whole cents, and SPY's median spread sits at 2¢ most of the day — too coarse a grid to register a small widening. Session by session its open still ran wider than its midday in 71% of sessions, and its 90th-percentile opening spread measured 4¢ against 3¢.

Is it bad to place a market order at the open?

It is among the most expensive stretches of the regular session for demanding immediacy — $24 against $7 on a 100-share Etsy round trip in the window above. A limit order caps that cost, at the risk of not filling, and an order that can wait may cross a narrower gap: Etsy's premium fell from 5.78x to 2.99x within an hour.

Do spreads widen again at the close?

Not within regular hours — the final half-hour bucket was the tightest of the day on all three names. That widening arrives after the 4:00 p.m. bell, in the thinner extended session: Apple quoted 6.99 bps there against 0.96 bps midday.

Do options spreads widen at the open too?

The panels here measure equity quotes only and claim nothing about options. The mechanics point the same way — an option's quote depends on the underlying stock's price, least settled in the first minutes — and our options-cost breakdown measures option spreads directly.


Every panel carries the SQL that produced it — swap in a ticker you trade and time its spread clock on the Strasmore terminal.