July 8 Market Recap: Chip Bounce, Indexes Flat
Chip stocks bounce for one day, but indexes barely feel am. NVDA rise again, MU carry the biggest dollar move, while broad market red pass green by over two-to-one.
Wednesday, July 8, 2026 na one-day chip bounce wey barely move the indexes. SNDK close +6.8%, AVGO +4.82%, NVDA +3.66%. Na sharp reversal from Tuesday chip rout. But index ETFs no move: SPY -0.31% and QQQ +0.25%. The broad tape get even more red, two-to-one, than the day before: 1821 advancers against 4260 decliners. Advancer share na 29.6%, after 33.8% the session before. Every number below come from stored query. Expand any panel to see the exact SQL.
The scoreboard
Every change dey compare July 8 last regular-session minute bar with Tuesday July 7 own, for consecutive trading sessions. Rows dey alphabetical, so every ETF keep fixed position.
| ticker | previous close | day open | day close | gap pct | intraday pct | pct change | day high | day low | shares traded m |
|---|---|---|---|---|---|---|---|---|---|
| DIA | 528.48 | 523.34 | 522.72 | -0.97 | -0.12 | -1.09 | 524.46 | 520.03 | 3.2 |
| IWM | 296.2 | 294.03 | 293.47 | -0.73 | -0.19 | -0.92 | 295.1 | 290.68 | 20.3 |
| QQQ | 709.5 | 704.95 | 711.3 | -0.64 | 0.9 | 0.25 | 712.26 | 700.91 | 29.5 |
| SPY | 747.66 | 743.16 | 745.31 | -0.6 | 0.29 | -0.31 | 746.15 | 739.51 | 35.6 |
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-07 13:30:00' AND window_start < '2026-07-07 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-08 13:30:00' AND window_start < '2026-07-08 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 tickerThe four ETFs open with gap down, then dem move for different directions. DIA open the session at -0.97% against the previous close and fall more, before e finish at -1.09%. IWM open at -0.73% and remain down, closing at -0.92%. SPY open at -0.6%, recover small as the day go on, but still close at -0.31%; the recovery from the open no reach the size of the gap. QQQ open at -0.64% and rally reach +0.25% by close, na the only one among the four wey enter positive territory.
Day wey happen unusual?
The SPY open-to-close move of 0.29% rank 16 among 22 trailing sessions. Na middle-range day for the index, no be extreme move. The QQQ close-over-close move of +0.25% rank 21 among 22. Na one of the smallest moves for QQQ over the trailing month, and e match the index muted print.
| QQQ close-over-close pct | QQQ absolute move rank | QQQ sessions compared | SPY open-to-close pct | SPY absolute move rank | SPY sessions compared | first session |
|---|---|---|---|---|---|---|
| 0.25 | 21 | 22 | 0.29 | 16 | 22 | 2026-06-05 |
The exact SQL behind every number
SELECT
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-08')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-08'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-08'))) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ') AS qqq_sessions_compared,
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-08')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-08'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-08'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT ticker, d,
(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 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-05 13:30:00')
AND window_start < toDateTime('2026-07-09 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)Breadth: red names pass green ones two-to-one, even more than yesterday
| advancers | decliners | unchanged | liquid tickers | traded both sessions | dropped by liquidity filter | advancer pct | Jul 7 advancer pct |
|---|---|---|---|---|---|---|---|
| 1821 | 4260 | 74 | 6155 | 11439 | 5284 | 29.6 | 33.8 |
The exact SQL behind every number
SELECT
countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS advancers,
countIf(close_8 < close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS decliners,
countIf(close_8 = close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS unchanged,
countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000) AS liquid_tickers,
countIf(close_7 > 0 AND close_8 > 0) AS traded_both_sessions,
countIf(close_7 > 0 AND close_8 > 0) - countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) / countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000), 1) AS advancer_pct,
round(100.0 * countIf(close_7 > close_6 AND close_6 > 0 AND dv_7 >= 1000000) / countIf(close_7 > 0 AND close_6 > 0 AND dv_7 >= 1000000), 1) AS jul7_advancer_pct
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')) AS close_6,
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,
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,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS dv_7
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY ticker
)The gap between advancers (1821) and decliners (4260) push advancer share reach 29.6%, down from 33.8% for the session before. Na the same calculation, using the same liquidity filter for both days. Out of the 11439 names wey get closing price for both days, 5284 fall below the $1M-traded filter, so dem no enter the count. The bounce wey chip stocks lead and the index mixed close happen on top of a broad market wey turn even more uniformly negative.
The chip complex bounce hard, with heavy volume
Rows dey arranged alphabetically, so every name keep fixed position. The Tuesday comparison dey calculate fresh from the July 7 and July 6 closes for the receipts block wey dey below the table.
| ticker | previous close | day close | pct chg | range pct | day low | day high | low minute ET | highest minute ET | day dollar bn |
|---|---|---|---|---|---|---|---|---|---|
| AMD | 516.57 | 517.26 | 0.13 | 4.81 | 498.15 | 522.98 | 683 | 587 | 8.93 |
| AVGO | 370.79 | 388.67 | 4.82 | 4.91 | 376.89 | 395.09 | 570 | 778 | 9.39 |
| INTC | 110.5 | 110.27 | -0.21 | 5.5 | 104.41 | 110.49 | 713 | 957 | 9.48 |
| KLAC | 216.52 | 221.03 | 2.08 | 4.2 | 214.3 | 223.4 | 685 | 929 | 1.79 |
| LRCX | 326.12 | 332.93 | 2.09 | 4.53 | 322.72 | 337.5 | 570 | 587 | 2.1 |
| MRVL | 230.81 | 231.66 | 0.37 | 5.12 | 224.98 | 236.79 | 570 | 593 | 4.57 |
| MU | 938.95 | 949.37 | 1.11 | 6.24 | 900.41 | 959 | 570 | 600 | 32.02 |
| NVDA | 196.93 | 204.14 | 3.66 | 5.13 | 195.06 | 205.16 | 570 | 937 | 24.17 |
| SNDK | 1619.26 | 1729.4 | 6.8 | 8.94 | 1590 | 1734.69 | 570 | 959 | 16.82 |
| SOXL | 165.27 | 174.84 | 5.79 | 10.82 | 158.87 | 176.75 | 570 | 816 | 8.12 |
| SOXS | 4.82 | 4.52 | -6.22 | 11 | 4.46 | 4.99 | 929 | 570 | 2.97 |
| STX | 827.4 | 859.68 | 3.9 | 6.18 | 811.27 | 862.41 | 570 | 959 | 3.46 |
| TER | 343.1 | 351.56 | 2.47 | 5.6 | 335.06 | 354.27 | 686 | 587 | 0.77 |
| WDC | 532.34 | 550.71 | 3.45 | 6.91 | 526 | 562.76 | 570 | 600 | 3.03 |
The exact SQL behind every number
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-08 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-08 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-08 00:00:00') AS day_low,
argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-08 00:00:00') AS low_bar,
argMaxIf(window_start, (toFloat64(high), -toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-08 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 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-07 13:30:00' AND window_start < '2026-07-07 20:00:00')
OR (window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 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,
round(((day_high - day_low) / prior_close) * 100, 2) AS range_pct,
round(toFloat64(day_low), 2) AS day_low,
round(toFloat64(day_high), 2) AS day_high,
toUInt32(toHour(toTimeZone(low_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(low_bar, 'America/New_York'))) AS low_minute_et,
toUInt32(toHour(toTimeZone(high_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(high_bar, 'America/New_York'))) AS high_minute_et,
day_dollar_bn
FROM per_name
ORDER BY ticker12 out of the fourteen chip names close green. This na the opposite of Tuesday session, when 12 out of the fourteen close red. SNDK lead the complex with +6.8% on 16.82B dollars traded. AVGO follow close behind with +4.82%. The other storage names follow: STX +3.9%, and WDC +3.45%. The 3x wrapper SOXL gain +5.79%, while inverse SOXS -6.22%, matching one-day recovery for the underlying complex. MU rise a more modest +1.11%, but e print 32.02B dollars. Na im be the name with the highest dollar volume for this panel. NVDA close +3.66% for a second straight green day. E be one of only 2 names for this panel wey close green through Tuesday rout (+0.67% that day).
| Jul8 green | Jul8 red | Jul7 green | Jul7 red | NVDA Jul7 pct | names wey dem count |
|---|---|---|---|---|---|
| 12 | 2 | 2 | 12 | 0.67 | 14 |
The exact SQL behind every number
SELECT
countIf(close_8 > close_7) AS jul8_green,
countIf(close_8 < close_7) AS jul8_red,
countIf(close_7 > close_6) AS jul7_green,
countIf(close_7 < close_6) AS jul7_red,
round(anyIf((close_7 / close_6 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul7_pct,
count() AS names_counted
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')) AS close_6,
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
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-06 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY ticker
)The other side: defensives and growth mega-caps no follow
| ticker | previous close | day open | day close | gap pct | intraday pct | pct chg | day dollar bn |
|---|---|---|---|---|---|---|---|
| CRNX | 83.53 | 83.52 | 83.45 | -0.01 | -0.08 | -0.1 | 1.38 |
| CVX | 173.97 | 176.8 | 175.92 | 1.63 | -0.5 | 1.12 | 1.36 |
| JNJ | 267.29 | 268.6 | 263.36 | 0.49 | -1.95 | -1.47 | 1.38 |
| LLY | 1235.64 | 1221.1 | 1215.87 | -1.18 | -0.43 | -1.6 | 2.55 |
| META | 615.57 | 614.38 | 603.03 | -0.19 | -1.85 | -2.04 | 5.86 |
| TSLA | 402.88 | 399.38 | 393.92 | -0.87 | -1.37 | -2.22 | 11.71 |
| UNH | 428.18 | 427.14 | 425.56 | -0.24 | -0.37 | -0.61 | 1.28 |
| XOM | 141.65 | 143.44 | 140.96 | 1.26 | -1.73 | -0.49 | 2.08 |
The exact SQL behind every number
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-08 00:00:00')) AS prior_close_raw,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-08 00:00:00')) AS day_open_raw,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 00:00:00')) AS day_close_raw,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('CRNX', 'CVX', 'JNJ', 'LLY', 'META', 'TSLA', 'UNH', 'XOM')
AND ((window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')
OR (window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close_raw, 2) AS prior_close,
round(day_open_raw, 2) AS day_open,
round(day_close_raw, 2) AS day_close,
round((day_open_raw / prior_close_raw - 1) * 100, 2) AS gap_pct,
round((day_close_raw / day_open_raw - 1) * 100, 2) AS intraday_pct,
round((day_close_raw / prior_close_raw - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerThe growth mega-caps move opposite the chip complex: TSLA -2.22%, META -2.04%, LLY -1.6%. CVX na the only green close for the panel, up +1.12% after e gap for early trading, while XOM open +1.26% higher but later fade to -0.49% by close. So Wednesday tape divide into two: chip names up, growth and defensives down, while the indexes remain steady between them. (Rows dey alphabetical: CRNX, CVX, JNJ, LLY, META, TSLA, UNH, XOM.)
Wia money change hand
| leaderboard | ticker | dollar volume bn | shares m | implied avg price | pct of board leader |
|---|---|---|---|---|---|
| by dollars traded | MU | 32.02 | 34.1 | 939 | 100 |
| by dollars traded | SPY | 26.49 | 35.6 | 744.1 | 82.7 |
| by dollars traded | NVDA | 24.17 | 120.5 | 200.58 | 75.5 |
| by dollars traded | QQQ | 20.9 | 29.5 | 708.47 | 65.3 |
| by dollars traded | SNDK | 16.82 | 10.1 | 1665.35 | 52.5 |
| by dollars traded | TSLA | 11.71 | 29.7 | 394.28 | 36.6 |
| by shares traded | SOXS | 2.97 | 636.5 | 4.67 | 100 |
| by shares traded | TZA | 1.37 | 334.8 | 4.09 | 52.6 |
| by shares traded | BITO | 2.29 | 272.4 | 8.41 | 42.8 |
| by shares traded | AAL | 2.79 | 169.3 | 16.48 | 26.6 |
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,
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-08 13:30:00' AND window_start < '2026-07-08 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-08 13:30:00' AND window_start < '2026-07-08 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 trade 32.02B dollars, na the biggest name for the day and the only one wey pass $30B level. SPY (26.49B), NVDA (24.17B), and QQQ (20.9B) follow, with SNDK at 16.82B and TSLA at 11.71 completing the dollar ranking. The shares ranking tell another story: the 3x inverse semiconductor ETF SOXS trade 636.5M shares for implied average price of $4.67, showing how low-priced 3x wrapper dey behave on heavy chip day.
Session pattern
| ET time | shares bn | pct of biggest bucket |
|---|---|---|
| 09:30 | 1.98 | 89.9 |
| 10:00 | 1.38 | 62.9 |
| 10:30 | 1.32 | 59.9 |
| 11:00 | 1.16 | 53 |
| 11:30 | 1.01 | 45.9 |
| 12:00 | 0.93 | 42.2 |
| 12:30 | 0.92 | 42 |
| 13:00 | 0.75 | 34.1 |
| 13:30 | 0.76 | 34.5 |
| 14:00 | 0.77 | 34.9 |
| 14:30 | 0.75 | 34.3 |
| 15:00 | 0.9 | 41.1 |
| 15:30 | 2.2 | 100 |
The exact SQL behind every number
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-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY et_time
ORDER BY et_timeVolume follow textbook U-shape: the open bucket dey at 89.9% of the biggest bucket for the day, then e reduce through the morning. E reach lowest point at 34.1% for the 1:00–1:30 pm ET slot. The closing half-hour (15:30 ET) na the biggest bucket for the day, with 2.2B shares. E pass the open’s 1.98B, and this na the normal pattern for regular session.
The options tape
| option prints m | contracts m | Jul7 contracts m | call pct of volume | pct 0DTE | Jul7 pct 0DTE | SPY regular close | top1 und | top1 strike | top1 type | top1 contracts | top1 avg px | top1 is 0DTE | top1 moneyness |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10.44 | 63.26 | 61.13 | 55.4 | 38.7 | 31.2 | 745.31 | SPY | 745 | C | 677981 | 0.875 | 1 | -0.31 |
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) = '260708', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 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-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
) AS spy_regular_close,
(
SELECT round(toFloat64(sum(size)) / 1e6, 2)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
) AS jul7_contracts_m,
(
SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260707') / sum(size), 1)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
) AS jul7_pct_0dte
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
jul7_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) = '260708') / sum(size), 1) AS pct_0dte,
jul7_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-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'Consolidated options tape carry 10.44M prints and 63.26M contracts, wey pass Tuesday own 61.13M, based on the same tape for Tuesday window. Calls make up 55.4% of total volume, so calls lean moderate. 0DTE contracts (same-day expiry, 260708) take 38.7% of contract volume, up from 31.2% on Tuesday. The single contract wey trade pass na SPY 745C, with 677981 contracts at average price of $0.875. Na same-day expiry, and e dey essentially at the money against SPY regular close of $745.31.
The quote tape
| Jul8 updates m | jul7 updates m | day over day pct | jul8 SPY updates m | jul8 QQQ updates m | jul8 NVDA updates m | jul8 TSLA updates m | jul8 MU updates m |
|---|---|---|---|---|---|---|---|
| 530.55 | 492.76 | 7.7 | 4.93 | 6.53 | 1.8 | 0.72 | 0.6 |
The exact SQL behind every number
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / 1e6, 2) AS jul8_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / 1e6, 2) AS jul7_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / countIf(toDate(sip_timestamp) = toDate('2026-07-07')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'SPY') / 1e6, 2) AS jul8_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'QQQ') / 1e6, 2) AS jul8_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'NVDA') / 1e6, 2) AS jul8_nvda_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'TSLA') / 1e6, 2) AS jul8_tsla_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'MU') / 1e6, 2) AS jul8_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'The stock-quote tape carry 530.55M NBBO updates for July 8, +7.7% compared with the previous session. QQQ get 6.53M updates, na im lead among the tickers wey we name, ahead of SPY’s 4.93M. NVDA (1.8M), TSLA (0.72M), and MU (0.6M) complete the named counts.
| ticker | median spread bps |
|---|---|
| SPY | 0.27 |
| QQQ | 0.71 |
| NVDA | 1.52 |
| TSLA | 2.28 |
| AVGO | 3.63 |
| MU | 5.66 |
| SNDK | 12.21 |
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', 'TSLA', 'MU', 'SNDK', 'AVGO')
AND sip_timestamp >= '2026-07-08 13:30:00' AND sip_timestamp < '2026-07-08 20:00:00'
AND bid_price > 0 AND ask_price > 0 AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps ASCAcross the seven tickers wey we name, SPY RTH median quoted spread na 0.27 bps, and e dey at the normal floor for the most-liquid US ETF. QQQ quote at 0.71 bps, while NVDA quote at 1.52 bps. The wider end of the table belong to names wey get thinner quoting: MU at 5.66 bps and SNDK at 12.21 bps.
| jul8 average spread cents | tightness rank | sessions wey dem compare | tightest session cents | widest session cents | first session | invalid quotes wey dem drop |
|---|---|---|---|---|---|---|
| 2.202 | 11 | 22 | 1.809 | 2.865 | 2026-06-05 | 42783 |
The exact SQL behind every number
SELECT
round(anyIf(avg_spread_cents, d = toDate('2026-07-08')), 3) AS jul8_avg_spread_cents,
arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-08')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-08'))) + 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,
sum(dropped_invalid) AS dropped_invalid_quotes
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,
countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) AS dropped_invalid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2026-06-05 00:00:00')
AND sip_timestamp < toDateTime('2026-07-09 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
)SPY RTH average quoted spread of 2.202 cents rank 11 out of 22 trailing sessions. Na middle-of-the-pack day for spread tightness. The trailing-month range run from 1.809 cents (the tightest) to 2.865 cents (the widest). No air pocket, no liquidity event; na ordinary session for SPY quoted spread.
| jul8 options bn | options to stock ratio | jul8 SPY options m |
|---|---|---|
| 9.62 | 18.1 | 422 |
The exact SQL behind every number
WITH
(SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00') AS jul8_options_rows,
(SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00') AS jul8_stock_quote_rows
SELECT
round(jul8_options_rows / 1e9, 2) AS jul8_options_bn,
round(jul8_options_rows / jul8_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-08 13:30:00' AND sip_timestamp < '2026-07-08 20:00:00') / 1e6, 0) AS jul8_spy_options_mThe options tape carry 9.62 billion NBBO updates, 18.1× the stock-quote tape count. SPY-options slice alone record 422 million updates during regular hours.
Rates: curve hardly move
| curve point | jul8 yield pct | session change bp |
|---|---|---|
| 1 month | 3.67 | -2 |
| 3 month | 3.87 | 1 |
| 1 year | 4.06 | 0 |
| 2 year | 4.21 | 2 |
| 5 year | 4.31 | 4 |
| 10 year | 4.56 | 1 |
| 30 year | 5.06 | 1 |
| 2s10s spread | 0.35 | -1 |
The exact SQL behind every number
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul8_yield_pct,
round((t.2 - t.3) * 100) AS session_change_bp
FROM (
SELECT arrayJoin([
('1 month', toFloat64(d.yield_1_month), toFloat64(p.yield_1_month)),
('3 month', toFloat64(d.yield_3_month), toFloat64(p.yield_3_month)),
('1 year', toFloat64(d.yield_1_year), toFloat64(p.yield_1_year)),
('2 year', toFloat64(d.yield_2_year), toFloat64(p.yield_2_year)),
('5 year', toFloat64(d.yield_5_year), toFloat64(p.yield_5_year)),
('10 year', toFloat64(d.yield_10_year), toFloat64(p.yield_10_year)),
('30 year', toFloat64(d.yield_30_year), toFloat64(p.yield_30_year)),
('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
]) AS t
FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-08') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-07') AS p
)Na the 5-year lead today’s movement, at +4 bp. The 2-year close +2 bp higher. No other maturity move pass 2 bp for either side. That leave the 2s10s spread at 0.35% (-1 bp for the session), still inside the recent range. The small rates movement happen alongside the small index movement.
The calendar wey dey behind the day
| ex-dividend records | splits wey dem execute | reverse splits | forward splits | fil 424b2 | fil Form 4 | fil 8-K | fil total | news articles | news publishers | top news ticker | top news n | top news lead pass next |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 81 | 1 | 0 | 1 | 527 | 775 | 163 | 3731 | 192 | 3 | MU | 17 | 0 |
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-08'
) 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-08'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-08') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS splits_executed,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS forward_splits,
(SELECT countIf(form_type = '424B2') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_424b2,
(SELECT countIf(form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_form4,
(SELECT countIf(form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_8k,
(SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') 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_nextCalendar no busy that day: 81 ex-dividend records, 1 forward split wey execute, and 3731 SEC filings altogether (including 775 Form 4 insider trades, 527 424B2 prospectuses, and 163 8-K current reports). News coverage carry 192 articles across 3 publishers, with MU among the tickers wey dem mention pass, at 17 articles. No big household-name corporate action stand out for the day’s flow; na the chip complex itself be the main story for the tape.
Session wey dem verify
| first spy bar ET | last spy bar ET | spy minute bars | regular session bars | day sessions | Jul8 holiday rows | next closure date | next closure name |
|---|---|---|---|---|---|---|---|
| 04:00 | 19:59 | 919 | 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,
count() AS spy_minute_bars,
countIf(window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-08') AS jul8_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-08' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-08' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-08 00:00:00' AND window_start < '2026-07-09 00:00:00'Session run complete extended-hours window. The first SPY bar show for 04:00 ET, while the last one show for 19:59 ET. E get 390 regular-hours minute bars and 1 trading session inside the window. No half-day happen; holiday table no get row for that date. The next scheduled closure na Labor Day for 2026-09-07.
Data notes
All timestamps dey stored for UTC. Regular hours for July 8, 2026 dey filtered as sip_timestamp / window_start between 2026-07-08 13:30:00 and 2026-07-08 20:00:00. This one correspond to 9:30 am–4:00 pm New York time. Decimal prices dey cast to Float64 before any division. Named per-ticker panels (scoreboard, chip complex, rotation) dey arranged alphabetically by ticker so every prose reference point to one fixed row. Leaderboards (volume, quote snapshot) dey arranged by value. Every positional claim wey dem make dey encoded as sanity bound for that position. Every Tuesday comparison for this page, breadth share, chip green/red counts, options contracts and 0DTE share, quote-update counts, dey computed fresh from July 7 (and July 6 where prior close dey needed) inside the same query block. Dem no dey quote am from earlier post.
Full data notes
The breadth panel dey count names wey get regular-hours close for both sessions and at least $1M traded on the measured day. The dropped count (5284 of 11439) dey show the excluded tail. The chip complex day_low/day_high timing columns dey use argMin/argMaxIf(..., (value, timestamp)) pattern so ties fit resolve deterministically. The volume-smile bucket labels na ET (%H:%i), and dem dey compute am with toTimeZone for the SELECT list only. The options-tape panel dey detect same-day expiry with the OCC-ticker substring match (substring(ticker, length(ticker) - 14, 6)), instead of options_trades.expiration_date. That column spoil, according to the standing preflight note. Symbols for KNOWN_AMBIGUOUS_TICKERS dey excluded from the volume-leaders and news-attention SQL, so “most X” callouts go fall on names wey person fit verify. The top-news ticker dey use deterministic tie-break (argMax(t, (n, t))). top_news_lead_over_next = 0 mean tie, and na why the prose talk say “among the most-mentioned”. The treasury panel dey join two daily snapshot rows. If snapshot no dey for either date, e go return zero rows, and the row_count bound dey hold the post. The stocks-quote and options-quote counts na whole-tape scans across day partitions. Named-ticker counts dey reported in millions to match their column units. Spread medians dey use quantileExact (deterministic). The trailing spread panel na an average (avgIf), and dem label am that way.
Methodology
- Market data source: consolidated tape,
delayed_stocks_minute_aggsfor index and per-name prices and volumes,cache_stocks_quotesfor NBBO counts and quoted spreads,cache_options_quotesandoptions_tradesfor the options tape. - Time zone handling: all stored timestamps na UTC; ET clock labels dey calculate with
toTimeZone(..., 'America/New_York')for SELECT lists only; WHERE clauses dey use raw UTC literals. - Regular-hours window: 13:30–20:00 UTC, verified against observed SPY minute bars (the session-verification panel), no be calendar arithmetic.
- Spread definition:
(ask - bid) / midpoint × 10,000for basis points on valid two-sided quotes for the snapshot; the trailing-month panel na average width for cents, and dem label am as an average. - Prior-session comparisons: query dey calculate dem from July 7 (and July 6 for Tuesday own day-over-day), dem no carry am over from previous post.
- Deterministic aggregates:
quantileExact, tuple-keyedargMin/argMax, plus deterministic news tie-break for stable regenerations. - Warehouse as-of date: July 10, 2026 (T+2 for the period); tapes for both sessions don fully enter the warehouse for this depth.
Cross-links: July 7, 2026 recap, options trading costs, bid-ask spread basics, 0DTE options, and relative volume.