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

Résumé du marché 9 juillet 2026 chiffres

Les équipements de puces ont fait un gap avant de reculer. Les mega-caps ont rebondi après un gap baissier. Le tape finit vert mais NVDA clôture en baisse.

Le jeudi 9 juillet 2026 a connu une forte volatilité en une seule minute, avant même l'ouverture du marché. Les valeurs du secteur des semi-conducteurs affichaient déjà des niveaux bien supérieurs à la clôture de mercredi lors des échanges en premarket, tandis que META se situait à -3.16% en dessous. Les données de 9h30 ont confirmé ces deux tendances. La séance a ensuite partiellement annulé ses mouvements d'ouverture : les écarts sur les puces se sont résorbés, META a retrouvé son niveau initial, et le marché a terminé à 71.5% en territoire vert — la séance la plus étendue de la semaine. NVDA, qui était en hausse depuis le krach de mardi, a clôturé en baisse. Chaque chiffre ci-dessous provient d'une requête stockée.

Contexte de l'ouverture

Les gaps ne se sont pas formés à 9h30. Entre 4h00 et 9h29 ET, le tape en premarket avait déjà réévalué ces titres, et le cours d'ouverture s'est établi à ce niveau.

RequêteTrajectoire premarket, 4h00-9h29 ET : dernier print premarket vs clôture du mercredi, et ouverture suivante
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

La dernière cotation de KLAC en premarket affichait +8.49% par rapport à la clôture de mercredi, et le titre a ouvert à +8.14% ; LRCX a progressé de 9.64% pour une ouverture à +9.67% ; META a affiché -3.16% et a ouvert à -3.16%. Consultez open_vs_premkt_pct : les six titres ont ouvert à moins d'un pour cent de leur dernier prix en premarket. NVDA est l'exception — 0.16% durant la nuit sur 3741.7k actions, soit le volume le plus élevé en premarket parmi les six titres et le mouvement le plus faible (le premarket et le trading after-hours).

Y avait-il un catalyseur ? Nos données n'en indiquent aucun

Un récapitulatif doit expliquer ce qui a fait bouger un titre. Ici, nos tableaux n'indiquent rien : le flux d'actualités et l'index des documents SEC sont tous deux vides pour les quatre noms ayant connu les plus forts gaps.

RequêteCatalyseurs identifiés : articles de presse et filings SEC par valeur, de la clôture du mercredi à celle du jeudi
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

0 articles en overnight, 0 en intraday, 0 documents SEC pour KLAC — même ligne vide pour LRCX, TER et WDC. NVDA, qui n'a jamais fait de gap, a bénéficié de la couverture la plus importante parmi les neuf titres (7 en overnight, 9 en intraday) et a clôturé en baisse. Il s'agit de l'attention d'un seul flux d'informations, pas des médias mondiaux, et l'absence de ligne n'est pas une preuve de l'absence d'événement — mais rien dans nos données ne nomme une cause, et « cause inconnue » est une réponse complète.

Le tableau de bord

Chaque variation compare la dernière bougie de la session régulière du 9 juillet à celle de mercredi ; les lignes sont classées par ordre alphabétique, chaque ETF conservant ainsi une position fixe.

RequêteSPY / QQQ / DIA / IWM — 9 juillet vs clôture du 8 juillet, sessions régulières
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

Les quatre indices ont terminé en hausse. QQQ a progressé de +1.67% — soit un gap de +0.99% suivi d'une hausse de +0.68% ; le small-cap IWM a pris +1.29%, le SPY +0.85% pour atteindre 751.64, et le DIA a terminé en retrait à +0.29%. Les valeurs de croissance sont en tête, le Dow en queue de peloton.

La journée était-elle inhabituelle ?

Au niveau des indices, non : la clôture de QQQ à +1.67% par rapport à la veille représentait la 10 des 21 sessions précédentes en termes de variation. Pour SPY, la variation de l'ouverture à la clôture était de 8 des 22. La volatilité s'est concentrée entre les différents groupes de la journée.

RequêteMouvement journalier SPY / QQQ en contexte trailing (~22 sessions)
Le SQL exact derrière chaque chiffre
SELECT
    round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-09')), 2) AS qqq_close_over_close_pct,
    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-09'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-09'))) + 1 AS qqq_abs_move_rank,
    countIf(ticker = 'QQQ' AND isFinite(cc_pct)) AS qqq_sessions_compared,
    round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-09')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-09'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-09'))) + 1 AS spy_abs_move_rank,
    countIf(ticker = 'SPY') AS spy_sessions_compared,
    toString(min(d)) AS first_session
