Marché du 9 juillet 2026 : chiffres du jour
Les valeurs des équipements pour semi-conducteurs ont bondi puis reculé, les méga-capitalisations ont rebondi, le marché a viré au vert et NVDA a clôturé dans le rouge.
Jeudi 9 juillet 2026 a concentré sa violence en une minute, avant même la cloche d’ouverture. Les valeurs des équipements pour semi-conducteurs étaient déjà nettement au-dessus de leur clôture de mercredi dans les échanges de premarket, tandis que META se situait -3.16% en dessous ; le print de 9 h 30 a confirmé les deux mouvements. La séance a ensuite partiellement effacé son propre mouvement d’ouverture : les gaps des valeurs des semi-conducteurs se sont réduits, META est entièrement remontée, et le marché a clôturé 71.5% dans le vert, pour la séance la plus large de la semaine. NVDA, dans le vert pendant la débâcle de mardi, a clôturé dans le rouge. Tous les chiffres ci-dessous proviennent d’une requête enregistrée.
Ce qui a déterminé l’ouverture
Les gaps ne se sont pas formés à 9 h 30. Entre 4 h 00 et 9 h 29 ET, le marché du premarket avait déjà réajusté la valorisation de ces titres, et le premier print à l’ouverture s’est établi à ce niveau.
| ticker | clôture précédente | première barre pré-marché (ET) | dernier cours pré-marché | variation pré-marché (%) | actions pré-marché (k) | écart à l’ouverture (%) | ouverture vs pré-marché (%) |
|---|---|---|---|---|---|---|---|
| KLAC | 221.03 | 04:00 | 239.8 | 8.49 | 357.1 | 8.14 | -0.33 |
| LRCX | 332.93 | 04:00 | 365.04 | 9.64 | 359.6 | 9.67 | 0.02 |
| META | 603.03 | 04:00 | 584 | -3.16 | 1463.8 | -3.16 | 0 |
| NVDA | 204.14 | 04:00 | 204.46 | 0.16 | 3741.7 | 0.16 | 0 |
| QQQ | 711.3 | 04:00 | 718.32 | 0.99 | 1652.7 | 0.99 | 0 |
| SPY | 745.31 | 04:00 | 747.38 | 0.28 | 814.8 | 0.27 | 0 |
Le SQL exact derrière chaque chiffre
SELECT
ticker,
round(prior_close, 2) AS prior_close,
formatDateTime(first_pm_bar, '%H:%i') AS first_premkt_bar_et,
round(premkt_last, 2) AS premkt_last,
round((premkt_last / prior_close - 1) * 100, 2) AS premkt_pct,
round(premkt_shares / 1e3, 1) AS premkt_shares_k,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_open / premkt_last - 1) * 100, 2) AS open_vs_premkt_pct
FROM (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS prior_close,
minIf(toTimeZone(window_start, 'America/New_York'), window_start >= '2026-07-09 08:00:00' AND window_start < '2026-07-09 13:30:00') AS first_pm_bar,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 08:00:00' AND window_start < '2026-07-09 13:30:00')) AS premkt_last,
sumIf(toFloat64(volume), window_start >= '2026-07-09 08:00:00' AND window_start < '2026-07-09 13:30:00') AS premkt_shares,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')) AS day_open
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'KLAC', 'LRCX', 'META', 'NVDA')
AND ((window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')
OR (window_start >= '2026-07-09 08:00:00' AND window_start < '2026-07-09 20:00:00'))
GROUP BY ticker
)
ORDER BY tickerLe dernier print de KLAC dans le premarket affichait +8.49% par rapport à la clôture de mercredi, et le titre a ouvert à +8.14% ; LRCX gagnait +9.64% avant une ouverture à +9.67% ; META affichait -3.16% et a ouvert à -3.16%. Voir open_vs_premkt_pct : les six titres ont ouvert à moins de 1 % de leur dernier cours dans le premarket. NVDA fait exception, 0.16% pendant la nuit sur 3741.7 milliers d’actions, soit le volume le plus élevé dans le premarket parmi les six titres, mais la plus faible variation (trading dans le premarket et l’after-hours).
Un catalyseur ? Nos données n’en identifient aucun
Un récapitulatif doit expliquer ce qui a fait bouger une action. Ici, nos tableaux ne donnent aucune indication : le flux d’actualités et l’index des dépôts auprès de la SEC sont tous deux vides pour les quatre titres ayant enregistré les plus importants gaps à l’ouverture.
| ticker | articles de nuit | articles de séance | déclarations auprès de la SEC | déclarations 8-K |
|---|---|---|---|---|
| AMD | 1 | 2 | 0 | 0 |
| KLAC | 0 | 0 | 0 | 0 |
| LRCX | 0 | 0 | 0 | 0 |
| META | 4 | 7 | 1 | 0 |
| MSFT | 6 | 5 | 0 | 0 |
| MU | 6 | 6 | 0 | 0 |
| NVDA | 7 | 9 | 0 | 0 |
| TER | 0 | 0 | 0 | 0 |
| WDC | 0 | 0 | 0 | 0 |
Le SQL exact derrière chaque chiffre
SELECT
ticker,
toUInt32(sum(overnight_articles)) AS overnight_articles,
toUInt32(sum(session_articles)) AS session_articles,
toUInt32(sum(sec_filings)) AS sec_filings,
toUInt32(sum(filings_8k)) AS filings_8k
FROM (
SELECT
arrayJoin(['AMD', 'KLAC', 'LRCX', 'META', 'MSFT', 'MU', 'NVDA', 'TER', 'WDC']) AS ticker,
toUInt64(0) AS overnight_articles, toUInt64(0) AS session_articles,
toUInt64(0) AS sec_filings, toUInt64(0) AS filings_8k
UNION ALL
SELECT
arrayJoin(tickers) AS ticker,
countIf(published_utc < '2026-07-09 13:30:00') AS overnight_articles,
countIf(published_utc >= '2026-07-09 13:30:00') AS session_articles,
toUInt64(0) AS sec_filings, toUInt64(0) AS filings_8k
FROM global_markets.stocks_news
WHERE published_utc >= '2026-07-08 20:00:00' AND published_utc < '2026-07-09 20:00:00'
GROUP BY ticker
UNION ALL
SELECT
ticker, toUInt64(0), toUInt64(0),
count() AS sec_filings,
countIf(form_type = '8-K') AS filings_8k
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-08' AND filing_date <= '2026-07-09'
GROUP BY ticker
)
WHERE ticker IN ('AMD', 'KLAC', 'LRCX', 'META', 'MSFT', 'MU', 'NVDA', 'TER', 'WDC')
GROUP BY ticker
ORDER BY ticker0 articles publiés pendant la nuit, 0 en séance, 0 dépôts auprès de la SEC pour KLAC ; même ligne vide pour LRCX, TER et WDC. NVDA, qui n’a jamais ouvert sur un gap, a fait l’objet de la couverture la plus abondante des neuf titres (7 articles publiés pendant la nuit, 9 en séance) et a clôturé dans le rouge. Il s’agit de l’attention d’un seul flux, pas de celle de l’ensemble des médias. Une ligne vide ne prouve pas qu’aucun événement n’a eu lieu. Mais rien dans nos données n’identifie de cause, et « cause inconnue » est une réponse complète.
Le tableau de bord
Chaque variation compare la dernière barre minute de la séance régulière du 9 juillet avec celle de mercredi. Les lignes sont classées par ordre alphabétique afin que chaque ETF conserve une position fixe.
| ticker | clôture précédente | ouverture du jour | clôture du jour | écart à l’ouverture (%) | variation intrajournalière (%) | variation (%) | plus haut du jour | plus bas du jour | actions échangées (M) |
|---|---|---|---|---|---|---|---|---|---|
| DIA | 522.72 | 523.65 | 524.22 | 0.18 | 0.11 | 0.29 | 525.15 | 522.14 | 2.7 |
| IWM | 293.47 | 295.27 | 297.26 | 0.61 | 0.67 | 1.29 | 297.88 | 294.9 | 14.4 |
| QQQ | 711.3 | 718.33 | 723.19 | 0.99 | 0.68 | 1.67 | 724.23 | 715.12 | 27.8 |
| SPY | 745.31 | 747.35 | 751.64 | 0.27 | 0.57 | 0.85 | 751.97 | 745.59 | 32.5 |
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-08 13:30:00' AND window_start < '2026-07-08 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-09 13:30:00' AND window_start < '2026-07-09 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 tickerLes quatre ETF ont clôturé dans le vert. QQQ arrive en tête à +1.67%, avec un écart de +0.99% et une progression de +0.68%. L’ETF de petites capitalisations IWM gagne +1.29%, contre +0.85% pour SPY, à $751.64. DIA ferme la marche à +0.29%. Les valeurs de croissance en tête, le Dow en retrait.
La séance était-elle inhabituelle ?
À l’échelle des indices, non : la variation close-over-close de QQQ, de +1.67%, se classait 10 sur 21 séances consécutives selon son ampleur. Celle de SPY, mesurée entre l’ouverture et la clôture, se classait 8 sur 22. La volatilité s’est concentrée entre les groupes de la séance.
| QQQ, clôture à clôture (%) | rang du mouvement absolu de QQQ | séances QQQ comparées | SPY, ouverture à clôture (%) | rang du mouvement absolu de SPY | séances SPY comparées | première séance |
|---|---|---|---|---|---|---|
| 1.67 | 10 | 21 | 0.57 | 8 | 22 | 2026-06-08 |
Le SQL exact derrière chaque chiffre
SELECT
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-09')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-09'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-09'))) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ' AND isFinite(cc_pct)) AS qqq_sessions_compared,
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-09')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-09'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-09'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT ticker, d,
if(isFinite(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1),
(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100, NULL) AS cc_pct,
oc_pct
FROM (
SELECT ticker, toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS close_px,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-06-08 13:30:00')
AND window_start < toDateTime('2026-07-10 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)Largeur de marché : la séance la plus large de la semaine
| valeurs en hausse | valeurs en baisse | valeurs inchangées | tickers liquides | échangés lors des deux séances | exclus par le filtre de liquidité | valeurs en hausse (%) | valeurs en hausse le 8 juillet (%) |
|---|---|---|---|---|---|---|---|
| 4263 | 1631 | 72 | 5966 | 11351 | 5385 | 71.5 | 29.6 |
Le SQL exact derrière chaque chiffre
SELECT
countIf(close_9 > close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS advancers,
countIf(close_9 < close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS decliners,
countIf(close_9 = close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS unchanged,
countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000) AS liquid_tickers,
countIf(close_8 > 0 AND close_9 > 0) AS traded_both_sessions,
countIf(close_8 > 0 AND close_9 > 0) - countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(close_9 > close_8 AND close_8 > 0 AND dv_9 >= 1000000) / countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000), 1) AS advancer_pct,
round(100.0 * countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) / countIf(close_8 > 0 AND close_7 > 0 AND dv_8 >= 1000000), 1) AS jul8_advancer_pct
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS close_7,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS close_8,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')) AS close_9,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS dv_9,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS dv_8
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-09 20:00:00'
GROUP BY ticker
)4263 valeurs en hausse contre 1631 valeurs en baisse, soit une proportion de valeurs en hausse de 71.5% après 29.6% mercredi, selon le même calcul et avec le même filtre de $1M échangé (5385 des 11351 valeurs sont en dessous de ce seuil). Par rapport au reste de la semaine :
| date | variation SPY (%) | variation QQQ (%) | valeurs en hausse (%) | valeurs liquides |
|---|---|---|---|---|
| 2026-07-06 | 0.87 | 1.39 | 62.4 | 6189 |
| 2026-07-07 | -0.48 | -1.82 | 33.9 | 6189 |
| 2026-07-08 | -0.31 | 0.25 | 29.6 | 6162 |
| 2026-07-09 | 0.85 | 1.67 | 71.4 | 5973 |
Le SQL exact derrière chaque chiffre
WITH per_day AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-09 20:00:00'
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
),
lagged AS (
SELECT ticker, d, c, dv,
lagInFrame(c) OVER (PARTITION BY ticker ORDER BY d) AS prev_c
FROM per_day
)
SELECT
toString(d) AS date,
round(anyIf((c / prev_c - 1) * 100, ticker = 'SPY'), 2) AS spy_pct,
round(anyIf((c / prev_c - 1) * 100, ticker = 'QQQ'), 2) AS qqq_pct,
round(100.0 * countIf(c > prev_c AND prev_c > 0 AND dv >= 1000000) / countIf(c > 0 AND prev_c > 0 AND dv >= 1000000), 1) AS advancer_pct,
countIf(c > 0 AND prev_c > 0 AND dv >= 1000000) AS liquid_names
FROM lagged
WHERE d >= toDate('2026-07-06')
GROUP BY d
ORDER BY dLundi avait commencé avec 62.4% valeurs en hausse. Mardi et mercredi, ce nombre est tombé à 33.9% et 29.6%. Le 71.4% de jeudi est le plus élevé des quatre séances terminées de la semaine (le vendredi 10 juillet est postérieur à cette récapitulation). QQQ a suivi la même trajectoire : -1.82% mardi, 0.25% mercredi, +1.67% jeudi.
Au-delà des semi-conducteurs : comment le reste du marché a évolué
La breadth indique que la plupart des actions ont progressé ; elle ne dit pas que le rally était homogène. Ci-dessous : un panier équipondéré de trois valeurs liquides par secteur, le même panier prédéfini chaque jour.
| secteur | valeurs | variation moyenne (%) | variation de la pire valeur (%) | variation de la meilleure valeur (%) | écart avec le meilleur secteur (%) |
|---|---|---|---|---|---|
| Semiconductors | 3 | 4.24 | 3.2 | 5.68 | 0 |
| Financials | 3 | 1.88 | 1.46 | 2.61 | -2.36 |
| Industrials | 3 | 0.42 | -1 | 1.4 | -3.82 |
| Healthcare | 3 | 0.22 | -1.62 | 1.41 | -4.02 |
| Big tech | 3 | 0.17 | -0.76 | 0.93 | -4.07 |
| Staples | 3 | -0.91 | -1.04 | -0.75 | -5.15 |
| Utilities | 3 | -0.96 | -1.28 | -0.41 | -5.21 |
| Energy | 3 | -2.01 | -2.54 | -1.06 | -6.25 |
Le SQL exact derrière chaque chiffre
SELECT
sector,
count() AS names,
round(avg(pct_chg), 2) AS avg_pct_chg,
round(min(pct_chg), 2) AS worst_name_pct,
round(max(pct_chg), 2) AS best_name_pct,
round(avg(pct_chg) - max(avg(pct_chg)) OVER (), 2) AS gap_to_best_sector_pct
FROM (
SELECT
ticker,
multiIf(ticker IN ('AMD', 'AVGO', 'KLAC'), 'Semiconductors',
ticker IN ('AAPL', 'MSFT', 'GOOGL'), 'Big tech',
ticker IN ('JPM', 'BAC', 'GS'), 'Financials',
ticker IN ('CAT', 'HON', 'GE'), 'Industrials',
ticker IN ('XOM', 'CVX', 'COP'), 'Energy',
ticker IN ('JNJ', 'UNH', 'PFE'), 'Healthcare',
ticker IN ('KO', 'PG', 'WMT'), 'Staples',
'Utilities') AS sector,
(toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'))
/ toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) - 1) * 100 AS pct_chg
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'KLAC', 'AAPL', 'MSFT', 'GOOGL', 'JPM', 'BAC', 'GS', 'CAT', 'HON', 'GE',
'XOM', 'CVX', 'COP', 'JNJ', 'UNH', 'PFE', 'KO', 'PG', 'WMT', 'NEE', 'DUK', 'SO')
AND window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-09 20:00:00'
GROUP BY ticker
)
GROUP BY sector
ORDER BY avg_pct_chg DESCSemiconductors a mené à +4.24%, tandis que Energy a fermé la marche à -2.01%, soit un spread de -6.25 points (gap_to_best_sector_pct). Les financières ont constitué le panier hors semi-conducteurs le plus performant, à +1.88% ; les biens de consommation de base (-0.91%), les utilities (-0.96%) et l’énergie ont terminé dans le rouge. Les grandes valeurs technologiques (AAPL, MSFT et GOOGL) ont affiché en moyenne une hausse modeste de +0.17%. Le plus important retournement entre l’ouverture et la clôture, le mouvement de +8.1% de META, ne relève d’aucun des huit paniers ; dans celui-ci, l’ouverture de MSFT à -2.25%, suivie d’une clôture à +0.33%, a constitué l’aller-retour le plus marqué.
L’ouverture des semi-conducteurs et le repli qui a suivi
gap_pct correspond à l’écart entre l’ouverture et la clôture de mercredi ; intraday_pct couvre le reste de la séance. Les lignes sont classées par ordre alphabétique.
| ticker | clôture précédente | ouverture du jour | clôture du jour | écart à l’ouverture (%) | variation intrajournalière (%) | variation (%) | volume en dollars du jour (Md$) |
|---|---|---|---|---|---|---|---|
| AMD | 517.26 | 537.26 | 546.66 | 3.87 | 1.75 | 5.68 | 12.15 |
| AVGO | 388.67 | 402.19 | 401.11 | 3.48 | -0.27 | 3.2 | 8.34 |
| INTC | 110.27 | 114.87 | 112.55 | 4.17 | -2.02 | 2.07 | 9.21 |
| KLAC | 221.03 | 239.02 | 229.51 | 8.14 | -3.98 | 3.84 | 2.29 |
| LRCX | 332.93 | 365.13 | 353.24 | 9.67 | -3.26 | 6.1 | 3.36 |
| MRVL | 231.66 | 246.18 | 243.33 | 6.27 | -1.16 | 5.04 | 4.04 |
| MU | 949.37 | 1016.51 | 990.5 | 7.07 | -2.56 | 4.33 | 33.56 |
| NVDA | 204.14 | 204.46 | 202.76 | 0.16 | -0.83 | -0.68 | 21.28 |
| SNDK | 1729.4 | 1835.61 | 1858.26 | 6.14 | 1.23 | 7.45 | 20.59 |
| SOXL | 174.84 | 199.81 | 192.44 | 14.28 | -3.69 | 10.07 | 7.8 |
| SOXS | 4.52 | 3.87 | 4.07 | -14.38 | 5.17 | -9.96 | 2.18 |
| STX | 859.68 | 922.28 | 889.79 | 7.28 | -3.52 | 3.5 | 3.64 |
| TER | 351.56 | 379.24 | 362.87 | 7.87 | -4.32 | 3.22 | 0.95 |
| WDC | 550.71 | 594.14 | 578.32 | 7.89 | -2.66 | 5.01 | 3.27 |
Le SQL exact derrière chaque chiffre
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-09 00:00:00')) AS prior_close,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-09 00:00:00')) AS day_open,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-09 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-09 00:00:00') AS day_low,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-09 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
AND ((window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')
OR (window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_open, 2) AS day_open,
round(day_close, 2) AS day_close,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_close / day_open - 1) * 100, 2) AS intraday_pct,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerKLAC a ouvert +8.14% au-dessus de la clôture de mercredi, puis a cédé -3.98% ; LRCX a ouvert +9.67% avant de reperdre -3.26% ; TER (+7.87%) et WDC (+7.89%) ont suivi la même trajectoire. MU a ouvert avec un gap de +7.07%, a reculé de -2.56%, mais a tout de même clôturé en hausse de +4.33% à 33.56B, le titre le plus traité de la séance pour la deuxième fois consécutive (récapitulatif de mercredi revient sur la première séance). AMD et SNDK ont fait exception : AMD a gagné 1.75% après une ouverture à +3.87%, pour terminer à +5.68%, tandis que SNDK, déjà en hausse de +6.14% à l’ouverture, a gagné encore 1.23% pour clôturer à +7.45%. Et NVDA : une ouverture à +0.16%, sans gap, avant une clôture à -0.68%.
| hausse le 9 juil. | baisse le 9 juil. | hausse le 8 juil. | variation NVDA le 9 juil. (%) | variation NVDA le 8 juil. (%) | nombre de valeurs |
|---|---|---|---|---|---|
| 12 | 2 | 12 | -0.68 | 3.66 | 14 |
Le SQL exact derrière chaque chiffre
SELECT
countIf(close_9 > close_8) AS jul9_green,
countIf(close_9 < close_8) AS jul9_red,
countIf(close_8 > close_7) AS jul8_green,
round(anyIf((close_9 / close_8 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul9_pct,
round(anyIf((close_8 / close_7 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul8_pct,
count() AS names_counted
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS close_7,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS close_8,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')) AS close_9
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
AND window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-09 20:00:00'
GROUP BY ticker
)12 des quatorze titres ont clôturé dans le vert ; les 2 clôtures dans le rouge correspondent à l’effet inverse, structurel lors d’une séance haussière, ainsi qu’à NVDA à -0.68%, au lendemain d’une clôture à +3.66%. Le titre de semi-conducteurs le plus important en termes de capitalisation a manqué la fête de son propre secteur, tout en concentrant la plus forte couverture médiatique de la séance.
L’autre face : les mega-caps ont ouvert en baisse avant de remonter
| ticker | clôture précédente | ouverture du jour | clôture du jour | écart à l’ouverture (%) | variation intrajournalière (%) | variation (%) | volume en dollars du jour (Md$) |
|---|---|---|---|---|---|---|---|
| AAPL | 313.26 | 310.51 | 316.17 | -0.88 | 1.82 | 0.93 | 11.14 |
| AMZN | 243.55 | 239.82 | 246.95 | -1.53 | 2.97 | 1.4 | 6.79 |
| CVX | 175.92 | 174.63 | 174.05 | -0.73 | -0.33 | -1.06 | 0.91 |
| GOOGL | 361.64 | 354.31 | 358.89 | -2.03 | 1.29 | -0.76 | 6.75 |
| JNJ | 263.36 | 260.63 | 259.1 | -1.04 | -0.59 | -1.62 | 1.25 |
| META | 603.03 | 583.99 | 631.31 | -3.16 | 8.1 | 4.69 | 12.69 |
| MSFT | 383.05 | 374.45 | 384.33 | -2.25 | 2.64 | 0.33 | 8.27 |
| TSLA | 393.92 | 393.99 | 406.56 | 0.02 | 3.19 | 3.21 | 12.67 |
Le SQL exact derrière chaque chiffre
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-09 00:00:00')) AS prior_close,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-09 00:00:00')) AS day_open,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-09 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'AMZN', 'CVX', 'GOOGL', 'JNJ', 'META', 'MSFT', 'TSLA')
AND ((window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')
OR (window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_open, 2) AS day_open,
round(day_close, 2) AS day_close,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_close / day_open - 1) * 100, 2) AS intraday_pct,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerSept titres sur huit ont ouvert sous leur cours de clôture de mercredi. La suite les distingue. META a ouvert en baisse de -3.16% avant de remonter de +8.1% et de clôturer à 4.69%, soit le retournement entre l’ouverture et la clôture le plus marqué de la page. MSFT a ouvert en baisse de -2.25% avant de revenir à +0.33%. AMZN (+1.4%) et AAPL (+0.93%) ont suivi la même trajectoire. TSLA n’a pas subi de gap et a progressé jusqu’à +3.21%. Les titres restés dans le rouge n’étaient pas des valeurs de croissance : GOOGL (-0.76%), CVX (-1.06%), JNJ (-1.62%). Pourquoi les actions ouvrent-elles avec un gap overnight explique le mécanisme.
Où les capitaux se sont échangés
| classement | ticker | volume en dollars (Md$) | actions (M) | prix moyen implicite | % du leader du classement |
|---|---|---|---|---|---|
| by dollars traded | MU | 33.56 | 33.1 | 1013.9 | 100 |
| by dollars traded | SPY | 24.37 | 32.5 | 749.85 | 72.6 |
| by dollars traded | NVDA | 21.28 | 105.3 | 202.09 | 63.4 |
| by dollars traded | SNDK | 20.59 | 11 | 1871.82 | 61.4 |
| by dollars traded | QQQ | 20.04 | 27.8 | 720.86 | 59.7 |
| by dollars traded | META | 12.69 | 20.8 | 610.1 | 37.8 |
| by shares traded | SOXS | 2.18 | 558.1 | 3.91 | 100 |
| by shares traded | BITO | 2.79 | 326.2 | 8.55 | 58.4 |
| by shares traded | TZA | 0.65 | 164 | 3.96 | 29.4 |
| by shares traded | SNDQ | 0.34 | 137.4 | 2.47 | 24.6 |
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,
round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
/ max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
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-09 13:30:00' AND window_start < '2026-07-09 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-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard, pct_of_board_leader DESCMU a de nouveau dominé le classement en dollars avec 33.56B, devant SPY (24.37B), NVDA (21.28B) et SNDK (20.59B). La mémoire occupe ainsi deux des quatre premières places. Le classement en nombre d’actions raconte une autre histoire : SOXS arrive en tête avec 558.1M d’actions, à un cours implicite de $3.91 (volume relatif).
| heure ET | actions (Md) | % du plus grand compartiment |
|---|---|---|
| 09:30 | 1.79 | 58.3 |
| 10:00 | 1.4 | 45.4 |
| 10:30 | 1.09 | 35.5 |
| 11:00 | 0.95 | 30.9 |
| 11:30 | 0.82 | 26.7 |
| 12:00 | 0.75 | 24.3 |
| 12:30 | 0.64 | 20.9 |
| 13:00 | 0.64 | 20.9 |
| 13:30 | 0.66 | 21.5 |
| 14:00 | 0.71 | 23 |
| 14:30 | 0.74 | 24.1 |
| 15:00 | 0.84 | 27.5 |
| 15:30 | 3.07 | 100 |
Le SQL exact derrière chaque chiffre
SELECT
et_time,
round(sum(shares) / 1e9, 2) AS shares_bn,
round(100 * sum(shares) / max(sum(shares)) OVER (), 1) AS pct_of_biggest_bucket
FROM
(
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
toFloat64(volume) AS shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
UNION ALL
SELECT
'15:30' AS et_time,
toFloat64(size) AS shares
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-07-09 20:00:00' AND sip_timestamp < '2026-07-09 20:15:00'
AND has(conditions, 8)
)
GROUP BY et_time
ORDER BY et_timeUne courbe en U classique : le volume de la phase d’ouverture a atteint 1.79B d’actions (58.3% du pic), avant de retomber à 0.64B à la mi-séance. La demi-heure de fixing de clôture a été la plus active de la journée, avec 3.07B d’actions. Même lors d’une séance dont l’activité s’est concentrée à l’ouverture, le volume a finalement atteint son maximum à la clôture.
La bande des options
| transactions d’options (M) | contrats (M) | contrats du 8 juil. (M) | calls en % du volume | % 0DTE | % 0DTE du 8 juil. | clôture régulière du SPY | sous-jacent n° 1 | strike n° 1 | type n° 1 | contrats n° 1 (K) | prix moyen n° 1 | n° 1 en 0DTE | sous-jacent n° 2 | strike n° 2 | type n° 2 | n° 2 en 0DTE | sous-jacent n° 3 | strike n° 3 | type n° 3 | n° 3 en 0DTE | moneyness n° 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 9.99 | 58.85 | 63.26 | 58 | 28.7 | 38.7 | 751.64 | SPY | 751 | C | 846.6 | 0.526 | 1 | SPY | 752 | C | 1 | SPY | 750 | C | 1 | -0.64 |
Le SQL exact derrière chaque chiffre
WITH
(
SELECT (groupArray(und), groupArray(strike), groupArray(typ), groupArray(vol), groupArray(avg_px), groupArray(is_0dte))
FROM (
SELECT any(underlying_symbol) AS und, any(toFloat64(strike_price)) AS strike, any(option_type) AS typ,
sum(size) AS vol, round(avg(toFloat64(price)), 3) AS avg_px,
if(substring(ticker, length(ticker) - 14, 6) = '260709', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
GROUP BY ticker
ORDER BY vol DESC
LIMIT 3
)
) AS top3,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
) AS spy_regular_close,
(
SELECT round(toFloat64(sum(size)) / 1e6, 2)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'
) AS jul8_contracts_m,
(
SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260708') / sum(size), 1)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'
) AS jul8_pct_0dte
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
jul8_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) = '260709') / sum(size), 1) AS pct_0dte,
jul8_pct_0dte,
spy_regular_close,
top3.1[1] AS top1_und, top3.2[1] AS top1_strike, top3.3[1] AS top1_type,
round(toFloat64(top3.4[1]) / 1e3, 1) AS top1_contracts_k, top3.5[1] AS top1_avg_px, top3.6[1] AS top1_is_0dte,
top3.1[2] AS top2_und, top3.2[2] AS top2_strike, top3.3[2] AS top2_type, top3.6[2] AS top2_is_0dte,
top3.1[3] AS top3_und, top3.2[3] AS top3_strike, top3.3[3] AS top3_type, top3.6[3] AS top3_is_0dte,
round(toFloat64(top3.2[1]) - spy_regular_close, 2) AS top1_moneyness
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'La bande a enregistré 9.99M transactions exécutées et 58.85M contrats, contre 63.26M mercredi. Les calls représentaient 58% du volume et la part des options 0DTE est tombée à 28.7%, contre 38.7%. Les trois contrats les plus actifs étaient tous des calls SPY à échéance le jour même : le 751C (846.6K contrats, moyenne de $0.526), le 752C et le 750C. Ils formaient une échelle autour de la clôture de SPY à $751.64 (options 0DTE présente ce produit).
Couverture ou pari ? Une couverture achète des strikes éloignés du cours ; un pari achète le côté recherché.
| tranche de strike | contrats call (K) | contrats put (K) | part des calls (%) |
|---|---|---|---|
| Strike >2% below close | 1.8 | 146.8 | 1.2 |
| Strike 0.5-2% below | 255.4 | 1356.5 | 15.8 |
| Strike within 0.5% | 3768.9 | 2563.3 | 59.5 |
| Strike 0.5-2% above | 29.1 | 2.7 | 91.6 |
| Strike >2% above close | 0.3 | 0.3 | 49 |
Le SQL exact derrière chaque chiffre
WITH (
SELECT toFloat64(argMax(close, window_start))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
) AS spy_close
SELECT
multiIf(dist < -2, 'Strike >2% below close',
dist < -0.5, 'Strike 0.5-2% below',
dist <= 0.5, 'Strike within 0.5%',
dist <= 2, 'Strike 0.5-2% above',
'Strike >2% above close') AS strike_bucket,
round(toFloat64(sumIf(size, option_type = 'C')) / 1e3, 1) AS call_contracts_k,
round(toFloat64(sumIf(size, option_type = 'P')) / 1e3, 1) AS put_contracts_k,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_share_pct
FROM (
SELECT option_type, size, (toFloat64(strike_price) / spy_close - 1) * 100 AS dist
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
AND underlying_symbol = 'SPY'
AND substring(ticker, length(ticker) - 14, 6) = '260709'
)
GROUP BY strike_bucket
ORDER BY min(dist)La bande des options à échéance le jour même se concentrait autour du cours : 3768.9k calls et 2563.3k puts à moins d’un demi-pour cent de la clôture (59.5% calls). Sur les ailes, la répartition dépendait du sens. Sous la clôture, on comptait 1356.5k puts contre 255.4k calls (les calls représentaient 1.2% du volume plus bas) ; au-dessus, les calls représentaient 91.6% d’un compartiment beaucoup plus réduit de 29.1k contrats. Le volume sur les ailes se concentrait sur les strikes baissiers, là où les investisseurs achètent une protection : une échelle autour du cours, et non à la hausse.
Le carnet de cotations
| mises à jour du 9 juil. (M) | mises à jour du 8 juil. (M) | variation jour sur jour (%) | mises à jour SPY du 9 juil. (M) | mises à jour QQQ du 9 juil. (M) | mises à jour NVDA du 9 juil. (M) | mises à jour TSLA du 9 juil. (M) | mises à jour MU du 9 juil. (M) |
|---|---|---|---|---|---|---|---|
| 383.44 | 530.55 | -27.7 | 2.71 | 4.35 | 1.83 | 0.46 | 0.72 |
Le SQL exact derrière chaque chiffre
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09')) / 1e6, 2) AS jul9_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / 1e6, 2) AS jul8_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-09')) / countIf(toDate(sip_timestamp) = toDate('2026-07-08')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'SPY') / 1e6, 2) AS jul9_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'QQQ') / 1e6, 2) AS jul9_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'NVDA') / 1e6, 2) AS jul9_nvda_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'TSLA') / 1e6, 2) AS jul9_tsla_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'MU') / 1e6, 2) AS jul9_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'Le fait le plus discret de la séance : 383.44M mises à jour du NBBO sur le carnet de l’action, soit -27.7% contre mercredi. La volatilité s’est manifestée dans les niveaux de prix, pas dans le renouvellement des meilleures offres et demandes. QQQ arrive en tête des tickers cités avec 4.35M mises à jour, devant les 2.71M de SPY et les 1.83M de NVDA.
| ticker | spread médian (pb) |
|---|---|
| SPY | 0.27 |
| QQQ | 0.42 |
| NVDA | 0.99 |
| TSLA | 2.27 |
| AVGO | 3.06 |
| MU | 4.23 |
| SNDK | 8.79 |
Le SQL exact derrière chaque chiffre
SELECT
ticker,
round(quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000), 2) AS median_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'NVDA', 'TSLA', 'MU', 'SNDK', 'AVGO')
AND sip_timestamp >= '2026-07-09 13:30:00' AND sip_timestamp < '2026-07-09 20:00:00'
AND bid_price > 0 AND ask_price > 0 AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps ASCLe spread coté médian de SPY s’est établi à 0.27 points de base, contre 0.42 pour QQQ et 0.99 pour NVDA : des niveaux ordinaires. Dans le haut de la distribution, MU atteint 4.23 points de base et SNDK 8.79 points de base (le spread bid-ask est le coût mesuré ici).
| spread moyen du 9 juil. (¢) | rang de resserrement | séances comparées | séance la plus resserrée (cents) | séance la plus large (cents) | première séance |
|---|---|---|---|---|---|
| 2.071 | 10 | 22 | 1.809 | 2.865 | 2026-06-08 |
Le SQL exact derrière chaque chiffre
SELECT
round(anyIf(avg_spread_cents, d = toDate('2026-07-09')), 3) AS jul9_avg_spread_cents,
arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-09')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-09'))) + 1 AS tightness_rank,
count() AS sessions_compared,
round(min(avg_spread_cents), 3) AS tightest_session_cents,
round(max(avg_spread_cents), 3) AS widest_session_cents,
toString(min(d)) AS first_session
FROM (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
avgIf(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100 AS avg_spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2026-06-08 00:00:00')
AND sip_timestamp < toDateTime('2026-07-10 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
)Le spread coté moyen de SPY, à 2.071 centimes, se classait 10 sur 22 séances précédentes, dans une fourchette de 1.809 à 2.865 centimes : aucune tension sur les cotations, même à l’ouverture.
| options du 9 juillet (Md) | ratio options/actions | options SPY du 9 juillet (M) |
|---|---|---|
| 6.9 | 18 | 242 |
Le SQL exact derrière chaque chiffre
WITH
(SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00') AS jul9_options_rows,
(SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00') AS jul9_stock_quote_rows
SELECT
round(jul9_options_rows / 1e9, 2) AS jul9_options_bn,
round(jul9_options_rows / jul9_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-09 13:30:00' AND sip_timestamp < '2026-07-09 20:00:00') / 1e6, 0) AS jul9_spy_options_mLe carnet de cotations des options a enregistré 6.9 milliards de mises à jour du NBBO, soit 18 fois le volume du carnet des actions. La seule racine SPY en a représenté 242M.
Taux : le print du 9 juillet
| lignes de transactions du 9 juillet | date de la dernière transaction | dernier taux à 2 ans (%) | dernier taux à 10 ans (%) | dernier taux à 30 ans (%) | dernier spread 2s10s (%) |
|---|---|---|---|---|---|
| 1 | 2026-07-09 | 4.16 | 4.54 | 5.05 | 0.38 |
Le SQL exact derrière chaque chiffre
SELECT
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-09') AS jul9_print_rows,
toString(any(date)) AS latest_print_date,
round(toFloat64(any(yield_2_year)), 2) AS latest_2y_pct,
round(toFloat64(any(yield_10_year)), 2) AS latest_10y_pct,
round(toFloat64(any(yield_30_year)), 2) AS latest_30y_pct,
round(toFloat64(any(yield_10_year)) - toFloat64(any(yield_2_year)), 2) AS latest_2s10s_pct
FROM global_markets.treasury_yields
WHERE date = '2026-07-09'Le print des Treasuries du 9 juillet a été publié après la rédaction, avec le décalage habituel du fichier quotidien des rendements ; la ligne 1 est désormais enregistrée. La courbe du jour (2026-07-09) : taux à deux ans 4.16%, taux à dix ans 4.54%, taux à trente ans 5.05%, spread 2s10s de 0.38 points. Le taux à deux ans s’est détendu par rapport au niveau du 8 juillet, tandis que le long terme est resté stable.
Le calendrier derrière la séance
| enregistrements ex-dividende | splits exécutés | reverse splits | forward splits | dépôts 424B2 | dépôts Form 4 | dépôts 8-K | total des dépôts | articles d’actualité | éditeurs d’actualités | ticker de l’actualité principale | n de l’actualité principale | avance de l’actualité principale sur la suivante | l’actualité principale concerne NVDA |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 127 | 6 | 5 | 1 | 606 | 623 | 149 | 2981 | 184 | 3 | NVDA | 20 | 8 | 1 |
Le SQL exact derrière chaque chiffre
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-09'
) AS news,
(
SELECT (argMax(t, (n, t)), max(n), max(n) - arraySort(x -> -x, groupArray(n))[2])
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-09'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-09') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-09') AS splits_executed,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-09') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-09') AS forward_splits,
(SELECT countIf(form_type = '424B2') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-09') AS fil_424b2,
(SELECT countIf(form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-09') AS fil_form4,
(SELECT countIf(form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-09') AS fil_8k,
(SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-09') AS fil_total,
news.1 AS news_articles, news.2 AS news_publishers,
top_news.1 AS top_news_ticker, top_news.2 AS top_news_n, top_news.3 AS top_news_lead_over_next,
if(top_news.1 = 'NVDA', 1, 0) AS top_news_is_nvdaUn calendrier ordinaire pour une ouverture inhabituelle : 127 enregistrements ex-dividende, 5 reverse splits, 1 forward split, 2981 documents déposés auprès de la SEC (623 formulaires 4, 606 formulaires 424B2, 149 formulaires 8-K). Le flux a recensé 184 articles publiés par 3 éditeurs ; le ticker le plus couvert était NVDA, avec 20 articles, soit 8 de plus que le suivant.
À l’ordre du jour
D’après nos propres tableaux, les faits concernant la prochaine séance, et non des prévisions.
| date de la prochaine séance | lignes de jours fériés de la prochaine séance | enregistrements ex-dividende à venir | ex-dividende des ménages à venir | contrats SPY à la prochaine échéance (M) | contrats SPY à l’échéance mensuelle (M) | dernier règlement short | lignes short du 15 juil. |
|---|---|---|---|---|---|---|---|
| 2026-07-10 | 0 | 153 | 0 | 1.66 | 0.57 | 2026-06-15 | 0 |
Le SQL exact derrière chaque chiffre
SELECT
toString(min(d)) AS next_session_date,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-10') AS next_session_holiday_rows,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-10') AS ex_div_records_next,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JNJ', 'KO', 'PG', 'XOM', 'CVX', 'JPM', 'WMT', 'PEP', 'HON', 'CAT'))
FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-10') AS household_ex_div_next,
(SELECT round(toFloat64(sum(size)) / 1e6, 2) FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
AND underlying_symbol = 'SPY' AND substring(ticker, length(ticker) - 14, 6) = '260710') AS spy_next_expiry_contracts_m,
(SELECT round(toFloat64(sum(size)) / 1e6, 2) FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
AND underlying_symbol = 'SPY' AND substring(ticker, length(ticker) - 14, 6) = '260717') AS spy_monthly_expiry_contracts_m,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
WHERE _ingest_time < '2026-07-11 00:00:00') AS latest_short_settlement,
(SELECT count() FROM global_markets.stocks_short_interest
WHERE settlement_date = '2026-07-15' AND _ingest_time < '2026-07-11 00:00:00') AS jul15_short_rows
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-10 00:00:00' AND window_start < '2026-07-14 00:00:00'
)La prochaine séance est 2026-07-10, 0 jours fériés s’y opposent : un vendredi normal. 153 sociétés détacheront leur dividende ce matin-là, 0 provenant de notre liste de valeurs connues du grand public. L’expiration de vendredi sur le SPY est déjà la plus importante à terme négociée, avec 1.66M contrats au 9 juillet contre 0.57M pour l’échéance mensuelle de juillet. Point de situation sur les positions vendeuses : dernier règlement disponible 2026-06-15, 0 lignes encore non déposées pour la mi-juillet ; la FINRA publie ces données environ huit jours ouvrés après le règlement (pourquoi les positions vendeuses accusent deux semaines de retard).
La séance, vérifiée
| première barre SPY (ET) | dernière barre SPY (ET) | barres minute SPY | barres de séance régulière | séances du jour | lignes du jour férié du 9 juil. | date de la prochaine fermeture | libellé de la prochaine fermeture | nom de la prochaine fermeture |
|---|---|---|---|---|---|---|---|---|
| 04:00 | 19:59 | 885 | 390 | 1 | 0 | 2026-09-07 | September 7, 2026 | Labor Day |
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,
count() AS spy_minute_bars,
countIf(window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-09') AS jul9_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_date,
(SELECT concat(monthName(min(date)), ' ', toString(toDayOfMonth(min(date))), ', ', toString(toYear(min(date))))
FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_label,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-09 00:00:00' AND window_start < '2026-07-10 00:00:00'Une séance ordinaire complète : première barre de SPY à 04:00 ET, dernière à 19:59 ET, 390 bougies d’une minute en séance régulière, aucune ligne de jour férié. Prochaine fermeture : Labor Day, September 7, 2026.
FAQ
Que s’est-il passé sur le marché actions le 9 juillet 2026 ?
Tous les ETF indiciels ont clôturé en hausse : QQQ +1.67%, IWM +1.29%, SPY +0.85%, DIA +0.29%, 71.5% des valeurs liquides en hausse. Les valeurs de l’équipement pour la fabrication de semi-conducteurs ont ouvert en gap haussier avant de refluer. Les mega-caps ont ouvert en gap baissier avant de se redresser.
Pourquoi les valeurs de l’équipement pour semi-conducteurs comme KLAC et LRCX ont-elles bondi le 9 juillet 2026 ?
Nos données n’identifient aucune raison. Aucun article ni dépôt auprès de la SEC ne concerne KLAC, LRCX, TER ou WDC entre la clôture de mercredi et celle de jeudi. Le mouvement était déjà intégré dans les cours avant l’ouverture, avant 9 h 30 ET.
Pourquoi NVDA a-t-il baissé alors que le secteur des semi-conducteurs progressait ?
NVDA a clôturé à -0.68%, tandis que 12 des quatorze valeurs du secteur ont clôturé dans le vert. Le titre n’a jamais ouvert en gap (0.16% à l’ouverture) et a été le ticker le plus couvert, avec 20 articles. Il s’agit d’un niveau record ; la cause n’apparaît pas dans ces données.
Le 9 juillet 2026 a-t-il été une séance inhabituelle pour le marché ?
Pas au niveau des indices. Le mouvement de QQQ se classait 10 sur 21 séances précédentes selon son ampleur. Le spread moyen de SPY s’élevait à 10 de 22. La dispersion sous-jacente était de -6.25 points entre le panier sectoriel le plus performant et le moins performant.
Notes méthodologiques
Les heures de séance habituelles sont 13:30–20:00 UTC (9 h 30–16 h 00 ET) ; le volet de préouverture couvre 08 h 00–13 h 30 UTC. Les huit paniers sectoriels sont constitués sur mesure et équipondérés, avec trois valeurs liquides chacun, tous les tickers étant listés dans le SQL du volet concerné. Il s’agit d’une méthode déclarée, et non d’une classification de fournisseur : trois valeurs parlent d’elles-mêmes, pas au nom de tout un secteur. Le volet des catalyseurs ne recense que notre flux d’actualités et l’index EDGAR.
Notes méthodologiques complètes
Les volets par ticker sont classés par ordre alphabétique, de sorte que chaque référence dans le texte renvoie à une ligne fixe ; les classements sont ordonnés par valeur, et chaque affirmation de position est délimitée. Le print du Trésor et le règlement de la position short à la mi-juillet sont limités à zéro ligne ; leur arrivée entraînera la réécriture de cet article.
Méthodologie
- Sources : le SQL de chaque panneau nomme ses propres tables, agrégats à la minute, caches NBBO des actions et des options, transactions sur options, flux d’actualités, index EDGAR, dividendes, positions short, jours fériés et rendements des Treasuries.
- La demi-heure de clôture du panneau des volumes inclut les prints de l’enchère de clôture. Les barres à une minute excluent tous les prints d’enchère. Le panneau à 30 minutes ajoute donc à son dernier compartiment chaque transaction portant la condition de vente du print de clôture, horodatée de 16 h 00 à 16 h 15 ET sur le consolidated tape.
- Conventions : littéraux UTC bruts dans
WHERE, libellés ET uniquement dansSELECT; gap = ouverture de la première barre régulière ÷ clôture régulière précédente − 1 ; les données de la séance précédente et de la semaine précédente sont calculées dans la requête, sans jamais être reprises d’un article antérieur. Données de l’entrepôt au 13 juillet 2026.