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

Marché du 9 juillet 2026 : chiffres du jour

Les valeurs des équipements pour semi-conducteurs ont bondi puis reculé, les méga-capitalisations ont rebondi, le marché a viré au vert et NVDA a clôturé dans le rouge.

Jeudi 9 juillet 2026 a concentré sa violence en une minute, avant même la cloche d’ouverture. Les valeurs des équipements pour semi-conducteurs étaient déjà nettement au-dessus de leur clôture de mercredi dans les échanges de premarket, tandis que META se situait -3.16% en dessous ; le print de 9 h 30 a confirmé les deux mouvements. La séance a ensuite partiellement effacé son propre mouvement d’ouverture : les gaps des valeurs des semi-conducteurs se sont réduits, META est entièrement remontée, et le marché a clôturé 71.5% dans le vert, pour la séance la plus large de la semaine. NVDA, dans le vert pendant la débâcle de mardi, a clôturé dans le rouge. Tous les chiffres ci-dessous proviennent d’une requête enregistrée.

Ce qui a déterminé l’ouverture

Les gaps ne se sont pas formés à 9 h 30. Entre 4 h 00 et 9 h 29 ET, le marché du premarket avait déjà réajusté la valorisation de ces titres, et le premier print à l’ouverture s’est établi à ce niveau.

RequêteÉvolution du premarket, 4:00-9:29 am ET : dernier cours coté en 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)écart à l’ouverture (%)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 dans le premarket affichait +8.49% par rapport à la clôture de mercredi, et le titre a ouvert à +8.14% ; LRCX gagnait +9.64% avant une ouverture à +9.67% ; META affichait -3.16% et a ouvert à -3.16%. Voir open_vs_premkt_pct : les six titres ont ouvert à moins de 1 % de leur dernier cours dans le premarket. NVDA fait exception, 0.16% pendant la nuit sur 3741.7 milliers d’actions, soit le volume le plus élevé dans le premarket parmi les six titres, mais la plus faible variation (trading dans le premarket et l’after-hours).

Un catalyseur ? Nos données n’en identifient aucun

Un récapitulatif doit expliquer ce qui a fait bouger une action. Ici, nos tableaux ne donnent aucune indication : le flux d’actualités et l’index des dépôts auprès de la SEC sont tous deux vides pour les quatre titres ayant enregistré les plus importants gaps à l’ouverture.

RequêteCatalyseurs identifiés : articles de presse et dépôts auprès de la SEC par valeur, de la clôture de mercredi à celle de jeudi
tickerarticles de nuitarticles de séancedéclarations auprès de la SECdéclarations 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 publiés pendant la nuit, 0 en séance, 0 dépôts auprès de la SEC pour KLAC ; même ligne vide pour LRCX, TER et WDC. NVDA, qui n’a jamais ouvert sur un gap, a fait l’objet de la couverture la plus abondante des neuf titres (7 articles publiés pendant la nuit, 9 en séance) et a clôturé dans le rouge. Il s’agit de l’attention d’un seul flux, pas de celle de l’ensemble des médias. Une ligne vide ne prouve pas qu’aucun événement n’a eu lieu. Mais rien dans nos données n’identifie de cause, et « cause inconnue » est une réponse complète.

Le tableau de bord

Chaque variation compare la dernière barre minute de la séance régulière du 9 juillet avec celle de mercredi. Les lignes sont classées par ordre alphabétique afin que chaque ETF conserve une position fixe.

RequêteSPY / QQQ / DIA / IWM : 9 juillet vs clôture du 8 juillet, heures normales
tickerclôture précédenteouverture du jourclôture du jourécart à l’ouverture (%)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 arrive en tête à +1.67%, avec un écart de +0.99% et une progression de +0.68%. L’ETF de petites capitalisations IWM gagne +1.29%, contre +0.85% pour SPY, à $751.64. DIA ferme la marche à +0.29%. Les valeurs de croissance en tête, le Dow en retrait.

La séance était-elle inhabituelle ?

À l’échelle des indices, non : la variation close-over-close de QQQ, de +1.67%, se classait 10 sur 21 séances consécutives selon son ampleur. Celle de SPY, mesurée entre l’ouverture et la clôture, se classait 8 sur 22. La volatilité s’est concentrée entre les groupes de la séance.