FROM (
    SELECT ticker, d,
           if(isFinite(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1),
              (close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100, NULL) AS cc_pct,
           oc_pct
    FROM (
        SELECT ticker, toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMax(toFloat64(close), window_start) AS close_px,
               (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('SPY', 'QQQ')
          AND window_start >= toDateTime('2026-06-08 13:30:00')
          AND window_start < toDateTime('2026-07-10 00:00:00')
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker, d
    )
)

Largeur de marché : la session la plus étendue de la semaine

RequêteLargeur liquid-tape : part des advancers le 9 juillet vs 8 juillet, filtre de transaction de 1M $
Le SQL exact derrière chaque chiffre
SELECT
    countIf(close_9 > close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS advancers,
    countIf(close_9 < close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS decliners,
    countIf(close_9 = close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS unchanged,
    countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000) AS liquid_tickers,
    countIf(close_8 > 0 AND close_9 > 0) AS traded_both_sessions,
    countIf(close_8 > 0 AND close_9 > 0) - countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(close_9 > close_8 AND close_8 > 0 AND dv_9 >= 1000000) / countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000), 1) AS advancer_pct,
    round(100.0 * countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) / countIf(close_8 > 0 AND close_7 > 0 AND dv_8 >= 1000000), 1) AS jul8_advancer_pct
FROM (
    SELECT ticker,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS close_7,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS close_8,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')) AS close_9,
           sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS dv_9,
           sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS dv_8
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-09 20:00:00'
    GROUP BY ticker
)

4263 hausses contre 1631 baisses — une proportion de titres en hausse de 71.5% après 29.6% mercredi, selon le même calcul et le même filtre de transaction de 1M$ (5385 des 11351 titres sont inférieurs à ce seuil). Pour le reste de la semaine :

RequêteLa semaine à ce jour : mouvements des indices et part des advancers par session clôturée
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

Lundi a débuté avec 62.4% titres en hausse, mardi et mercredi ont chuté à 33.9% et 29.6%, et le chiffre de 71.4% pour jeudi est le plus élevé des quatre sessions complétées de la semaine (le vendredi 10 juillet est postérieur à ce récapitulatif). Le QQQ a suivi cette tendance : -1.82% mardi, 0.25% mercredi, +1.67% jeudi.

Au-delà des semi-conducteurs : performance du reste du marché

La breadth indique que la majorité des actions ont progressé, mais elle ne montre pas si la hausse était homogène. Ci-dessous : un panier pondéré équitable comprenant trois titres liquides par secteur, le même panier déclaré chaque jour.

RequêteHuit paniers sectoriels, trois valeurs chacun : clôture du 9 juillet vs clôture précédente, pondération égale
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

Semiconductors a mené la hausse à +4.24%, tandis que Energy a terminé à -2.01% — un spread de -6.25 points (gap_to_best_sector_pct). Le secteur financier a été le panier non lié aux semi-conducteurs le plus performant avec +1.88% ; les secteurs Staples (-0.91%), Utilities (-0.96%) et Energy ont clôturé en baisse. La Big Tech (AAPL, MSFT et GOOGL) a enregistré une progression modérée de +0.17%. Le plus important renversement de position de la journée, soit une variation de +8.1% pour META, se situe en dehors des huit paniers ; au sein de ce panier, le passage de l'ouverture de MSFT à -2.25% à une clôture à +0.33% constitue le round trip le plus marqué.

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

gap_pct représente l'ouverture par rapport à la clôture de mercredi ; intraday_pct représente le reste de la journée. Les lignes sont classées par ordre alphabétique.

RequêteQuatorze valeurs semi-conducteurs : gap à l'ouverture vs reste de la journée, 9 juillet
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

KLAC a ouvert à +8.14% par rapport à la clôture de mercredi, puis a cédé -3.98% ; LRCX a ouvert à +9.67% avant de reculer de -3.26% ; TER (+7.87%) et WDC (+7.89%) ont suivi la même tendance. MU a ouvert avec un gap de +7.07%, a glissé de -2.56%, mais a terminé en hausse de +4.33% sur 33.56B — le titre le plus important du marché pour la deuxième séance consécutive (récapitulatif de mercredi contient le premier). AMD et SNDK ont fait exception : AMD a ajouté 1.75% après une ouverture à +3.87% pour finir à +5.68%, et SNDK, déjà à +6.14% à l'ouverture, a ajouté encore 1.23% pour clôturer à +7.45%. Enfin NVDA : une ouverture à +0.16% — sans gap — pour une clôture à -0.68%.

RequêteReceipts : décompte green/red le 9 juillet sur les quatorze valeurs, et rotation sur deux jours de NVDA
Le SQL exact derrière chaque chiffre
SELECT
    countIf(close_9 > close_8) AS jul9_green,
    countIf(close_9 < close_8) AS jul9_red,
    countIf(close_8 > close_7) AS jul8_green,
    round(anyIf((close_9 / close_8 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul9_pct,
    round(anyIf((close_8 / close_7 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul8_pct,
    count() AS names_counted
FROM (
    SELECT ticker,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS close_7,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS close_8,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')) AS close_9
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
      AND window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-09 20:00:00'
    GROUP BY ticker
)

12 des quatorze titres ont clôturé en hausse ; les 2 clôtures en baisse étaient l'inverse structurel d'une journée haussière, avec NVDA à -0.68%, un jour après avoir clôturé à +3.66%. Le titre le plus important du secteur des puces a manqué la hausse de son propre secteur, malgré une couverture médiatique très importante.

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 journée, 9 juillet
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

Sept des huit titres ont ouvert en dessous de la clôture de mercredi ; la suite les distingue. META a ouvert à -3.16% de baisse et a remonté de +8.1% pour une clôture à 4.69% — le renversement le plus violent entre l'ouverture et la clôture sur la page. MSFT a ouvert à -2.25% de baisse et s'est rétabli à +0.33% ; AMZN (+1.4%) et AAPL (+0.93%) ont suivi cette tendance ; TSLA n'a pas connu de gap et a grimpé à +3.21%. Les titres qui sont restés en baisse n'étaient pas des valeurs de croissance : GOOGL (-0.76%), CVX (-1.06%), JNJ (-1.62%). Pourquoi les actions font des gaps la nuit explique ce mécanisme.

Où les capitaux ont été échangés

RequêteTop 6 par volume en dollars, top 4 par volume en actions — 9 juillet sessions régulières
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

MU a dominé le tableau des volumes en dollars avec 33.56B, devant SPY (24.37B), NVDA (21.28B) et SNDK (20.59B) — le secteur de la mémoire occupe deux des quatre premières positions. Le tableau des actions présente une dynamique différente : SOXS a dominé avec 558.1M d'actions, soit un prix implicite de $3.91 (volume relatif).

RequêteActions par tranche de 30 min ET, sessions régulières, avec % de la tranche la plus importante de la journée
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

Un profil en U classique : le volume à l'ouverture s'est élevé à 1.79B d'actions (91.4% du volume total), le creux de la mi-journée était de 0.64B, et la demi-heure de la vente aux enchères de clôture a été la plus importante de la journée avec 1.96B. Même lors d'une séance décidée dès l'ouverture, le volume s'est concentré sur la clôture.

Le flux des options

RequêteOptions tape : prints, contrats, % calls, part des 0DTE vs mercredi, top contrats
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'

Le flux a enregistré 9.99M imprimés et 58.85M contrats — contre 63.26M mercredi — avec une part de 58% pour les calls, le 0DTE chutant à 28.7% contre 38.7%. Les trois contrats les plus actifs étaient des calls SPY à échéance du jour — le 751C (846.6K contrats, prix moyen de 0.526 $), le 752C et le 750C — une échelle autour de la clôture du SPY à 751.64 $ (les options 0DTE présente le produit).

Couverture ou pari ? Une couverture achète des strikes hors de la monnaie ; un pari achète le côté souhaité.

RequêteOptions SPY intraday (0DTE) : contrats par distance de strike par rapport au prix de clôture
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)

Le flux du jour était at-the-money : 3768.9k calls et 2563.3k puts à moins de 0,5 % de la clôture (59.5% calls). Les wings étaient répartis par direction — sous la clôture, 1356.5k puts contre 255.4k calls (1.2% de part de calls plus loin dans le downdside) ; au-dessus, les calls représentaient 91.6% d'un bucket beaucoup plus faible de 29.1k. Le volume des wings se concentrait sur les strikes de baisse, là où l'on achète de la protection : une échelle at-the-money, et non une échelle de hausse.

Le tape des cotations

RequêteNombre de mises à jour NBBO des actions : 9 juillet vs 8 juillet, avec updates par ticker (millions)
Le SQL exact derrière chaque chiffre
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-09')) / 1e6, 2) AS jul9_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / 1e6, 2) AS jul8_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-09')) / countIf(toDate(sip_timestamp) = toDate('2026-07-08')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'SPY') / 1e6, 2) AS jul9_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'QQQ') / 1e6, 2) AS jul9_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'NVDA') / 1e6, 2) AS jul9_nvda_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'TSLA') / 1e6, 2) AS jul9_tsla_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'MU') / 1e6, 2) AS jul9_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'

