Market Recap: July 9, 2026, The Day in Numbers
Stocks NBBO update count: July 9 vs July 8, with named-ticker updates (millions)scalar ·
2026-07-26 · 1×8383.44
Premarket path, 4:00-9:29 am ET: last premarket print vs Wednesday's close, and the open that followedtable ·
2026-07-26 · 6×8
Options NBBO tape: total updates vs the stock tape, plus the SPY root slicescalar ·
2026-07-26 · 1×36.9
Options tape: prints, contracts, call %, 0DTE share vs Wednesday, top contractsscalar ·
2026-07-26 · 1×229.99
Named catalysts on file: news articles and SEC filings per name, Wednesday's close through Thursday'stable ·
2026-07-26 · 9×5
Receipts: July 9 green/red counts across the fourteen names, and NVDA's two-day turnscalar ·
2026-07-26 · 1×612
Fourteen chip names: gap at the open vs the rest of the day, July 9table ·
2026-07-26 · 14×8
Liquid-tape breadth: July 9 advancer share vs July 8, $1M-traded filterscalar ·
2026-07-26 · 1×84,263
Market Recap: July 8, 2026, The Day in Numbers
Shares per 30-minute ET bucket, regular hours, with % of the day's biggest bucketseries ·
2026-07-26 · 13×3
Top 6 by dollars traded, top 4 by shares traded: July 8 regular hourstable ·
2026-07-26 · 10×6
Session verification: first/last SPY bar ET, regular-bar count, holiday receipts, next closurescalar ·
2026-07-26 · 1×8919
SPY / QQQ / NVDA / TSLA / MU / SNDK / AVGO: RTH median quoted spread in basis pointsranking ·
2026-07-26 · 7×2
Ex-divs, splits, SEC filings, news attentionscalar ·
2026-07-26 · 1×1381
Treasury yields: July 8 vs July 7, populated maturities + 2s10sranking ·
2026-07-26 · 8×3
SPY / QQQ day move in trailing context (close-over-close, ~22 sessions)scalar ·
2026-07-26 · 1×70.25
SPY's RTH average quoted spread in trailing-month contextscalar ·
2026-07-26 · 1×72.202
SPY / QQQ / DIA / IWM: July 8 vs the July 7 close, regular hourstable ·
2026-07-26 · 4×10
Rotation check: eight names, defensives, mega-caps, biotechtable ·
2026-07-26 · 8×8
Stocks NBBO update count: July 8 vs July 7, with named-ticker updates (millions)scalar ·
2026-07-26 · 1×8530.55
Options NBBO tape: total updates vs the stock tape, plus the SPY root slicescalar ·
2026-07-26 · 1×39.62
Options tape: prints, contracts, call %, 0DTE share vs Tuesday, top contractscalar ·
2026-07-26 · 1×1410.44
Receipts: July 8 and July 7 green/red counts across the same fourteen namesscalar ·
2026-07-26 · 1×612
Fourteen chip names: prior close, day close, day range, dollar volume, low/high minute ETtable ·
2026-07-26 · 14×10
Liquid-tape breadth: July 8 advancer share vs July 7, $1M-traded filterscalar ·
2026-07-26 · 1×81,821
Market Recap: July 7, 2026, The Day in Numbers
Volume leaders two ways: top 6 by dollars traded, top 4 by shares traded (one reused-symbol listing excluded pending entity verification)table ·
2026-07-26 · 10×5
SPY's option quotes on July 7: the whole root, and the near-the-money same-day touch through the air pocket against a midday controlscalar ·
2026-07-26 · 1×13327.55
Session check: SPY's observed minute-bar span, the holiday table, and the next closure on the calendarscalar ·
2026-07-26 · 1×8902
The touch through the air pocket: median quoted spread and quote rate, 10:36–10:48 ET vs a midday control (12 minutes each)table ·
2026-07-26 · 10×9
One row for the whole options day: volume, call share, 0DTE, and the two contracts that bracketed SPY's closescalar ·
2026-07-26 · 1×2410.6
July 7's corporate calendar and information flow, in one rowscalar ·
2026-07-26 · 1×1580
The treasury curve: July 7 vs the July 6 print (populated maturities only)ranking ·
2026-07-26 · 8×3
QQQ and SPY: July 7 ranked against the trailing month of sessions (rank 1 = biggest absolute move)scalar ·
2026-07-26 · 1×7-1.82
SPY's update-weighted average quoted spread: July 7 ranked against the trailing month (rank 1 = tightest)scalar ·
2026-07-26 · 1×71.809
SPY / QQQ / DIA / IWM: July 7 vs the July 6 close, regular hourstable ·
2026-07-26 · 4×10
What rose while chips fell: and the day's loudest single printtable ·
2026-07-26 · 8×8
The whole equity NBBO stream: July 7 vs July 6 update countsscalar ·
2026-07-26 · 1×5492.76
The options NBBO stream: July 7 against July 6, and against the same session's equity quotesscalar ·
2026-07-26 · 1×68.69B
The chip complex on July 7: change vs Monday's close, range timing, and dollar volumetable ·
2026-07-26 · 14×10
Advancers vs decliners among tickers with at least $1M traded on July 7scalar ·
2026-07-26 · 1×72,091
Market Recap: July 6, 2026, The Day in Numbers
Shares traded per 30-minute bucket, regular hours (billions)series ·
2026-07-26 · 13×3
Volume leaders two ways: top 6 by dollars traded, top 4 by shares traded (one reused-symbol listing excluded pending entity verification)table ·
2026-07-26 · 10×5
Session check: SPY's observed minute-bar span, the July 3 closure, and the next one on the calendarscalar ·
2026-07-26 · 1×8917
The eleven sector ETFs: July 6 vs the July 2 close, split into gap and intradaytable ·
2026-07-26 · 11×6
The touch at the gap open: median quoted spread and quote rate, 9:30–9:42 ET vs a midday control (12 minutes each)table ·
2026-07-26 · 10×9
One row for the whole options day: volume, call share, and the Monday same-day expiryscalar ·
2026-07-26 · 1×1610.53
Every split executed July 6, with its unadjusted close before and after (splits with no regular-session tape on both sides are dropped)table ·
2026-07-26 · 12×7
The treasury curve: July 6 vs the July 2 print (populated maturities only)ranking ·
2026-07-26 · 8×3
SPY's open-to-close move ranked against the trailing month of sessions (rank 1 = biggest absolute move)scalar ·
2026-07-26 · 1×40.34
SPY's update-weighted average quoted spread: July 6 ranked against the trailing month (rank 1 = tightest)scalar ·
2026-07-26 · 1×71.815
SPY / QQQ / DIA / IWM: July 6 vs the July 2 close, regular hourstable ·
2026-07-26 · 4×10
The whole equity NBBO stream: July 6 vs the July 2 session, and where Monday's quotes clusteredscalar ·
2026-07-26 · 1×6391.96
The memory and storage names: change vs Thursday's close, range timing, and dollar volumetable ·
2026-07-26 · 4×10
Megacap rotation: change vs Thursday's close, range timing, and dollar volumetable ·
2026-07-26 · 4×10
July 6's corporate calendar and information flow, in one row (including the reverse-split wall behind a screener trap)scalar ·
2026-07-26 · 1×12119
Advancers vs decliners among tickers with at least $1M traded on July 6scalar ·
2026-07-26 · 1×73,861
Market Recap: July 2, 2026, The Day in Numbers
Volume leaders two ways: top 6 by dollars traded, top 4 by shares traded (one reused-symbol listing excluded pending entity verification)table ·
2026-07-26 · 10×6
Session check: SPY's observed minute-bar span, and the July 3 closure on the tapescalar ·
2026-07-26 · 1×6886
Median quoted spread in basis points, regular hours: index ETFs, megacaps, and the memory namestable ·
2026-07-26 · 8×6
One row for the whole options day: volume, same-day expiry, the holiday-shifted week, and the July monthlyscalar ·
2026-07-26 · 1×1913.15
After the holiday: the next session, its ex-dividends and splits, the next scheduled closure, and the short-interest lagscalar ·
2026-07-26 · 1×9390
The session's curve print: July 2 vs July 1 (populated maturities only)ranking ·
2026-07-26 · 8×3
The receipt: the July 2 treasury print is on filescalar ·
2026-07-26 · 1×21
SPY and QQQ ranked against the trailing month of sessions (rank 1 = biggest absolute move)scalar ·
2026-07-26 · 1×7-0.35
Was liquidity unusual? SPY's regular-hours median spread vs the trailing month of sessionsscalar ·
2026-07-26 · 1×60.27
The eleven SPDR sector ETFs: July 2 close vs July 1 close, regular hourstable ·
2026-07-26 · 11×6
SPY / QQQ / DIA / IWM: July 2 vs the July 1 close, regular hourstable ·
2026-07-26 · 4×8
Stocks NBBO update count: July 2 vs July 1, with named-ticker updates (millions)scalar ·
2026-07-26 · 1×6597.22
The memory and storage names: change vs Wednesday's close, range timing, and dollar volumetable ·
2026-07-26 · 4×10
Megacap rotation: change vs Wednesday's close, range timing, and dollar volumetable ·
2026-07-26 · 4×10
July 2's corporate calendar and information flow, in one row (including the eight splits behind one fake screener move)scalar ·
2026-07-26 · 1×20322
Advancers vs decliners among tickers with at least $1M traded on July 2scalar ·
2026-07-26 · 1×113,398
Market Recap: July 1, 2026, The Day in Numbers
Volume leaders two ways: top 6 by dollars traded, top 4 by shares traded (one reused-symbol listing excluded pending entity verification)table ·
2026-07-26 · 10×6
Session check: SPY's observed minute-bar spanscalar ·
2026-07-26 · 1×6893
One row for the whole options day: volume, same-day expiry, put/call skew, and the busiest contractscalar ·
2026-07-26 · 1×2111.22
The day's last twelve news articles tagging MU, SNDK, STX, WDC or META (one licensed feed)table ·
2026-07-26 · 12×4
The biggest names going ex-dividend on July 1, ranked by the day's dollar volumetable ·
2026-07-26 · 8×7
July 1's corporate calendar and information flow, in one rowscalar ·
2026-07-26 · 1×14746
The volatility complex on July 1: VIX-futures ETFs vs Tuesday's close, with SPY as the anchortable ·
2026-07-26 · 5×5
The Treasury curve, July 1 close vs June 30 (populated maturities only)ranking ·
2026-07-26 · 8×3
SPY's open-to-close move ranked against the trailing month of sessions (rank 1 = biggest absolute move)scalar ·
2026-07-26 · 1×40.09
The memory complex and the megacaps: change vs Tuesday's close, range timing, and dollar volumetable ·
2026-07-26 · 8×9
The eleven S&P sector ETFs on July 1, best to worst vs Tuesday's closetable ·
2026-07-26 · 11×7
SPY / QQQ / DIA / IWM: July 1 vs the June 30 close, regular hourstable ·
2026-07-26 · 4×8
Every quarter-opening session since 2004: SPY's open-to-close move, with July 1 ranked inside itscalar ·
2026-07-26 · 1×991
Advancers, decliners, and new quarterly highs vs lows among tickers with at least $1M traded on July 1scalar ·
2026-07-26 · 1×122,928
Market Recap: June 30, 2026, The Day in Numbers
Volume leaders two ways: top 6 by dollars traded, top 4 by shares traded (one reused-symbol listing excluded pending entity verification)table ·
2026-07-26 · 10×6
Session check: SPY's observed minute-bar spanscalar ·
2026-07-26 · 1×5860
The six busiest option contracts of June 30, by contracts tradedseries ·
2026-07-26 · 6×7
One row for the whole options day: volume, same-day expiry, SPY's put/call skew by moneyness, the holiday-shifted weekscalar ·
2026-07-26 · 1×2010.06
The news feed on June 30: article count and the day's last headline for each name in this recapseries ·
2026-07-26 · 7×5
The Treasury curve, June 30 close vs June 29 (populated maturities only)ranking ·
2026-07-26 · 8×3
SPY's open-to-close move ranked against the trailing month of sessions (rank 1 = biggest absolute move)scalar ·
2026-07-26 · 1×40.68
The semiconductor and storage names: change vs Monday's close, range, and dollar volumetable ·
2026-07-26 · 6×10
The ten S&P sector funds on June 30: change vs Monday's close, and how far each sat behind the leadertable ·
2026-07-26 · 10×7
SPY / QQQ / DIA / IWM: June 30 vs the June 29 close, regular hourstable ·
2026-07-26 · 4×8
Q2 2026 end to end: each index ETF from the April 1 open to the June 30 close, regular hoursseries ·
2026-07-26 · 4×7
Top 5 gainers and top 5 decliners among names with $10M+ traded on June 30 (one reused-symbol listing excluded)table ·
2026-07-26 · 10×8
Crypto-adjacent financials: change vs Monday's close, range, and dollar volumetable ·
2026-07-26 · 4×10
June 30's corporate calendar and information flow, in one row (the filing-index gap on display)scalar ·
2026-07-26 · 1×12704
Advancers vs decliners among tickers with at least $1M traded on June 30scalar ·
2026-07-26 · 1×93,349
Market-wide options volume by session, with monthly expirations labelled
Market-wide options volume by session, with monthly expirations labelled
| session | contracts_m | session_type | monthly_expiry_m | session_id |
|---|---|---|---|---|
| Sep 1 | 63.3 | ordinary | 76.1 | 20260901 |
| Sep 2 | 59.9 | ordinary | 76.1 | 20260902 |
| Sep 3 | 72 | ordinary | 76.1 | 20260903 |
| Sep 4 | 71.2 | ordinary | 76.1 | 20260904 |
| Sep 8 | 61.6 | ordinary | 76.1 | 20260908 |
| Sep 9 | 61.9 | ordinary | 76.1 | 20260909 |
| Sep 10 | 64.3 | ordinary | 76.1 | 20260910 |
| Sep 11 | 68.3 | ordinary | 76.1 | 20260911 |
| Sep 14 | 67.5 | ordinary | 76.1 | 20260914 |
| Sep 15 | 56.6 | ordinary | 76.1 | 20260915 |
| Sep 16 | 65.4 | ordinary | 76.1 | 20260916 |
| Sep 17 | 68.2 | ordinary | 76.1 | 20260917 |
| Sep 18 | 76.1 | monthly expiration | 76.1 | 20260918 |
| Sep 21 | 80.3 | ordinary | 76.1 | 20260921 |
| Sep 22 | 63.6 | ordinary | 76.1 | 20260922 |
| Sep 23 | 69 | ordinary | 76.1 | 20260923 |
| Sep 24 | 67.3 | ordinary | 76.1 | 20260924 |
| Sep 25 | 72.6 | ordinary | 76.1 | 20260925 |
| Sep 28 | 66.6 | ordinary | 76.1 | 20260928 |
| Sep 29 | 58.6 | ordinary | 76.1 | 20260929 |
| Sep 30 | 61.8 | ordinary | 76.1 | 20260930 |
| Oct 1 | 69.9 | ordinary | 76.1 | 20261001 |
| Oct 2 | 78.7 | ordinary | 76.1 | 20261002 |
| Oct 5 | 69.4 | ordinary | 76.1 | 20261005 |
| Oct 6 | 63.1 | ordinary | 76.1 | 20261006 |
the exact SQL behind every number
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
w AS (
SELECT d, vol,
toStartOfMonth(d) + toIntervalDay(((5 - toDayOfWeek(toStartOfMonth(d)) + 7) % 7) + 14) AS third_friday
FROM cal
WHERE rn <= 25
),
marked AS (
SELECT d, vol,
(d = max(if(d <= third_friday, d, toDate('1970-01-01'))) OVER (PARTITION BY toStartOfMonth(d)))
AND (third_friday <= max(d) OVER ()) AS is_expiry
FROM w
),
latest AS (
SELECT d, vol, is_expiry,
max(if(is_expiry, d, toDate('1970-01-01'))) OVER () AS last_expiry_d
FROM marked
)
SELECT formatDateTime(d, '%b %e') AS session,
round(vol / 1e6, 1) AS contracts_m,
multiIf(is_expiry, 'monthly expiration', 'ordinary') AS session_type,
round(max(if(d = last_expiry_d, vol, 0)) OVER () / 1e6, 1) AS monthly_expiry_m,
toYYYYMMDD(d) AS session_id
FROM latest
ORDER BY d ASC
More from this analysisUnusual Options Activity: Last Session
Calls or puts: the board's call and put contract volume on the same session
table 10×5
→
Unusual options activity: last completed session vs. each underlying's own 20-session average
table 10×8
→
What the session's contracts were made of: options volume by days to expiry
ranking 6×4
→
What follows a heavy options session: next-session absolute move vs. the same names on an ordinary day
table 5×6
→
See all 3,256 queries →