Strasmore Research
Recap di mercato Matt ConnorDi Matt Connor · Aggiornato 2026-08-02

Riepilogo mercati 29 luglio 2026: numeri del giorno

La sessione del 29 luglio 2026 nei dati: indici, breadth, spread settoriale, flussi options, quotazioni, tassi e calendario, con ogni cifra verificabile.

Questa analisi di mercato di mercoledì 29 luglio 2026 ricostruisce l’intera sessione utilizzando query archiviate: la variazione close-over-close di SPY è stata pari a -1.52%, la quota dei titoli in rialzo sul mercato liquido a 27.2% e il mercato delle opzioni ha registrato 66.84 milioni di contratti. Ogni intervallo riportato di seguito è ancorato a date esplicite su entrambe le estremità, quindi rieseguendo l’SQL di qualsiasi pannello si ottengono gli stessi dati.

Il tabellone

Ogni variazione confronta l’ultima barra a un minuto della sessione regolare del 29 luglio con quella di martedì 28 luglio, in due sessioni di trading consecutive. Le righe sono in ordine alfabetico, quindi ogni ETF mantiene una posizione fissa.

QuerySPY / QQQ / DIA / IWM: 29 luglio rispetto alla chiusura del 28 luglio, orario regolare
L'esatto SQL dietro ogni numero
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-28 13:30:00' AND window_start < '2026-07-28 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-29 13:30:00' AND window_start < '2026-07-29 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

DIA si è mosso di -2.19%, IWM di -1.63%, QQQ di -2.07% e SPY di -1.52%, chiudendo a $729.51. Ogni riga suddivide la variazione nelle sue due componenti: SPY ha aperto a -0.11% rispetto alla chiusura di martedì e ha registrato una variazione di -1.41% dall’apertura alla chiusura. La componente overnight e quella intraday non devono necessariamente coincidere; la loro ripartizione è la prima impronta della sessione.

La giornata è stata insolita?

Il dato di una sola sessione dice poco senza la distribuzione di riferimento. Per questo la giornata viene classificata all’interno del mese precedente usando la stessa logica.

QueryMovimento giornaliero di SPY nel contesto storico recente (apertura-chiusura, dal 29 giugno al 29 luglio)
L'esatto SQL dietro ogni numero
SELECT
    round(anyIf(oc_pct, d = toDate('2026-07-29')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-29'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-29'))) + 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-30 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY d
)
Run this yourself

Il movimento di SPY dall’apertura alla chiusura, pari a -1.41%, si è classificato 1 su 22 sessioni precedenti per ampiezza assoluta, in una finestra che risale a 2026-06-29. La posizione indica quante altre sessioni nella finestra hanno registrato un movimento maggiore, più una. Il primo posto corrisponderebbe quindi al movimento più ampio del mese precedente.

Ampiezza di mercato

Il livello di un indice è un solo numero. L’ampiezza di mercato misura quanti titoli si sono mossi nella stessa direzione.

QueryAmpiezza del mercato sui titoli liquidi: chiusura del 29 luglio rispetto al 28 luglio, filtro $1M di controvalore
L'esatto SQL dietro ogni numero
SELECT
    countIf(c29 > c28 AND liquid) AS advancers,
    countIf(c29 < c28 AND liquid) AS decliners,
    countIf(c29 = c28 AND liquid) AS unchanged,
    countIf(liquid) AS liquid_tickers,
    countIf(NOT liquid) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(c29 > c28 AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
    SELECT ticker, c28, c29, dv29 >= 1000000 AS liquid
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 13:30:00') AS dv29
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0
    )
)
Run this yourself

Tra i 6066 titoli che hanno superato la soglia di un milione di dollari di controvalore nelle ore regolari, 1652 hanno chiuso sopra la chiusura di martedì e 4342 sotto, pari a una quota di titoli in rialzo del 27.2%. Il filtro ha escluso 5363 titoli meno scambiati, conteggiati qui invece di essere semplicemente ignorati.

Il paniere delle mega-cap

