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

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.

RequêteÉvolution du premarket, 4:00–9:29 am ET : dernier print du premarket vs clôture de mercredi, puis ouverture
TickerClôture précédentePremière barre prémarché (ET)Dernier cours prémarchéVariation prémarché (%)Actions prémarché (k)Gap (%)Ouverture vs prémarché (%)
KLAC221.0304:00239.88.49357.18.14-0.33
LRCX332.9304:00365.049.64359.69.670.02
META603.0304:00584-3.161463.8-3.160
NVDA204.1404:00204.460.163741.70.160
QQQ711.304:00718.320.991652.70.990
SPY745.3104:00747.380.28814.80.270
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 ticker
Essayez cette requête

Le 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.

RequêteCatalyseurs identifiés : articles de presse et dépôts SEC par valeur, de la clôture de mercredi à celle de jeudi
TickerArticles de nuitArticles de séanceDépôts SECDépôts 8-K
AMD1200
KLAC0000
LRCX0000
META4710
MSFT6500
MU6600
NVDA7900
TER0000
WDC0000
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 ticker
Essayez cette requête

0 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.

RequêteSPY / QQQ / DIA / IWM : 9 juillet vs clôture du 8 juillet, heures régulières
TickerClôture précédenteOuverture du jourClôture du jourGap (%)Variation intrajournalière (%)Variation (%)Plus haut du jourPlus bas du jourActions échangées (M)
DIA522.72523.65524.220.180.110.29525.15522.142.7
IWM293.47295.27297.260.610.671.29297.88294.914.4
QQQ711.3718.33723.190.990.681.67724.23715.1227.8
SPY745.31747.35751.640.270.570.85751.97745.5932.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 ticker
Essayez cette requête

Les 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.

RequêteMouvement journalier de SPY / QQQ dans son contexte glissant (~22 séances)
QQQ clôture à clôture (%)Rang du mouvement absolu QQQSéances QQQ comparéesSPY ouverture à clôture (%)Rang du mouvement absolu SPYSéances SPY comparéesPremière séance
1.6710210.578222026-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
    )
)
Essayez cette requête

Largeur de marché : la séance la plus large de la semaine

RequêteBreadth sur titres liquides : part des valeurs en hausse le 9 juillet vs le 8 juillet, filtre de $1M échangés
Valeurs en hausseValeurs en baisseInchangéesTickers liquidesNégociés lors des deux séancesExclus par le filtre de liquiditéValeurs en hausse (%)Valeurs en hausse au 8 juillet (%)
4263163172596611351538571.529.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
)
Essayez cette requête

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 :

RequêteLa semaine à ce stade : mouvements des indices et part des valeurs en hausse pour chaque séance terminée
datevariation SPY (%)variation QQQ (%)Valeurs en hausse (%)valeurs liquides
2026-07-060.871.3962.46189
2026-07-07-0.48-1.8233.96189
2026-07-08-0.310.2529.66162
2026-07-090.851.6771.45973
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 d
Essayez cette requête

Lundi 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.

RequêteHuit paniers sectoriels définis, trois valeurs chacun : clôture du 9 juillet vs veille, équipondérée
secteurvaleursvariation moyenne (%)variation de la moins bonne valeur (%)variation de la meilleure valeur (%)écart avec le meilleur secteur (%)
Semiconductors34.243.25.680
Financials31.881.462.61-2.36
Industrials30.42-11.4-3.82
Healthcare30.22-1.621.41-4.02
Big tech30.17-0.760.93-4.07
Staples3-0.91-1.04-0.75-5.15
Utilities3-0.96-1.28-0.41-5.21
Energy3-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 DESC
Essayez cette requête

Semiconductors 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.

RequêteQuatorze valeurs de semi-conducteurs : gap à l’ouverture vs reste de la séance, 9 juillet
TickerClôture précédenteOuverture du jourClôture du jourGap (%)Variation intrajournalière (%)variation (%)volume en dollars du jour (Md$)
AMD517.26537.26546.663.871.755.6812.15
AVGO388.67402.19401.113.48-0.273.28.34
INTC110.27114.87112.554.17-2.022.079.21
KLAC221.03239.02229.518.14-3.983.842.29
LRCX332.93365.13353.249.67-3.266.13.36
MRVL231.66246.18243.336.27-1.165.044.04
MU949.371016.51990.57.07-2.564.3333.56
NVDA204.14204.46202.760.16-0.83-0.6821.28
SNDK1729.41835.611858.266.141.237.4520.59
SOXL174.84199.81192.4414.28-3.6910.077.8
SOXS4.523.874.07-14.385.17-9.962.18
STX859.68922.28889.797.28-3.523.53.64
TER351.56379.24362.877.87-4.323.220.95
WDC550.71594.14578.327.89-2.665.013.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 ticker
Essayez cette requête

KLAC 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%.

RequêteRésultats : décompte des valeurs dans le vert/rouge le 9 juillet parmi les quatorze, et évolution de NVDA sur deux jours
hausse le 9 juilletbaisse le 9 juillethausse le 8 juilletvariation de NVDA le 9 juillet (%)variation de NVDA le 8 juillet (%)nombre de valeurs comptabilisées
12212-0.683.6614
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
)
Essayez cette requête

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

RequêteHuit mega-caps et valeurs défensives : gap à l’ouverture vs reste de la séance, 9 juillet
TickerClôture précédenteOuverture du jourClôture du jourGap (%)Variation intrajournalière (%)variation (%)volume en dollars du jour (Md$)
AAPL313.26310.51316.17-0.881.820.9311.14
AMZN243.55239.82246.95-1.532.971.46.79
CVX175.92174.63174.05-0.73-0.33-1.060.91
GOOGL361.64354.31358.89-2.031.29-0.766.75
JNJ263.36260.63259.1-1.04-0.59-1.621.25
META603.03583.99631.31-3.168.14.6912.69
MSFT383.05374.45384.33-2.252.640.338.27
TSLA393.92393.99406.560.023.193.2112.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 ticker
Essayez cette requête

