SpaceX dans le Nasdaq-100 : analyse du trade
L'intégration accélérée de SpaceX au Nasdaq-100 et l'impact de la closing auction sur le titre SPCX. Analyse détaillée des volumes et des flux d'ETF.
SpaceX joined the Nasdaq-100 index on Tuesday, July 7, 2026 — and the affair's biggest trade printed the afternoon before: 74.94 million shares of SPCX in a single closing-auction print at $160.42. Matt Levine covered it in Money Stuff the next morning; this post checks his numbers against our tick tape, then goes where a newsletter can't — auction by auction, minute by minute, SQL under every panel.
L'ajout accéléré d'un indice
Le Nasdaq a intégré SpaceX au Nasdaq-100 à compter du mardi 7 juillet 2026 — moins d'un mois après son entrée en vigueur le 12 juin, détaillée dans notre analyse approfondie du premier mois. Les fonds qui répliquent l'indice — représentant environ 800 milliards de dollars d'actifs, incluant le QQQ d'Invesco selon le Wall Street Journal cité par Levine — négocient au cours de clôture officiel de la dernière séance avant l'application du changement : une transaction massive lors de l'enchère de clôture à 16h00 ET.
"Pourquoi l'enchère de clôture d'hier était-elle d'un ordre de grandeur supérieur à l'habitude ? Ce n'est pas un grand mystère." — Matt Levine, Money Stuff (Bloomberg Opinion), 7 juillet 2026
Une règle fondamentale : nous mesurons ce qui a été exécuté ; l'explication du mécanisme — qui a acheté, qui a vendu, pourquoi — appartient à Levine et à la littérature spécialisée, citée dès qu'elle apparaît.
Un seul symbole, deux sociétés
Le ticker SPCX est réutilisé ; une vérification est donc nécessaire : le ticker était échangé comme un fonds peu liquide autour de 22 $ jusqu'en avril 2026, est devenu inactif en mai, puis a été réattribué à Space Exploration Technologies Corp. lors de la cotation du 12 juin. Le panneau de réception précise cette limite — 13 barres de 2026-04 minutes durant le dernier mois d'activité de l'ancienne entité, entre 21.92 $ et 23.64 $ ; un mois de mai sans activité (5 lignes pour six mois calendaires) ; puis 10960 barres de juin entre 146.88 $ et 225.64 $. Aucune ligne antérieure au 12 juin n'est attribuée à SpaceX.
Le SQL exact derrière chaque chiffre
WITH
(
SELECT (toString(listing_date), issuer_name)
FROM global_markets.stocks_ipos
WHERE ticker = 'SPCX'
ORDER BY listing_date DESC LIMIT 1
) AS ipo
SELECT
formatDateTime(toStartOfMonth(window_start), '%Y-%m') AS month,
count() AS minute_bars,
round(min(toFloat64(low)), 2) AS low_usd,
round(max(toFloat64(high)), 2) AS high_usd,
ipo.1 AS spacex_listing_date,
ipo.2 AS issuer
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPCX'
AND window_start >= '2026-01-01 00:00:00' AND window_start < '2026-07-01 00:00:00'
GROUP BY month
ORDER BY monthLevine's three sessions, verified
Levine prints three readings per session, from Bloomberg terminal pages. Wednesday, July 1: 109.3 million shares traded, about 5.4 million in the closing auction, a $157.54 close. Thursday, July 2: 61.3 million shares, 2.6 million, $162. Monday, July 6: 188.8 million shares, 74.9 million, $160.42 — down about 1% on a day the broad market rose. Our tape returns the same picture:
Le SQL exact derrière chaque chiffre
SELECT
toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session,
round(toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))) / 1e6, 1) AS day_matched_shares_m,
round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6, 2) AS auction_shares_m,
round(100 * toFloat64(maxIf(size, has(conditions, 8))) / toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))), 1) AS auction_pct_of_day,
round(toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))), 2) AS official_close,
countIf(has(conditions, 8)) AS code8_prints,
formatDateTime(toTimeZone(argMaxIf(sip_timestamp, (size, sip_timestamp), has(conditions, 8)), 'America/New_York'), '%H:%i:%S') AS auction_time_et
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
AND ((sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00')
OR (sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'))
GROUP BY session
ORDER BY sessionThe auction sizes and official closes match his to the rounding — 5.38 million at $157.54, 2.58 million at $162, 74.94 million at $160.42 — each session showing exactly one code-8 auction print (the receipt column). Day totals land within a few percent of his (112.4, 61.6, and 188.9 million shares; vendor accounting differs at the edges; see data notes). The added column is one he didn't print — the cross's share of each day: 4.8% on Wednesday, 4.2% on Thursday, 39.7% on Monday.
Toutes les enchères de clôture de SPCX depuis l'introduction en bourse
L'« ordre de grandeur » est mesurable. Voici le closing cross pour toutes les sessions 15 de SPCX, de l'introduction à la veille de l'add-eve :
Le SQL exact derrière chaque chiffre
SELECT
toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session,
round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6, 2) AS auction_shares_m,
round(100 * toFloat64(maxIf(size, has(conditions, 8))) / toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))), 1) AS auction_pct_of_day,
round(toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))) / 1e6, 1) AS day_matched_shares_m,
round(toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))), 2) AS official_close,
countIf(has(conditions, 8)) AS code8_prints
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
AND sip_timestamp >= '2026-06-12 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'
GROUP BY session
ORDER BY sessionLa médiane du cross SPCX avant le 6 juillet est de 4.49 millions d'actions. Le 6 juillet a atteint 74.94 millions — soit 16.7 fois cette médiane précédente. L'expression de Levine reste pertinente. Deux clôtures massives antérieures se distinguent : 52.28 millions d'actions le 2026-06-18 — un jeudi d'expiration, la session précédant la clôture du 19 juin — et 39.56 millions le 2026-06-26 (31.1% de ce volume journalier). Le contexte calendaire, et non une explication, montre qu'aucune de ces dates ne correspond au 6 juillet sur l'un ou l'autre axe : le cross de la veille de l'add-eve était plus important en volume et représentait 39.7% du volume de la journée.
6 juillet, minute par minute
La séance s'est déroulée ainsi, minute par minute : le SPCX a ouvert à $165.95, s'est établi à $162.18 à 13h00 ET, puis a poursuivi sa baisse. La bougie d'une minute de 15h30 s'étend de $155.42 à $155.92 — le point de contrôle de Levine à « 155,50 $ à 15h30 » se situe dans cet intervalle — et la bougie s'est clôturée à $155.46. De ce point jusqu'à la clôture, le ticker a progressé de $4.96 sur 19.3 millions d'actions continues, la dernière transaction continue s'établissant à $160.5 à 16:00:00 ET. Le parcours en cinq minutes ci-dessous (par tranches de 78) se termine à $160.4 :
Le SQL exact derrière chaque chiffre
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 5 MINUTE), '%H:%i') AS et_time,
round(toFloat64(argMax(close, window_start)), 2) AS price_usd,
round(toFloat64(sum(volume)) / 1e6, 2) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPCX'
AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
GROUP BY et_time
ORDER BY et_timeChaque point de contrôle figure sur une ligne auditable avec la transaction correspondante :
Le SQL exact derrière chaque chiffre
WITH
(
SELECT (
round(toFloat64(argMin(open, window_start)), 2),
round(toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 17:01:00')), 2),
round(toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 19:31:00')), 2),
round(toFloat64(minIf(low, window_start = '2026-07-06 19:30:00')), 2),
round(toFloat64(maxIf(high, window_start = '2026-07-06 19:30:00')), 2),
round(toFloat64(sumIf(volume, window_start >= '2026-07-06 19:30:00')) / 1e6, 1)
)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPCX'
AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
) AS bars,
(
SELECT round(quantileDeterministic(0.5)(auction_m, day_key), 2)
FROM (
SELECT
toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
toUInt64(toYYYYMMDD(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) AS day_key,
toFloat64(maxIf(size, has(conditions, 8))) / 1e6 AS auction_m
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
AND sip_timestamp >= '2026-06-12 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
GROUP BY d, day_key
)
) AS med_prior,
(
SELECT round(toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))), 2)
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
) AS spcx_prev_close,
(
SELECT (
round(toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-03 00:00:00')), 2),
round(toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp >= '2026-07-06 00:00:00')), 2)
)
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND ((sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00')
OR (sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'))
) AS spy,
(
SELECT maxIf(sip_timestamp, has(conditions, 8))
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX' AND sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'
) AS auction_ts
SELECT
bars.1 AS open_0930,
bars.2 AS px_1300_et,
bars.3 AS px_1530_close,
bars.4 AS px_1530_bar_low,
bars.5 AS px_1530_bar_high,
bars.6 AS shares_1530_1559_m,
round(toFloat64(argMaxIf(price, (sip_timestamp, sequence_number), sip_timestamp < auction_ts AND NOT has(conditions, 8) AND NOT hasAny(conditions, [15, 16, 38]))), 2) AS last_continuous_px,
formatDateTime(toTimeZone(maxIf(sip_timestamp, sip_timestamp < auction_ts AND NOT has(conditions, 8) AND NOT hasAny(conditions, [15, 16, 38])), 'America/New_York'), '%H:%i:%S') AS last_continuous_et,
countIf(has(conditions, 8)) AS code8_prints,
round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6, 2) AS auction_shares_m,
round(toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))), 2) AS auction_price,
formatDateTime(toTimeZone(auction_ts, 'America/New_York'), '%H:%i:%S') AS auction_time_et,
round(toFloat64(maxIf(size, has(conditions, 8))) * toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))) / 1e9, 2) AS auction_notional_busd,
round(toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))) - bars.3, 2) AS close_minus_1530_usd,
round(bars.1 - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))), 2) AS open_minus_close_usd,
round(bars.2 - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))), 2) AS px1300_minus_close_usd,
round(bars.1 - bars.2, 2) AS open_minus_1300_usd,
round((toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))) - toFloat64(argMaxIf(price, (sip_timestamp, sequence_number), sip_timestamp < auction_ts AND NOT has(conditions, 8) AND NOT hasAny(conditions, [15, 16, 38])))) * 100, 1) AS cross_vs_last_tick_cents,
round((1 - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))) / spcx_prev_close) * 100, 2) AS spcx_close_below_prior_pct,
spy.2 AS spy_close_jul6,
round((spy.2 / spy.1 - 1) * 100, 2) AS spy_day_change_pct,
med_prior AS median_prior_auction_m,
round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6 / med_prior, 1) AS auction_vs_prior_median_x
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
AND sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'L'enchère : 74.94 millions d'actions à $160.42, enregistrées à 16:00:00 ET — soit $12.02 milliards en une seule transaction. Levine rapporte l'estimation de Rob Du Boff (Bloomberg Intelligence) prévoyant au moins 5,4 milliards de dollars d'achats par des fonds indiciels lors de cette clôture, soit environ 31,2 millions des 74,9 millions d'actions. Les chiffres diffèrent par nature : le nôtre représente la transaction totale (achat et vente), le sien représente la part estimée de la demande indicielle au sein de celle-ci.
La clôture n'a pas été une hausse soudaine. La clôture officielle s'est établie à $5.53 en dessous de l'ouverture du SPCX à 9h30 et à $1.76 en dessous de son cours de 13h00 ; la séance s'est terminée à 0.98% sous la clôture de jeudi, tandis que le SPY a progressé de 0.87% (Récapitulatif de lundi contient le détail de la séance). Levine, face à une enchère bien approvisionnée :
« Si tout se passe bien, l'offre correspond à la demande lors de l'enchère de clôture, et le prix ne varie pas trop. » — Matt Levine, Money Stuff (Bloomberg Opinion), 7 juillet 2026
Selon ce critère, une variation de 16.7 fois la médiane précédente, à quelques cents près de la dernière transaction continue ($160.42 contre $160.5), signifie que le mécanisme fonctionne. C'est son analyse ; ce sont nos mesures.
Qui était de l'autre côté
C'est ici que l'analyse des flux prend le relais. Selon Levine, la demande sur l'indice se concentre à la clôture de la date d'inclusion. Les fournisseurs de liquidité — autrefois des desks de banques, aujourd'hui souvent des pod shops multistratégies — accumulent des positions lors des sessions précédentes. Ils revendent ensuite lors de l'enchère, captant ainsi le spread entre leur prix d'achat moyen et le prix de l'enchère.
« Les incitations des banques sont ici largement saines : leur rôle est de lisser la demande. » — Matt Levine, Money Stuff (Bloomberg Opinion), 7 juillet 2026
Pour illustrer l'ampleur du phénomène, il cite le rapport de Nishant Kumar (Bloomberg) indiquant que deux équipes de rééquilibrage d'index chez Millennium ont généré environ 3,7 milliards de dollars en juin sur des transactions liées aux changements d'indices. Pour une vision globale, il s'appuie sur deux études : Chinco et Sammon (2024), qui estime la détention passive à près de 33,5 % du marché américain — soit environ le double du chiffre officiel de 16 % — et Greenwood et Sammon (2024), qui montre que l'effet de prix lors de l'ajout d'un indice diminue au fil des décennies. Aucune de ces affirmations n'est mesurable sur notre tape ; aucune ne contredit nos données.
Where the rest of Monday's volume printed
The cross took 39.7% of July 6's matched volume. The rest split two ways: 45.1 million shares in continuous on-exchange trading (23.9%); 68.8 million off-exchange through FINRA's trade-reporting facilities (36.4%) — the bucket dark pools, wholesalers, and negotiated block trades report into. One trade out-printed the entire continuous on-exchange session.
Le SQL exact derrière chaque chiffre
SELECT
multiIf(has(conditions, 8), 'Closing auction (one print)', exchange = 4, 'Off-exchange (TRF)', 'On-exchange, continuous') AS bucket,
round(toFloat64(sum(size)) / 1e6, 1) AS shares_m,
round(100 * toFloat64(sum(size)) / sum(toFloat64(sum(size))) OVER (), 1) AS pct_of_matched,
count() AS prints
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
AND sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'
AND NOT hasAny(conditions, [15, 16, 38])
GROUP BY bucket
ORDER BY bucketLe lendemain matin
Levine note que le titre SPCX a encore reculé mardi matin. La dynamique de la séance mérite une analyse détaillée : il s'agit d'une vente continue durant la session et non d'un gap à l'ouverture. SpaceX a ouvert mardi à 158.92, soit 0.9% de moins que la clôture de la veille à 160.42. Le titre a ensuite évolué dans une fourchette de 150.12 à 159.3, pour finir à 5.2% sous cette clôture à 12:59 ET, limite fixe de cette analyse. (Cette première édition, rédigée le 8 juillet sur la base de données partielles, affichait une baisse à l'ouverture plus marquée — un artefact dû à l'absence des premières bougies, corrigé ici sur la session complète ; voir les notes de données.)
Le SQL exact derrière chaque chiffre
WITH
(
SELECT round(toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8))), 2)
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
AND sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'
) AS monday_close
SELECT
count() AS morning_bars,
formatDateTime(toTimeZone(max(window_start), 'America/New_York'), '%H:%i') AS last_bar_et,
round(toFloat64(argMin(open, window_start)), 2) AS open_0930,
round((1 - toFloat64(argMin(open, window_start)) / monday_close) * 100, 1) AS open_below_monday_close_pct,
round(min(toFloat64(low)), 2) AS morning_low,
round(max(toFloat64(high)), 2) AS morning_high,
round(toFloat64(argMax(close, window_start)), 2) AS px_1259_et,
round((1 - toFloat64(argMax(close, window_start)) / monday_close) * 100, 1) AS px_1259_below_monday_close_pct,
round(toFloat64(sum(volume)) / 1e6, 1) AS morning_shares_m,
monday_close AS monday_official_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPCX'
AND window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 17:00:00'Le tableau ci-dessus s'arrête délibérément à 12h59 ET (voir notes de données). La session complète du 7 juillet — première séance du titre au sein de l'indice et jour marquant la fin de son retour au prix de l'IPO — est analysée dans son intégralité dans le mouvement complet de l'action SpaceX depuis son sommet.
FAQ SpaceX Nasdaq-100
Pourquoi SpaceX a-t-elle intégré le Nasdaq-100 si rapidement ?
La méthodologie de l'indice Nasdaq permet des ajouts entre les reconstitutions annuelles de décembre. Les rapports de presse cités par Levine (notamment le WSJ) décrivent l'entrée de SpaceX le 7 juillet 2026 comme un ajout accéléré, moins d'un mois après l'IPO du 12 juin.
Qu'est-ce qu'une enchère de clôture pour un ajout à l'indice ?
Lorsqu'un titre intègre un indice, les fonds qui le suivent effectuent leurs transactions au prix de clôture officiel de la dernière séance avant l'entrée en vigueur du changement. Ce prix est fixé par la closing auction, une transaction unique à 16h00 ET. Le 6 juillet 2026, le cross de la veille de l'ajout a représenté 39.7% du volume exécuté de la journée.
Le titre SpaceX a-t-il bondi lors de son intégration au Nasdaq-100 ?
Pas selon nos données de marché. La clôture de la veille de l'ajout s'est établie à $5.53 sous l'ouverture de la journée et 0.98% sous la clôture précédente — après une hausse de $4.96 durant la dernière demi-heure — et le lendemain matin, le titre a ouvert avec un recul supplémentaire de 0.9. Ces observations concernent les données de marché et ne constituent pas un jugement sur l'exécution des ordres.
Quelle était l'importance de l'enchère de clôture pour l'ajout à l'indice de SpaceX ?
74.94 millions d'actions en une seule transaction à $160.42 — soit $12.02 milliards, représentant 39.7% du volume exécuté ce jour-là, et 16.7 fois la médiane des clôtures SPCX précédentes.
Notes sur les données
Notes complètes sur les données
- Périmètre de l'entité (base des verified_tickers du frontmatter). SPCX a été réassigné à Space Exploration Technologies Corp. lors de la cotation 2026-06-12 ; l'ancien flux s'arrête en avril 2026 et le mois de mai affiche zéro barre (voir le panneau ci-dessus). L'analyse détaillée du premier mois contient la vérification complète (historique d'IPO, changement de tag d'actualité, chute du short-interest).
- Le "volume apparié" est la comptabilité propre du flux consolidé : les conditions de vente dont l'entrée dans le dictionnaire porte la mention updates_volume = false (15, 16, 38) sont exclues de chaque total et dénominateur. Les chiffres de "shares traded" du fournisseur présentent des écarts différents : notre total du 1er juillet est environ 3 % supérieur à celui de Levine ; les données du 2 et du 6 juillet concordent à moins de 0,1 %.
- Le closing cross correspond à la condition de vente 8, comme indiqué dans l'explication sur l'enchère de clôture. Quelques sessions comportent un enregistrement supplémentaire négligeable en code-8 provenant d'une seconde plateforme (2 le jour de la cotation) ; le cross est la transaction en code-8 la plus importante de la session. Les 1er, 2 et 6 juillet n'affichent qu'un seul enregistrement.
- Le panneau du matin s'arrête à 12h59 ET par conception (210 barres sur la fenêtre 9h30–13h00) : c'était la limite d'ingestion lors de la rédaction initiale de ce post (8 juillet 2026), et la fenêtre est fixée pour permettre la reproductibilité des chiffres. La session complète du 7 juillet est analysée dans le post de suivi.
- Les chiffres attribués restent attribués. Les chiffres de Levine, du WSJ, de Du Boff, de Kumar et des journaux sont leurs propres déclarations, reproduites pour le contexte, et non mesurés ici ; ce post n'établit aucun lien de causalité pour aucun mouvement.
- Les horodatages sont stockés en UTC ; juillet 2026 est en EDT (heures régulières 13h30–20h00 UTC). Le notionnel de l'enchère est le produit du volume par le prix de transaction, rien de plus.
Chaque panneau est un objet stocké unique — graphique, tableau, SQL. Pour analyser ces enchères plus en détail sur n'importe quel ticker, utilisez le terminal Strasmore.