Gli stessi otto titoli mega-cap compaiono qui in ogni sessione, in ordine alfabetico, così ciascuno mantiene la propria riga. Il punto è avere un paniere fisso: il lettore impara a riconoscere le righe e nessuna scelta editoriale individua a posteriori i vincitori.

QueryOtto mega-cap: variazione rispetto al 28 luglio e controvalore in orario regolare, 29 luglio
L'esatto SQL dietro ogni numero
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-29 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-29 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00')
        OR (window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 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 si è mosso di -0.63%, META di -1.12%, MSFT di -0.27% e NVDA di -3.51%, su un controvalore degli scambi nelle ore regolari pari a 22.26 miliardi di dollari; TSLA si è attestata a -2.97%. La colonna in dollari mostra quale quota del flusso degli scambi questi otto titoli rappresentano da soli; il pannello sulla breadth qui sopra verifica fino a che punto il resto del mercato si sia mosso nella stessa direzione.

I titoli più movimentati della giornata

Entrambe le liste richiedono un controvalore di cinque milioni di dollari nelle ore regolari di contrattazione, escludono qualsiasi titolo il cui split sia stato eseguito tra le due chiusure messe a confronto ed escludono un simbolo riutilizzato in base al controllo contro le ambiguità descritto nelle note.

QueryMaggiori rialzi e ribassi: chiusura del 29 luglio rispetto al 28 luglio, controvalore di almeno $5M, esclusi gli split
L'esatto SQL dietro ogni numero
SELECT ticker, board, day_pct, day_dollar_m
FROM (
    SELECT 'gainers' AS board, ticker, round((c29 / c28 - 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 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-28' AND execution_date <= '2026-07-29')
          AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct DESC
    LIMIT 8
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((c29 / c28 - 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 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-28' AND execution_date <= '2026-07-29')
          AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct ASC
    LIMIT 8
)
ORDER BY board DESC, abs(day_pct) DESC
Run this yourself

Il maggior rialzo della lista, DFNS, ha guadagnato 119.8% su scambi per 544.9 milioni di dollari. Il calo più marcato, YYAI, ha registrato -68.1% su 8.5 milioni. Questa pagina riporta le variazioni e le relative evidenze, senza attribuire loro alcuna spiegazione.

Dispersione tra settori

Gli undici fondi SPDR dei settori selezionati, la chiusura del 29 luglio rispetto a quella del 28 luglio, classificati dal migliore al peggiore. Il paniere è definito e fisso, non si basa sulla classificazione di un vendor.

QueryETF settoriali, chiusura del 29 luglio rispetto al 28 luglio, ordinati
L'esatto SQL dietro ogni numero
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((c29 / c28 - 1) * 100, 2) AS day_pct
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-29 00:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 00:00:00') AS c29
        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-28 13:30:00' AND window_start < '2026-07-28 20:00:00')
            OR (window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00'))
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0
    )
)
ORDER BY day_pct DESC
Run this yourself

Energy ha chiuso in testa a 1.89%, mentre Industrials è rimasto in fondo a -3.21%, con un ritardo di 5.1 punti percentuali. Questo spread rappresenta la dispersione settoriale della giornata: un mercato in cui tutti gli undici settori si muovono entro un punto percentuale è molto diverso da uno in cui la performance si distribuisce su diversi punti.

Dove sono stati scambiati i dollari

QueryPrimi 6 per controvalore e primi 4 per numero di azioni scambiate: orario regolare del 29 luglio
L'esatto SQL dietro ogni numero
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-29 13:30:00' AND window_start < '2026-07-29 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-29 13:30:00' AND window_start < '2026-07-29 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 ha guidato la classifica per controvalore in dollari, con 44.99 miliardi di scambi nell’orario regolare, seguito da SPY con 42.29 miliardi. La classifica per numero di azioni risponde a una domanda diversa: SNXX è stato in testa con 173.4 milioni di azioni e un prezzo medio implicito di $7.32. Il volume in dollari misura l’attenzione del mercato, mentre il volume di azioni misura il turnover; a livello di singolo titolo, questa metrica è il volume relativo.

Il flusso degli scambi di opzioni

QueryFlussi sul mercato delle opzioni: contratti, quota call, quota same-day rispetto a martedì, contratto SPY più attivo
L'esatto SQL dietro ogni numero
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) = '260729', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00'
    ) AS spy_regular_close,
    (
        SELECT round(toFloat64(sum(size)) / 1e6, 2)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
    ) AS jul28_contracts_m,
    (
        SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260728') / sum(size), 1)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
    ) AS jul28_pct_0dte
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    jul28_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) = '260729') / sum(size), 1) AS pct_0dte,
    jul28_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-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