RequêteMouvement journalier de SPY / QQQ dans son contexte récent (~22 séances)
QQQ, clôture à clôture (%)rang du mouvement absolu de QQQséances QQQ comparéesSPY, ouverture à clôture (%)rang du mouvement absolu de 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 hausses le 9 juillet vs le 8 juillet, filtre de $1M échangés
valeurs en haussevaleurs en baissevaleurs inchangéestickers liquideséchangés lors des deux séancesexclus par le filtre de liquiditévaleurs en hausse (%)valeurs en hausse le 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 valeurs en baisse, soit une proportion de valeurs en hausse de 71.5% après 29.6% mercredi, selon le même calcul et avec le même filtre de $1M échangé (5385 des 11351 valeurs sont en dessous de ce seuil). Par rapport au reste de la semaine :

RequêteLa semaine à ce stade : mouvements des indices et part des hausses 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 avait commencé avec 62.4% valeurs en hausse. Mardi et mercredi, ce nombre est tombé à 33.9% et 29.6%. Le 71.4% de jeudi est le plus élevé des quatre séances terminées de la semaine (le vendredi 10 juillet est postérieur à cette récapitulation). QQQ a suivi la même trajectoire : -1.82% mardi, 0.25% mercredi, +1.67% jeudi.

Au-delà des semi-conducteurs : comment le reste du marché a évolué

La breadth indique que la plupart des actions ont progressé ; elle ne dit pas que le rally était homogène. Ci-dessous : un panier équipondéré de trois valeurs liquides par secteur, le même panier prédéfini chaque jour.

RequêteHuit paniers sectoriels définis, trois valeurs chacun : variation clôture-sur-clôture du 9 juillet, pondération égale
secteurvaleursvariation moyenne (%)variation de la pire 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 mené à +4.24%, tandis que Energy a fermé la marche à -2.01%, soit un spread de -6.25 points (gap_to_best_sector_pct). Les financières ont constitué le panier hors semi-conducteurs le plus performant, à +1.88% ; les biens de consommation de base (-0.91%), les utilities (-0.96%) et l’énergie ont terminé dans le rouge. Les grandes valeurs technologiques (AAPL, MSFT et GOOGL) ont affiché en moyenne une hausse modeste de +0.17%. Le plus important retournement entre l’ouverture et la clôture, le mouvement de +8.1% de META, ne relève d’aucun des huit paniers ; dans celui-ci, l’ouverture de MSFT à -2.25%, suivie d’une clôture à +0.33%, a constitué l’aller-retour le plus marqué.

L’ouverture des semi-conducteurs et le repli qui a suivi

gap_pct correspond à l’écart entre l’ouverture et la clôture de mercredi ; intraday_pct couvre le reste de la séance. Les lignes sont classées par ordre alphabétique.

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 jourécart à l’ouverture (%)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 de reperdre -3.26% ; TER (+7.87%) et WDC (+7.89%) ont suivi la même trajectoire. MU a ouvert avec un gap de +7.07%, a reculé de -2.56%, mais a tout de même clôturé en hausse de +4.33% à 33.56B, le titre le plus traité de la séance pour la deuxième fois consécutive (récapitulatif de mercredi revient sur la première séance). AMD et SNDK ont fait exception : AMD a gagné 1.75% après une ouverture à +3.87%, pour terminer à +5.68%, tandis que SNDK, déjà en hausse de +6.14% à l’ouverture, a gagné encore 1.23% pour clôturer à +7.45%. Et NVDA : une ouverture à +0.16%, sans gap, avant une clôture à -0.68%.

RequêteRésultats : décompte des valeurs en hausse/baisse le 9 juillet parmi les quatorze, et évolution de NVDA sur deux jours
hausse le 9 juil.baisse le 9 juil.hausse le 8 juil.variation NVDA le 9 juil. (%)variation NVDA le 8 juil. (%)nombre de valeurs
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 correspondent à l’effet inverse, structurel lors d’une séance haussière, ainsi qu’à NVDA à -0.68%, au lendemain d’une clôture à +3.66%. Le titre de semi-conducteurs le plus important en termes de capitalisation a manqué la fête de son propre secteur, tout en concentrant la plus forte couverture médiatique de la séance.

