Por que o spread aumenta na abertura do mercado
Analise por que o spread é maior na abertura. Dados em nível de tick mostram o custo do premarket e como a liquidez impacta o preço nos primeiros minutos.
Os spreads estão mais amplos na abertura do que em quase qualquer outro período da sessão regular dos EUA, e quanto menor a liquidez da ação, maior é o custo. Na janela móvel abaixo, a primeira meia hora de negociação apresentou um bid-ask spread mediano de 3.34x o do meio-dia na Etsy, uma mid-cap, e 2.02x na Apple — enquanto o SPY, o mais negociado entre os três, registrou uma razão consolidada de 1x, uma linha constante que se revela um artefato da grade de preços de um centavo, e não de uma abertura livre. Esta página cronometra esse período a partir de cotações em nível de tick.
O custo do spread para uma ordem a mercado
Cada ação apresenta dois preços simultaneamente: o bid, a melhor oferta de compra disponível, e o ask, a melhor oferta de venda disponível. A diferença entre eles é o bid-ask spread, e uma ordem a mercado — que negocia imediatamente pelo melhor preço disponível — paga esse valor: a compra é executada pelo ask, a venda pelo bid, e a diferença fica com quem forneceu a cotação, geralmente um market maker. Duas características dessa cotação são relevantes abaixo: ela segue um cronograma cujo período mais caro é o período da manhã, e ela ocorre em intervalos de um centavo inteiro — o spread mais estreito que um ETF de alta cotação e uma mid-cap muito mais barata podem apresentar é o mesmo centavo.
The spread clock: one shape, three liquidity tiers
The chart follows three liquidity tiers: SPY, the S&P 500 ETF; Apple, a mega-cap; Etsy, a mid-cap. Every valid NBBO update — the market-wide best bid and offer your broker shows, unpacked in our NBBO explainer — in a recent multi-day window falls into a 30-minute bucket of the regular session, and each bucket's median spread is divided by that name's tightest, so 1 means as tight as the stock gets.
O SQL exato por trás de cada número
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_timeTextbooks call the intraday pattern a U: wide open, tight midday, wider into the close. Measured here it is a ski slope — for names whose spread has room to move. Etsy opened at 5.78x its tightest level, was down to 2.99x by 10:30 and 1.86x at lunchtime; Apple opened at 3.04x. For all three the tightest half hour is the last — 1x, 1x, 1x — so the re-widening traders associate with "the close" belongs to the extended session, past the closing auction.
SPY's line is flat: 1x in the opening bucket, 1x at lunch. Its median spread does not move all day. That is not the absence of an opening premium — it is the penny grid.
A grade de um centavo: onde o prêmio se esconde nos ativos de menor spread
O spread mediano do SPY é de 2¢ na abertura e 2¢ ao meio-dia — os mesmos dois centavos, portanto sua mediana não indica variações. A distribuição abaixo mostra o cenário. Este painel contabiliza, a cada meia hora, a proporção de atualizações de cotação no limite mínimo de um centavo.
O SQL exato por trás de cada número
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_timeO SPY permaneceu no piso de um centavo em 20.7% de suas atualizações na primeira meia hora de negociação, contra 43.1% na última meia hora; Apple, 3.1% contra 30.6%; Etsy, 0.2% contra 8.3%. Todos os ativos abrem mais longe do piso do que fecham, e a cauda também se desloca: o spread de percentil 90 do SPY na abertura foi de 4¢ contra 3¢ ao meio-dia — 1.32x, enquanto sua mediana mostrou 1x. O prêmio está presente no SPY; a grade de um centavo é muito grosseira para que a mediana o registre.
Por que os spreads ficam mais largos na abertura?
Três condições coincidem na primeira meia hora de pregão, e nenhuma delas persiste até o horário do almoço.
- O backlog do overnight é processado de uma vez. Entre o fechamento das 16:00 e o leilão de abertura da manhã seguinte, dezessete horas e meia de informações se acumulam — resultados, guidance, sessões no exterior — enquanto o trading contínuo está suspenso. As primeiras cotações seguem o gap, não o fechamento anterior.
- A descoberta de preço ainda está em curso. O leilão comprime esse backlog em um único preço; o mercado então gasta minutos encontrando um range em torno dele, e as cotações são reajustadas mais rapidamente enquanto essa busca ocorre.
- O book ainda está sendo preenchido. O premarket trading conta com muito menos participantes cotando, e o sino não reseta o book instantaneamente.
O impacto de uma suspensão no tempo
Uma suspensão é a forma extrema da mesma mecânica. Sob as regras de limit up-limit down (LULD), uma ação cujo preço se mova para fora de uma banda em torno de sua média recente sofre uma pausa de cinco minutos; uma bolsa também pode suspender um ticker para divulgação de notícias. Durante a suspensão, não há cotação de dois lados para execução — o book unilateral ou cruzado na tela não é um mercado negociável. O trading recomeça por meio de um leilão de reabertura, cujas primeiras cotações carregam a carga de backlog e descoberta de um sino das 09:30, comprimida em poucos minutos. Uma ação suspensa próximo à abertura paga o prêmio duas vezes.
O premarket é um mercado diferente
A baixa liquidez no book costuma ser um fator determinante; este painel precifica esse movimento — mesmos ativos, mesma janela, cinco fases do dia, em basis points (bps), centésimos de percentual do preço da ação, permitindo a comparação de ativos com preços distintos.
O SQL exato por trás de cada número
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)O premarket não é uma abertura pior; é um mercado diferente. O spread mediano cotado da Etsy foi de 306.25 bps entre as 4:00 e 7:00 ET e 307.57 bps das 7:00 até a abertura, contra 30.79 bps na primeira meia hora de pregão e 9.21 bps ao meio-dia — pontos percentuais do preço, não centavos. A Apple cotou 9.82 bps cedo contra 0.96 bps ao meio-dia; até o SPY teve o spread ampliado para 0.8 bps contra 0.27 bps. Após o fechamento das 16:00, a amplitude retorna — 240.45 bps para a Etsy, 6.99 bps para a Apple.
O custo em centavos: abertura vs. meio-dia
Os custos são medidos em centavos. A tabela compara os mesmos ativos — o spread mediano na primeira meia hora (9:30–10:00 a.m. ET) contra o meio-dia (noon–2:00 p.m. ET), o quote no percentil 90 de cada janela, a contagem de atualizações de quote e as cotações excluídas por serem unilaterais, travadas ou cruzadas.
O SQL exato por trás de cada número
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)Centavos por ação e dólares por 100 ações representam o mesmo valor, portanto a tabela funciona como uma fatura: uma operação de ida e volta com 100 ações de Etsy no quote mediano da abertura custa $24 contra $7 nos quotes do meio-dia; Apple, $6 contra $3. O prêmio aumenta conforme a liquidez diminui — 1x para SPY, 2.02x para Apple, 3.34x para Etsy, cujas 0.19 milhões de atualizações de quote representam uma fração pequena das 8.97 milhões da Apple. A volatilidade supera o tempo: a primeira meia hora de abertura do SPY, 0.27 bps, é mais estreita que o período mais calmo do meio-dia da Etsy (9.21 bps), cujo pior decil na abertura registrou 75.67 bps.
O prêmio aparece em todas as sessões?
Agrupar dias de cotações em uma mediana responde a uma questão sobre o período, não sobre uma manhã específica. Este painel recalcula a razão entre a abertura e o meio do dia sessão por sessão: a sessão típica, a mais calma, a pior e a ação que apresentou a abertura mais ampla de todas.
O SQL exato por trás de cada número
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)Em 7 sessões, a abertura foi mais ampla que o meio do dia em 71% das sessões de SPY, 100% das de Apple e 100% das de Etsy. O prêmio da sessão típica: 1x para SPY — no ativo mais líquido do mercado, o spread de centavos mantém um alargamento constante quase invisível — contra 2.03x para Apple e 3.29x para Etsy, onde o prêmio é nítido. A lição é a dispersão: a manhã mais calma da Etsy abriu a 2.08x do seu próprio meio do dia, e a pior a 4.5x. Um prêmio de abertura é uma média e um evento extremo, nunca uma promessa para as 09:31 de amanhã.
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.
O SQL exato por trás de cada número
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:
O SQL exato por trás de cada número
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.
O SQL exato por trás de cada número
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.