Il flusso degli scambi di opzioni ha registrato 11.03 milioni di operazioni per 66.84 milioni di contratti, rispetto ai 59.28 milioni di martedì. Le call hanno rappresentato 53.6% del volume dei contratti. I contratti in scadenza nella stessa sessione, il segmento a scadenza zero giorni, hanno rappresentato 33.1%, contro 29% di martedì, secondo un ritmo determinato dalla tempistica delle scadenze. Il contratto SPY più scambiato era il 735 P, con 0.36 milioni di contratti; lo strike era distante 5.49 dollari dalla chiusura regolare di SPY a $729.51, calcolato come strike meno chiusura.

Il flusso delle quotazioni

I dati sulle quotazioni sono il dataset più scarso di questo desk e vengono misurati a ogni sessione. Anche le giornate ordinarie entrano nel registro.

QueryNumero di aggiornamenti NBBO azionari: 29 luglio rispetto al 28 luglio, con aggiornamenti dei ticker indicati (milioni)
L'esatto SQL dietro ogni numero
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29')) / 1e6, 2) AS jul29_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-28')) / 1e6, 2) AS jul28_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-29')) / countIf(toDate(sip_timestamp) = toDate('2026-07-28')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'SPY') / 1e6, 2) AS jul29_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'QQQ') / 1e6, 2) AS jul29_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'NVDA') / 1e6, 2) AS jul29_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

Il flusso delle quotazioni azionarie ha registrato 722.65 milioni di aggiornamenti NBBO, contro 536.07 milioni di martedì, con una variazione giornaliera di 34.8%. SPY ha registrato 7.32 milioni di aggiornamenti, QQQ 8.72 milioni e NVDA 4.41 milioni.

QuerySette titoli: spread mediano quotato RTH in punti base, con conteggi sulla qualità delle quotazioni, 29 luglio
L'esatto SQL dietro ogni numero
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-29 13:30:00' AND sip_timestamp < '2026-07-29 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

Durante l’orario regolare, lo spread mediano quotato di SPY era pari a 0.27 punti base del mid, quello di QQQ a 0.75 e quello di NVDA a 1.55. Le ultime due colonne mostrano l’informazione divulgativa: le quotazioni unilaterali e crossed vengono conteggiate per ciascun nome e tenute separate dalla mediana, anziché essere eliminate senza indicazione. Una quotazione crossed, con il bid superiore all’ask, è un normale artefatto di un feed consolidato assemblato da molteplici venue con risoluzione al nanosecondo.

QuerySpread mediano di SPY a confronto con ogni sessione di luglio, dal più stretto
L'esatto SQL dietro ogni numero
SELECT round(anyIf(spread_bps, d = toDate('2026-07-29')), 2) AS jul29_median_spread_bps,
       arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-29')), groupArrayIf(spread_bps, d != toDate('2026-07-29'))) + 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-29 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

Confrontato con ogni sessione di luglio applicando la stessa logica, lo spread mediano di SPY della giornata, pari a 0.27 punti base, si è collocato al 20 posto su 20, contando dal più stretto, in una finestra iniziata 2026-07-01. Su un tape tranquillo, il punto del pannello è proprio questo: una giornata ordinaria per la liquidità è un dato rilevato, pubblicato e delimitato.

