Bilan de marché du 29 juillet 2026 en chiffres
Bilan de la séance du 29 juillet 2026 : indices, breadth, spread sectoriel, flux options, cotations, taux et calendrier, avec des chiffres issus des requêtes.
Cette synthèse de marché du mercredi 29 juillet 2026 couvre toute la séance à partir de requêtes enregistrées : la variation de clôture à clôture de SPY s’est établie à -1.52%, la part des valeurs en hausse sur le marché liquide à 27.2%, et le marché des options a enregistré 66.84 millions de contrats. Chaque fenêtre ci-dessous est définie par des dates de début et de fin explicites. Toute réexécution du SQL d’un panneau renvoie donc les mêmes chiffres.
Le tableau de bord
Chaque variation compare la dernière barre minute de la séance régulière du 29 juillet avec celle du mardi 28 juillet, sur deux séances consécutives. Les lignes sont classées par ordre alphabétique, afin que chaque ETF conserve une position fixe.
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-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 tickerDIA a évolué de -2.19%, IWM de -1.63%, QQQ de -2.07% et SPY de -1.52%, pour clôturer à $729.51. Chaque ligne décompose la variation en deux composantes : SPY a ouvert -0.11% par rapport à la clôture de mardi, puis a évolué de -1.41% entre l'ouverture et la clôture. La variation overnight et la variation intraday ne vont pas nécessairement dans le même sens. 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 connaître sa distribution. La séance est donc classée dans son propre mois glissant selon la même logique.
Le SQL exact derrière chaque chiffre
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
)Le mouvement de SPY entre l’ouverture et la clôture, de -1.41%, se classe 1 sur 22 séances glissantes selon son amplitude absolue, dans une fenêtre remontant jusqu’au 2026-06-29. Le classement compte le nombre d’autres séances de la fenêtre dont le mouvement a été plus important, puis ajoute un. La première place correspondrait donc au plus grand mouvement 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.
Le SQL exact derrière chaque chiffre
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
)
)Parmi les 6066 valeurs dépassant un seuil de chiffre d’affaires de un million de dollars sur les heures normales de cotation, 1652 ont clôturé au-dessus du cours de clôture de mardi et 4342 en dessous, soit une proportion de valeurs en hausse de 27.2%. Le filtre a mis de côté 5363 valeurs moins liquides, comptabilisées ici plutôt que supprimées sans indication.
Le panier des méga-capitalisations
Les huit mêmes méga-capitalisations apparaissent à chaque séance, par ordre alphabétique afin que chacune conserve sa ligne. L’objectif est d’utiliser un panier fixe : le lecteur mémorise les lignes, et aucune sélection éditoriale ne désigne après coup les gagnants.
Le SQL exact derrière chaque chiffre
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 tickerAAPL a évolué de -0.63%, META de -1.12%, MSFT de -0.27% et NVDA de -3.51%, pour un volume de transactions de 22.26 milliards de dollars sur les heures normales de marché, tandis que TSLA s’établissait à -2.97%. La colonne en dollars indique quelle part du flux ces huit valeurs représentent à elles seules ; le tableau de breadth ci-dessus permet de vérifier dans quelle mesure le reste du marché les a suivies.
Les valeurs les plus mobiles du jour
Les deux tableaux exigent un volume de transactions de cinq millions de dollars pendant les heures normales de cotation. Ils excluent toute valeur dont le split a été exécuté entre les deux clôtures mesurées, ainsi qu’un symbole réutilisé en application du filtre anti-ambiguïté décrit dans les notes.
Le SQL exact derrière chaque chiffre
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) DESCLa plus forte hausse du tableau, DFNS, a progressé de 119.8%, avec 544.9 millions de dollars échangés. La plus forte baisse, YYAI, a reculé de -68.1%, avec 8.5 millions de dollars échangés. Cette page consigne les variations et les volumes exécutés, sans leur attribuer d’explication.
Dispersion sectorielle
Les onze fonds SPDR Select Sector, classés du meilleur au moins bon selon la clôture du 29 juillet par rapport à celle du 28 juillet. L’univers est défini et fixe ; il ne s’agit pas d’une classification de fournisseur.
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((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 DESCEnergy arrive en tête à 1.89%, tandis que Industrials ferme la marche à -3.21%, soit 5.1 points de pourcentage de moins. Cet écart mesure la dispersion sectorielle du jour : une séance où les onze secteurs évoluent dans une fourchette d’un point n’a pas la même physionomie qu’une séance où l’écart s’étend sur plusieurs points.
Où les dollars se sont échangés
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-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) DESCMU a dominé le classement en dollars avec 44.99 milliards de dollars de volume échangé pendant les heures normales, suivi par SPY avec 42.29 milliards. Le classement en nombre d’actions répond à une autre question : SNXX est arrivé en tête avec 173.4 millions d’actions, à un cours moyen implicite de $7.32. Le volume en dollars mesure l’attention du marché, tandis que le volume en nombre d’actions mesure sa rotation. Pour une valeur donnée, la mesure correspondante est le volume relatif.
Le flux des options
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) = '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'Le flux des options a enregistré 11.03 millions de transactions pour 66.84 millions de contrats, contre 59.28 millions mardi. Les calls ont représenté 53.6% du volume de contrats. Les contrats arrivant à échéance lors de la même séance, segment des options à zéro jour avant échéance, ont représenté 33.1%, contre 29% mardi. Ce rythme dépend du calendrier des échéances. Le contrat SPY le plus actif était le 735 P, avec 0.36 millions de contrats. Son strike se situait à 5.49 dollars du cours de clôture régulier de SPY, à $729.51, selon l’écart 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 séances ordinaires sont également consignées.
Le SQL exact derrière chaque chiffre
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'Le flux de cotations des actions a enregistré 722.65 millions de mises à jour du NBBO, contre 536.07 millions mardi, soit une variation d'un jour sur l'autre de 34.8%. SPY a comptabilisé 7.32 millions de mises à jour, QQQ 8.72 millions et NVDA 4.41 millions.
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-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 tickerPendant les heures normales de marché, le spread médian affiché de SPY représentait 0.27 points de base du mid, contre 0.75 pour QQQ et 1.55 pour NVDA. Les deux dernières colonnes donnent l'information complète : les cotations unilatérales et croisées sont comptées pour chaque valeur et exclues du calcul de la médiane, plutôt que supprimées silencieusement. Une cotation croisée, avec un bid supérieur à l'ask, est un artefact courant d'un flux consolidé assemblé à partir de nombreuses places à une résolution de l'ordre de la nanoseconde.
Le SQL exact derrière chaque chiffre
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
)Comparé à toutes les séances de juillet selon une méthodologie identique, le spread médian de SPY, de 0.27 points de base, se classait 20 sur 20, en partant du plus faible, dans une fenêtre débutant le 2026-07-01. Sur un flux calme, c'est l'objectif du tableau : une séance ordinaire du point de vue de la liquidité constitue un résultat, publié et encadré.
Le SQL exact derrière chaque chiffre
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_mLe flux NBBO des options a enregistré 13.55 milliards de mises à jour, soit 18.8 fois le volume du flux de cotations des actions, dont 600 millions de mises à jour pendant les heures normales de marché pour la seule racine SPY.
Taux
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-24' AND date <= '2026-07-29'
ORDER BY dateLe fichier du Trésor accuse environ une séance de retard sur le marché. Ce panneau présente donc les prints qu’il contient : 4 lignes datées dans la fenêtre. La plus récente, datée du 2026-07-29, indique un taux à deux ans de 4.22%, un taux à dix ans de 4.67% et un taux à trente ans de 5.2%, soit un spread entre deux et dix ans de 45 points de base.
Le calendrier de la séance
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-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_10q85 enregistrements de dividendes sont passés ex-dividend le 29 juillet, 2 reverse splits et 1 forward splits ont été exécutés, et 1 nouvelles introductions ont été enregistrées sur le marché. Le flux d’actualités a publié 190 articles provenant de 2 éditeurs, dont NVDA le ticker le plus couvert dans la fenêtre de ce flux, avec 13 articles. L’index quotidien EDGAR contient 5742 filings pour cette date, provenant de 3064 déclarants distincts : 712 rapports d’initiés Form 4, 440 rapports courants 8-K, 884 suppléments de tarification 424B2 et 174 rapports trimestriels 10-Q. Cet index est publié selon son propre calendrier. Ce panneau présente donc les données disponibles au moment de sa génération.
Au programme
Pour le reste de la semaine, consultez les mêmes tableaux, en regardant délibérément au-delà de la période.
Le SQL exact derrière chaque chiffre
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'Le tableau des jours fériés fait apparaître 0 fermetures le jeudi 30 juillet et le vendredi 31 juillet. 611 enregistrements de dividendes passent ex-dividende au cours de ces deux séances, dont 0 parmi dix grandes valeurs grand public vérifiées, et 12 splits doivent être exécutés. Sur le volume d’options de mercredi, 19.7% concernait déjà des contrats arrivant à expiration le vendredi 31 juillet. Le règlement des positions short le plus récent disponible est 2026-07-15, un fichier publié avec un tel décalage qu’il possède son propre décryptage.
La séance, vérifiée
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-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'Une séance régulière complète : première barre de SPY à 04:00 ET, dernière à 19:59 ET, 390 barres pendant les heures régulières, 1 séance dans la fenêtre et 0 jours fériés pour la date. La prochaine fermeture programmée est Labor Day le 2026-09-07.
FAQ
Comment la Bourse s’est-elle comportée le mercredi 29 juillet 2026 ?
SPY a évolué de -1.52% entre les clôtures, à $729.51, tandis que QQQ s’établissait à -2.07%, DIA à -2.19% et IWM à -1.63%. Parmi les valeurs liquides, 1652 a progressé et 4342 a reculé.
Quel secteur a dominé le classement le 29 juillet 2026 ?
Energy, à 1.89%, selon la performance des onze ETF SPDR de sélection sectorielle. Le moins performant des onze, Industrials, a affiché -3.21%.
Quelle a été l’activité du marché des options le 29 juillet 2026 ?
66.84 millions de contrats ont été négociés, contre 59.28 millions lors de la séance précédente. Les contrats arrivant à échéance le jour même ont représenté 33.1% du volume et les calls 53.6%.
Quelle action a représenté le plus grand volume en dollars le 29 juillet 2026 ?
MU, avec 44.99 milliards de dollars de volume pendant les heures normales de cotation, devant SPY avec 42.29 milliards.
Notes sur les données
Cette édition reprend la série quotidienne. La précédente édition quotidienne est 10 juillet 2026, et le récapitulatif hebdomadaire couvre la semaine précédente. Les panneaux nommés par ticker sont classés par ordre alphabétique afin que les références du texte renvoient à des lignes fixes. Les classements et tableaux des plus fortes variations sont classés par valeur, et chaque indication de position qu’ils contiennent est encodée comme borne de contrôle de cohérence. 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 chiffre d’affaires de cinq millions de dollars sur les heures normales de cotation. 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 application de la règle interne de désambiguïsation. Ainsi, chaque commentaire renvoie toujours à un titre vérifiable. Les panneaux de cotation comptabilisent les cotations à sens unique et les cotations croisées pour chaque titre, au lieu de les supprimer sans indication. Le fichier du Trésor et l’index quotidien d’EDGAR sont publiés selon leurs propres calendriers. Ces panneaux présentent donc les données disponibles, sans supposer qu’elles sont déjà arrivées. Aucun indice de volatilité implicite ne figure ici. Ces séries ne sont pas sous licence dans cet entrepôt. La volatilité est donc déduite du tape à partir des fourchettes, de la part des options négociées le jour même et du comportement des cotations.
Méthodologie
- Source des données de marché : consolidated tape.
delayed_stocks_minute_aggspour les prix et les volumes,options_tradespour le flux des options,cache_stocks_quotesetcache_options_quotespour les panneaux NBBO. - Clôture : dernière barre d’une minute de la séance régulière, jamais un print supposé à 16 h et jamais un print réalisé en horaires étendus.
- Gestion du fuseau horaire : tous les horodatages stockés sont en UTC ; les clauses WHERE utilisent des littéraux UTC bruts, et
toTimeZoneapparaît uniquement dans les listes SELECT pour les libellés ET. - Vérification de la séance : à partir de la table des jours fériés et des barres observées, jamais à partir d’une hypothèse fondée sur le calendrier.
- Comparaisons avec la séance précédente : calculées dans la requête à partir du 28 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 tuple partout ; chaque affirmation de classement ou de signe dans le texte est encodée comme une borne de contrôle.
- Date as-of de l’entrepôt : 1er août 2026, soit trois jours après la séance et au-delà du délai habituel d’ingestion du tape, d’un à deux jours ; les reçus bornés ci-dessus permettent de conserver l’article si un jeu de données est absent lors de la génération.
Liens croisés : 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.