Marktoverzicht 9 juli 2026 in cijfers
Chip-apparatuur en mega-caps vertoonden grote gaten. De markt sloot groen, maar NVDA eindigde rood. Lees hier de volledige analyse van deze volatiele sessie.
Donderdag 9 juli 2026 vertoonde extreme volatiliteit binnen één minuut — en die minuut vond plaats vóór de opening van de markt. Aandelen in chip-apparatuur stonden in de premarket-handel al aanzienlijk hoger dan de slotkoers van woensdag, terwijl META -3.16% lager stond; de koers op 9:30 bevestigde beide posities. De markt draaide de opening vervolgens deels terug: de stijgingen in de chipsector namen af, META herstelde volledig, en de handel sloot 71.5% in de groene cijfers — de meest volatiele sessie van de week. NVDA, dat groen was sinds de crash van dinsdag, sloot rood. Elk onderstaand getal is afkomstig uit een database.
De setting bij de opening
De gaten werden niet om 9:30 uur gevormd. Tussen 4:00 uur en 9:29 uur ET had de premarket tape deze namen al opnieuw geprijsd, waardoor de opening op dat niveau plaatsvond.
De exacte SQL achter elk getal
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 tickerDe laatste premarket print van KLAC stond +8.49% ten opzichte van de slotkoers van woensdag en de koers opende met +8.14%; LRCX steeg met 9.64% naar een opening van +9.67%; META noteerde -3.16% en opende met -3.16%. Lees open_vs_premkt_pct: alle zes de aandelen openingen binnen één procent van hun laatste premarket prijs. NVDA is de uitzondering — 0.16% gedurende de nacht op 3741.7k shares, de hoogste premarket volume van de zes en de kleinste beweging (premarket en after-hours trading).
Was er een katalysator? Onze data geeft geen verklaring
Een recapitulatie zou moeten aangeven wat een aandeel heeft bewogen. In dit geval noemen onze tabellen niets: zowel de nieuwsfeed als de SEC filing index zijn leeg voor de vier namen met de grootste gaps.
De exacte SQL achter elk getal
SELECT
ticker,
toUInt32(sum(overnight_articles)) AS overnight_articles,
toUInt32(sum(session_articles)) AS session_articles,
toUInt32(sum(sec_filings)) AS sec_filings,
toUInt32(sum(filings_8k)) AS filings_8k
FROM (
SELECT
arrayJoin(['AMD', 'KLAC', 'LRCX', 'META', 'MSFT', 'MU', 'NVDA', 'TER', 'WDC']) AS ticker,
toUInt64(0) AS overnight_articles, toUInt64(0) AS session_articles,
toUInt64(0) AS sec_filings, toUInt64(0) AS filings_8k
UNION ALL
SELECT
arrayJoin(tickers) AS ticker,
countIf(published_utc < '2026-07-09 13:30:00') AS overnight_articles,
countIf(published_utc >= '2026-07-09 13:30:00') AS session_articles,
toUInt64(0) AS sec_filings, toUInt64(0) AS filings_8k
FROM global_markets.stocks_news
WHERE published_utc >= '2026-07-08 20:00:00' AND published_utc < '2026-07-09 20:00:00'
GROUP BY ticker
UNION ALL
SELECT
ticker, toUInt64(0), toUInt64(0),
count() AS sec_filings,
countIf(form_type = '8-K') AS filings_8k
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-08' AND filing_date <= '2026-07-09'
GROUP BY ticker
)
WHERE ticker IN ('AMD', 'KLAC', 'LRCX', 'META', 'MSFT', 'MU', 'NVDA', 'TER', 'WDC')
GROUP BY ticker
ORDER BY ticker0 artikelen gedurende de nacht, 0 intraday, 0 SEC filings voor KLAC — dezelfde lege rij voor LRCX, TER en WDC. NVDA, dat nooit een gap vertoonde, had de meeste dekking van de negen (7 gedurende de nacht, 9 intraday) en sloot rood. Dit is de aandacht van één feed, niet van de wereldwijde media, en een ontbrekende rij is geen bewijs voor het ontbreken van een gebeurtenis — maar niets in onze data benoemt een oorzaak, en "oorzaak onbekend" is een volledig antwoord.
Het scorebord
Elke wijziging vergelijkt de laatste reguliere handelsminuut van 9 juli met die van woensdag; de rijen staan op alfabetische volgorde, zodat elke ETF een vaste positie behoudt.
De exacte SQL achter elk getal
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 tickerAlle vier sloten in de groene zone. QQQ leidde met +1.67% — een gap van +0.99% plus een stijging van +0.68%; small-cap IWM won +1.29%, SPY +0.85% naar $751.64, DIA sloot met +0.29%. Groei aan de vooravond, de Dow achteraan.
Was de dag ongebruikelijk?
Op indexniveau was dat niet het geval: de close-over-close van QQQ was met +1.67% de 10 grootste van de afgelopen 21 sessies, en de open-to-close van SPY was 8 van 22. De volatiliteit vond plaats tussen de groepen van de dag.
De exacte SQL achter elk getal
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
)
)Breedte: de breedste sessie van de week
De exacte SQL achter elk getal
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 stijgers tegenover 1631 dalers — een aandeel stijgers van 71.5% na 29.6% op woensdag, met dezelfde berekening en dezelfde $1M-traded filter (5385 van 11351 namen vallen hieronder). Vergeleken met de rest van de week:
De exacte SQL achter elk getal
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 dMaandag begon met 62.4% stijgers, dinsdag en woensdag zakten naar 33.9% en 29.6%, en de 71.4% van donderdag is de hoogste van de vier voltooide sessies van deze week (vrijdag 10 juli volgt op deze recap). QQQ volgde deze trend ook: -1.82% dinsdag, 0.25% woensdag, +1.67% donderdag.
Verder dan de chips: hoe de rest van de markt handelde
De marktbreedte geeft aan dat de meeste aandelen zijn gestegen; dit zegt echter niet dat de rally gelijkmatig verdeeld was. Hieronder vindt u een gelijk gewogen mandje van drie liquide namen per sector, telkens hetzelfde mandje.
De exacte SQL achter elk getal
SELECT
sector,
count() AS names,
round(avg(pct_chg), 2) AS avg_pct_chg,
round(min(pct_chg), 2) AS worst_name_pct,
round(max(pct_chg), 2) AS best_name_pct,
round(avg(pct_chg) - max(avg(pct_chg)) OVER (), 2) AS gap_to_best_sector_pct
FROM (
SELECT
ticker,
multiIf(ticker IN ('AMD', 'AVGO', 'KLAC'), 'Semiconductors',
ticker IN ('AAPL', 'MSFT', 'GOOGL'), 'Big tech',
ticker IN ('JPM', 'BAC', 'GS'), 'Financials',
ticker IN ('CAT', 'HON', 'GE'), 'Industrials',
ticker IN ('XOM', 'CVX', 'COP'), 'Energy',
ticker IN ('JNJ', 'UNH', 'PFE'), 'Healthcare',
ticker IN ('KO', 'PG', 'WMT'), 'Staples',
'Utilities') AS sector,
(toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'))
/ toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) - 1) * 100 AS pct_chg
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'KLAC', 'AAPL', 'MSFT', 'GOOGL', 'JPM', 'BAC', 'GS', 'CAT', 'HON', 'GE',
'XOM', 'CVX', 'COP', 'JNJ', 'UNH', 'PFE', 'KO', 'PG', 'WMT', 'NEE', 'DUK', 'SO')
AND window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-09 20:00:00'
GROUP BY ticker
)
GROUP BY sector
ORDER BY avg_pct_chg DESCSemiconductors leidde met +4.24%, terwijl Energy achterbleef op -2.01% — een spread van -6.25 basispunten (gap_to_best_sector_pct). De financiële sector was de sterkste sector buiten de chip-aandelen met +1.88%; Staples (-0.91%), Utilities (-0.96%) en Energy sloten rood af. Big tech (AAPL, MSFT en GOOGL) behaalde een bescheiden gemiddelde van +0.17%. De grootste reversal van de dag, de schommeling van META met +8.1%, valt buiten alle acht de mandjes; binnen dit mandje was de beweging van MSFT, van een opening van -2.25% naar een slotkoers van +0.33%, de scherpste round trip.
De opening van de semiconductor-sector en de daaropvolgende daling
gap_pct is de opening ten opzichte van de slotkoers van woensdag; intraday_pct is het verloop van de rest van de dag. De rijen zijn alfabetisch gesorteerd.
De exacte SQL achter elk getal
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-09 00:00:00')) AS prior_close,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-09 00:00:00')) AS day_open,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-09 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-09 00:00:00') AS day_low,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-09 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
AND ((window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')
OR (window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_open, 2) AS day_open,
round(day_close, 2) AS day_close,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_close / day_open - 1) * 100, 2) AS intraday_pct,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerKLAC opende +8.14% boven de slotkoers van woensdag en verloor vervolgens -3.98%; LRCX opende +9.67% en daalde met -3.26%; TER (+7.87%) en WDC (+7.89%) vertoonden hetzelfde verloop. MU had een gap van +7.07%, daalde met -2.56%, maar sloot nog steeds op +4.33% met een volume van 33.56B — de zwaarste naam op de tape voor een tweede sessie (recap van woensdag bevat de eerste). AMD en SNDK waren de uitzonderingen: AMD voegde 1.75% toe na een opening van +3.87% om op +5.68% te eindigen, en SNDK, dat bij de opening al +6.14% was, voegde nog eens 1.23% toe om op +7.45% te sluiten. En NVDA: een opening van +0.16% — zonder gap — naar een slotkoers van -0.68%.
De exacte SQL achter elk getal
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 van de veertien namen sloot in de groene zone; de 2 rode sluitingen vormden het omgekeerde beeld — structureel op een dag met stijgingen — met NVDA op -0.68%, een dag na een stijging van +3.66%. De grootste chipnaam op de tape bleef buiten de sectorale stijging terwijl deze de zwaarste nieuwsdekking had.
De andere kant: mega-caps opening lager en herstel
De exacte SQL achter elk getal
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 tickerZeven van de acht namen opening lager dan de slotkoers van woensdag; de daaropvolgende beweging maakte het verschil. META opende -3.16% lager en steeg naar +8.1% voor een 4.69% close — de meest heftige reversal van opening naar close op de pagina. MSFT opende -2.25% lager en herstelde naar +0.33%; AMZN (+1.4%) en AAPL (+0.93%) volgden deze trend; TSLA kende geen gap en steeg naar +3.21%. De namen die lager bleven, waren geen growth-aandelen: GOOGL (-0.76%), CVX (-1.06%), JNJ (-1.62%). Waarom aandelen een gap vertonen gedurende de nacht legt het mechanisme uit.
Waar de handel plaatsvond
De exacte SQL achter elk getal
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
round(1000 * dollar_volume_bn / shares_m, 2) AS implied_avg_price,
round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
/ max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard, pct_of_board_leader DESCMU stond opnieuw bovenaan de dollar board op 33.56B, boven SPY (24.37B), NVDA (21.28B) en SNDK (20.59B) — geheugen in twee van de vier hoogste posities. De shares board vertoont een ander marktbeeld: SOXS leidde met 558.1M shares, met een impliciete prijs van $3.91 (relatieve volume).
De exacte SQL achter elk getal
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_timeEen schoolvoorbeeld van een U-vorm: de opening had een volume van 1.79B shares (91.4% van het totaal), het dieptepunt rond het middaguur was 0.64B, en de sluitingsveiling in het laatste halfuur was met 1.96B de grootste van de dag. Ondanks de activiteit bij de opening, eindigde het volume met de sluiting.
De options tape
De exacte SQL achter elk getal
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'De tape registreerde 9.99M prints en 58.85M contracts — minder dan de 63.26M van woensdag. Calls vormden 58% van het volume. Het aandeel 0DTE daalde naar 28.7% ten opzichte van 38.7%. De drie meest verhandelde contracts waren alle drie SPY calls met dezelfde expiratiedatum — de 751C (846.6K contracts, gemiddeld $0.526), de 752C en de 750C — een ladder rond de SPY close van $751.64 (0DTE options bevat informatie over dit product).
Hedge of bet? Een hedge koopt strikes verder van the money; een bet koopt de zijde die men wenst.
De exacte SQL achter elk getal
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)De tape voor dezelfde dag lag at the money: 3768.9k calls en 2563.3k puts binnen een halve procent van de close (59.5% calls). De wings waren verdeeld over de richting — onder de close, 1356.5k puts tegenover 255.4k calls (1.2% call share dieper in de money); boven de close namen calls 91.6% van een veel kleinere bucket van 29.1k. Het wing volume was geconcentreerd op downside strikes, waar protection wordt gekocht: een at-the-money ladder, geen upside ladder.
De quote tape
De exacte SQL achter elk getal
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'Het meest opvallende feit van de dag: 383.44M NBBO-updates op de stock tape, -27.7% vergeleken met woensdag. De volatiliteit zat in de prijsniveaus, niet in de churn bij de touch. QQQ leidde de genoemde tickers met 4.35M, boven de 2.71M van SPY en de 1.83M van NVDA.
De exacte SQL achter elk getal
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 ASCDe mediane quoted spread van SPY was 0.27 bps, QQQ 0.42, NVDA 0.99 — normale cijfers. De bredere tail: MU op 4.23 bps, SNDK op 8.79 bps (de bid-ask spread is de kosten die hiermee wordt gemeten).
De exacte SQL achter elk getal
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
)De gemiddelde quoted spread van SPY van 2.071 cents rangschikte op 10 van 22 voorgaande sessies, binnen een bereik van 1.809–2.865 cent: geen stress in de quote, zelfs niet tijdens die opening.
De exacte SQL achter elk getal
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_mDe options-quote tape registreerde 6.9 miljard NBBO-updates — 18× de stock tape, waarbij de SPY root alleen al op 242M zat.
Rentes: de gegevens van 9 juli
De exacte SQL achter elk getal
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'De Treasury-gegevens van 9 juli zijn na de publicatie binnengekomen, met de gebruikelijke vertraging in het dagelijkse yield-bestand — nu is de 1 rij geregistreerd. De curve van die dag (2026-07-09): 2-jaar 4.16%, 10-jaar 4.54%, 30-jaar 5.05%, 2s10s 0.38 basis points — de 2-jaar daalde ten opzichte van de waarde van 8 juli, terwijl het lange deel stabiel bleef.
De kalender achter de dag
De exacte SQL achter elk getal
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_nvdaEen routinekalender met een ongebruikelijke opening: 127 ex-dividend registraties, 5 reverse splits, 1 forward split, 2979 SEC-filings (623 Form 4s, 605 424B2s, 149 8-Ks). De feed bevatte 184 artikelen van 3 uitgevers; de meest behandelde ticker was NVDA met 20 artikelen, gevolgd door 8 voor de volgende naam.
On deck
From our own tables — facts about the next session, not forecasts.
De exacte SQL achter elk getal
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'
)The next session is 2026-07-10, 0 holiday rows against it: a normal Friday. 153 companies go ex-dividend that morning, 0 from our household-name checklist. Friday's SPY expiry is the heaviest forward one already traded — 1.66M contracts on July 9 versus 0.57M against the July monthly. Short-interest clock: latest settlement on file 2026-06-30, 0 rows yet filed for mid-July — FINRA publishes about eight business days after settlement (why short interest is two weeks old).
De sessie, geverifieerd
De exacte SQL achter elk getal
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'Een volledige reguliere sessie: eerste SPY bar 04:00 ET, laatste 19:59 ET, 390 reguliere minutenbars, geen feestdagrij. Volgende sluiting: Labor Day, September 7, 2026.
FAQ
Wat is er op 9 juli 2026 op de aandelenmarkt gebeurd?
Elke index ETF sloot hoger — QQQ +1.67%, IWM +1.29%, SPY +0.85%, DIA +0.29%, 71.5% van de liquide aandelen steeg. Aandelen in chip-apparatuur vertoonden een gap up die daarna afnam; mega-caps vertoonden een gap down en herstelden.
Waarom stegen chip-apparatuur aandelen zoals KLAC en LRCX op 9 juli 2026?
Onze data geeft geen reden: er zijn geen artikelen of SEC-filings voor KLAC, LRCX, TER of WDC tussen de sluiting van woensdag en die van donderdag. De beweging was al ingeprijsd in de premarket, vóór 9:30 am ET.
Waarom daalde NVDA terwijl de chipsector steeg?
NVDA sloot -0.68% terwijl 12 van veertien chip-aandelen met een winst sloot. Er was geen sprake van een gap (0.16% bij de opening) en het was de meest gedekte ticker met 20 artikelen — een record voor gelijktijdige vermeldingen, maar de oorzaak staat niet in deze data.
Was 9 juli 2026 een ongebruikelijke dag voor de markt?
Niet op indexniveau: de beweging van QQQ rangschikte op 10 van de 21 voorgaande sessies qua omvang, de gemiddelde spread van SPY was 10 van 22. De dispersie daaronder was: -6.25 basispunten tussen de beste en slechtste sector-mand.
Datanotities
Reguliere handelsuren zijn 13:30–20:00 UTC (9:30 am–4:00 pm ET); het premarket-paneel gebruikt 08:00–13:30 UTC. De acht sectorbaskets zijn samengesteld en gelijk gewogen — drie liquide namen per basket, elke ticker die in de SQL van dat paneel staat vermeld. Dit is een vastgestelde methode en geen classificatie van een leverancier: drie namen vertegenwoordigen een sector, niet de gehele sector. Het catalyst-paneel bevat uitsluitend onze nieuwsfeed en de EDGAR-index.
Volledige datanotities
Panelen per ticker zijn alfabetisch geordend, waardoor elke tekstuele verwijzing naar een vaste rij verwijst; leaderboards zijn op waarde geordend, waarbij elke positie beperkt is. De Treasury-print en de afwikkeling van de short-interest in medio juli zijn beperkt tot nul rijen — de komst hiervan vereist een herziening van dit bericht.
Methodologie
- Bronnen: elke panel gebruikt eigen SQL-tabellen — minutenaggregaties, de NBBO-caches voor aandelen en opties, optietransacties, onze nieuwsfeed, de EDGAR-index, dividenden, short interest, feestdagen en Treasury yields.
- Conventies: ruwe UTC-literalen in WHERE, uitsluitend ET-labels in SELECT; gap = de opening van de eerste reguliere bar ÷ de voorgaande reguliere close − 1; cijfers van de voorgaande sessie en de voorgaande week worden binnen de query berekend en nooit overgenomen uit een eerdere post. Warehouse-status per 13 juli 2026.