L’autre face : les mega-caps ont ouvert en baisse avant de remonter

RequêteHuit méga-capitalisations et valeurs défensives : gap à l’ouverture vs reste de la séance, 9 juillet
tickerclôture précédenteouverture du jourclôture du jourécart à l’ouverture (%)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 cours de clôture de mercredi. La suite les distingue. META a ouvert en baisse de -3.16% avant de remonter de +8.1% et de clôturer à 4.69%, soit le retournement entre l’ouverture et la clôture le plus marqué de la page. MSFT a ouvert en baisse de -2.25% avant de revenir à +0.33%. AMZN (+1.4%) et AAPL (+0.93%) ont suivi la même trajectoire. TSLA n’a pas subi de gap et a progressé jusqu’à +3.21%. Les titres restés dans le rouge n’étaient pas des valeurs de croissance : GOOGL (-0.76%), CVX (-1.06%), JNJ (-1.62%). Pourquoi les actions ouvrent-elles avec un gap overnight explique le mécanisme.

Où les capitaux se sont échangés

RequêteTop 6 par montant échangé, top 4 par nombre d’actions échangées : 9 juillet, heures normales
classementtickervolume en dollars (Md$)actions (M)prix moyen implicite% du leader du classement
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 occupe ainsi deux des quatre premières places. Le classement en nombre d’actions raconte une autre histoire : SOXS arrive en tête avec 558.1M d’actions, à un cours implicite de $3.91 (volume relatif).

RequêteActions par tranche de 30 minutes ET, heures normales, prints de l’enchère de clôture dans la dernière tranche, avec % du maximum quotidien
heure ETactions (Md)% du plus grand compartiment
09:301.7958.3
10:001.445.4
10:301.0935.5
11:000.9530.9
11:300.8226.7
12:000.7524.3
12:300.6420.9
13:000.6420.9
13:300.6621.5
14:000.7123
14:300.7424.1
15:000.8427.5
15:303.07100
Le SQL exact derrière chaque chiffre
SELECT
    et_time,
    round(sum(shares) / 1e9, 2) AS shares_bn,
    round(100 * sum(shares) / max(sum(shares)) OVER (), 1) AS pct_of_biggest_bucket
FROM
(
    SELECT
        formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
        toFloat64(volume) AS shares
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
    UNION ALL
    SELECT
        '15:30' AS et_time,
        toFloat64(size) AS shares
    FROM global_markets.stocks_trades
    WHERE sip_timestamp >= '2026-07-09 20:00:00' AND sip_timestamp < '2026-07-09 20:15:00'
      AND has(conditions, 8)
)
GROUP BY et_time
ORDER BY et_time
Essayez cette requête

Une courbe en U classique : le volume de la phase d’ouverture a atteint 1.79B d’actions (58.3% du pic), avant de retomber à 0.64B à la mi-séance. La demi-heure de fixing de clôture a été la plus active de la journée, avec 3.07B d’actions. Même lors d’une séance dont l’activité s’est concentrée à l’ouverture, le volume a finalement atteint son maximum à la clôture.

La bande des options

RequêteFlux options : prints, contrats, % calls, part 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 bande a enregistré 9.99M transactions exécutées et 58.85M contrats, contre 63.26M mercredi. Les calls représentaient 58% du volume et la part des options 0DTE est tombée à 28.7%, contre 38.7%. Les trois contrats les plus actifs étaient tous des calls SPY à échéance le jour même : le 751C (846.6K contrats, moyenne de $0.526), le 752C et le 750C. Ils formaient une échelle autour de la clôture de SPY à $751.64 (options 0DTE présente ce produit).

Couverture ou pari ? Une couverture achète des strikes éloignés du cours ; un pari achète le côté recherché.

RequêteOptions SPY du jour (0DTE) : contrats selon l’écart du strike au cours de clôture
tranche de strikecontrats 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 bande des options à échéance le jour même se concentrait autour du cours : 3768.9k calls et 2563.3k puts à moins d’un demi-pour cent de la clôture (59.5% calls). Sur les ailes, la répartition dépendait du sens. Sous la clôture, on comptait 1356.5k puts contre 255.4k calls (les calls représentaient 1.2% du volume plus bas) ; au-dessus, les calls représentaient 91.6% d’un compartiment beaucoup plus réduit de 29.1k contrats. Le volume sur les ailes se concentrait sur les strikes baissiers, là où les investisseurs achètent une protection : une échelle autour du cours, et non à la hausse.

