Market Recap: Week of July 6, 2026
A chip rout, a bounce, the summer's wildest open, and NVDA's Friday, netting out to a quiet index week where most stocks fell and MU out-traded SPY itself.
The week of July 6, 2026 was a semiconductor whipsaw wearing a calm index costume. Inside five sessions: a chip rout, a bounce, the summer's most violent open, and NVDA's Friday reclamation, netting out to SPY +1.4%. Two facts tell the story: MU printed more dollar volume than SPY itself across the week, and more liquid stocks fell than rose in a week the growth index gained 1.8%. Every number below is read from a stored query.
The week on the board
Weekly changes run from Thursday July 2's regular close (July 3 was the Independence Day closure) to Friday July 10's. Rows are alphabetical.
| ticker | prior_week_close | week_close | week_change_pct | prior_week_change_pct |
|---|---|---|---|---|
| DIA | 527.83 | 525.77 | -0.4 | 2 |
| IWM | 297.53 | 295.96 | -0.5 | 0 |
| QQQ | 712.74 | 725.54 | 1.8 | 1 |
| SPY | 744.8 | 754.9 | 1.4 | 2.2 |
The exact SQL behind every number
SELECT ticker,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-02') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS prior_week_close,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-07-06') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS week_close,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-07-06') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
/ argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-02') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS week_change_pct,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-02') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
/ argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-06-22 13:30:00' AND window_start < '2026-07-10 20:00:00'
GROUP BY ticker
ORDER BY tickerThe split is the story: QQQ +1.8% and SPY +1.4% against DIA -0.4% and IWM -0.5%. Growth carried everything; the Dow and the small-cap index finished a green-index week red. Whatever this week was, it was not broad.
The week against the trailing year
| week_open_to_close_pct | rank_best | weeks_compared | first_week | sessions_this_week |
|---|---|---|---|---|
| 0.82 | 20 | 53 | 2025-07-07 | 5 |
The exact SQL behind every number
SELECT round(anyIf(ret, wk = toDate('2026-07-06')), 2) AS week_open_to_close_pct,
arrayCount(x -> x > anyIf(ret, wk = toDate('2026-07-06')), groupArrayIf(ret, wk != toDate('2026-07-06'))) + 1 AS rank_best,
count() AS weeks_compared,
toString(min(wk)) AS first_week,
anyIf(sessions, wk = toDate('2026-07-06')) AS sessions_this_week
FROM (
SELECT toStartOfWeek(toDate(toTimeZone(window_start, 'America/New_York')), 1) AS wk,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2025-07-06 00:00:00')
AND window_start < toDateTime('2026-07-11 00:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY wk
HAVING sessions >= 3
)Measured open-to-close, SPY's week ranked 20 of 53 trailing weeks, squarely mid-pack. A week containing the summer's most dramatic single open (Thursday) and its sharpest sector rout (Tuesday) lands mid-table: the violence canceled itself out, ordinary is the finding.
Five sessions, one arc
| et_date | spy_close | change_pct | spy_shares_m |
|---|---|---|---|
| 2026-07-06 | 751.3 | 0.9 | 49.2 |
| 2026-07-07 | 747.66 | -0.5 | 42.5 |
| 2026-07-08 | 745.31 | -0.3 | 42.8 |
| 2026-07-09 | 751.64 | 0.8 | 39 |
| 2026-07-10 | 754.9 | 0.4 | 40.9 |
The exact SQL behind every number
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS spy_close,
round((argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / any(prev) - 1) * 100, 1) AS change_pct,
round(toFloat64(sum(volume)) / 1e6, 1) AS spy_shares_m
FROM global_markets.delayed_stocks_minute_aggs
INNER JOIN (
SELECT d, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-02 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
GROUP BY d
)
) AS p ON toDate(toTimeZone(window_start, 'America/New_York')) = p.d
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-06 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
GROUP BY et_date
ORDER BY et_dateThe arc: Monday reopened from the holiday with a growth-led gap up (+0.9%, recap); Tuesday the semiconductor complex broke while the index gave back only -0.5% (recap); Wednesday the chips bounced hard and the index sat still (-0.3%, recap); Thursday the whole tape flipped green on the summer's wildest open (+0.8%, recap); Friday NVDA led a quiet finish (+0.4%, recap) to a $754.9 close.
The two names at the center of Tuesday's rout, receipted:
| ticker | day_pct |
|---|---|
| INTC | -9.6 |
| TER | -9.6 |
The exact SQL behind every number
SELECT ticker, round((c7 / c6 - 1) * 100, 1) AS day_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 c6,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS c7
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('INTC', 'TER')
AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-07 20:00:00'
GROUP BY ticker
)
ORDER BY tickerTuesday's move at both names: INTC -9.6%, TER -9.6%, against SPY's -0.5% for the session.
What was said
Our prose stays observational; the week's narratives are quoted with names attached. First, the feed's attention across the four names at the whipsaw's center, out of 981 articles for the week:
| d | nvda_articles | mu_articles | intc_articles | ter_articles |
|---|---|---|---|---|
| 2026-07-06 | 25 | 12 | 7 | 0 |
| 2026-07-07 | 17 | 13 | 2 | 0 |
| 2026-07-08 | 13 | 17 | 2 | 0 |
| 2026-07-09 | 20 | 12 | 3 | 0 |
| 2026-07-10 | 11 | 7 | 6 | 0 |
The exact SQL behind every number
SELECT toDate(toTimeZone(published_utc, 'America/New_York')) AS d,
countIf(has(tickers, 'NVDA')) AS nvda_articles,
countIf(has(tickers, 'MU')) AS mu_articles,
countIf(has(tickers, 'INTC')) AS intc_articles,
countIf(has(tickers, 'TER')) AS ter_articles
FROM global_markets.stocks_news
WHERE published_utc >= '2026-07-06 00:00:00' AND published_utc < '2026-07-11 04:00:00'
AND toDate(toTimeZone(published_utc, 'America/New_York')) >= '2026-07-06'
AND toDate(toTimeZone(published_utc, 'America/New_York')) <= '2026-07-10'
GROUP BY d
ORDER BY dThose headlines are not paraphrased here. They are read straight from the stored feed:
| session | outlet | headline |
|---|---|---|
| 2026-07-07 | The Motley Fool | Michael Burry Just Revealed His Next Big Short, and It's a Bet Against Nvidia, Micron, and AMD |
| 2026-07-08 | The Motley Fool | Why Did Sandisk Stock Pop Today? |
The exact SQL behind every number
SELECT toString(toDate(toTimeZone(published_utc, 'America/New_York'))) AS session,
JSONExtractString(publisher, 'name') AS outlet,
title AS headline
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) IN ('2026-07-07', '2026-07-08')
AND JSONExtractString(publisher, 'name') = 'The Motley Fool'
AND (positionCaseInsensitive(title, 'Burry') > 0 OR positionCaseInsensitive(title, 'Sandisk Stock Pop') > 0)
ORDER BY session, titleOn the rout day the feed carried The Motley Fool's "Michael Burry Just Revealed His Next Big Short, and It's a Bet Against Nvidia, Micron, and AMD"; on the bounce day the same outlet asked "Why Did Sandisk Stock Pop Today?." NVDA's Friday rally arrived with no catalyst headline at all, valuation-framed pieces only; cause unknown from this data.
Two findings: MU (17 articles) out-covered NVDA (13) exactly once, Wednesday, the bounce day (NVDA led the other four); and TER, half of the rout's hardest-hit pair, was tagged 0 times on the day it broke and zero every other day. One feed's attention, not the world's media.
Breadth: a green week where most stocks fell
| advancers | decliners | measured_names | advancer_pct |
|---|---|---|---|
| 3015 | 3270 | 6319 | 47.7 |
The exact SQL behind every number
SELECT
countIf(cw > cp AND cp > 0 AND dv >= 5000000) AS advancers,
countIf(cw < cp AND cp > 0 AND dv >= 5000000) AS decliners,
countIf(cp > 0 AND cw > 0 AND dv >= 5000000) AS measured_names,
round(100.0 * countIf(cw > cp AND cp > 0 AND dv >= 5000000) / countIf(cp > 0 AND cw > 0 AND dv >= 5000000), 1) AS advancer_pct
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-03 00:00:00')) AS cp,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00')) AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 13:30:00') AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-11 00:00:00'))
GROUP BY ticker
)Across 6319 names with at least $5M traded during the week, 3270 fell against 3015 that rose, an advancer share of just 47.7% in a week the growth index gained 1.8%. The index's green week was manufactured by its largest members; the median stock had a red one. The same narrowness the Friday recap caught in one session, compounded across five.
The sector scoreboard
Where did the falling happen? The ten SPDR sector ETFs, July 2's close to July 10's, alphabetical:
| ticker | week_pct |
|---|---|
| XLB | -2.1 |
| XLE | 3.5 |
| XLF | 0.2 |
| XLI | -1.1 |
| XLK | 2.9 |
| XLP | -1 |
| XLRE | -0.5 |
| XLU | -0.8 |
| XLV | -1.8 |
| XLY | 0.1 |
The exact SQL behind every number
SELECT ticker, round((cw / cp - 1) * 100, 1) AS week_pct
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-03 00:00:00')) AS cp,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')) AS cw
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'))
GROUP BY ticker
)
ORDER BY tickerFour of the ten sectors closed positive, but only two by any real margin: energy (XLE, +3.5%) and tech (XLK, +2.9%) led. Financials (+0.2%) and consumer discretionary (+0.1%) closed barely above flat. The other six, from materials (-2.1%) to healthcare (-1.8%), finished red. Outside those two clear winners, the board leaned down.
The tape's leader: MU out-traded the index. For a week.
| ticker | week_dollar_bn |
|---|---|
| MU | 164 |
| SPY | 137.3 |
| NVDA | 107.1 |
| QQQ | 103.4 |
| SNDK | 88 |
| TSLA | 69.3 |
The exact SQL behind every number
SELECT ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS week_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-10 20:00:00'
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY week_dollar_bn DESC
LIMIT 6MU printed 164B of regular-hours dollar volume across the five sessions, ahead of SPY's 137.3B. A single memory stock out-trading the S&P 500 ETF for an entire week echoes June (MU's June deep-dive); NVDA (107.1B), the week's AI/GPU bellwether, and SNDK (88B), another memory name, round out the week's top five. The whipsaw wasn't just price, it was where the market's money spent the whole week arguing.
The whipsaw's net result: same complex, opposite weeks
The fourteen chip names that drove every one of the week's stories, measured across the whole week, July 2's close to July 10's. Rows are alphabetical.
| ticker | week_pct |
|---|---|
| AMD | 7.7 |
| AVGO | 11 |
| INTC | -8.8 |
| KLAC | -1.8 |
| LRCX | -0.3 |
| MRVL | -3.9 |
| MU | 0.3 |
| NVDA | 8.5 |
| SNDK | 9.9 |
| SOXL | 6.1 |
| SOXS | -9.5 |
| STX | 11 |
| TER | -2.6 |
| WDC | 8.1 |
The exact SQL behind every number
SELECT ticker,
round((cw / cp - 1) * 100, 1) AS week_pct
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-03 00:00:00')) AS cp,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')) AS cw
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-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'))
GROUP BY ticker
)
ORDER BY tickerAfter a rout, a bounce, a monster open, and a Friday rally, the complex did not travel together, it split down the middle. AVGO (+11%), STX (+11%), SNDK (+9.9%), NVDA (+8.5%), and WDC (+8.1%) finished with big green weeks; INTC (-8.8%) had a brutal one, and the equipment names that starred in Thursday's giant gaps, KLAC (-1.8%), LRCX (-0.3%), round-tripped to roughly flat. The punchline: MU, the name that out-traded the S&P 500 ETF all week, netted +0.3%. 164 billion dollars changed hands to move the price almost nowhere, the purest picture of a market arguing with itself at maximum volume.
The week's newest ticker: SK Hynix's US debut
Friday added a listed member to the memory complex that owned the week's tape, the debut, receipted:
| offer_px | raised_bn | bigger_2026_raises | biggest_2026_raise_bn | first_rth_px | first_rth_bar_et_minute | first_rth_bar_et | debut_close | close_vs_offer_pct | faded_from_first_print | rth_dollar_bn | debuts_measured_2026 | debut_dollar_rank_2026 | biggest_2026_debut_bn |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 158.14 | 28.1 | 1 | 75 | 170 | 694 | 11:34 | 168.33 | 6.4 | 1.67 | 18.03 | 144 | 2 | 81.2 |
The exact SQL behind every number
WITH ipo AS (
SELECT toFloat64(final_issue_price) AS offer, toFloat64(total_offer_size) AS raise
FROM global_markets.stocks_ipos
WHERE issuer_name = 'SK Hynix Inc' AND listing_date = '2026-07-10'
LIMIT 1
),
debuts AS (
SELECT a.ticker AS t, sum(toFloat64(a.close) * toFloat64(a.volume)) AS debut_rth_dollars
FROM global_markets.delayed_stocks_minute_aggs a
INNER JOIN (
SELECT multiIf(replaceAll(ticker, ' ', '') = 'SKHY', 'SKHYV', replaceAll(ticker, ' ', '')) AS tk, listing_date
FROM global_markets.stocks_ipos
WHERE listing_date >= '2026-01-01' AND listing_date <= '2026-07-10'
) l ON a.ticker = l.tk
WHERE a.window_start >= '2026-01-01 00:00:00' AND a.window_start < '2026-07-11 00:00:00'
AND toDate(a.window_start) = l.listing_date
AND (toHour(a.window_start) * 60 + toMinute(a.window_start)) BETWEEN 810 AND 1199
GROUP BY a.ticker
)
SELECT
round((SELECT offer FROM ipo), 2) AS offer_px,
round((SELECT raise FROM ipo) / 1e9, 1) AS raised_bn,
(SELECT countIf(toFloat64(total_offer_size) > (SELECT raise FROM ipo)) FROM global_markets.stocks_ipos WHERE listing_date >= '2026-01-01' AND listing_date <= '2026-07-10') AS bigger_2026_raises,
round((SELECT max(toFloat64(total_offer_size)) FROM global_markets.stocks_ipos WHERE listing_date >= '2026-01-01' AND listing_date <= '2026-07-10') / 1e9, 1) AS biggest_2026_raise_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_px,
toHour(toTimeZone(minIf(window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'), 'America/New_York')) * 60
+ toMinute(toTimeZone(minIf(window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'), 'America/New_York')) AS first_rth_bar_et_minute,
formatDateTime(toTimeZone(minIf(window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'), 'America/New_York'), '%H:%i') AS first_rth_bar_et,
round(toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')), 2) AS debut_close,
round((toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')) / (SELECT offer FROM ipo) - 1) * 100, 1) AS close_vs_offer_pct,
round(toFloat64(argMinIf(open, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00'))
- toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')), 2) AS faded_from_first_print,
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,
(SELECT count() FROM debuts) AS debuts_measured_2026,
(SELECT countIf(debut_rth_dollars > (SELECT debut_rth_dollars FROM debuts WHERE t = 'SKHYV')) + 1 FROM debuts) AS debut_dollar_rank_2026,
round((SELECT max(debut_rth_dollars) FROM debuts) / 1e9, 1) AS biggest_2026_debut_bn
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 raise: $28.1 billion at $158.14 a share, 1 US raise in 2026 was bigger, SpaceX's $75 billion June listing. With no prior close, the opening cross took until 11:34 ET to find a price: $170. The close, $168.33, faded $1.67 from that first print yet held 6.4% above the offer. And the tape: $18.03 billion of regular-hours dollars, of 144 US debuts measured in 2026, only SpaceX's $81.2 billion first day was heavier.
The week's biggest movers
Beyond chips, who won and lost? On an unadjusted tape the week's 30 reverse splits fake four-digit "gains", so these boards exclude in-week splits and require $5 million traded.
| ticker | board | week_pct | week_dollar_m | pct_of_dollar_max |
|---|---|---|---|---|
| FXHO | gainers | 147.3 | 113.8 | 1.2 |
| FBRX | gainers | 109.6 | 305.8 | 3.2 |
| CRNX | gainers | 98 | 9660.5 | 100 |
| GMM | gainers | 97.6 | 639.3 | 6.6 |
| LHSW | gainers | 91.6 | 307.8 | 3.2 |
| JZXN | gainers | 89.9 | 356.5 | 3.7 |
| TRAX | gainers | 87.4 | 225.6 | 2.3 |
| ZCMD | gainers | 86.2 | 77.2 | 0.8 |
| WRAP | gainers | 72.3 | 172.7 | 1.8 |
| SUNE | gainers | 67 | 363.9 | 3.8 |
| JEM | decliners | -76.4 | 26.1 | 0.3 |
| ELPW | decliners | -70.3 | 105.2 | 1.1 |
| HAO | decliners | -65.8 | 128.5 | 1.3 |
| ALAR | decliners | -65.1 | 14.8 | 0.2 |
| CCHH | decliners | -55.5 | 105.9 | 1.1 |
| SDOT | decliners | -53.7 | 366.7 | 3.8 |
| ONFO | decliners | -47.6 | 75.2 | 0.8 |
| YHC | decliners | -46.9 | 17.7 | 0.2 |
| GMEX | decliners | -44.9 | 14.8 | 0.2 |
| BYRN | decliners | -44.6 | 44.8 | 0.5 |
The exact SQL behind every number
SELECT ticker, board, week_pct, week_dollar_m,
round(100 * week_dollar_m / max(week_dollar_m) OVER (), 1) AS pct_of_dollar_max
FROM (
SELECT 'gainers' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct, round(dv / 1e6, 1) AS week_dollar_m
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-03 00:00:00')) AS cp,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')) AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 13:30:00') AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker NOT IN ('SPCX')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-06' AND execution_date <= '2026-07-10')
AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-11 00:00:00'))
GROUP BY ticker
HAVING cp > 0 AND cw > 0 AND dv >= 5000000
)
ORDER BY week_pct DESC
LIMIT 10
UNION ALL
SELECT 'decliners' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct, round(dv / 1e6, 1) AS week_dollar_m
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-03 00:00:00')) AS cp,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')) AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 13:30:00') AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker NOT IN ('SPCX')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-06' AND execution_date <= '2026-07-10')
AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-11 00:00:00'))
GROUP BY ticker
HAVING cp > 0 AND cw > 0 AND dv >= 5000000
)
ORDER BY week_pct ASC
LIMIT 10
)
ORDER BY board DESC, abs(week_pct) DESCMaking either board took a big move: the mildest gainer shown rose 67%, the mildest decliner printed -44.6%. Even INTC's brutal chip week (-8.8%) comes nowhere near either bar. The boards are small-cap territory with one loud exception: CRNX, +98% on $9660.5 million traded, the most dollars of the twenty, Tuesday's overnight near-double holding its gain through Friday.
The shorts: one truncated file inside an otherwise complete week
| d | tickers_on_file | short_shares_bn |
|---|---|---|
| 2026-07-06 | 15384 | 4.62 |
| 2026-07-07 | 4333 | 1.86 |
| 2026-07-08 | 15127 | 4.65 |
| 2026-07-09 | 15124 | 4.61 |
| 2026-07-10 | 15116 | 4.22 |
The exact SQL behind every number
SELECT toString(date) AS d,
uniqExact(ticker) AS tickers_on_file,
round(sum(short_volume) / 1e9, 2) AS short_shares_bn
FROM global_markets.stocks_short_volume
WHERE date >= '2026-07-06' AND date <= '2026-07-10'
GROUP BY date
ORDER BY dateFour of the five daily short-volume files arrived complete, at roughly 15384 tickers each. Tuesday July 7's file carries only 4333, less than a third of its neighbors, with total short shares (1.86B vs ~4.62B on complete days) shrunk to match. The same truncation pattern hit the June 29 file (that week's recap), and July 7 was, of all days, the rout day. Treat any per-ticker short-volume claim about July 7 as unverifiable until the file is refiled.
The options week: the same-day crowd breathed with the calendar
| d | contracts_m | pct_0dte |
|---|---|---|
| 2026-07-06 | 61 | 38.7 |
| 2026-07-07 | 61.1 | 31.2 |
| 2026-07-08 | 63.3 | 38.7 |
| 2026-07-09 | 58.9 | 28.7 |
| 2026-07-10 | 65.6 | 48.7 |
The exact SQL behind every number
SELECT toDate(sip_timestamp) AS d,
round(toFloat64(sum(size)) / 1e6, 1) AS contracts_m,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = formatDateTime(toDate(sip_timestamp), '%y%m%d')) / sum(size), 1) AS pct_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00'
GROUP BY d
ORDER BY dContract volume ran from 58.9M (Thursday, the lightest) to 65.6M (Friday, the heaviest). The 0DTE share told the calendar's story: it sagged to 28.7% on Thursday, a session with no major expiry pull, and jumped to 48.7% on Friday as the weeklies expired, the rhythm the expiration calendar predicts. The calendar still decides how big the same-day fraction gets.
Rates: drifting up all week
| chg_2y_bp | chg_10y_bp | chg_30y_bp | y10_fri_pct | y30_fri_pct | jul9_jul10_print_rows |
|---|---|---|---|---|---|
| 7 | 7 | 8 | 4.56 | 5.06 | 2 |
The exact SQL behind every number
SELECT
round((toFloat64(anyIf(yield_2_year, date = '2026-07-10')) - toFloat64(anyIf(yield_2_year, date = '2026-07-02'))) * 100) AS chg_2y_bp,
round((toFloat64(anyIf(yield_10_year, date = '2026-07-10')) - toFloat64(anyIf(yield_10_year, date = '2026-07-02'))) * 100) AS chg_10y_bp,
round((toFloat64(anyIf(yield_30_year, date = '2026-07-10')) - toFloat64(anyIf(yield_30_year, date = '2026-07-02'))) * 100) AS chg_30y_bp,
round(toFloat64(anyIf(yield_10_year, date = '2026-07-10')), 2) AS y10_fri_pct,
round(toFloat64(anyIf(yield_30_year, date = '2026-07-10')), 2) AS y30_fri_pct,
(SELECT count() FROM global_markets.treasury_yields WHERE date IN ('2026-07-09', '2026-07-10')) AS jul9_jul10_print_rows
FROM global_markets.treasury_yields
WHERE date IN ('2026-07-02', '2026-07-10')Measured to the week's final print (Friday, July 10), the curve drifted up in near-parallel from the prior week's close: 2-year +7 bp, 10-year +7 bp to 4.56%, 30-year +8 bp to 5.06%, no twist, just level. The July 9 and 10 prints arrived after authoring on a longer-than-usual lag (2 rows now on file); this section carries the completed week.
The calendar behind the week
| filings_week | filings_friday | monday_minus_next_busiest | monday_over_friday_form4 | min_daily_424b2 | max_daily_424b2 | ex_dividends_week | reverse_splits_week | forward_splits_week | news_week |
|---|---|---|---|---|---|---|---|---|---|
| 18353 | 3137 | 1288 | 3.6 | 487 | 679 | 560 | 30 | 9 | 981 |
The exact SQL behind every number
SELECT
(SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-06' AND filing_date <= '2026-07-10') AS filings_week,
(SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-10') AS filings_friday,
toInt64((SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06'))
- toInt64((SELECT max(c) FROM (SELECT count() AS c FROM global_markets.stocks_sec_edgar_index WHERE filing_date > '2026-07-06' AND filing_date <= '2026-07-10' GROUP BY filing_date))) AS monday_minus_next_busiest,
(SELECT round(countIf(form_type = '4' AND filing_date = '2026-07-06') / countIf(form_type = '4' AND filing_date = '2026-07-10'), 1) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-06' AND filing_date <= '2026-07-10') AS monday_over_friday_form4,
(SELECT min(c) FROM (SELECT count() AS c FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-06' AND filing_date <= '2026-07-10' AND form_type = '424B2' GROUP BY filing_date)) AS min_daily_424b2,
(SELECT max(c) FROM (SELECT count() AS c FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-06' AND filing_date <= '2026-07-10' AND form_type = '424B2' GROUP BY filing_date)) AS max_daily_424b2,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-06' AND ex_dividend_date <= '2026-07-10') AS ex_dividends_week,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-06' AND execution_date <= '2026-07-10') AS reverse_splits_week,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-06' AND execution_date <= '2026-07-10') AS forward_splits_week,
(SELECT count() FROM global_markets.stocks_news WHERE toDate(toTimeZone(published_utc, 'America/New_York')) >= '2026-07-06'
AND toDate(toTimeZone(published_utc, 'America/New_York')) <= '2026-07-10') AS news_week18353 SEC filings, 560 ex-dividend records, 30 reverse and 9 forward splits, 981 news articles. Friday July 10's EDGAR index was still in transit when this page first ran (an ingest lag we have written about before). It has since landed at 3137 filings, so the weekly total above now counts all five sessions.
The filing week, by day and by form:
| d | filings | form4 | form8k | f424b2 |
|---|---|---|---|---|
| 2026-07-06 | 5019 | 2464 | 203 | 487 |
| 2026-07-07 | 3485 | 958 | 175 | 679 |
| 2026-07-08 | 3731 | 775 | 163 | 527 |
| 2026-07-09 | 2981 | 623 | 149 | 606 |
| 2026-07-10 | 3137 | 694 | 150 | 532 |
The exact SQL behind every number
SELECT toString(filing_date) AS d,
count() AS filings,
countIf(form_type = '4') AS form4,
countIf(form_type = '8-K') AS form8k,
countIf(form_type = '424B2') AS f424b2
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-06' AND filing_date <= '2026-07-10'
GROUP BY filing_date
ORDER BY filing_dateMonday was the week's heaviest filing session at 5019, clearing the next-busiest day by 1288, and the insider Form 4 was its largest component: 2464 of them, 3.6 times Friday's 694, on the first session following the four-day Independence Day break. The steadiest line is the 424B2, the shelf-takedown prospectus banks file for structured notes: it held a narrow band every session, 487 to 679. Insider paperwork breathes with the calendar. The note machine does not.
Friday's file also carries the week's newest ticker. SK Hynix's paper trail into its US listing:
| filing_date | form_type |
|---|---|
| 2026-06-11 | DRS/A |
| 2026-06-24 | F-1 |
| 2026-07-01 | F-6 |
| 2026-07-06 | F-1/A |
| 2026-07-09 | 8-A12B |
| 2026-07-09 | CERT |
| 2026-07-09 | EFFECT |
| 2026-07-09 | EFFECT |
| 2026-07-10 | 424B4 |
The exact SQL behind every number
SELECT toString(filing_date) AS filing_date,
form_type
FROM global_markets.stocks_sec_edgar_index
WHERE issuer_name = 'SK hynix Inc.'
AND filing_date >= '2026-06-01' AND filing_date <= '2026-07-10'
ORDER BY filing_date ASC, form_type ASCThe registration statement in June, the amendment on Monday of this week, the exchange certification on Thursday, then the last row: the 424B4 final prospectus, filed 2026-07-10, the session the stock opened. The filing index and the tape agree on the date.
The sessions, verified
| sessions_in_week | first_session | last_session | holiday_rows_in_week | next_closure_date | next_closure_name |
|---|---|---|---|---|---|
| 5 | 2026-07-06 | 2026-07-10 | 0 | 2026-09-07 | Labor Day |
The exact SQL behind every number
SELECT
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions_in_week,
toString(min(toDate(toTimeZone(window_start, 'America/New_York')))) AS first_session,
toString(max(toDate(toTimeZone(window_start, 'America/New_York')))) AS last_session,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-06' AND date <= '2026-07-10') AS holiday_rows_in_week,
(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-06 13:30:00' AND window_start < '2026-07-10 20:00:00'
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 11995 full sessions, 2026-07-06 through 2026-07-10, no holiday rows in the window, the first five-session week since mid-June's. Next scheduled closure: Labor Day on 2026-09-07.
On deck
Next week, from our own tables:
| closures_next_week | ex_dividends_next_week | household_ex_div_next_week | jul17_expiry_pct_of_week_volume |
|---|---|---|---|
| 0 | 692 | 0 | 14 |
The exact SQL behind every number
SELECT
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-11' AND date <= '2026-07-17' AND status != 'open') AS closures_next_week,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-13' AND ex_dividend_date <= '2026-07-17') AS ex_dividends_next_week,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-13' AND ex_dividend_date <= '2026-07-17') AS household_ex_div_next_week,
(SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717') / sum(size), 1) FROM global_markets.options_trades WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00') AS jul17_expiry_pct_of_week_volumeThe holiday table shows 0 closures next week, five full sessions. 692 ex-dividend records fall inside it, none from the ten household names the panel checks. Next Friday is the third Friday of July, the monthly options expiration, and contracts expiring that day already carried 14% of this week's options volume. One receipt stays open: the July 9 and July 10 treasury prints (2 rows on file), a zero-bounded tripwire that holds this page's regeneration until Treasury's file lands. Friday's EDGAR index, the page's other tripwire, has already landed and is read in full above.
FAQ
How did the stock market do the week of July 6, 2026?
Split: SPY rose 1.4% and QQQ 1.8%, DIA and IWM finished red, and 3270 of 6319 measured liquid stocks fell.
Which sector performed best the week of July 6, 2026?
Energy: XLE gained 3.5%, ahead of tech's +2.9%, the two clear winners of the ten. Financials and consumer discretionary also closed marginally positive (+0.2%, +0.1%), with the other six in the red.
How did SK Hynix's US stock market debut go?
It raised $28.1 billion, 2026's second-largest US raise, behind SpaceX, and closed its first session 6.4% above the $158.14 offer, on $18.03 billion of regular-hours turnover.
When is the next monthly options expiration?
The third Friday of July, the Friday right after this week. Contracts expiring that day already carried 14% of this week's options volume.
Data notes
All timestamps are UTC; regular hours are 13:30-20:00 UTC per session; week boundaries run from July 2's regular close to July 10's. The weekly trailing rank uses OPEN-to-close returns, so it differs from the close-to-close scoreboard, both are labeled. Weekly breadth compares July 2 and July 10 closes over a $5M-traded-in-week filter. One arrival tripwire is bounded to zero: the July 9 and July 10 treasury prints. Friday's EDGAR daily index landed after this page first ran and is now counted in full inside the weekly filings total, which is no longer a floor. No VIX-style print appears here: index implied-volatility series are not licensed into this warehouse, volatility is read from the tape (ranges, 0DTE share, quote behavior). The IPO table stores the debut ticker with a stray space; the debut panel joins on the cleaned symbol.
Methodology
- Market data source: consolidated tape,
delayed_stocks_minute_aggsfor prices and volumes,options_tradesfor the options week. - Time zone handling: stored timestamps are UTC; ET labels via
toTimeZone(...)in SELECT lists; WHERE clauses use raw UTC literals. - Deterministic aggregates: tuple-keyed tie-breaks; prose claims encoded as bounds.
- SEC filings source:
stocks_sec_edgar_index, the daily EDGAR filing index, counted byfiling_date. - Warehouse as-of date: July 13, 2026; equity tapes, options trades, and the week's five EDGAR daily indexes are fully ingested. The July 9 and July 10 treasury prints remain in transit.
Cross-links: the five dailies, Monday, Tuesday, Wednesday, Thursday, Friday, plus MU's June deep-dive, when do options expire, and the prior week's recap.