Sept 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

RequêteTop 6 par montant échangé, top 4 par nombre d’actions échangées : 9 juillet, heures régulières
classementTickervolume en dollars (Md$)actions (M)prix moyen implicite% du leader du tableau
by dollars tradedMU33.5633.11013.9100
by dollars tradedSPY24.3732.5749.8572.6
by dollars tradedNVDA21.28105.3202.0963.4
by dollars tradedSNDK20.59111871.8261.4
by dollars tradedQQQ20.0427.8720.8659.7
by dollars tradedMETA12.6920.8610.137.8
by shares tradedSOXS2.18558.13.91100
by shares tradedBITO2.79326.28.5558.4
by shares tradedTZA0.651643.9629.4
by shares tradedSNDQ0.34137.42.4724.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 DESC
Essayez cette requête

MU 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).

RequêteActions par tranche de 30 minutes ET, heures régulières, avec % de la plus grosse tranche de la journée
heure ETactions (Md)% du plus grand compartiment
09:301.7991.4
10:001.471.3
10:301.0955.7
11:000.9548.4
11:300.8241.9
12:000.7538
12:300.6432.8
13:000.6432.8
13:300.6633.7
14:000.7136.1
14:300.7437.8
15:000.8443.1
15:301.96100
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_time
Essayez cette requête

Un 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

RequêteFlux options : prints, contrats, % de calls, part du 0DTE vs mercredi, principaux contrats
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 SPYsous-jacent n°1strike n°1type n°1contrats n°1 (k)prix moyen n°1n°1 en 0DTEsous-jacent n°2strike n°2type n°2n°2 en 0DTEsous-jacent n°3strike n°3type n°3n°3 en 0DTEmoneyness n°1
9.9958.8563.265828.738.7751.64SPY751C846.60.5261SPY752C1SPY750C1-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'
Essayez cette requête

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é.

RequêteOptions SPY same-day (0DTE) : contrats selon l’écart du strike au cours de clôture
tranche de strikescontrats call (k)contrats put (k)part des calls (%)
Strike >2% below close1.8146.81.2
Strike 0.5-2% below255.41356.515.8
Strike within 0.5%3768.92563.359.5
Strike 0.5-2% above29.12.791.6
Strike >2% above close0.30.349
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)
Essayez cette requête

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

RequêteNombre de mises à jour NBBO des actions : 9 juillet vs 8 juillet, avec mises à jour des tickers cités (millions)
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.44530.55-27.72.714.351.830.460.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'
Essayez cette requête

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.

RequêteSPY / QQQ / NVDA / TSLA / MU / SNDK / AVGO : spread coté médian RTH en points de base
Tickerspread médian (pb)
SPY0.27
QQQ0.42
NVDA0.99
TSLA2.27
AVGO3.06
MU4.23
SNDK8.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 ASC
Essayez cette requête

Le 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).

RequêteSpread coté moyen RTH de SPY dans son contexte glissant sur un mois
spread moyen du 9 juil. (¢)rang de liquiditéSessions comparéesSession au spread le plus serré (cents)Session au spread le plus large (cents)Première séance
2.07110221.8092.8652026-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
)
Essayez cette requête

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.

RequêteFlux NBBO des options : mises à jour totales vs flux actions, plus segment sur la racine SPY
Options du 9 juill. (Md)Ratio options / actionOptions SPY du 9 juill. (M)
6.918242
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_m
Essayez cette requête

Le 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

RequêteÉtat des prints Treasury : lignes du 9 juillet enregistrées et courbe du 8 juillet (dernières données disponibles à la rédaction)
Lignes de transactions du 9 juill.Date de la dernière transactionDernier taux à 2 ans (%)Dernier taux à 10 ans (%)Dernier taux à 30 ans (%)Dernier spread 2-10 ans (%)
12026-07-094.164.545.050.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'
Essayez cette requête

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

RequêteEx-dividendes, splits, dépôts SEC, attention médiatique
Enregistrements ex-dividendeSplits exécutésRegroupements d’actionsDivisions d’actionsDépôts 424B2Dépôts Form 4Dépôts 8-KTotal des dépôtsArticles d’actualitéÉditeurs d’actualitésTicker de la principale actualitéN de la principale actualitéAvance de la principale actualité sur la suivanteLa principale actualité concerne NVDA
12765160662314929811843NVDA2081
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_nvda
Essayez cette requête

Un 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.

RequêteÀ venir : prochaine séance, calendrier des ex-dividendes, échéances SPY et calendrier du short interest
Date de la prochaine sessionLignes de jours fériés de la prochaine sessionEnregistrements ex-dividende suivantsEx-dividendes des ménages suivantsContrats SPY à la prochaine échéance (M)Contrats SPY à l’échéance mensuelle (M)Dernier règlement des positions shortLignes short du 15 juil.
2026-07-10015301.660.572026-06-150
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'
)
Essayez cette requête

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

RequêteVérification de la séance : première/dernière barre SPY ET, nombre de barres régulières, données des jours fériés, prochaine fermeture
Première barre SPY (ET)Dernière barre SPY (ET)Barres minute SPYBarres de séance régulièreSéances journalièresLignes du jour férié du 9 juil.Date de la prochaine fermetureLibellé de la prochaine fermetureNom de la prochaine fermeture
04:0019:59885390102026-09-07September 7, 2026Labor 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'
Essayez cette requête

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 dans SELECT ; 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.