July 10, 2026 market recap: day in numbers
NVDA lead the tape, META double down, MU cool, and small caps slip. See how SPY and QQQ move, plus the full Friday numbers from stored query data.
Friday, July 10, 2026 na the third act of the rotation: NVDA, the chip wey miss Thursday sector celebration, wake up and lead the whole tape, +4.04% on 26.56B dollars wey traders trade, making am the heaviest name for the session. META run +6.02% after Thursday reversal, while MU, the week's volume monster, finally cool down (-1.19%). The indexes hardly show any of this: SPY +0.43%, QQQ +0.32%, and small caps close red. Every number below come from stored query; expand any panel to see the exact SQL.
The scoreboard
Every change dey compare July 10 last regular-session minute bar with Thursday July 9 own, for consecutive trading sessions. Rows dey alphabetical, so every ETF keep fixed position.
| ticker | close wey happen before | day open | day close | gap pct | intraday pct | pct change | day high | day low | shares wey dem trade m |
|---|---|---|---|---|---|---|---|---|---|
| DIA | 524.22 | 525.64 | 525.77 | 0.27 | 0.02 | 0.3 | 526.47 | 521.74 | 3.1 |
| IWM | 297.26 | 297.69 | 295.96 | 0.14 | -0.58 | -0.44 | 298.21 | 293.62 | 14.2 |
| QQQ | 723.19 | 720.7 | 725.54 | -0.34 | 0.67 | 0.32 | 726.39 | 717 | 23.7 |
| SPY | 751.64 | 752.05 | 754.9 | 0.05 | 0.38 | 0.43 | 755.42 | 748.1 | 34.9 |
The exact SQL behind every number
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-09 13:30:00' AND window_start < '2026-07-09 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-10 13:30:00' AND window_start < '2026-07-10 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 tickerThree out of the four close green, but none make any dramatic move: SPY +0.43% to $754.9, QQQ +0.32% (a -0.34% opening dip wey buyers buy back through the day), DIA +0.3%. The odd one na IWM at -0.44%. Small caps, wey be Thursday co-stars, give back their gains while mega-cap side of the tape carry the day. That size split na the clearest divergence for the day. Since both treasury prints still dey transit, the rates side never enter the record yet.
Day unusual dey?
SPY open-to-close move of +0.38% rank 11 out of 22 trailing sessions by absolute size. Na the third session straight wey strong movement for individual names cancel out to give index day wey dey around the middle of the pack.
| SPY open to close pct | SPY absolute move rank | SPY sessions wey dem compare | first session |
|---|---|---|---|
| 0.38 | 11 | 22 | 2026-06-09 |
The exact SQL behind every number
SELECT
round(anyIf(oc_pct, d = toDate('2026-07-10')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-10'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-10'))) + 1 AS spy_abs_move_rank,
count() AS spy_sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-09 13:30:00')
AND window_start < toDateTime('2026-07-11 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)Breadth: split tape don return
| advancers | decliners | liquid tickers | advancer pct | Jul9 advancer pct |
|---|---|---|---|---|
| 3191 | 2580 | 5866 | 54.4 | 71.5 |
The exact SQL behind every number
SELECT
countIf(close_10 > close_9 AND close_9 > 0 AND dv_10 >= 1000000) AS advancers,
countIf(close_10 < close_9 AND close_9 > 0 AND dv_10 >= 1000000) AS decliners,
countIf(close_9 > 0 AND close_10 > 0 AND dv_10 >= 1000000) AS liquid_tickers,
round(100.0 * countIf(close_10 > close_9 AND close_9 > 0 AND dv_10 >= 1000000) / countIf(close_9 > 0 AND close_10 > 0 AND dv_10 >= 1000000), 1) AS advancer_pct,
round(100.0 * countIf(close_9 > close_8 AND close_8 > 0 AND dv_9 >= 1000000) / countIf(close_9 > 0 AND close_8 > 0 AND dv_9 >= 1000000), 1) AS jul9_advancer_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 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,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')) AS close_10,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00') AS dv_10,
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
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-10 20:00:00'
GROUP BY ticker
)After Thursday 71.5% surge, advancer share settle back to 54.4%, with 3191 up and 2580 down across the liquid tape. Index close green, but breadth barely positive: na the biggest names carry most of the gains. The practical meaning: cap-weighted gain for split tape dey describe the heaviest names, no be the typical stock. Na concentration wey market dey show, no be forecast.
The day highlight: NVDA turn
Rows dey alphabetical, so each name dey keep fixed position, with ten names wey cover chip complex and mega-caps.
| ticker | close wey happen before | day open | day close | gap pct | intraday pct | pct chg | day dollar bn |
|---|---|---|---|---|---|---|---|
| AAPL | 316.17 | 314.72 | 315.33 | -0.46 | 0.19 | -0.27 | 7.39 |
| AMD | 546.66 | 544 | 557.99 | -0.49 | 2.57 | 2.07 | 10.2 |
| AMZN | 246.95 | 249.55 | 245.33 | 1.05 | -1.69 | -0.66 | 6.13 |
| GOOGL | 358.89 | 357.52 | 356.93 | -0.38 | -0.17 | -0.55 | 4.93 |
| INTC | 112.55 | 109.58 | 109.83 | -2.64 | 0.23 | -2.42 | 6.62 |
| META | 631.31 | 660.34 | 669.31 | 4.6 | 1.36 | 6.02 | 22.82 |
| MSFT | 384.33 | 387.8 | 385.09 | 0.9 | -0.7 | 0.2 | 7.12 |
| MU | 990.5 | 964.98 | 978.69 | -2.58 | 1.42 | -1.19 | 25.9 |
| NVDA | 202.76 | 202 | 210.96 | -0.37 | 4.44 | 4.04 | 26.56 |
| SNDK | 1858.26 | 1778.98 | 1915.91 | -4.27 | 7.7 | 3.1 | 17.01 |
The exact SQL behind every number
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-10 00:00:00')) AS prior_close,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-10 00:00:00')) AS day_open,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-10 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'AMD', 'AMZN', 'GOOGL', 'INTC', 'META', 'MSFT', 'MU', 'NVDA', 'SNDK')
AND ((window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')
OR (window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 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 tickerNVDA close +4.04%, na im be the best day for the week, one session after e close red while every other chip rally (recap for Thursday get the evidence). META add +6.02% on 22.82B dollars, making am two big green days back-to-back after the sharp reversal wey happen Thursday. The memory trade cool down: MU close -1.19% after two strong green sessions, and INTC give back -2.42%. SNDK (+3.1%) and AMD (+2.07%) continue to climb. The rest of the mega-cap shelf quiet, AAPL -0.27%, MSFT +0.2%, AMZN -0.66%—na one-stock day wey dress like sector move.
Rally reach the rest of the market?
The eleven SPDR sector funds, Friday close compare with Thursday:
| ticker | close wey happen before | day close | pct chg | day dollar bn |
|---|---|---|---|---|
| XLB | 50.28 | 50.89 | 1.21 | 0.37 |
| XLC | 110.54 | 111.64 | 1 | 0.69 |
| XLE | 54.81 | 55.08 | 0.49 | 1.19 |
| XLF | 55.54 | 55.71 | 0.31 | 1.17 |
| XLI | 181.12 | 181.96 | 0.46 | 0.93 |
| XLK | 185.34 | 185.78 | 0.24 | 1.08 |
| XLP | 83.22 | 84.13 | 1.09 | 0.65 |
| XLRE | 44.22 | 44.44 | 0.5 | 0.15 |
| XLU | 45.12 | 45.4 | 0.62 | 0.59 |
| XLV | 162.16 | 160.88 | -0.79 | 1.38 |
| XLY | 116.87 | 117.2 | 0.28 | 0.65 |
The exact SQL behind every number
WITH per_etf AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-10 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-10 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND ((window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')
OR (window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_etf
ORDER BY tickerThe green move spread pass chip story, and e no land where chip story suppose put am. Materials (+1.21%), consumer staples (+1.09%) and communication services (+1%), the fund wey hold META, lead the board. Technology, wey get the day headline stocks MU and INTC inside am red, add only 0.24%. Health care na the only decliner at -0.79%. No sector fund move reach even two points: ten out of eleven close green, but all the moves shallow. Na single names carry the drama.
Wetín news feed talk
The panels show wetin move; the feed show wetin dem write. Every July 10 headline wey tag NVDA or META and mention the company for title:
| ET time | title | publisher |
|---|---|---|
| 03:05 | Global Power Solutions Announces Registration to Attend Data Centre West 2026 in Calgary and Applauds Meta’s Historic CAD $13 Billion Alberta Data Centre Investment | GlobeNewswire Inc. |
| 11:19 | Nvidia Is the Cheapest It's Been Since 2019. Why Investors Should Load Up Now. | The Motley Fool |
| 11:20 | Why Meta Platforms Stock Jumped on Friday | The Motley Fool |
| 12:03 | AI Price War Breaks Out as Meta Tries to Buy Its Way Into the Frontier | Investing.com |
| 18:02 | 3 Reasons I Think Meta Platforms is a Screaming Buy Right Now | The Motley Fool |
The exact SQL behind every number
SELECT
formatDateTime(toTimeZone(published_utc, 'America/New_York'), '%H:%i') AS et_time,
title,
JSONExtractString(publisher, 'name') AS publisher
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-10'
AND (has(tickers, 'NVDA') OR has(tickers, 'META'))
AND NOT has(tickers, 'SPCX')
AND (positionCaseInsensitive(title, 'nvidia') > 0 OR positionCaseInsensitive(title, 'meta') > 0)
ORDER BY published_utc ASC, title ASCMETA green days wey follow each other get story behind am: overnight GlobeNewswire wire (03:05 ET) praise wetin e call Meta “historic” Alberta data-centre investment. Investing.com midday framing (12:03 ET) read “AI Price War Breaks Out as Meta Tries to Buy Its Way Into the Frontier.” NVDA no get any catalyst headline. The only piece wey mention Nvidia (11:19 ET, The Motley Fool) na valuation commentary. Na the publishers make these attributions; from the tape alone, nobody know wetin cause NVDA move. To talk am plainly better pass to invent cause.
Wia dem trade the money
| leaderboard | ticker | dollar volume bn | shares m | implied avg price |
|---|---|---|---|---|
| by dollars traded | NVDA | 26.56 | 127.4 | 208.48 |
| by dollars traded | SPY | 26.29 | 34.9 | 753.3 |
| by dollars traded | MU | 25.9 | 26.5 | 977.36 |
| by dollars traded | META | 22.82 | 34.1 | 669.21 |
| by dollars traded | SKHYV | 18.03 | 105 | 171.71 |
| by dollars traded | QQQ | 17.15 | 23.7 | 723.63 |
| by shares traded | BITO | 2.35 | 270.3 | 8.69 |
| by shares traded | SOXS | 1.84 | 445 | 4.13 |
| by shares traded | TZA | 0.84 | 209.6 | 4.01 |
| by shares traded | DFNS | 0.02 | 188.9 | 0.11 |
The exact SQL behind every number
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
round(1000 * dollar_volume_bn / shares_m, 2) AS implied_avg_price
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-10 13:30:00' AND window_start < '2026-07-10 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-10 13:30:00' AND window_start < '2026-07-10 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard, dollar_volume_bn DESCThe top three for dollar value finish within one billion of each other: NVDA at 26.56B, SPY at 26.29B, and MU at 25.9B. NVDA collect the top spot after MU hold am for two sessions. META at 22.82B trade more dollar value than QQQ. Na one stock print more dollars pass the index wey hold am. For #5, one ticker wey no dey exist the day before enter the list. Next section.
Other headline: mega-listing first tape
Friday na also debut day, na the biggest US listing since SpaceX June offering: SK Hynix Inc US shares start trading under brand-new symbol and quickly enter among the tape names wey trade pass:
| recorded issue price | raised bn | first RTH open | open vs issue pct | regular close | RTH dollar bn | shares for today m | bars before debut |
|---|---|---|---|---|---|---|---|
| 158.14 | 28.1 | 170 | 7.5 | 168.33 | 18.03 | 106.8 | 0 |
The exact SQL behind every number
SELECT
(SELECT round(toFloat64(final_issue_price), 2) FROM global_markets.stocks_ipos
WHERE issuer_name = 'SK Hynix Inc' AND listing_date = '2026-07-10') AS recorded_issue_price,
(SELECT round(total_offer_size / 1e9, 1) FROM global_markets.stocks_ipos
WHERE issuer_name = 'SK Hynix Inc' AND listing_date = '2026-07-10') AS raised_bn,
round(toFloat64(argMinIf(open, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')), 2) AS first_rth_open,
round(100 * (toFloat64(argMinIf(open, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'))
/ (SELECT toFloat64(final_issue_price) FROM global_markets.stocks_ipos
WHERE issuer_name = 'SK Hynix Inc' AND listing_date = '2026-07-10') - 1), 1) AS open_vs_issue_pct,
round(toFloat64(argMaxIf(close, window_start, window_start < '2026-07-10 20:00:00')), 2) AS regular_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00') / 1e9, 2) AS rth_dollar_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS day_shares_m,
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SKHYV' AND window_start < '2026-07-10 00:00:00') AS bars_before_debut
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SKHYV' AND window_start >= '2026-07-10 04:00:00' AND window_start < '2026-07-11 00:00:00'The offering records show say recorded issue price na $158.14 and dem raise 28.1B, second among 2026 US listings only to SpaceX June deal, wey dem receipt just below. The first regular-session print come at $170, 7.5% above am, and the day close at $168.33 after 18.03B regular-hours dollars trade, fifth for the day board, ahead of QQQ, for the first session. The symbol receipt show say: 0 bars dey for this ticker before July 10, so na genuinely new listing, no be reused symbol. SK Hynix and Micron na the two listed giants for memory industry, and MU, the week's heaviest name, cool -1.19% for the same session wey its rival US line start trading. As both events happen together, the SpaceX debut playbook show wetin a listing fit add for its first month.
Where Friday raise dey among the year's class:
| issuer_name | dey listed | raised bn |
|---|---|---|
| Space Exploration Technologies Corp. | 2026-06-12 | 75 |
| SK Hynix Inc | 2026-07-10 | 28.1 |
| Cerebras Systems Inc | 2026-05-14 | 5.6 |
| Innio N.V. | 2026-06-04 | 2.4 |
| Madison Air Solutions Corp. | 2026-04-16 | 2.2 |
The exact SQL behind every number
SELECT
issuer_name,
toString(listing_date) AS listed,
round(total_offer_size / 1e9, 1) AS raised_bn
FROM global_markets.stocks_ipos
WHERE listing_date >= '2026-01-01' AND listing_date < '2026-07-11'
AND total_offer_size > 0
ORDER BY total_offer_size DESC, issuer_name ASC
LIMIT 5SpaceX June deal raise $75B, Friday SK Hynix listing dey second at $28.1B, while third place (Cerebras Systems Inc, $5.6B) no near am at all. The top two dey for their own tier. The H1 IPO ledger carry the full table.
The options tape
| option prints m | contracts m | Jul9 contracts m | call pct of volume | pct 0dte | Jul9 pct 0dte | SPY regular close | top1 und | top1 strike | top1 type | top1 contracts | top1 avg px | top1 na 0dte | top1 moneyness |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10.56 | 65.59 | 58.85 | 59.4 | 48.7 | 28.7 | 754.9 | SPY | 755 | C | 1005279 | 0.262 | 1 | 0.1 |
The exact SQL behind every number
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) = '260710', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-10 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00'
GROUP BY ticker
ORDER BY vol DESC
LIMIT 2
)
) AS top2,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'
) AS spy_regular_close,
(
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'
) AS jul9_contracts_m,
(
SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260709') / sum(size), 1)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
) AS jul9_pct_0dte
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
jul9_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) = '260710') / sum(size), 1) AS pct_0dte,
jul9_pct_0dte,
spy_regular_close,
top2.1[1] AS top1_und, top2.2[1] AS top1_strike, top2.3[1] AS top1_type, top2.4[1] AS top1_contracts, top2.5[1] AS top1_avg_px, top2.6[1] AS top1_is_0dte,
round(toFloat64(top2.2[1]) - spy_regular_close, 2) AS top1_moneyness
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-10 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00'Friday na the week’s weekly-expiry session, and the prints show am clearly: 65.59M contracts, making am the busiest options day for the week. The 0DTE share rise to 48.7% from Thursday’s 28.7%. Na the usual expiry-Friday pattern (when do options expire dey show the calendar). Calls make up 59.4% of volume. The busiest single contract na: SPY 755C, a same-day contract wey finish 0.1 from SPY’s $754.9 close.
The quote tape
| Jul10 updates m | Jul9 updates m | day-over-day pct | Jul10 SPY updates m | Jul10 QQQ updates m | Jul10 NVDA updates m |
|---|---|---|---|---|---|
| 402.21 | 383.44 | 4.9 | 2.48 | 4.28 | 2.24 |
The exact SQL behind every number
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-10')) / 1e6, 2) AS jul10_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09')) / 1e6, 2) AS jul9_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-10')) / countIf(toDate(sip_timestamp) = toDate('2026-07-09')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-10') AND ticker = 'SPY') / 1e6, 2) AS jul10_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-10') AND ticker = 'QQQ') / 1e6, 2) AS jul10_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-10') AND ticker = 'NVDA') / 1e6, 2) AS jul10_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00'The stock-quote tape carry 402.21M NBBO updates, 4.9% compared with Thursday. Na normal Friday churn. QQQ (4.28M) lead the named counts, ahead of SPY (2.48M) and NVDA (2.24M).
| ticker | median spread bps |
|---|---|
| SPY | 0.27 |
| QQQ | 0.55 |
| NVDA | 0.96 |
| META | 3.26 |
| AVGO | 3.5 |
| MU | 5 |
| SNDK | 11.04 |
The exact SQL behind every number
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', 'META', 'MU', 'SNDK', 'AVGO')
AND sip_timestamp >= '2026-07-10 13:30:00' AND sip_timestamp < '2026-07-10 20:00:00'
AND bid_price > 0 AND ask_price > 0 AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps ASCSPY get 0.27 bps RTH median spread, QQQ get 0.55 bps, and NVDA get 0.96 bps. No stress show for any quote, even as the main names dey churn underneath.
| Jul10 options bn | options to stock ratio | Jul10 SPY options m |
|---|---|---|
| 6.73 | 16.7 | 243 |
The exact SQL behind every number
WITH
(SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-10 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00') AS jul10_options_rows,
(SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-10 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00') AS jul10_stock_quote_rows
SELECT
round(jul10_options_rows / 1e9, 2) AS jul10_options_bn,
round(jul10_options_rows / jul10_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-10 13:30:00' AND sip_timestamp < '2026-07-10 20:00:00') / 1e6, 0) AS jul10_spy_options_mThe options-quote tape run 6.73 billion NBBO updates. Na 16.7× the stock tape, with SPY root recording 243 million regular-hours updates on the expiry day.
Rates: prints wey dey on file
| Jul9 print rows | Jul10 print rows | latest print date | latest 2y pct | latest 10y pct | latest 30y pct |
|---|---|---|---|---|---|
| 1 | 1 | 2026-07-10 | 4.21 | 4.56 | 5.06 |
The exact SQL behind every number
SELECT
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-09') AS jul9_print_rows,
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-10') AS jul10_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
FROM global_markets.treasury_yields
WHERE date = '2026-07-10'Both July 9 and July 10 treasury prints enter after we don write the article, and dem take longer pass the file’s usual one-session lag. 1 and 1 rows dey on record now. Friday’s curve (2026-07-10): 2-year 4.21%, 10-year 4.56%, 30-year 5.06%. E don return to July 8 marks after the short easing for the 2-year on Thursday. Both receipt columns get one as limit, so this section remain tied to the prints wey e quote.
Calendar wey dey behind the day
| ex-dividend records | reverse splits | forward splits | fil total | fil filers | fil Form 4 | fil 424b2 | fil 8-K | fil 13F | fil 10-Q | SKHYV final prospectus | fil Form 4 minus next form | news articles | news publishers | top news ticker | top news n |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 153 | 6 | 4 | 3137 | 1780 | 694 | 532 | 150 | 99 | 7 | 1 | 162 | 154 | 3 | NVDA | 11 |
The exact SQL behind every number
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-10'
) AS news,
(
SELECT (argMax(t, (n, t)), max(n))
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-10'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news,
(
SELECT (count(), uniqExact(cik), countIf(form_type = '4'), countIf(form_type = '424B2'), countIf(form_type = '8-K'), countIf(form_type = '13F-HR'), countIf(form_type = '10-Q'), countIf(form_type = '424B4' AND positionCaseInsensitive(issuer_name, 'hynix') > 0), countIf(form_type = '4') - (SELECT max(n) FROM (SELECT count() AS n FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-10' AND form_type != '4' GROUP BY form_type)))
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date = '2026-07-10'
) AS fil
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-10') AS ex_dividend_records,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-10') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-10') AS forward_splits,
fil.1 AS fil_total,
fil.2 AS fil_filers,
fil.3 AS fil_form4,
fil.4 AS fil_424b2,
fil.5 AS fil_8k,
fil.6 AS fil_13f,
fil.7 AS fil_10q,
fil.8 AS skhyv_final_prospectus,
fil.9 AS fil_form4_minus_next_form,
news.1 AS news_articles, news.2 AS news_publishers,
top_news.1 AS top_news_ticker, top_news.2 AS top_news_n153 ex-dividend records, 6 reverse splits and 4 forward splits wey dem execute, plus 154 news articles across 3 publishers, with NVDA being the ticker wey dem cover pass, at 11 articles. SEC EDGAR daily index carry 3137 filings for July 10, from 1780 different filers. Insider paperwork plenty pass for the mix: 694 Form 4s, na the filing wey officer or director submit after e buy or sell shares for e own company (common SEC filings explain each one). The remaining filings for the day na 532 424B2 pricing supplements (the prospectus wey bank file for each new structured note), 150 8-K current reports, 99 quarterly 13F-HR holdings reports from institutional managers, and only 7 10-Q quarterly reports. July 10 fall between reporting seasons.
The other major news for the day leave paper trail too. SK hynix Inc. file 424B4, the final priced prospectus wey company file after e complete offering, for the same session wey its US line start trading: 1 of that kind filing dey for July 10 index under the issuer name.
That filing day busy? The week get the answer.
| filing date | filings | filers |
|---|---|---|
| 2026-07-06 | 5019 | 2883 |
| 2026-07-07 | 3485 | 2053 |
| 2026-07-08 | 3731 | 2163 |
| 2026-07-09 | 2981 | 1781 |
| 2026-07-10 | 3137 | 1780 |
The exact SQL behind every number
SELECT
toString(filing_date) AS filing_date,
count() AS filings,
uniqExact(cik) AS filers
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-06' AND filing_date < '2026-07-11'
GROUP BY filing_date
ORDER BY filing_dateMonday July 6 get the heaviest index for the week, with 5019 filings. Thursday na the lightest, with 2981. Friday’s 3137 dey between both days, from 1780 filers: na normal day for the paperwork tape, no matter wetin dey happen for the price tape.
On deck
Next week, from the same tables:
| holiday rows next week | ex-div records next week | household ex-divs | splits next week | Jul 17 expiry pct of Friday volume | Jul 17 expiry contracts m | latest SI settlement | SI settlement age days |
|---|---|---|---|---|---|---|---|
| 0 | 692 | 0 | 42 | 17.8 | 11.69 | 2026-06-30 | 10 |
The exact SQL behind every number
SELECT
(SELECT count() FROM global_markets.stocks_market_holidays
WHERE date >= '2026-07-13' AND date <= '2026-07-17') AS holiday_rows_next_week,
(SELECT count() FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= '2026-07-13' AND ex_dividend_date <= '2026-07-17') AS exdiv_records_next_week,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'XOM', 'KO', 'PG', 'WMT', 'CVX', 'HD'))
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= '2026-07-13' AND ex_dividend_date <= '2026-07-17') AS household_exdivs,
(SELECT count() FROM global_markets.stocks_splits
WHERE execution_date >= '2026-07-13' AND execution_date <= '2026-07-17') AS splits_next_week,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717') / sum(size), 1) AS jul17_expiry_pct_of_friday_volume,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717')) / 1e6, 2) AS jul17_expiry_contracts_m,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
WHERE _ingest_time < '2026-07-12 00:00:00') AS latest_si_settlement,
(SELECT dateDiff('day', max(settlement_date), toDate('2026-07-10')) FROM global_markets.stocks_short_interest
WHERE _ingest_time < '2026-07-12 00:00:00') AS si_settlement_age_days
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-10 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00'The holiday table get 0 rows for July 13–17, with five full trading sessions scheduled. The next closure na Labor Day (2026-09-07). 692 dividend records go ex-dividend, 0 among ten household names we check, and 42 splits go execute. The marked date na Friday, July 17: the third Friday and July monthly options expiration. 17.8% of Friday option volume, equal to 11.69M contracts, don already dey inside that expiry. The newest short-interest settlement wey dey on file na 2026-06-30, and e be 10 days old. The mid-July print go show with the usual lag.
Di session, wey dem verify
| first SPY bar ET | last SPY bar ET | regular session bars | day sessions | Jul 10 holiday rows | next closure date | next closure name |
|---|---|---|---|---|---|---|
| 04:00 | 19:59 | 390 | 1 | 0 | 2026-09-07 | Labor Day |
The exact SQL behind every number
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,
countIf(window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-10') AS jul10_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-10' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-10' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-10 00:00:00' AND window_start < '2026-07-11 00:00:00'Full ordinary session: first SPY bar na 04:00 ET, last one na 19:59 ET, 390 regular-hours bars, 1 session for the window, and no holiday row. Next scheduled closure na Labor Day on 2026-09-07.
FAQ
Market perform how on Friday, July 10, 2026?
SPY close +0.43%, QQQ +0.32%, DIA +0.3%; small-cap IWM drop -0.44%, and na only 54.4% of liquid tickers advance. Index still show small gain, but tape dey split.
Why Nvidia stock go up on July 10, 2026?
NVDA close +4.04% on 26.56B dollars wey trade, making am the heaviest name for the session. This happen one day after e no join the chip rally. Our news feed no carry any catalyst headline for am, so this data no fit identify the cause.
Which IPO be the biggest one for 2026 so far?
By dollars raised, na SpaceX June listing at $75 billion. SK Hynix July 10 debut rank second at $28.1 billion.
July 10, 2026 be options expiration day?
Yes, na weekly Friday expiry: 0DTE contracts make up 48.7% of option volume, up from 28.7% on Thursday. The next monthly expiration na Friday, July 17.
Data notes
Dem arrange named per-ticker panels alphabetically, so when prose mention dem, e point to fixed rows. Leaderboards dey follow value order, and positional claims get sanity bounds wey encode dem. One data-arrival receipt na deliberate tripwire wey dem bound to zero: treasury prints for July 9 and July 10 never enter file yet, so when dem arrive, e go hold the post for rates rewrite. July 10 EDGAR daily index na the second tripwire like this. E don land since then, and this version dey read the real filing counts. Dem verify say quote tapes, both stock and options, complete before dem write quote section. Sector read dey use the eleven SPDR select-sector funds. Na fixed basket wey dem declare, no be vendor classification. News panel list every July 10 headline wey get NVDA or META tag and title mention the company. Na one feed attention, no be all the world media. On-deck block deliberately dey cover the calendar week after the period.
Methodology
- Market data source: consolidated tape,
delayed_stocks_minute_aggsfor prices and volumes,options_tradesfor the options tape. - Time zone handling: all stored timestamps na UTC; ET labels na
toTimeZone(..., 'America/New_York')calculate am for SELECT lists only; WHERE clauses dey use raw UTC literals. - Regular-hours window: 13:30–20:00 UTC, we verify am against observed SPY minute bars for the session-verification panel.
- Prior-session comparisons: we calculate am inside query from July 9; we no carry am over from previous post.
- Deterministic aggregates: tuple-keyed tie-breaks plus deterministic news tie-break dey keep regenerations stable.
- Warehouse as-of date: July 13, 2026 (T+3 for the period); equity minute tapes, options trades, quote tapes and the EDGAR filing index don fully enter warehouse. The treasury receipt above show say na only one dataset still dey transit.
Cross-links: recap for July 9, 2026, full recap for the week, when options expire, 0DTE options, and relative volume.