Le carnet de cotations

RequêteNombre de mises à jour NBBO sur les actions : 9 juillet vs 8 juillet, avec mises à jour des tickers identifiés (millions)
mises à jour du 9 juil. (M)mises à jour du 8 juil. (M)variation jour sur jour (%)mises à jour SPY du 9 juil. (M)mises à jour QQQ du 9 juil. (M)mises à jour NVDA du 9 juil. (M)mises à jour TSLA du 9 juil. (M)mises à jour MU du 9 juil. (M)
383.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 de l’action, soit -27.7% contre mercredi. La volatilité s’est manifestée dans les niveaux de prix, pas dans le renouvellement des meilleures offres et demandes. QQQ arrive en tête des tickers cités avec 4.35M mises à jour, devant les 2.71M de SPY et les 1.83M de NVDA.

RequêteSPY / QQQ / NVDA / TSLA / MU / SNDK / AVGO : spread coté médian en 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, contre 0.42 pour QQQ et 0.99 pour NVDA : des niveaux ordinaires. Dans le haut de la distribution, MU atteint 4.23 points de base et SNDK 8.79 points de base (le spread bid-ask est le coût mesuré ici).

RequêteSpread coté moyen de SPY en RTH dans son contexte sur le mois précédent
spread moyen du 9 juil. (¢)rang de resserrementséances comparéesséance la plus resserrée (cents)séance la 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êteTape NBBO des options : mises à jour totales vs tape actions, plus segment sur la racine SPY
options du 9 juillet (Md)ratio options/actionsoptions SPY du 9 juillet (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 des actions. La seule racine SPY en a représenté 242M.

Taux : le print du 9 juillet

RequêteÉtat des cotations du Trésor : lignes du 9 juillet enregistrées et courbe du 8 juillet (dernière disponible à la rédaction)
lignes de transactions du 9 juilletdate de la dernière transactiondernier taux à 2 ans (%)dernier taux à 10 ans (%)dernier taux à 30 ans (%)dernier spread 2s10s (%)
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) : taux à deux ans 4.16%, taux à dix ans 4.54%, taux à trente ans 5.05%, spread 2s10s de 0.38 points. Le taux à deux ans s’est détendu par rapport au niveau du 8 juillet, tandis que le long terme est resté stable.

Le calendrier derrière la séance

RequêteDétachements de dividendes, splits, dépôts auprès de la SEC, attention médiatique
enregistrements ex-dividendesplits exécutésreverse splitsforward splitsdépôts 424B2dépôts Form 4dépôts 8-Ktotal des dépôtsarticles d’actualitééditeurs d’actualitésticker de l’actualité principalen de l’actualité principaleavance de l’actualité principale sur la suivantel’actualité principale 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 pour une ouverture inhabituelle : 127 enregistrements ex-dividende, 5 reverse splits, 1 forward split, 2981 documents déposés auprès de la SEC (623 formulaires 4, 606 formulaires 424B2, 149 formulaires 8-K). Le flux a recensé 184 articles publiés par 3 éditeurs ; le ticker le plus couvert était NVDA, avec 20 articles, soit 8 de plus que le suivant.

À l’ordre du jour

D’après nos propres tableaux, les faits concernant la prochaine séance, et non des prévisions.

RequêteÀ venir : prochaine séance, calendrier des détachements de dividendes, échéances SPY et calendrier des positions short
date de la prochaine séancelignes de jours fériés de la prochaine séanceenregistrements ex-dividende à venirex-dividende des ménages à venircontrats SPY à la prochaine échéance (M)contrats SPY à l’échéance mensuelle (M)dernier règlement 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, 0 jours fériés s’y opposent : un vendredi normal. 153 sociétés détacheront leur dividende ce matin-là, 0 provenant de notre liste de valeurs connues du grand public. L’expiration de vendredi sur le SPY est déjà la plus importante à terme négociée, avec 1.66M contrats au 9 juillet contre 0.57M pour l’échéance mensuelle de juillet. Point de situation sur les positions vendeuses : dernier règlement disponible 2026-06-15, 0 lignes encore non déposées pour la mi-juillet ; la FINRA publie ces données environ huit jours ouvrés après le règlement (pourquoi les positions vendeuses accusent deux semaines de retard).

