Strasmore Research
Recaps de mercado Matt ConnorPor Matt Connor · Atualizado 2026-08-02

Resumo do mercado: 30 de julho de 2026

Sessão de 30 de julho de 2026 em números: índices, breadth, spread setorial, fluxo de opções, cotações, juros e calendário, com dados das consultas.

Este resumo de mercado de quinta-feira, 30 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 1.68%, a participação das ações em alta no fluxo líquido foi de 63.5%, e o fluxo de opções registrou 67.06 milhões de contratos. Todas as janelas abaixo estão vinculadas a datas explícitas nas duas extremidades. Assim, a execução novamente do SQL de qualquer painel retorna os mesmos números.

O placar

Cada variação compara a barra de um minuto do último minuto do pregão regular de 30 de julho com a de quarta-feira, 29 de julho, em sessões consecutivas. As linhas estão em ordem alfabética, portanto cada ETF mantém uma posição fixa.

QuerySPY / QQQ / DIA / IWM: 30 de julho vs. fechamento de 29 de julho, horário regular
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-29 13:30:00' AND window_start < '2026-07-29 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-30 13:30:00' AND window_start < '2026-07-30 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 ticker
Run this yourself

O DIA variou 1.19%, o IWM 1.37%, o QQQ 3.34% e o SPY 1.68%, fechando a $741.73. Cada linha divide a variação em duas partes: o SPY abriu 0.9% em relação ao fechamento de quarta-feira e variou 0.77% entre a abertura e o fechamento. A variação no overnight e a variação intradiária não precisam coincidir, e essa divisão é a primeira impressão digital da sessão.

O dia foi incomum?

O número de uma única sessão diz pouco sem a distribuição que o sustenta. Por isso, o dia é classificado dentro do próprio mês móvel, usando a mesma lógica.

QueryMovimento diário do SPY no contexto histórico (da abertura ao fechamento, de 30 de junho a 30 de julho)
O SQL exato por trás de cada número
SELECT
    round(anyIf(oc_pct, d = toDate('2026-07-30')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-30'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-30'))) + 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-30 13:30:00')
      AND window_start < toDateTime('2026-07-31 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY d
)
Run this yourself

A variação da abertura ao fechamento do SPY, de 0.77%, ficou em 3 entre 22 sessões móveis, por tamanho absoluto, em uma janela que remonta a 2026-06-30. A classificação conta quantas outras sessões na janela tiveram uma variação maior e soma um. Assim, o primeiro lugar corresponderia à maior variação do mês móvel.

Amplitude de mercado

O nível de um índice é um único número. A amplitude mostra quantas ações acompanharam esse movimento.

QueryAmplitude do mercado líquido: fechamento de 30 de julho vs. fechamento de 29 de julho, filtro de $1M negociado
O SQL exato por trás de cada número
SELECT
    countIf(c30 > c29 AND liquid) AS advancers,
    countIf(c30 < c29 AND liquid) AS decliners,
    countIf(c30 = c29 AND liquid) AS unchanged,
    countIf(liquid) AS liquid_tickers,
    countIf(NOT liquid) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(c30 > c29 AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
    SELECT ticker, c29, c30, dv30 >= 1000000 AS liquid
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS c30,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-30 13:30:00') AS dv30
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-30 20:00:00'
        GROUP BY ticker
        HAVING c29 > 0 AND c30 > 0
    )
)
Run this yourself

Entre 5960 ações que superaram o limite de um milhão de dólares em volume financeiro no horário regular, 3782 fecharam acima do fechamento de quarta-feira e 2122 fecharam abaixo, o que representa uma participação de altas de 63.5%. O filtro deixou de fora 5492 ações com menor liquidez, contabilizadas aqui em vez de serem simplesmente descartadas.

A prateleira de mega caps

Os mesmos oito nomes de mega caps aparecem aqui 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 escolha editorial seleciona vencedores depois do fato.