QueryNBBO delle opzioni: aggiornamenti totali rispetto al mercato azionario, più il sottoinsieme del root SPY, 29 luglio
L'esatto SQL dietro ogni numero
WITH
    (SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00') AS jul29_options_rows,
    (SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00') AS jul29_stock_quote_rows
SELECT
    round(jul29_options_rows / 1e9, 2) AS jul29_options_bn,
    round(jul29_options_rows / jul29_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-29 13:30:00' AND sip_timestamp < '2026-07-29 20:00:00') / 1e6, 0) AS jul29_spy_options_m
Run this yourself

Il flusso NBBO delle opzioni ha registrato 13.55 miliardi di aggiornamenti, 18.8 volte quelli del flusso delle quotazioni azionarie, con la sola root SPY a 600 milioni di aggiornamenti durante l’orario regolare.

Tassi

QueryRilevazioni della curva Treasury disponibili, dal 24 al 29 luglio
L'esatto SQL dietro ogni numero
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-24' AND date <= '2026-07-29'
ORDER BY date
Run this yourself

Il file del Treasury è in ritardo di circa una sessione rispetto al mercato. Questo pannello riporta le operazioni eseguite che contiene: 4 righe datate nella finestra. L'ultima, datata 2026-07-29, indica il rendimento del biennale a 4.22%, quello del decennale a 4.67% e quello del trentennale a 5.2%, con uno spread tra biennale e decennale di 45 punti base.

Il calendario alla base della giornata

QueryEx-dividendi, split, quotazioni, notizie e composizione dei filing SEC del 29 luglio
L'esatto SQL dietro ogni numero
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-29 04:00:00' AND published_utc < '2026-07-30 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-29'
    ) AS fil
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-29') AS ex_dividend_records,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-29') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-29') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-29') AS listings,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-29 04:00:00' AND published_utc < '2026-07-30 04:00:00') AS news_articles,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-29 04:00:00' AND published_utc < '2026-07-30 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

85 record sui dividendi sono andati ex-dividend il 29 luglio; sono stati eseguiti 2 split inversi e 1 split ordinari, mentre 1 nuove quotazioni sono arrivate sul tape. Il news feed comprendeva 190 articoli pubblicati da 2 editori; NVDA, il ticker più seguito nella finestra di questo feed, compariva in 13 articoli. L’indice giornaliero EDGAR contiene 5742 filing relativi alla data, presentati da 3064 filer distinti: 712 report degli insider Form 4, 440 current report 8-K, 884 supplementi di prezzo 424B2 e 174 report trimestrali 10-Q. L’indice viene aggiornato secondo un calendario autonomo e questo pannello riporta i dati disponibili al momento della generazione.

In calendario

Per il resto della settimana, la lettura delle stesse tabelle guarda deliberatamente oltre il periodo.

Query30 e 31 luglio in calendario: chiusure, ex-dividendi, split, scadenza di venerdì e ritardo nei dati sullo short interest
L'esatto SQL dietro ogni numero
SELECT
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-30' 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-30' 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-30' AND ex_dividend_date <= '2026-07-31') AS household_exdivs,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-30' 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_wed_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-29') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

La tabella delle festività mostra 0 chiusure tra giovedì 30 luglio e venerdì 31 luglio. 611 record sui dividendi diventano ex-dividend nelle due sessioni, 0 dei quali riguardano dieci nomi domestici verificati, e sono programmate 12 operazioni di split. Del volume di opzioni di mercoledì, 19.7% era già costituito da contratti con scadenza venerdì 31 luglio. Il più recente regolamento dello short interest disponibile agli atti è 2026-07-15, un file pubblicato con un ritardo sufficiente a meritare una spiegazione dedicata.

La sessione, verificata

QueryVerifica della sessione: prima/ultima barra SPY ET, numero di barre regolari, ricevute dei festivi, prossima chiusura
L'esatto SQL dietro ogni numero
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-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-29') AS jul29_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-29' 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-29' 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-29 00:00:00' AND window_start < '2026-07-30 00:00:00'
Run this yourself

Una sessione regolare completa: prima barra di SPY alle 04:00 ET, ultima alle 19:59 ET, 390 barre nell’orario regolare, 1 sessione nella finestra e 0 righe relative alle festività per la data. La prossima chiusura programmata è Labor Day il 2026-09-07.

FAQ

Come si è mosso il mercato azionario mercoledì 29 luglio 2026?

SPY ha registrato una variazione -1.52% tra le chiusure, a $729.51, mentre QQQ si è attestato a -2.07%, DIA a -2.19% e IWM a -1.63%. Tra i titoli più liquidi, 1652 è salito e 4342 è sceso.

