Strasmore Research
Récap des marchés Matt ConnorPar Matt Connor · Mis à jour le 2026-08-02

Bilan des marchés du 30 juillet 2026 en chiffres

Bilan du 30 juillet 2026 : indices, breadth, spread sectoriel, flux d’options, cotations, taux et calendrier, avec chaque chiffre vérifié par requête.

Ce récapitulatif de marché pour la séance du jeudi 30 juillet 2026 repose entièrement sur des requêtes enregistrées : la variation de clôture à clôture de SPY s’est établie à 1.68%, la part des valeurs en hausse sur le tape liquide à 63.5%, et le tape des options a enregistré 67.06 millions de contrats. Chaque fenêtre ci-dessous est délimitée par des dates explicites aux deux extrémités. Toute nouvelle exécution du SQL d’un panneau renverra donc les mêmes chiffres.

Le tableau de bord

Chaque variation compare la dernière barre d'une minute de la séance régulière du 30 juillet à celle du mercredi 29 juillet, sur deux séances consécutives. Les lignes sont classées par ordre alphabétique afin que chaque ETF conserve une position fixe.

RequêteSPY / QQQ / DIA / IWM : 30 juillet vs clôture du 29 juillet, séance régulière
Le SQL exact derrière chaque chiffre
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

DIA a varié de 1.19%, IWM de 1.37%, QQQ de 3.34% et SPY de 1.68%, pour clôturer à $741.73. Chaque ligne décompose la variation en deux phases : SPY a ouvert à 0.9% de la clôture de mercredi, puis a varié de l'ouverture à la clôture de 0.77%. La variation overnight et la variation intraday ne sont pas nécessairement concordantes. Leur répartition constitue la première empreinte de la séance.

La séance était-elle inhabituelle ?

Le chiffre d’une seule séance ne signifie pas grand-chose sans la distribution correspondante. La séance est donc classée au sein de son propre mois glissant, selon la même logique.

RequêteÉvolution journalière du SPY dans son contexte historique (ouverture-clôture, du 30 juin au 30 juillet)
Le SQL exact derrière chaque chiffre
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

La variation de SPY entre l’ouverture et la clôture, de 0.77%, se classait au 3e rang sur 22 séances glissantes, selon l’amplitude absolue, dans une fenêtre remontant jusqu’à 2026-06-30. Le rang correspond au nombre de séances de la fenêtre ayant enregistré une variation plus importante, plus un. La première place correspond donc à la plus forte variation du mois glissant.

Participation

Le niveau d’un indice se résume à un chiffre. La participation mesure le nombre d’actions qui ont évolué dans le même sens que lui.

RequêteBreadth du marché liquide : clôture du 30 juillet vs clôture du 29 juillet, filtre de 1 M$ échangé
Le SQL exact derrière chaque chiffre
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

Parmi 5960 valeurs franchissant un seuil de volume échangé d’un million de dollars sur les heures régulières, 3782 ont clôturé au-dessus du cours de clôture de mercredi et 2122 en dessous, soit une proportion de valeurs en hausse de 63.5%. Le filtre a mis de côté 5492 valeurs moins liquides, comptabilisées ici plutôt que simplement écartées.

Le compartiment des méga-capitalisations

Les mêmes huit méga-capitalisations apparaissent à chaque séance, par ordre alphabétique afin que chacune conserve sa ligne. L’objectif est de disposer d’un panier fixe : le lecteur retrouve les lignes et aucune sélection éditoriale ne désigne après coup les gagnants.

RequêteHuit méga-capitalisations : variation vs 29 juillet et montants échangés en séance régulière, 30 juillet
Le SQL exact derrière chaque chiffre
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 a évolué de -1.24%, META de -8.17%, MSFT de 15.06% et NVDA de 2.67%, pour un volume de transactions de 19.63 milliards de dollars pendant les heures normales de marché. TSLA s’établit à 3.53%. La colonne en dollars indique le poids que ces huit valeurs représentent à elles seules dans les échanges. Le panneau de breadth ci-dessus permet de vérifier dans quelle mesure le reste du marché les a accompagnées.

Les valeurs les plus mobiles de la séance