QueryOito megacaps: variação vs. 29 de julho e dólares negociados no horário regular, 30 de julho
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-30 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-30 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-30 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00')
        OR (window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 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 ticker
Run this yourself

AAPL oscilou -1.24%, META -8.17%, MSFT 15.06% e NVDA 2.67%, em um giro de 19.63 bilhões de dólares no horário regular, com a TSLA em 3.53%. A coluna em dólares mostra quanto do fluxo esses oito nomes movimentam por conta própria; o painel de amplitude acima verifica até que ponto o restante do mercado acompanhou esse movimento.

As ações que mais se moveram no dia

Ambos os painéis exigem cinco milhões de dólares em volume negociado no horário regular, excluem qualquer ativo cujo desdobramento tenha sido executado entre os dois fechamentos que medem e excluem um ticker reutilizado conforme o filtro de ambiguidade definido nas notas.

QueryMaiores altas e baixas: fechamento de 30 de julho vs. fechamento de 29 de julho, $5M+ negociados, excluídos os desdobramentos
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((c30 / c29 - 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS c30,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-30 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-29' AND execution_date <= '2026-07-30')
          AND window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-30 20:00:00'
        GROUP BY ticker
        HAVING c29 > 0 AND c30 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct DESC
    LIMIT 8
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((c30 / c29 - 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS c30,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-30 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-29' AND execution_date <= '2026-07-30')
          AND window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-30 20:00:00'
        GROUP BY ticker
        HAVING c29 > 0 AND c30 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct ASC
    LIMIT 8
)
ORDER BY board DESC, abs(day_pct) DESC
Run this yourself

A maior alta do painel, CYCU, avançou 489.5%, com 474.4 milhões de dólares negociados. A maior queda, IREZ, recuou -61.2%, com 90.8 milhões negociados. Esta página registra os tamanhos e os comprovantes. Não atribui nenhuma explicação a esses movimentos.

Dispersão entre setores

Os onze fundos SPDR de setores selecionados, com o fechamento de 30 de julho em relação ao de 29 de julho, classificados do melhor ao pior. A cesta é definida e fixa, e não uma classificação de fornecedor.

QueryETFs setoriais, fechamento de 30 de julho vs. fechamento de 29 de julho, em ordem de desempenho
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((c30 / c29 - 1) * 100, 2) AS day_pct
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-30 00:00:00') AS c29,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-30 00:00:00') AS c30
        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-29 13:30:00' AND window_start < '2026-07-29 20:00:00')
            OR (window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00'))
        GROUP BY ticker
        HAVING c29 > 0 AND c30 > 0
    )
)
ORDER BY day_pct DESC
Run this yourself

Technology liderou a lista, com 5.52%, enquanto Communications ficou na última posição, em -2.69%, 8.21 pontos percentuais atrás. Esse spread é a dispersão setorial do dia: uma sessão em que os onze ativos ficam dentro de um ponto percentual tem dinâmica muito diferente de outra em que a diferença se estende por vários pontos.

Onde os dólares foram negociados

QueryTop 6 por dólares negociados, top 4 por ações negociadas: horário regular de 30 de julho
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-30 13:30:00' AND window_start < '2026-07-30 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-30 13:30:00' AND window_start < '2026-07-30 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) DESC
Run this yourself

MU liderou o ranking em dólares, com 43.29 bilhões negociados no horário regular, seguido por MSFT, com 42.56 bilhões. O ranking por ações responde a uma pergunta diferente: CYCU ficou na liderança, com 544 milhões de ações e um preço médio implícito de $0.86. 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 métrica por ativo é volume relativo.

O fluxo de opções

QueryFluxo de opções: contratos, participação das calls, participação no mesmo dia vs. quarta-feira, contrato mais movimentado do SPY
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) = '260730', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-30 00:00:00' AND sip_timestamp < '2026-07-31 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-30 13:30:00' AND window_start < '2026-07-30 20:00:00'
    ) AS spy_regular_close,
    (
        SELECT round(toFloat64(sum(size)) / 1e6, 2)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
    ) AS jul29_contracts_m,
    (
        SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260729') / sum(size), 1)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
    ) AS jul29_pct_0dte
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    jul29_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) = '260730') / sum(size), 1) AS pct_0dte,
    jul29_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-30 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00'
Run this yourself

O fluxo de opções registrou 10.93 milhões de negócios, envolvendo 67.06 milhões de contratos, ante 66.84 milhões na quarta-feira. As calls representaram 54.6% do volume de contratos. Os contratos que vencem na mesma sessão, o grupo de vencimento em zero dias, representaram 25.3%, ante 33.1% na quarta-feira, em um ritmo determinado pelo momento do vencimento. O contrato de SPY mais negociado foi o 740 C, com 0.56 milhões de contratos. Seu strike estava a -1.73 dólares do fechamento regular de SPY, a $741.73, calculado como strike menos fechamento.

A fita 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.

QueryContagem de atualizações do NBBO de ações: 30 de julho vs. 29 de julho, com atualizações dos tickers nomeados (milhões)
O SQL exato por trás de cada número
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-30')) / 1e6, 2) AS jul30_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29')) / 1e6, 2) AS jul29_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-30')) / countIf(toDate(sip_timestamp) = toDate('2026-07-29')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-30') AND ticker = 'SPY') / 1e6, 2) AS jul30_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-30') AND ticker = 'QQQ') / 1e6, 2) AS jul30_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-30') AND ticker = 'NVDA') / 1e6, 2) AS jul30_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00'
Run this yourself