Quale settore ha guidato la classifica il 29 luglio 2026?

Energy, a 1.89%, considerando gli undici fondi SPDR dei singoli settori. Il più debole degli undici, Industrials, ha registrato -3.21%.

Quanto è stato intenso il mercato delle opzioni il 29 luglio 2026?

Sono stati scambiati 66.84 milioni di contratti, rispetto ai 59.28 milioni della seduta precedente. I contratti con scadenza in giornata hanno rappresentato 33.1% del volume e le call 53.6%.

Quale titolo ha registrato il maggior controvalore scambiato il 29 luglio 2026?

MU, con 44.99 miliardi di controvalore scambiato nelle ore regolari, davanti a SPY, con 42.29 miliardi.

Note sui dati

Questa edizione riprende la serie giornaliera; l’edizione giornaliera precedente è 10 luglio 2026, mentre il riepilogo settimanale comprende la settimana precedente a questa. I pannelli nominativi per ticker sono ordinati alfabeticamente, così i riferimenti nel testo rimandano a righe fisse; le classifiche e le tabelle dei titoli con i maggiori movimenti sono ordinate per valore, e ogni indicazione di posizione che contengono è codificata come limite di controllo. Il paniere mega-cap e il paniere settoriale di undici fondi sono insiemi fissi e definiti, non classificazioni del vendor. Le tabelle dei maggiori movimenti applicano una soglia di turnover di cinque milioni di dollari nelle ore regolari, escludono ogni titolo il cui split sia stato eseguito tra le due chiusure considerate ed escludono un simbolo riutilizzato secondo il controllo interno sulle ambiguità; in questo modo ogni richiamo rimanda sempre a un nome verificabile. I pannelli delle quotazioni conteggiano per ogni nome le quote su un solo lato e le quote crossed, invece di eliminarle senza indicarlo. Il file del Treasury e l’indice giornaliero EDGAR vengono pubblicati secondo calendari propri; pertanto questi pannelli riportano i dati effettivamente disponibili, senza presumere che siano già arrivati. Qui non compare alcun indice di volatilità implicita: queste serie non sono concesse in licenza a questo warehouse, quindi la volatilità viene ricavata dal tape attraverso i range, la quota delle opzioni nella seduta e il comportamento delle quotazioni.

Metodologia

  • Fonte dei dati di mercato: consolidated tape. delayed_stocks_minute_aggs per prezzi e volumi, options_trades per l’options tape, cache_stocks_quotes e cache_options_quotes per i pannelli NBBO.
  • Chiusura: l’ultima barra a un minuto della sessione regolare, mai un print delle 16:00 dato per scontato e mai un print dell’extended hours.
  • Gestione del fuso orario: tutti i timestamp archiviati sono in UTC; le clausole WHERE usano literal UTC grezzi e toTimeZone compare solo nelle liste SELECT per le etichette ET.
  • Verifica della sessione: effettuata tramite la tabella delle festività e le barre osservate, mai dedotta dal calendario.
  • Confronti con la sessione precedente: calcolati nella query a partire dal 28 luglio, mai ripresi da un post precedente.
  • Decimali: le colonne di prezzo, size e volume vengono convertite in Float64 prima di qualsiasi divisione o prodotto.
  • Aggregazioni deterministiche: quantili esatti e criteri di spareggio basati su chiavi-tuple in tutto il processo; ogni affermazione sull’ordine o sul segno nel testo è codificata come controllo di coerenza.
  • Data as-of del warehouse: 1° agosto 2026, tre giorni dopo la sessione e oltre il consueto ritardo di ingestione di uno-due giorni del tape; le ricevute vincolate riportate sopra mantengono pubblicato il post nel caso in cui un dataset risulti mancante al momento della generazione.

Collegamenti: il precedente recap giornaliero, il recap settimanale, quando scadono le opzioni, che cos’è uno spread denaro-lettera e lo spread two-to-ten-year.

Ogni query riportata sopra viene eseguita senza modifiche sul terminale Strasmore, se si vuole reimpostare la finestra su una sessione diversa.