Les deux tableaux exigent cinq millions de dollars de turnover pendant les heures normales de cotation. Ils excluent toute valeur dont le split a été exécuté entre les deux clôtures mesurées. Ils excluent également un symbole réutilisé en vertu du filtre anti-ambiguïté interne décrit dans les notes.

RequêtePlus fortes hausses et baisses : clôture du 30 juillet vs 29 juillet, 5 M$+ échangés, hors splits
Le SQL exact derrière chaque chiffre
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

La plus forte hausse du tableau, CYCU, a progressé de 489.5%, avec 474.4 millions de dollars échangés. La plus forte baisse, IREZ, a reculé de -61.2%, avec 90.8 millions de dollars échangés. Cette page indique les variations et les montants exécutés. Elle ne leur attribue aucune explication.

Dispersion sectorielle

Les onze fonds SPDR Select Sector, classés du meilleur au moins bon selon leur clôture du 30 juillet par rapport à celle du 29 juillet. La composition du panier est définie et fixe, et ne repose pas sur une classification de fournisseur.

RequêteETF sectoriels, clôture du 30 juillet vs clôture du 29 juillet, classés
Le SQL exact derrière chaque chiffre
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 arrive en tête à 5.52%, tandis que Communications ferme la marche à -2.69%, soit 8.21 points de pourcentage de moins. Cet écart correspond à la dispersion sectorielle du jour : un marché où les onze secteurs évoluent dans une fourchette d’un point ne présente pas le même profil qu’un marché où les écarts s’étendent sur plusieurs points.

Où se sont échangés les dollars

RequêteTop 6 par montants échangés, top 4 par titres échangés : séance régulière du 30 juillet
Le SQL exact derrière chaque chiffre
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 a dominé le classement en dollars avec 43.29 milliards de dollars de turnover pendant les heures de cotation habituelles, suivi de MSFT avec 42.56 milliards. Le classement en nombre d’actions répond à une autre question : CYCU arrive en tête avec 544 millions d’actions, pour un cours moyen implicite de 0.86 $. Le volume en dollars indique où se porte l’attention du marché, tandis que le volume en actions mesure la rotation. Pour une valeur donnée, cette mesure s’appelle le volume relatif.

Le carnet d’ordres des options

RequêteFlux options : contrats, part des calls, part de la séance vs mercredi, contrat SPY le plus actif
Le SQL exact derrière chaque chiffre
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

Le carnet d’ordres des options a enregistré 10.93 millions de transactions, pour 67.06 millions de contrats, contre 66.84 millions mercredi. Les calls ont représenté 54.6% du volume des contrats. Les contrats arrivant à échéance le jour même, la catégorie des options à échéance le jour même, ont atteint 25.3%, contre 33.1% mercredi. Ce rythme est déterminé par le calendrier des échéances. Le contrat SPY le plus actif était le 740 C, avec 0.56 millions de contrats. Son strike se situait à -1.73 dollars de la clôture régulière de SPY à $741.73, écart mesuré entre le strike et la clôture.

Le flux des cotations

Les données de cotation constituent le jeu de données le plus rare de cette équipe, et elles sont mesurées à chaque séance. Les journées ordinaires sont également enregistrées.

RequêteNombre de mises à jour NBBO des actions : 30 juillet vs 29 juillet, avec mises à jour des tickers nommés (millions)
Le SQL exact derrière chaque chiffre
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

Le flux des cotations actions a comptabilisé 560.75 millions de mises à jour du NBBO, contre 722.65 millions mercredi, soit une variation d’un jour sur l’autre de -22.4%. SPY a enregistré 5.55 millions de mises à jour, QQQ 6.75 millions et NVDA 2.39 millions.

RequêteSept valeurs : spread coté médian en séance régulière, en points de base, avec volumes de cotations, 30 juillet
Le SQL exact derrière chaque chiffre
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

Pendant les heures normales de marché, le spread médian coté de SPY représentait 0.27 points de base du mid, contre 0.59 pour QQQ et 1.03 pour NVDA. Les deux dernières colonnes correspondent aux données de transparence : les cotations à un seul côté et les cotations croisées sont comptabilisées pour chaque valeur et exclues du calcul de la médiane, plutôt que supprimées discrètement. Une cotation croisée, avec un bid supérieur à l’ask, est un artefact courant d’un flux consolidé assemblé à partir de nombreuses plateformes à une résolution de l’ordre de la nanoseconde.

