Strasmore Research
Market recaps wey dey break am down Matt ConnorBy Matt Connor · Updated 2026-08-08

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.

QuerySPY / QQQ / DIA / IWM: July 10 vs July 9 close, regular hours
tickerclose wey happen beforeday openday closegap pctintraday pctpct changeday highday lowshares wey dem trade m
DIA524.22525.64525.770.270.020.3526.47521.743.1
IWM297.26297.69295.960.14-0.58-0.44298.21293.6214.2
QQQ723.19720.7725.54-0.340.670.32726.3971723.7
SPY751.64752.05754.90.050.380.43755.42748.134.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 ticker
Run am yourself

Three 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.

QuerySPY day move for trailing context (~22 sessions, open-to-close)
SPY open to close pctSPY absolute move rankSPY sessions wey dem comparefirst session
0.3811222026-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
)
Run am yourself

Breadth: split tape don return

QueryLiquid-tape breadth: July 10 advancer share vs July 9, $1M-traded filter
advancersdeclinersliquid tickersadvancer pctJul9 advancer pct
31912580586654.471.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
)
Run am yourself

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.

QueryTen names wey define the session: gap, intraday, close, dollars, July 10
tickerclose wey happen beforeday openday closegap pctintraday pctpct chgday dollar bn
AAPL316.17314.72315.33-0.460.19-0.277.39
AMD546.66544557.99-0.492.572.0710.2
AMZN246.95249.55245.331.05-1.69-0.666.13
GOOGL358.89357.52356.93-0.38-0.17-0.554.93
INTC112.55109.58109.83-2.640.23-2.426.62
META631.31660.34669.314.61.366.0222.82
MSFT384.33387.8385.090.9-0.70.27.12
MU990.5964.98978.69-2.581.42-1.1925.9
NVDA202.76202210.96-0.374.444.0426.56
SNDK1858.261778.981915.91-4.277.73.117.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 ticker
Run am yourself

NVDA 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:

QueryThe eleven SPDR sector ETFs: July 10 close vs July 9 close, regular hours
tickerclose wey happen beforeday closepct chgday dollar bn
XLB50.2850.891.210.37
XLC110.54111.6410.69
XLE54.8155.080.491.19
XLF55.5455.710.311.17
XLI181.12181.960.460.93
XLK185.34185.780.241.08
XLP83.2284.131.090.65
XLRE44.2244.440.50.15
XLU45.1245.40.620.59
XLV162.16160.88-0.791.38
XLY116.87117.20.280.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 ticker
Run am yourself

The 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:

QueryNVDA and META for news feed on July 10: every headline wey call company name
ET timetitlepublisher
03:05Global Power Solutions Announces Registration to Attend Data Centre West 2026 in Calgary and Applauds Meta’s Historic CAD $13 Billion Alberta Data Centre InvestmentGlobeNewswire Inc.
11:19Nvidia Is the Cheapest It's Been Since 2019. Why Investors Should Load Up Now.The Motley Fool
11:20Why Meta Platforms Stock Jumped on FridayThe Motley Fool
12:03AI Price War Breaks Out as Meta Tries to Buy Its Way Into the FrontierInvesting.com
18:023 Reasons I Think Meta Platforms is a Screaming Buy Right NowThe 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 ASC
Run am yourself

META 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

QueryTop 6 by dollars traded, top 4 by shares traded: July 10 regular hours
leaderboardtickerdollar volume bnshares mimplied avg price
by dollars tradedNVDA26.56127.4208.48
by dollars tradedSPY26.2934.9753.3
by dollars tradedMU25.926.5977.36
by dollars tradedMETA22.8234.1669.21
by dollars tradedSKHYV18.03105171.71
by dollars tradedQQQ17.1523.7723.63
by shares tradedBITO2.35270.38.69
by shares tradedSOXS1.844454.13
by shares tradedTZA0.84209.64.01
by shares tradedDFNS0.02188.90.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 DESC
Run am yourself

The 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:

QuerySK Hynix first session: the listing record vs the tape, July 10, 2026
recorded issue priceraised bnfirst RTH openopen vs issue pctregular closeRTH dollar bnshares for today mbars before debut
158.1428.11707.5168.3318.03106.80
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'
Run am yourself

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:

Query2026 five biggest US listings by dollars raised
issuer_namedey listedraised bn
Space Exploration Technologies Corp.2026-06-1275
SK Hynix Inc2026-07-1028.1
Cerebras Systems Inc2026-05-145.6
Innio N.V.2026-06-042.4
Madison Air Solutions Corp.2026-04-162.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 5
Run am yourself

SpaceX 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

QueryOptions tape: contracts, call %, 0DTE share vs Thursday, top contract, Friday expiry day
option prints mcontracts mJul9 contracts mcall pct of volumepct 0dteJul9 pct 0dteSPY regular closetop1 undtop1 striketop1 typetop1 contractstop1 avg pxtop1 na 0dtetop1 moneyness
10.5665.5958.8559.448.728.7754.9SPY755C10052790.26210.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'
Run am yourself

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

QueryStocks NBBO update count: July 10 vs July 9, with named-ticker updates (millions)
Jul10 updates mJul9 updates mday-over-day pctJul10 SPY updates mJul10 QQQ updates mJul10 NVDA updates m
402.21383.444.92.484.282.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'
Run am yourself

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).

QuerySPY / QQQ / NVDA / META / MU / SNDK / AVGO: RTH median quoted spread in basis points
tickermedian spread bps
SPY0.27
QQQ0.55
NVDA0.96
META3.26
AVGO3.5
MU5
SNDK11.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 ASC
Run am yourself

SPY 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.

QueryOptions NBBO tape: total updates vs stock tape, plus the SPY root slice
Jul10 options bnoptions to stock ratioJul10 SPY options m
6.7316.7243
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_m
Run am yourself

The 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

QueryTreasury print status: July 9 and July 10 rows on record, and July 8 curve (latest as authoring)
Jul9 print rowsJul10 print rowslatest print datelatest 2y pctlatest 10y pctlatest 30y pct
112026-07-104.214.565.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'
Run am yourself

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

QueryEx-divs, splits, news, and the July 10 SEC filing mix
ex-dividend recordsreverse splitsforward splitsfil totalfil filersfil Form 4fil 424b2fil 8-Kfil 13Ffil 10-QSKHYV final prospectusfil Form 4 minus next formnews articlesnews publisherstop news tickertop news n
153643137178069453215099711621543NVDA11
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_n
Run am yourself

153 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.

QuerySEC filings per day, week of July 6 to July 10
filing datefilingsfilers
2026-07-0650192883
2026-07-0734852053
2026-07-0837312163
2026-07-0929811781
2026-07-1031371780
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_date
Run am yourself

Monday 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:

QueryWeek of July 13–17: closures, ex-dividends, splits, the monthly expiry, and short-interest lag
holiday rows next weekex-div records next weekhousehold ex-divssplits next weekJul 17 expiry pct of Friday volumeJul 17 expiry contracts mlatest SI settlementSI settlement age days
069204217.811.692026-06-3010
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'
Run am yourself

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

QuerySession verification: first/last SPY bar ET, regular-bar count, holiday receipts, next closure
first SPY bar ETlast SPY bar ETregular session barsday sessionsJul 10 holiday rowsnext closure datenext closure name
04:0019:59390102026-09-07Labor 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'
Run am yourself

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_aggs for prices and volumes, options_trades for 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.

#recap#daily#spy#qqq#nvda#market structure