A fita de cotações de ações registrou 560.75 milhões de atualizações de NBBO, contra 722.65 milhões na quarta-feira, uma variação diária de -22.4%. O SPY registrou 5.55 milhões de atualizações, o QQQ 6.75 milhões e o NVDA 2.39 milhões.

QuerySete nomes: spread mediano cotado no horário regular em pontos-base, com contagens de qualidade das cotações, 30 de julho
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-30 13:30:00' AND sip_timestamp < '2026-07-30 20:00:00'
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY ticker
Run this yourself

O spread mediano cotado do SPY no horário regular correspondeu a 0.27 pontos-base do preço médio. O do QQQ ficou em 0.59 e o do NVDA, em 1.03. As duas últimas colunas mostram a divulgação: cotações unilaterais e cruzadas são contabilizadas por ativo e excluídas do cálculo 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 a partir de muitas plataformas em resolução de nanossegundos.

QuerySpread mediano do SPY comparado a todas as sessões de julho, do mais estreito ao mais amplo
O SQL exato por trás de cada número
SELECT round(anyIf(spread_bps, d = toDate('2026-07-30')), 2) AS jul30_median_spread_bps,
       arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-30')), groupArrayIf(spread_bps, d != toDate('2026-07-30'))) + 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-30 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
)
Run this yourself

Comparado com todas as sessões de julho usando a mesma metodologia, o spread mediano do SPY no dia, de 0.27 pontos-base, ficou em 19 de 21, contando a partir do menor spread, em uma janela iniciada em 2026-07-01. Em uma fita tranquila, essa frase resume o objetivo do painel: um dia comum de liquidez é um achado, publicado e delimitado.

QueryNBBO de opções: total de atualizações vs. o tape de ações, mais o recorte do root SPY, 30 de julho
O SQL exato por trás de cada número
WITH
    (SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-30 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00') AS jul30_options_rows,
    (SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-30 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00') AS jul30_stock_quote_rows
SELECT
    round(jul30_options_rows / 1e9, 2) AS jul30_options_bn,
    round(jul30_options_rows / jul30_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-30 13:30:00' AND sip_timestamp < '2026-07-30 20:00:00') / 1e6, 0) AS jul30_spy_options_m
Run this yourself

A fita de NBBO de opções registrou 10.32 bilhões de atualizações, 18.4 vezes o volume da fita de cotações de ações. Apenas o root do SPY respondeu por 441 milhões de atualizações no horário regular.

Taxas

QueryRegistros da curva do Tesouro, de 27 a 30 de julho
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-27' AND date <= '2026-07-30'
ORDER BY date
Run this yourself

O arquivo do Treasury fica cerca de um pregão atrás do mercado. Por isso, este painel mostra os negócios executados que ele contém: linhas datadas 4 no período. A mais recente, datada de 2026-07-30, registrou a taxa da Treasury de dois anos em 4.23%, a de dez anos em 4.68% e a de trinta anos em 5.21%, um spread entre dois e dez anos de 45 pontos-base.

O calendário por trás do pregão

QueryEx-dividendos, desdobramentos, listagens, notícias e composição dos filings na SEC de 30 de julho
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-30 04:00:00' AND published_utc < '2026-07-31 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-30'
    ) AS fil
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-30') AS ex_dividend_records,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-30') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-30') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-30') AS listings,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-30 04:00:00' AND published_utc < '2026-07-31 04:00:00') AS news_articles,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-30 04:00:00' AND published_utc < '2026-07-31 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_10q
Run this yourself

200 registros de dividendos ficaram ex-dividend em 30 de julho, 3 desdobramentos reversos e 3 desdobramentos ocorreram, e 3 novas listagens chegaram ao tape. O feed de notícias trouxe 173 artigos de 2 veículos, com NVDA sendo o ticker mais coberto na janela deste feed, com 11 artigos. O índice diário da EDGAR reúne 5544 filings da data, de 2743 declarantes distintos: 745 relatórios de insiders no Formulário 4, 460 relatórios correntes 8-K, 1426 suplementos de preço 424B2 e 252 relatórios trimestrais 10-Q. Esse índice é atualizado segundo seu próprio cronograma, e este painel informa o que estiver disponível no momento da geração.

Na pauta

Nas próximas duas sessões, leia as mesmas tabelas, deliberadamente olhando além do período. Sexta-feira, 31 de julho, é a última data de negociação do mês no calendário.

Query31 de julho e 3 de agosto no calendário: fechamentos, ex-dividendos, desdobramentos, vencimento de sexta-feira e defasagem do short interest
O SQL exato por trás de cada número
SELECT
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-31' AND date <= '2026-08-03' AND status != 'open') AS closures_next_two_sessions,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-31' AND ex_dividend_date <= '2026-08-03') AS exdiv_records_next_two_sessions,
    (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-31' AND ex_dividend_date <= '2026-08-03') AS household_exdivs,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-31' AND execution_date <= '2026-08-03') AS splits_next_two_sessions,
    round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) AS jul31_expiry_pct_of_thu_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-30') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-30 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00'