Le fait le plus discret de la journée : 383.44M mises à jour du NBBO sur le tape des actions, soit -27.7% par rapport à mercredi. La volatilité s'est manifestée sur les niveaux de prix, et non sur le volume d'échanges au toucher. Le QQQ a dominé les tickers nommés avec 4.35M, contre 2.71M pour le SPY et 1.83M pour NVDA.

RequêteSPY / QQQ / NVDA / TSLA / MU / SNDK / AVGO : spread médian coté en RTH (basis points)
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

Le spread médian coté du SPY était de 0.27 bps, 0.42 pour le QQQ et 0.99 pour NVDA — des chiffres ordinaires. La queue de distribution est plus large : MU à 4.23 bps et SNDK à 8.79 bps (le bid-ask spread est le coût mesuré ici).

RequêteSpread moyen coté du SPY en RTH en contexte trailing-month
Le SQL exact derrière chaque chiffre
SELECT
    round(anyIf(avg_spread_cents, d = toDate('2026-07-09')), 3) AS jul9_avg_spread_cents,
    arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-09')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-09'))) + 1 AS tightness_rank,
    count() AS sessions_compared,
    round(min(avg_spread_cents), 3) AS tightest_session_cents,
    round(max(avg_spread_cents), 3) AS widest_session_cents,
    toString(min(d)) AS first_session
