Fechamento do mercado em 28 de julho de 2026
Resumo de 28 de julho de 2026 com índices, breadth, spread setorial, fluxo de opções, cotações, juros e calendário, usando números de consultas armazenadas.
Este resumo de mercado da terça-feira, 28 de julho de 2026, lê toda a sessão a partir de consultas armazenadas: a variação de fechamento a fechamento do SPY foi de 0.24%, a participação das ações em alta no tape líquido foi de 58.6%, e o tape de opções registrou 59.28 milhões de contratos. Todas as janelas abaixo estão vinculadas a datas explícitas nos dois extremos. Assim, executar novamente o SQL de qualquer painel retorna esses mesmos números.
O placar
Cada variação compara a última barra de um minuto da sessão regular de 28 de julho com a da segunda-feira, 27 de julho, em sessões consecutivas. As linhas estão em ordem alfabética, para que cada ETF mantenha uma posição fixa.
O SQL exato por trás de cada número
WITH prior AS (
SELECT ticker, argMax(close, window_start) AS prior_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00'
GROUP BY ticker
),
sess AS (
SELECT ticker,
argMin(open, window_start) AS day_open,
argMax(close, window_start) AS day_close,
max(high) AS day_high,
min(low) AS day_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
GROUP BY ticker
)
SELECT
s.ticker AS ticker,
round(toFloat64(p.prior_close), 2) AS prior_close,
round(toFloat64(s.day_open), 2) AS day_open,
round(toFloat64(s.day_close), 2) AS day_close,
round((toFloat64(s.day_open) / toFloat64(p.prior_close) - 1) * 100, 2) AS gap_pct,
round((toFloat64(s.day_close) / toFloat64(s.day_open) - 1) * 100, 2) AS intraday_pct,
round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
round(toFloat64(s.day_high), 2) AS day_high,
round(toFloat64(s.day_low), 2) AS day_low,
s.shares_traded_m
FROM sess s LEFT JOIN prior p ON s.ticker = p.ticker
ORDER BY tickerO DIA variou 1.07%, o IWM 0.15%, o QQQ -0.96% e o SPY 0.24%, fechando a $740.76. Cada linha divide a variação em duas etapas: o SPY abriu 0.02% em relação ao fechamento de segunda-feira e variou 0.21% entre a abertura e o fechamento. A etapa overnight e a etapa intradiária não precisam coincidir, e essa divisão é a primeira impressão da sessão.
O dia foi incomum?
O número de uma única sessão diz pouco sem a distribuição por trás dele. Por isso, o dia é classificado dentro do próprio mês anterior, usando a mesma lógica.
O SQL exato por trás de cada número
SELECT
round(anyIf(oc_pct, d = toDate('2026-07-28')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-28'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-28'))) + 1 AS spy_abs_move_rank,
count() AS spy_sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-29 13:30:00')
AND window_start < toDateTime('2026-07-29 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)O movimento de abertura ao fechamento do SPY, de 0.21%, ficou em 14 lugar entre 21 sessões anteriores, por tamanho absoluto, em uma janela que remonta a 2026-06-29. A classificação conta quantas outras sessões da janela tiveram movimentos maiores e soma um. Assim, o primeiro lugar corresponderia ao maior movimento do mês anterior.
Amplitude de mercado
O nível de um índice é um único número. A amplitude mostra quantas ações acompanharam esse movimento.
O SQL exato por trás de cada número
SELECT
countIf(c28 > c27 AND liquid) AS advancers,
countIf(c28 < c27 AND liquid) AS decliners,
countIf(c28 = c27 AND liquid) AS unchanged,
countIf(liquid) AS liquid_tickers,
countIf(NOT liquid) AS dropped_by_liquidity_filter,
round(100.0 * countIf(c28 > c27 AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
SELECT ticker, c27, c28, dv28 >= 1000000 AS liquid
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 13:30:00') AS dv28
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
GROUP BY ticker
HAVING c27 > 0 AND c28 > 0
)
)Entre 6008 papéis que superaram o limite de turnover de um milhão de dólares no horário regular, 3519 fecharam acima do fechamento de segunda-feira e 2423 fecharam abaixo, o que representa uma participação de altas de 58.6%. O filtro deixou de fora 5346 papéis com menor liquidez; eles foram contabilizados aqui, em vez de simplesmente descartados.
A prateleira de mega caps
Os mesmos oito nomes de mega caps aparecem em todas as sessões, em ordem alfabética para que cada um mantenha sua linha. A ideia é usar uma cesta fixa: o leitor aprende as linhas, e nenhuma seleção editorial escolhe vencedores depois do fato.
O SQL exato por trás de cada número
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-28 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-28 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'AMZN', 'AVGO', 'GOOGL', 'META', 'MSFT', 'NVDA', 'TSLA')
AND ((window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00')
OR (window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerAAPL oscilou 0.97%, META -0.05%, MSFT 1.12% e NVDA 0.23%, em um giro de 21.11 bilhões de dólares no horário regular, enquanto a TSLA ficou em -0.57%. A coluna em dólares mostra quanto do fluxo esses oito nomes movimentam por conta própria; o painel de breadth acima verifica até que ponto o restante do mercado acompanhou esse movimento.
As maiores variações do dia
Ambos os painéis exigem cinco milhões de dólares em volume financeiro no horário regular, excluem qualquer ativo cujo desdobramento tenha sido executado entre os dois fechamentos considerados e excluem um ticker reutilizado conforme o controle de ambiguidade da casa descrito nas notas.
O SQL exato por trás de cada número
SELECT ticker, board, day_pct, day_dollar_m
FROM (
SELECT 'gainers' AS board, ticker, round((c28 / c27 - 1) * 100, 1) AS day_pct, round(dv / 1e6, 1) AS day_dollar_m
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 13:30:00') AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker NOT IN ('SPCX')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-27' AND execution_date <= '2026-07-28')
AND window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
GROUP BY ticker
HAVING c27 > 0 AND c28 > 0 AND dv >= 5000000
)
ORDER BY day_pct DESC
LIMIT 8
UNION ALL
SELECT 'decliners' AS board, ticker, round((c28 / c27 - 1) * 100, 1) AS day_pct, round(dv / 1e6, 1) AS day_dollar_m
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 13:30:00') AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker NOT IN ('SPCX')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-27' AND execution_date <= '2026-07-28')
AND window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
GROUP BY ticker
HAVING c27 > 0 AND c28 > 0 AND dv >= 5000000
)
ORDER BY day_pct ASC
LIMIT 8
)
ORDER BY board DESC, abs(day_pct) DESCA maior alta do painel, STKH, avançou 166.7%, com 113.2 milhões de dólares negociados. A maior queda, YYAI, recuou -71%, com 18.3 milhões. Esta página registra os tamanhos e os comprovantes, sem atribuir uma narrativa a eles.
Dispersão entre setores
Os onze fundos SPDR de setores selecionados, com o fechamento de 28 de julho sobre o de 27 de julho, classificados do melhor ao pior. A cesta é definida e fixa, e não uma classificação de provedor.
O SQL exato por trás de cada número
SELECT sector, day_pct, round(max(day_pct) OVER () - day_pct, 2) AS points_behind_best
FROM (
SELECT multiIf(ticker = 'XLK', 'Technology', ticker = 'XLC', 'Communications', ticker = 'XLE', 'Energy',
ticker = 'XLF', 'Financials', ticker = 'XLI', 'Industrials', ticker = 'XLB', 'Materials',
ticker = 'XLP', 'Staples', ticker = 'XLRE', 'Real Estate', ticker = 'XLU', 'Utilities',
ticker = 'XLV', 'Health Care', 'Consumer Discretionary') AS sector,
round((c28 / c27 - 1) * 100, 2) AS day_pct
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-28 00:00:00') AS c27,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 00:00:00') AS c28
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND ((window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00')
OR (window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'))
GROUP BY ticker
HAVING c27 > 0 AND c28 > 0
)
)
ORDER BY day_pct DESCHealth Care liderou o ranking, com 2.36%, enquanto Technology ficou na última posição, em -1.9%, 4.26 pontos percentuais atrás. Esse spread representa a dispersão entre setores do dia: um pregão em que todos os onze ficam dentro de um ponto percentual é muito diferente de outro em que os resultados se espalham por vários pontos.
Onde os dólares foram negociados
O SQL exato por trás de cada número
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
round(1000 * dollar_volume_bn / shares_m, 2) AS implied_avg_price
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard, if(leaderboard = 'by shares traded', shares_m, dollar_volume_bn) DESCMU liderou o ranking em dólares, com 39.21 bilhões negociados no horário regular, seguido por QQQ, com 29.98 bilhões. O ranking por ações responde a uma pergunta diferente: ONFO ficou no topo, com 182.4 milhões de ações e um preço médio implícito de US$0.16. O volume em dólares mostra onde está a atenção do mercado; o volume de ações mostra a rotatividade. A versão dessa medida por ativo é volume relativo.
O fluxo de opções
O SQL exato por trás de cada número
WITH
(
SELECT (strike, typ, vol_m, is_0dte)
FROM (
SELECT toFloat64(any(strike_price)) AS strike, any(option_type) AS typ,
round(toFloat64(sum(size)) / 1e6, 2) AS vol_m,
if(substring(ticker, length(ticker) - 14, 6) = '260728', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
AND underlying_symbol = 'SPY'
GROUP BY ticker
ORDER BY vol_m DESC, strike ASC
LIMIT 1
)
) AS top_spy,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
) AS spy_regular_close,
(
SELECT round(toFloat64(sum(size)) / 1e6, 2)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
) AS jul27_contracts_m,
(
SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260727') / sum(size), 1)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
) AS jul27_pct_0dte
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
jul27_contracts_m,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260728') / sum(size), 1) AS pct_0dte,
jul27_pct_0dte,
spy_regular_close,
top_spy.1 AS top_spy_strike,
top_spy.2 AS top_spy_type,
top_spy.3 AS top_spy_contracts_m,
top_spy.4 AS top_spy_is_0dte,
round(top_spy.1 - spy_regular_close, 2) AS top_spy_strike_minus_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'O fluxo de opções registrou 10.07 milhões de negócios, envolvendo 59.28 milhões de contratos, ante 64.69 milhões na segunda-feira. As calls representaram 55% do volume de contratos. Os contratos que vencem no mesmo pregão, o grupo de opções com vencimento no mesmo dia, representaram 29%, contra 39.3% na segunda-feira, em um ritmo definido pelo momento do vencimento. O contrato mais negociado de SPY foi o 742 C, com 0.72 milhões de contratos. Seu strike estava 1.24 dólares distante do fechamento regular de SPY em US$740.76, medido como strike menos fechamento.
O fluxo de cotações
Os dados de cotações são o conjunto de dados mais escasso desta mesa, e são medidos em todas as sessões. Os dias comuns também entram no registro.
O SQL exato por trás de cada número
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-28')) / 1e6, 2) AS jul28_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-27')) / 1e6, 2) AS jul27_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-28')) / countIf(toDate(sip_timestamp) = toDate('2026-07-27')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'SPY') / 1e6, 2) AS jul28_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'QQQ') / 1e6, 2) AS jul28_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'NVDA') / 1e6, 2) AS jul28_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'O fluxo de cotações de ações registrou 536.07 milhões de atualizações de NBBO, contra 553.53 milhões na segunda-feira, uma variação diária de -3.2%. O SPY registrou 4.72 milhões de atualizações, o QQQ 5.94 milhões e a NVDA 3.01 milhões.
O SQL exato por trás de cada número
SELECT ticker,
round(quantileExactIf(0.5)(10000 * (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2), bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price), 2) AS median_spread_bps,
round(count() / 1e6, 2) AS quote_updates_m,
countIf(bid_price <= 0 OR ask_price <= 0) AS one_sided_quote_count,
countIf(bid_price > ask_price AND bid_price > 0 AND ask_price > 0) AS crossed_quote_count
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'DIA', 'IWM', 'NVDA', 'QQQ', 'SPY', 'TSLA')
AND sip_timestamp >= '2026-07-28 13:30:00' AND sip_timestamp < '2026-07-28 20:00:00'
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY tickerO spread mediano das cotações do SPY no horário regular mediu 0.27 pontos-base do preço médio; o do QQQ, 0.74; e o da NVDA, 1.52. As duas últimas colunas mostram a divulgação: cotações unilaterais e cruzadas são contabilizadas por ativo e separadas da mediana, em vez de serem descartadas silenciosamente. Uma cotação cruzada, com o bid acima do ask, é um artefato comum de um feed consolidado formado por várias plataformas de negociação com resolução de nanossegundos.
O SQL exato por trás de cada número
SELECT round(anyIf(spread_bps, d = toDate('2026-07-28')), 2) AS jul28_median_spread_bps,
arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-28')), groupArrayIf(spread_bps, d != toDate('2026-07-28'))) + 1 AS rank_tightest,
count() AS sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT toDate(sip_timestamp) AS d,
quantileExactIf(0.5)(10000 * (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2), bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-07-01 13:30:00' AND sip_timestamp < '2026-07-28 20:00:00'
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
)Comparado com todas as sessões de julho usando a mesma lógica, o spread mediano do SPY no dia, de 0.27 pontos-base, ficou em 16 de 19, contado a partir do spread mais estreito, em uma janela iniciada em 2026-07-01. Em um fluxo de cotações tranquilo, essa frase é o objetivo do painel: um dia comum para a liquidez é uma constatação publicada e delimitada.
O SQL exato por trás de cada número
WITH
(SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00') AS jul28_options_rows,
(SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00') AS jul28_stock_quote_rows
SELECT
round(jul28_options_rows / 1e9, 2) AS jul28_options_bn,
round(jul28_options_rows / jul28_stock_quote_rows, 1) AS options_to_stock_ratio,
round((SELECT count() FROM global_markets.cache_options_quotes WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27' AND sip_timestamp >= '2026-07-28 13:30:00' AND sip_timestamp < '2026-07-28 20:00:00') / 1e6, 0) AS jul28_spy_options_mO fluxo de NBBO de opções registrou 10.23 bilhões de atualizações, 19.1 vezes o volume do fluxo de cotações de ações, sendo que apenas a raiz do SPY respondeu por 382 milhões de atualizações no horário regular.
Taxas
O SQL exato por trás de cada número
SELECT toString(date) AS date,
round(toFloat64(yield_2_year), 2) AS yield_2y_pct,
round(toFloat64(yield_10_year), 2) AS yield_10y_pct,
round(toFloat64(yield_30_year), 2) AS yield_30y_pct,
round((toFloat64(yield_10_year) - toFloat64(yield_2_year)) * 100) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= '2026-07-23' AND date <= '2026-07-28'
ORDER BY dateO arquivo do Treasury fica cerca de uma sessão atrasado em relação ao mercado. Por isso, este painel mostra os negócios registrados no arquivo: 4 linhas datadas na janela. A mais recente, datada de 2026-07-28, colocou a taxa de dois anos em 4.26%, a de dez anos em 4.61% e a de trinta anos em 5.09%, com um spread de dois a dez anos de 35 pontos-base.
O calendário por trás do dia
O SQL exato por trás de cada número
WITH
(
SELECT (argMax(t, (n, t)), max(n))
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE published_utc >= '2026-07-28 04:00:00' AND published_utc < '2026-07-29 04:00:00'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news,
(
SELECT (count(), uniqExact(cik), countIf(form_type = '4'), countIf(form_type = '8-K'), countIf(form_type = '424B2'), countIf(form_type = '10-Q'))
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date = '2026-07-28'
) AS fil
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-28') AS ex_dividend_records,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-28') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-28') AS forward_splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-28') AS listings,
(SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-28 04:00:00' AND published_utc < '2026-07-29 04:00:00') AS news_articles,
(SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-28 04:00:00' AND published_utc < '2026-07-29 04:00:00') AS news_publishers,
top_news.1 AS top_news_ticker,
top_news.2 AS top_news_n,
fil.1 AS fil_total,
fil.2 AS fil_filers,
fil.3 AS fil_form4,
fil.4 AS fil_8k,
fil.5 AS fil_424b2,
fil.6 AS fil_10q147 registros de dividendos passaram a ser negociados ex-dividend em 28 de julho, foram executados 3 reverse splits e 0 forward splits, e 2 novas listagens chegaram ao tape. O feed de notícias trouxe 161 artigos de 2 publishers, com MSFT sendo o ticker mais coberto nessa janela deste feed, em 9 artigos. O índice diário da EDGAR contém 5915 filings da data, enviados por 2898 filers distintos: 856 relatórios de insider Form 4, 315 relatórios correntes 8-K, 900 suplementos de preço 424B2 e 100 relatórios trimestrais 10-Q. Esse índice segue seu próprio cronograma, e este painel informa o conteúdo disponível no momento da geração.
Em pauta
No restante da semana, leia as mesmas tabelas, deliberadamente olhando além do período.
O SQL exato por trás de cada número
SELECT
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-29' AND date <= '2026-07-31' AND status != 'open') AS closures_rest_of_week,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-29' AND ex_dividend_date <= '2026-07-31') AS exdiv_records_rest_of_week,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-29' AND ex_dividend_date <= '2026-07-31') AS household_exdivs,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-29' AND execution_date <= '2026-07-31') AS splits_rest_of_week,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) AS jul31_expiry_pct_of_tue_volume,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-28') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'A tabela de feriados mostra 0 fechamentos na quarta-feira, 29 de julho, na quinta-feira, 30 de julho, e na sexta-feira, 31 de julho. 696 registros de dividendos ficam ex-dividend nessas três sessões; 0 deles estão entre dez empresas conhecidas do setor de consumo analisadas, e 15 desdobramentos estão programados para ser executados. Do volume de opções de terça-feira, 17.5% já estava em contratos com vencimento na sexta-feira, 31 de julho. A liquidação mais recente de posições vendidas a descoberto disponível nos arquivos é 2026-07-15, um arquivo divulgado com atraso suficiente para ter seu próprio explicador.
A sessão, verificada
O SQL exato por trás de cada número
SELECT
formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
countIf(window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-28') AS jul28_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-28' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-28' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-28 00:00:00' AND window_start < '2026-07-29 00:00:00'Uma sessão regular completa: primeiro candle do SPY às 04:00 ET, último às 19:59 ET, 390 candles no horário regular, 1 sessão na janela e 0 linhas de feriado para a data. O próximo fechamento programado é Labor Day em 2026-09-07.
Perguntas frequentes
Como o mercado acionário se comportou na terça-feira, 28 de julho de 2026?
O SPY variou 0.24% no fechamento contra o fechamento anterior, para US$740.76, com o QQQ em -0.96%, o DIA em 1.07% e o IWM em 0.15%. Entre os papéis com alta liquidez, 3519 subiu e 2423 caiu.
Qual setor liderou o pregão em 28 de julho de 2026?
Health Care, em 2.36%, considerando os onze fundos setoriais selecionados da SPDR. O pior desempenho entre os onze foi de Technology, que registrou -1.9%.
Qual foi o nível de atividade do mercado de opções em 28 de julho de 2026?
Foram negociados 59.28 milhões de contratos, ante 64.69 milhões no pregão anterior. Os contratos com vencimento no mesmo dia representaram 29% do volume, e as calls, 55%.
Qual ação movimentou o maior volume financeiro em 28 de julho de 2026?
MU, com volume financeiro de 39.21 bilhões no horário regular, à frente de QQQ, com 29.98 bilhões.
Notas sobre os dados
Esta edição preenche a lacuna de 28 de julho na série diária: o diário de 27 de julho cobre o pregão anterior, o diário de 29 de julho cobre o pregão seguinte, e o resumo semanal abrange a semana anterior aos dois. Os painéis identificados por ticker são ordenados alfabeticamente, para que as referências no texto apontem para linhas fixas; as classificações e as tabelas de maiores variações são ordenadas por valor, e toda afirmação de posição nelas é codificada como um limite de verificação. A cesta de mega caps e a cesta setorial de eleven fundos são conjuntos definidos e fixos, não classificações de fornecedores. As tabelas de maiores variações aplicam um limite de turnover de cinco milhões de dólares no horário regular, excluem qualquer ativo cujo desdobramento tenha sido executado entre os dois fechamentos medidos e excluem um símbolo reutilizado sob a regra interna de ambiguidade, para que cada destaque recaia sobre um nome verificável. Os painéis de cotações contabilizam cotações unilaterais e cruzadas por ativo, em vez de descartá-las silenciosamente. O arquivo do Treasury e o índice diário da EDGAR chegam em cronogramas próprios; por isso, esses painéis informam o que contêm, sem presumir que os dados já tenham chegado. Não há nenhum índice de volatilidade implícita aqui: essas séries não são licenciadas para este warehouse, portanto a volatilidade é observada no tape por meio das amplitudes, da participação das opções no mesmo dia e do comportamento das cotações.
Metodologia
- Fonte dos dados de mercado: fita consolidada.
delayed_stocks_minute_aggspara preços e volumes,options_tradespara a fita de opções,cache_stocks_quotesecache_options_quotespara os painéis de NBBO. - Fechamento: a barra de um minuto da última minuto da sessão regular, nunca um print presumido das 16h e nunca um print do horário estendido.
- Tratamento do fuso horário: todos os timestamps armazenados estão em UTC; as cláusulas WHERE usam literais UTC brutos, e
toTimeZoneaparece apenas nas listas SELECT para rótulos em ET. - Verificação da sessão: feita a partir da tabela de feriados e das barras observadas, nunca presumida com base no calendário.
- Comparações com a sessão anterior: calculadas na própria query a partir de 27 de julho, nunca reaproveitadas de uma publicação anterior.
- Casas decimais: as colunas de preço, tamanho e volume são convertidas para Float64 antes de qualquer divisão ou produto.
- Agregações determinísticas: quantis exatos e critérios de desempate baseados em chaves de tupla em toda a análise; toda afirmação de ordenação ou sinal no texto é codificada como um limite de consistência.
- Data de referência do data warehouse: 1º de agosto de 2026, quatro dias após a sessão, além do atraso usual de ingestão da fita, de um a dois dias; os comprovantes delimitados acima mantêm a publicação disponível se algum dataset for identificado como ausente no momento da geração.
Links cruzados: o resumo diário de 27 de julho, o resumo diário de 29 de julho, quando as opções vencem, o que é um bid-ask spread e o spread de dois a dez anos.
Todas as queries acima são executadas sem alterações no terminal Strasmore se você quiser redirecionar uma janela para outra sessão.