Run this yourself

A tabela de feriados mostra 0 fechamentos na sexta-feira, 31 de julho, e na segunda-feira, 3 de agosto. Registros de dividendos no valor de 544 ficam ex-dividend nessas duas sessões; 0 deles pertencem às dez empresas conhecidas do setor doméstico analisadas, e 14 desdobramentos estão programados para ocorrer. Do volume de opções de quinta-feira, 26.7% já estava concentrado 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 publicado com atraso suficiente para ter seu próprio explicador.

Sessão verificada

QueryVerificação da sessão: primeiro/último candle do SPY em ET, contagem de candles no horário regular, registros de feriado, próximo fechamento
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-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-30') AS jul30_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-30' 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-30' 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-30 00:00:00' AND window_start < '2026-07-31 00:00:00'
Run this yourself

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 registros de feriado para a data. O próximo fechamento programado é Labor Day, em 2026-09-07.

Perguntas frequentes

Como foi o desempenho do mercado acionário na quinta-feira, 30 de julho de 2026?

O SPY variou 1.68% no fechamento contra fechamento, para US$741.73, enquanto o QQQ ficou em 3.34%, o DIA em 1.19% e o IWM em 1.37%. Entre os ativos líquidos, 3782 subiu e 2122 caiu.

Qual setor liderou o ranking em 30 de julho de 2026?

Technology, em 5.52%, considerando os onze fundos SPDR de setores selecionados. O pior desempenho entre os onze foi de Communications, que registrou -2.69%.

Qual foi o movimento do mercado de opções em 30 de julho de 2026?

Foram negociados 67.06 milhões de contratos, ante 66.84 milhões no pregão anterior. Os contratos com vencimento no mesmo dia representaram 25.3% do volume, e as calls, 54.6%.

Qual ação movimentou mais dólares em 30 de julho de 2026?

MU, com volume financeiro de 43.29 bilhões no horário regular, à frente de MSFT, com 42.56 bilhões.

Notas sobre os dados

A edição diária anterior é 29 de julho de 2026, e o resumo semanal cobre a semana anterior a esta. Os painéis identificados por ticker são ordenados alfabeticamente, para que as referências no texto apontem sempre para as mesmas linhas. Os rankings e painéis de maiores movimentos são ordenados por valor, e toda afirmação posicional que eles contêm é codificada como um limite de verificação. A cesta de mega caps e a cesta setorial de onze fundos são conjuntos definidos e fixos, não classificações de fornecedores. Os painéis de maiores movimentos aplicam um limite de giro 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. Assim, cada destaque sempre recai sobre um nome verificável. Os painéis de cotações contabilizam cotações unilaterais e cruzadas por nome, em vez de descartá-las silenciosamente. O arquivo do Treasury e o índice diário da EDGAR são publicados em cronogramas próprios. Por isso, esses painéis reportam o que têm disponível, sem presumir que os dados já chegaram. Nenhum índice de volatilidade implícita aparece aqui. Essas séries não são licenciadas para este data warehouse. Portanto, a volatilidade é inferida diretamente do tape, por meio das amplitudes, da participação das opções negociadas no mesmo dia e do comportamento das cotações.

Metodologia

  • Fonte dos dados de mercado: fita consolidada. delayed_stocks_minute_aggs para preços e volumes, options_trades para a fita de opções, cache_stocks_quotes e cache_options_quotes para os painéis de NBBO.
  • Fechamento: a barra de um minuto do último minuto do pregão regular, nunca um print presumido às 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 toTimeZone aparece apenas nas listas SELECT para rótulos em ET.
  • Verificação do pregão: feita a partir da tabela de feriados e das barras observadas, nunca presumida com base no calendário.
  • Comparações com o pregão anterior: calculadas na própria query a partir de 29 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 tuplas em toda parte; toda afirmação de ordenação ou sinal no texto é codificada como um limite de validação.
  • Data de referência do data warehouse: 1º de agosto de 2026, dois dias após o pregão, no limite do atraso usual de ingestão de um a dois dias da fita; os recibos delimitados acima mantêm a publicação disponível caso algum conjunto de dados não seja encontrado no momento da geração.

Links relacionados: o resumo diário anterior, o resumo semanal, quando as opções vencem, o que é um spread bid-ask e o spread de dois a dez anos.

Todas as queries acima são executadas sem alterações no terminal Strasmore, caso você queira redirecionar uma janela para outro pregão.