Marché du 9 juillet 2026 : la séance en chiffres
Les équipementiers des 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 l’ouverture. Les valeurs liées aux équipements pour semi-conducteurs s’affichaient déjà nettement au-dessus de la clôture de mercredi dans les échanges de prémarché, 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 annulé son propre mouvement d’ouverture : les gaps des valeurs liées aux semi-conducteurs se sont réduits, META est entièrement remontée, et le marché a terminé 71.5% dans le vert, lors de la séance la plus largement haussière de la semaine. NVDA, dans le vert pendant la déroute de mardi, a clôturé dans le rouge. Tous les chiffres ci-dessous proviennent d’une requête enregistrée.
Comment s’est formée l’ouverture
Les gaps ne se sont pas formés à 9 h 30. Entre 4 h 00 et 9 h 29 ET, le tape du premarket avait déjà réévalué ces valeurs, et le premier print de la séance est arrivé à 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) | Gap (%) | 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 en premarket était à +8.49% par rapport à la clôture de mercredi, et le titre a ouvert à +8.14% ; LRCX a progressé de +9.64% avant d’ouvrir à +9.67% ; META a affiché -3.16% et ouvert à -3.16%. Voir open_vs_premkt_pct : les six titres ont ouvert à moins de un pour cent de leur dernier cours en premarket. NVDA fait exception, 0.16% pendant la nuit sur 3741.7 milliers d’actions, soit le volume le plus élevé en premarket parmi les six titres, mais la variation la plus faible (le trading en premarket et after-hours).
Y a-t-il eu un catalyseur ? Nos données n’en identifient aucun
Un récapitulatif doit expliquer ce qui a fait bouger une action. Ici, nos tableaux n’identifient rien : le flux d’actualités et l’index des filings auprès de la SEC sont tous deux vides pour les quatre valeurs ayant enregistré les gaps les plus marqués.
| Ticker | Articles de nuit | Articles de séance | Dépôts SEC | Dépôts 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 durant la nuit, 0 en séance et 0 filings auprès de la SEC pour KLAC ; même ligne vide pour LRCX, TER et WDC. NVDA, qui n’a jamais enregistré de gap, a fait l’objet de la couverture la plus importante des neuf valeurs (7 articles durant la nuit, 9 en séance) et a clôturé dans le rouge. Il s’agit de l’attention accordée par 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 » constitue 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 | Gap (%) | 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 a pris la tête à +1.67%, avec un écart de +0.99%, puis une progression de +0.68%. L’ETF de petites capitalisations IWM a gagné +1.29%, SPY +0.85% à $751.64, tandis que DIA fermait la marche à +0.29%. Les valeurs de croissance en tête, le Dow en dernier.
La séance était-elle inhabituelle ?
Au niveau des indices, non : la variation close-over-close de QQQ, de +1.67%, se classait 10 sur 21 séances précédentes selon son ampleur, tandis que la variation open-to-close de SPY 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 QQQ | Séances QQQ comparées | SPY ouverture à clôture (%) | Rang du mouvement absolu 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 | Inchangées | Tickers liquides | Négociés lors des deux séances | Exclus par le filtre de liquidité | Valeurs en hausse (%) | Valeurs en hausse au 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 en baisse, soit une part de valeurs en hausse de 71.5% après 29.6% mercredi, avec le même calcul et le même filtre à $1M de transactions (5385 des 11351 valeurs passent en dessous). 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 a commencé avec 62.4% valeurs en hausse. Mardi et mercredi sont tombés à 33.9% et 29.6%. Le 71.4% de jeudi est le plus élevé des quatre séances terminées de la semaine (vendredi 10 juillet est postérieur à ce récapitulatif). QQQ a suivi la même tendance : -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 signifie pas que le rally a été homogène. Ci-dessous : un panier équipondéré de trois valeurs liquides par secteur, avec le même panier défini chaque jour.
| secteur | valeurs | variation moyenne (%) | variation de la moins bonne 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 signé la meilleure performance à +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, puis l’effacement des gains
gap_pct correspond à l’ouverture par rapport à la clôture de mercredi ; intraday_pct correspond au 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 | Gap (%) | 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 d’effacer -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é à +4.33% sur 33.56B, la plus grosse capitalisation du tape pour la deuxième séance consécutive (compte rendu de mercredi revient sur la première). AMD et SNDK ont fait exception : AMD a gagné 1.75% après une ouverture à +3.87%, pour finir à +5.68%, tandis que SNDK, déjà à +6.14% à l’ouverture, a encore gagné 1.23% pour clôturer à +7.45%. Et NVDA : une ouverture à +0.16%, sans gap, puis une clôture à -0.68%.
| hausse le 9 juillet | baisse le 9 juillet | hausse le 8 juillet | variation de NVDA le 9 juillet (%) | variation de NVDA le 8 juillet (%) | nombre de valeurs comptabilisées |
|---|---|---|---|---|---|
| 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 correspondaient à l’inverse, un mouvement structurel lors d’une séance haussière, tandis que NVDA affichait -0.68%, au lendemain d’une clôture à +3.66%. Le plus gros titre de semi-conducteurs du tape est resté à l’écart de la célébration de son propre secteur, tout en faisant l’objet de la couverture médiatique la plus intense.
L’autre versant : les mega-caps ont ouvert en baisse avant de remonter
| Ticker | Clôture précédente | Ouverture du jour | Clôture du jour | Gap (%) | 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 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 remonter à +0.33% ; AMZN (+1.4%) et AAPL (+0.93%) ont suivi la même trajectoire. TSLA n’a pas ouvert sur un 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 sur un gap explique le mécanisme.
Où les capitaux se sont négociés
| classement | Ticker | volume en dollars (Md$) | actions (M) | prix moyen implicite | % du leader du tableau |
|---|---|---|---|---|---|
| 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 occupait deux des quatre premières places. Le classement en nombre d’actions raconte une autre histoire : SOXS arrivait en tête avec 558.1M actions, pour un prix implicite de $3.91 (volume relatif).
| heure ET | actions (Md) | % du plus grand compartiment |
|---|---|---|
| 09:30 | 1.79 | 91.4 |
| 10:00 | 1.4 | 71.3 |
| 10:30 | 1.09 | 55.7 |
| 11:00 | 0.95 | 48.4 |
| 11:30 | 0.82 | 41.9 |
| 12:00 | 0.75 | 38 |
| 12:30 | 0.64 | 32.8 |
| 13:00 | 0.64 | 32.8 |
| 13:30 | 0.66 | 33.7 |
| 14:00 | 0.71 | 36.1 |
| 14:30 | 0.74 | 37.8 |
| 15:00 | 0.84 | 43.1 |
| 15:30 | 1.96 | 100 |
Le SQL exact derrière chaque chiffre
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket
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'
GROUP BY et_time
ORDER BY et_timeUn U classique : le volume de l’ouverture atteignait 1.79B actions, soit 91.4% du plus haut, avant un creux à la mi-journée de 0.64B. La demi-heure de la mise aux enchères de clôture a enregistré le volume le plus élevé de la journée, à 1.96B. Même lors d’une séance dont l’activité s’est concentrée à l’ouverture, le volume a terminé au plus haut à la clôture.
La tape 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 tape a recensé 9.99M prints et 58.85M contrats. Les calls représentaient 58% du volume, contre 63.26M mercredi. La part des 0DTE est passée à 28.7%, contre 38.7% auparavant. Les trois contrats les plus actifs étaient tous des calls SPY à échéance le jour même : le 751C (846.6K contrats, à $0.526 en moyenne), 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é souhaité.
| tranche de strikes | 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 tape du jour même se concentrait autour du cours d’exercice : 3768.9k calls et 2563.3k puts se situaient dans une bande de 0,5 % autour de la clôture (59.5% calls). Les ailes se répartissaient selon la direction. Sous la clôture, elles comptaient 1356.5k puts contre 255.4k calls (les calls représentaient 1.2% du volume plus bas). Au-dessus de la clôture, les calls représentaient 91.6% d’un compartiment bien plus réduit de 29.1k contrats. Le volume des ailes se concentrait sur les strikes baissiers, où les investisseurs achètent une protection : une échelle at-the-money, et non une échelle haussière.
Le carnet de cotations
| mises à jour du 9 juil. (M) | mises à jour du 8 juil. (M) | variation quotidienne (%) | mises à jour du SPY le 9 juil. (M) | mises à jour du QQQ le 9 juil. (M) | mises à jour de NVDA le 9 juil. (M) | mises à jour de TSLA le 9 juil. (M) | mises à jour de MU le 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 actions, soit -27.7% par rapport à mercredi. La violence s’est exprimée dans les niveaux de prix, pas dans la rotation au meilleur bid/ask. QQQ a dominé les 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, celui de QQQ à 0.42 et celui de NVDA à 0.99 : des niveaux ordinaires. Dans le haut de la distribution, MU affichait 4.23 points de base et SNDK 8.79 points de base (le spread bid-ask correspond au coût mesuré ici).
| spread moyen du 9 juil. (¢) | rang de liquidité | Sessions comparées | Session au spread le plus serré (cents) | Session au spread le 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 juill. (Md) | Ratio options / action | Options SPY du 9 juill. (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 actions. Le seul sous-jacent SPY en représentait 242M.
Taux : le print du 9 juillet
| Lignes de transactions du 9 juill. | Date de la dernière transaction | Dernier taux à 2 ans (%) | Dernier taux à 10 ans (%) | Dernier taux à 30 ans (%) | Dernier spread 2-10 ans (%) |
|---|---|---|---|---|---|
| 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) : le 2 ans à 4.16%, le 10 ans à 4.54%, le 30 ans à 5.05%, le spread 2s10s à 0.38 points. Le 2 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 | Regroupements d’actions | Divisions d’actions | 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 la principale actualité | N de la principale actualité | Avance de la principale actualité sur la suivante | La principale actualité 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 derrière une ouverture inhabituelle : 127 événements ex-dividende, 5 reverse splits, 1 forward split, 2981 documents déposés auprès de la SEC (623 Form 4, 606 424B2, 149 8-K). Le flux a recensé 184 articles publiés par 3 médias ; le ticker le plus couvert est 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 session | Lignes de jours fériés de la prochaine session | Enregistrements ex-dividende suivants | Ex-dividendes des ménages suivants | Contrats SPY à la prochaine échéance (M) | Contrats SPY à l’échéance mensuelle (M) | Dernier règlement des positions 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, avec 0 jours fériés en regard : un vendredi normal. 153 sociétés détacheront leur dividende ce matin-là, 0 issues de notre liste de valeurs connues du grand public. L’échéance de vendredi sur le SPY est la plus importante déjà négociée sur l’échéance à terme, avec 1.66M contrats le 9 juillet, contre 0.57M sur l’échéance mensuelle de juillet. Point de suivi de la position vendeuse : le dernier règlement disponible date du 2026-06-15, et 0 lignes n’ont pas encore été 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 ont 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 journalières | 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 bougie SPY à 04:00 ET, dernière à 19:59 ET, 390 barres d’une minute en séance régulière, aucune ligne correspondant à un 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%, et 71.5% des valeurs liquides ont progressé. Les valeurs des équipements pour semi-conducteurs ont ouvert en gap haussier avant de reculer. Les mega-caps ont ouvert en gap baissier avant de se redresser.
Pourquoi les valeurs des équipements 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-elle reculé alors que le secteur des semi-conducteurs progressait ?
NVDA a clôturé à -0.68%, tandis que 12 des quatorze valeurs du secteur des semi-conducteurs 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 et une cooccurrence dans les données disponibles. La cause ne figure pas dans ces données.
Le 9 juillet 2026 a-t-il été une journée inhabituelle pour le marché ?
Pas au niveau des indices : le mouvement de QQQ se classait 10 sur 21 séances consécutives selon son amplitude, tandis que le spread moyen de SPY se situait à 10 sur 22. La dispersion sous-jacente était de -6.25 points entre le panier sectoriel le plus performant et le moins performant.
Notes méthodologiques sur les données
Les horaires réguliers sont compris entre 13:30 et 20:00 UTC (9 h 30–16 h 00 ET) ; le panneau de préouverture utilise la plage 08 h 00–13 h 30 UTC. Les huit paniers sectoriels sont constitués sur mesure et équipondérés. Chacun comprend trois valeurs liquides, et chaque ticker figure dans le SQL du panneau concerné. Il s’agit d’une méthode déclarée, et non d’une classification fournie par un vendor : trois valeurs ne représentent qu’elles-mêmes, pas un secteur entier. Le panneau des catalyseurs comptabilise uniquement notre flux d’actualités et l’index EDGAR.
Notes méthodologiques complètes
Les panneaux par ticker sont classés par ordre alphabétique. Chaque référence dans le texte renvoie donc à une ligne fixe. Les classements sont ordonnés selon la valeur, et chaque affirmation de position est limitée aux données disponibles. Le print du Trésor et le règlement des positions short de la mi-juillet sont limités à zéro ligne. Leur arrivée entraînera une réécriture de cet article.
Méthodologie
- Sources : le SQL de chaque panneau indique ses propres tables, les agrégats à la minute, les caches NBBO des actions et des options, les transactions sur options, notre flux d’actualités, l’index EDGAR, les dividendes, l’intérêt vendeur, les jours fériés et les rendements des Treasuries.
- Conventions : les littéraux UTC bruts sont utilisés dans
WHERE, tandis que les libellés ET figurent uniquement dansSELECT; le gap correspond à l’ouverture de la première barre de la séance régulière divisée par la clôture régulière précédente, moins un ; les données de la séance précédente et de la semaine précédente sont calculées dans la requête et ne sont jamais reprises d’un article antérieur. Entrepôt de données au 13 juillet 2026.