RequêteSpread médian du SPY classé par rapport à toutes les séances de juillet, du plus serré au plus large
Le SQL exact derrière chaque chiffre
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

Comparé à toutes les séances de juillet selon la même méthode, le spread médian de SPY, de 0.27 points de base, s’est classé 19 sur 21, en partant du plus faible, dans une fenêtre débutant en 2026-07-01. Sur un flux calme, cette phrase constitue le principal enseignement du panneau : une journée ordinaire pour la liquidité est un constat publié et délimité.

RequêteNBBO des options : mises à jour totales vs tape actions, plus segment sur la racine SPY, 30 juillet
Le SQL exact derrière chaque chiffre
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

Le flux NBBO des options a comptabilisé 10.32 milliards de mises à jour, soit 18.4 fois le volume du flux de cotations actions, la seule racine SPY représentant 441 millions de mises à jour pendant les heures normales de marché.

Taux

RequêteCotation de la courbe des Treasuries enregistrées, du 27 au 30 juillet
Le SQL exact derrière chaque chiffre
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

Les données du Trésor ont environ une séance de retard sur le marché. Ce panneau présente donc les transactions exécutées disponibles : 4 lignes datées sur la période. La plus récente, datée du 2026-07-30, indique un taux à deux ans de 4.23%, un taux à dix ans de 4.68% et un taux à trente ans de 5.21%, soit un spread entre les taux à deux et dix ans de 45 points de base.

Le calendrier derrière la séance

RequêteDétachements de dividendes, splits, cotations, actualités et répartition des filings SEC du 30 juillet
Le SQL exact derrière chaque chiffre
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 dividendes sont devenus ex-dividende le 30 juillet, 3 splits à l’envers et 3 splits à l’endroit ont été exécutés, et 3 nouvelles cotations ont fait leur apparition sur le tape. Le flux d’actualités comprenait 173 articles provenant de 2 éditeurs, dont NVDA était le ticker le plus couvert dans la fenêtre de ce flux, avec 11 articles. L’index quotidien EDGAR recense 5544 dépôts pour cette date, provenant de 2743 déposants distincts : 745 rapports d’initiés Formulaire 4, 460 rapports courants 8-K, 1426 suppléments de tarification 424B2 et 252 rapports trimestriels 10-Q. Cet index est publié selon son propre calendrier, et ce panneau présente les données qu’il contient au moment de la génération.

À l’ordre du jour

Les deux prochaines séances sont à lire dans les mêmes tableaux, en regardant délibérément au-delà de la période. Le vendredi 31 juillet est la dernière date de cotation du mois au calendrier.

Requête31 juillet et 3 août au calendrier : fermetures, détachements de dividendes, splits, échéance du vendredi et décalage de l’intérêt short
Le SQL exact derrière chaque chiffre
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

Le tableau des jours fériés fait apparaître 0 fermetures les vendredi 31 juillet et lundi 3 août. Les dividendes de 544 valeurs passent ex-dividende au cours de ces deux séances, dont 0 parmi dix grandes valeurs suivies, et 14 splits sont programmés. Jeudi, 26.7% du volume d’options portait déjà sur des contrats arrivant à échéance le vendredi 31 juillet. Le dernier fichier de règlement des positions vendeuses à découvert disponible est daté de 2026-07-15, avec un délai de publication suffisamment long pour justifier sa propre explication.

La séance, vérifiée

RequêteVérification de la séance : première/dernière barre SPY en heure de l’Est, nombre de barres régulières, données des jours fériés, prochaine fermeture
Le SQL exact derrière chaque chiffre
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

Une séance régulière complète : première bougie SPY à 04:00 ET, dernière à 19:59 ET, 390 bougies pendant les heures régulières, 1 séance dans la fenêtre et 0 ligne de jour férié pour la date. La prochaine fermeture prévue est Labor Day le 2026-09-07.

FAQ

Comment le marché actions s’est-il comporté le jeudi 30 juillet 2026 ?