La séance, vérifiée

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 du jourlignes 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 barre de SPY à 04:00 ET, dernière à 19:59 ET, 390 bougies d’une minute en séance régulière, aucune ligne de jour férié. Prochaine fermeture : Labor Day, September 7, 2026.

FAQ

Que s’est-il passé sur le marché actions le 9 juillet 2026 ?

Tous les ETF indiciels ont clôturé en hausse : QQQ +1.67%, IWM +1.29%, SPY +0.85%, DIA +0.29%, 71.5% des valeurs liquides en hausse. Les valeurs de l’équipement pour la fabrication de semi-conducteurs ont ouvert en gap haussier avant de refluer. Les mega-caps ont ouvert en gap baissier avant de se redresser.

Pourquoi les valeurs de l’équipement pour semi-conducteurs comme KLAC et LRCX ont-elles bondi le 9 juillet 2026 ?

Nos données n’identifient aucune raison. Aucun article ni dépôt auprès de la SEC ne concerne KLAC, LRCX, TER ou WDC entre la clôture de mercredi et celle de jeudi. Le mouvement était déjà intégré dans les cours avant l’ouverture, avant 9 h 30 ET.

Pourquoi NVDA a-t-il baissé alors que le secteur des semi-conducteurs progressait ?

NVDA a clôturé à -0.68%, tandis que 12 des quatorze valeurs du secteur ont clôturé dans le vert. Le titre n’a jamais ouvert en gap (0.16% à l’ouverture) et a été le ticker le plus couvert, avec 20 articles. Il s’agit d’un niveau record ; la cause n’apparaît pas dans ces données.

Le 9 juillet 2026 a-t-il été une séance inhabituelle pour le marché ?

Pas au niveau des indices. Le mouvement de QQQ se classait 10 sur 21 séances précédentes selon son ampleur. Le spread moyen de SPY s’élevait à 10 de 22. La dispersion sous-jacente était de -6.25 points entre le panier sectoriel le plus performant et le moins performant.

Notes méthodologiques

Les heures de séance habituelles sont 13:30–20:00 UTC (9 h 30–16 h 00 ET) ; le volet de préouverture couvre 08 h 00–13 h 30 UTC. Les huit paniers sectoriels sont constitués sur mesure et équipondérés, avec trois valeurs liquides chacun, tous les tickers étant listés dans le SQL du volet concerné. Il s’agit d’une méthode déclarée, et non d’une classification de fournisseur : trois valeurs parlent d’elles-mêmes, pas au nom de tout un secteur. Le volet des catalyseurs ne recense que notre flux d’actualités et l’index EDGAR.

Notes méthodologiques complètes

Les volets par ticker sont classés par ordre alphabétique, de sorte que chaque référence dans le texte renvoie à une ligne fixe ; les classements sont ordonnés par valeur, et chaque affirmation de position est délimitée. Le print du Trésor et le règlement de la position short à la mi-juillet sont limités à zéro ligne ; leur arrivée entraînera la réécriture de cet article.

Méthodologie

  • Sources : le SQL de chaque panneau nomme ses propres tables, agrégats à la minute, caches NBBO des actions et des options, transactions sur options, flux d’actualités, index EDGAR, dividendes, positions short, jours fériés et rendements des Treasuries.
  • La demi-heure de clôture du panneau des volumes inclut les prints de l’enchère de clôture. Les barres à une minute excluent tous les prints d’enchère. Le panneau à 30 minutes ajoute donc à son dernier compartiment chaque transaction portant la condition de vente du print de clôture, horodatée de 16 h 00 à 16 h 15 ET sur le consolidated tape.
  • Conventions : littéraux UTC bruts dans WHERE, libellés ET uniquement dans SELECT ; gap = ouverture de la première barre régulière ÷ clôture régulière précédente − 1 ; les données de la séance précédente et de la semaine précédente sont calculées dans la requête, sans jamais être reprises d’un article antérieur. Données de l’entrepôt au 13 juillet 2026.