FROM (
    SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
           avgIf(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100 AS avg_spread_cents
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'SPY'
      AND sip_timestamp >= toDateTime('2026-06-08 00:00:00')
      AND sip_timestamp < toDateTime('2026-07-10 00:00:00')
      AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
    GROUP BY d
)

Le spread moyen coté du SPY de 2.071 cents se classe au 10 sur 22 sessions précédentes, dans une fourchette de 1.8092.865 cents : aucune tension sur les cotations, même lors de l'ouverture.

RequêteOptions NBBO tape : total updates vs tape actions, plus la tranche SPY
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

Le tape des cotations d'options a enregistré 6.9 billion mises à jour du NBBO — soit 18× le tape des actions, le seul sous-jacent du SPY représentant 242M.

Taux : les données du 9 juillet

RequêteStatut des prints Treasury : lignes du 9 juillet enregistrées, et courbe du 8 juillet (dernière mise à jour)
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'

Les données du Trésor du 9 juillet ont été publiées après la rédaction, avec le décalage habituel du fichier des rendements quotidiens — la ligne 1 est désormais enregistrée. La courbe de la journée (2026-07-09) : 2 ans 4.16%, 10 ans 4.54%, 30 ans 5.05%, spread 2s10s 0.38 points — le rendement à 2 ans a diminué par rapport au niveau du 8 juillet, tandis que la partie longue de la courbe est restée stable.

Le calendrier de la journée

RequêteEx-divs, splits, filings SEC, attention médiatique
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

Un calendrier habituel sous une ouverture inhabituelle : enregistrements ex-dividend 127, reverse splits 5, forward split 1, dépôts SEC 2979 (623 Form 4s, 605 424B2s, 149 8-Ks). Le flux a généré 184 articles via 3 éditeurs ; le ticker le plus couvert est NVDA avec 20 articles, 8 devant le nom suivant.

À venir

Nos propres données — des faits sur la prochaine séance, pas des prévisions.

RequêteÀ venir : prochaine session, calendrier ex-dividend, échelle d'expiry SPY, et horloge du short-interest
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) AS latest_short_settlement,
    (SELECT count() FROM global_markets.stocks_short_interest WHERE settlement_date = '2026-07-15') AS jul15_short_rows
FROM (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY' AND window_start >= '2026-07-10 00:00:00' AND window_start < '2026-07-14 00:00:00'
)