Le SPY a évolué de 1.68% entre les clôtures, à $741.73, tandis que le QQQ s’établissait à 3.34%, le DIA à 1.19% et l’IWM à 1.37%. Parmi les valeurs liquides, 3782 a progressé et 2122 a reculé.

Quel secteur a terminé en tête le 30 juillet 2026 ?

Technology, à 5.52%, selon la performance des onze ETF sectoriels sélectifs SPDR. Le moins performant des onze, Communications, a affiché -2.69%.

Quelle a été l’activité sur le marché des options le 30 juillet 2026 ?

67.06 millions de contrats ont été négociés, contre 66.84 millions lors de la séance précédente. Les contrats à échéance le jour même ont représenté 25.3% du volume et les calls 54.6%.

Quelle action a concentré le plus grand volume en dollars le 30 juillet 2026 ?

MU, avec 43.29 milliards de dollars de volume pendant les heures normales de cotation, devant MSFT à 42.56 milliards.

Notes sur les données

La précédente édition quotidienne est 29 juillet 2026, et le récapitulatif hebdomadaire couvre la semaine précédente. Les tableaux nominatifs par ticker sont classés par ordre alphabétique afin que les références dans le texte renvoient toujours aux mêmes lignes. Les classements et les tableaux des plus fortes variations sont classés par valeur, et chaque affirmation de position qu’ils contiennent est encodée sous forme de borne de contrôle. Le panier de méga-capitalisations et le panier sectoriel de onze fonds sont des ensembles définis et fixes, et non des classifications de fournisseurs. Les tableaux des plus fortes variations appliquent un seuil de volume d’échanges de cinq millions de dollars sur les heures régulières. Ils excluent tout titre dont le split a été exécuté entre les deux clôtures mesurées, ainsi qu’un symbole réutilisé en vertu du contrôle interne visant les ambiguïtés. Ainsi, chaque mention renvoie toujours à un titre vérifiable. Les tableaux de cotations comptabilisent, pour chaque titre, les cotations à sens unique et les cotations croisées au lieu de les supprimer silencieusement. Le fichier du Trésor et l’index quotidien d’EDGAR sont publiés selon leurs propres calendriers. Ces tableaux indiquent donc les données disponibles, sans supposer qu’elles ont été reçues. Aucun indice de volatilité implicite n’apparaît ici. Ces séries ne sont pas sous licence dans cet entrepôt. La volatilité est donc évaluée à partir du tape, au moyen des fourchettes, de la part des options traitées le jour même et du comportement des cotations.

Méthodologie

  • Source des données de marché : consolidated tape. delayed_stocks_minute_aggs pour les prix et les volumes, options_trades pour le flux des options, cache_stocks_quotes et cache_options_quotes pour les panneaux NBBO.
  • Clôture : la dernière barre minute de la séance ordinaire, jamais un print supposé à 16 h et jamais un print des horaires étendus.
  • Gestion du fuseau horaire : tous les horodatages stockés sont en UTC ; les clauses WHERE utilisent des littéraux UTC bruts, et toTimeZone apparaît uniquement dans les listes SELECT pour les libellés ET.
  • Vérification de la séance : effectuée à partir de la table des jours fériés et des barres observées, jamais déduite du calendrier.
  • Comparaisons avec la séance précédente : calculées dans la requête à partir du 29 juillet, jamais reprises d’un article précédent.
  • Décimales : les colonnes de prix, de taille et de volume sont converties en Float64 avant toute division ou tout produit.
  • Agrégats déterministes : quantiles exacts et départages fondés sur des clés de tuple partout ; chaque affirmation de classement ou de signe dans le texte est encodée sous la forme d’une borne de contrôle.
  • Date as-of de l’entrepôt : le 1er août 2026, soit deux jours après la séance, à la limite du délai d’ingestion habituel de un à deux jours du flux ; les reçus bornés ci-dessus maintiennent l’article si un jeu de données est introuvable lors de la génération.

Liens internes : le récapitulatif quotidien précédent, le récapitulatif hebdomadaire, la date d’expiration des options, ce qu’est un bid-ask spread, et le spread deux à dix ans.

Chaque requête ci-dessus s’exécute sans modification sur le terminal Strasmore si vous souhaitez repositionner une fenêtre sur une autre séance.