La prochaine séance est le 2026-07-10, avec 0 jours fériés associés : un vendredi normal. 153 entreprises vont être ex-dividend ce matin-là, dont 0 de notre liste de valeurs de référence. L'échéance du SPY ce vendredi est la plus importante déjà échangée en forward — 1.66M de contrats le 9 juillet contre 0.57M pour l'échéance mensuelle de juillet. Suivi du short-interest : le dernier règlement enregistré est le 2026-06-30, avec 0 lignes encore en attente pour la mi-juillet — la FINRA publie environ huit jours ouvrés après le règlement (pourquoi le short interest a deux semaines de retard).

La session, vérifiée

RequêteVérification de session : première/dernière barre SPY ET, nombre de barres régulières, receipts jours fériés, prochaine clôture
Le SQL exact derrière chaque chiffre
SELECT
    formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
    formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
    count() AS spy_minute_bars,
    countIf(window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-09') AS jul9_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_date,
    (SELECT concat(monthName(min(date)), ' ', toString(toDayOfMonth(min(date))), ', ', toString(toYear(min(date))))
     FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_label,
    (SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-09 00:00:00' AND window_start < '2026-07-10 00:00:00'

Une session ordinaire complète : première barre SPY 04:00 ET, dernière 19:59 ET, 390 barres régulières en minutes, sans ligne de jour férié. Prochaine clôture : Labor Day, September 7, 2026.

FAQ

Que s'est-il passé sur le marché boursier le 9 juillet 2026 ?

Tous les ETF d'indices ont clôturé en hausse — QQQ +1.67%, IWM +1.29%, SPY +0.85%, DIA +0.29%, les actions liquides ont progressé de 71.5%. Les valeurs liées aux équipements de semi-conducteurs ont ouvert en gap haussier avant de reculer ; les mega-caps ont ouvert en gap baissier avant de se redresser.

Pourquoi les actions d'équipement de semi-conducteurs comme KLAC et LRCX ont-elles bondi le 9 juillet 2026 ?

Nos données n'indiquent aucune raison : aucun article ni aucun dépôt SEC pour KLAC, LRCX, TER ou WDC entre la clôture de mercredi et celle de jeudi. Le mouvement était déjà intégré en premarket, avant 9h30 ET.

Pourquoi NVDA a-t-elle chuté alors que le secteur des semi-conducteurs progressait ?

NVDA a clôturé à -0.68% alors que 12 des quatorze valeurs du secteur des semi-conducteurs ont clôturé en hausse. Le titre n'a jamais fait de gap (0.16% à l'ouverture) et était le ticker le plus couvert avec 20 articles — une cooccurrence record, mais la cause n'est pas présente dans ces données.

La journée du 9 juillet 2026 était-elle inhabituelle pour le marché ?

Pas au niveau des indices : le mouvement du QQQ se classait 10 sur 21 sessions précédentes en termes d'amplitude, le spread moyen du SPY était de 10 de 22. La dispersion sous-jacente était de : -6.25 points entre le meilleur et le pire panier sectoriel.

Notes sur les données

Les horaires de séance régulière sont 13:3020:00 UTC (9:30 am–4:00 pm ET) ; le panel premarket utilise la plage 08:00–13:30 UTC. Les huit paniers sectoriels sont sélectionnés et pondérés de manière égale — trois titres liquides par panier, chaque ticker étant listé dans le SQL du panel. Il s'agit d'une méthode déclarée et non d'une classification de fournisseur : trois titres représentent le panier, et non un secteur entier. Le panel des catalyseurs comptabilise uniquement notre flux d'actualités et l'indice EDGAR.

Notes complètes sur les données

Les panels par ticker sont classés par ordre alphabétique, chaque référence textuelle correspond donc à une ligne fixe ; les leaderboards sont classés par valeur, chaque position étant délimitée. Les données sur le treasury et le règlement des positions short de la mi-juillet sont limitées à zéro ligne — leur réception nécessitera une réécriture de ce post.

Méthodologie

  • Sources : chaque SQL de panneau nomme ses propres tables — agrégats à la minute, caches NBBO pour les actions et les options, transactions sur options, notre flux d'actualités, l'index EDGAR, les dividendes, l'intérêt vendeur, les jours fériés, les rendements du Trésor.
  • Conventions : littéraux UTC bruts dans le WHERE, étiquettes ET uniquement dans le SELECT ; gap = ouverture de la première barre régulière ÷ clôture régulière précédente − 1 ; les chiffres de la session précédente et de la semaine précédente sont calculés dans la requête, jamais repris d'un article précédent. Entrepôt au 13 juillet 2026.