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

Market recap for July 6, 2026: chip rout and NVDA

Chip rout, bounce and wild summer open hide quiet index week. Most stocks fall as MU out-trades SPY. See how NVDA and QQQ shape the July 6 week.

Wik wey start July 6, 2026 na semiconductor whipsaw wey disguise as calm index. Inside five trading sessions: chip selloff, bounce, summer opening wey violent pass, plus NVDA reclaim am on Friday. At the end, SPY gain +1.4%. Two facts explain the story: MU print more dollar volume pass SPY itself for the week, and more liquid stocks fall pass those wey rise for week wey growth index gain 1.8%. Every number wey dey below come from stored query.

The week on the board

Weekly changes dey cover from Thursday July 2 regular close (market close for Independence Day happen July 3) reach Friday July 10 close. Rows dey alphabetical order.

QuerySPY / QQQ / DIA / IWM: week of July 6 vs July 2 close, plus change for week before
tickerlast week closethis week closethis week change pctlast week change pct
DIA527.83525.77-0.42
IWM297.53295.96-0.50
QQQ712.74725.541.81
SPY744.8754.91.42.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 ticker
Run am yourself

The split na the main story: QQQ +1.8% and SPY +1.4% against DIA -0.4% and IWM -0.5%. Growth carry everything; the Dow and small-cap index finish a green-index week red. Anything wey happen this week, e no be broad-based move.

The week against the trailing year

QuerySPY week inside trailing-year context (open-to-close weekly returns, ~53 weeks)
this week open to close pctbest rankweeks wey dem comparefirst weeksessions this week
0.8220532025-07-075
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
)
Run am yourself

Open-to-close measurement show say SPY week rank 20 out of 53 trailing weeks, right for middle of the pack. The week carry the summer’s most dramatic single open (Thursday) and the sharpest sector rout (Tuesday), but e still land for middle table: the big movements cancel each other, so the finding na say the week ordinary.

Five sessions, one arc

QuerySPY by session: close, change, and share volume, July 6-10
ET dateSPY closechange pctSPY shares m
2026-07-06751.30.949.2
2026-07-07747.66-0.542.5
2026-07-08745.31-0.342.8
2026-07-09751.640.839
2026-07-10754.90.440.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_date
Run am yourself

The arc: Monday reopen from holiday with growth-led gap up (+0.9%, recap); Tuesday semiconductor complex break down, while index give back only -0.5% (recap); Wednesday chips bounce hard and index stay still (-0.3%, recap); Thursday the whole tape turn green for summer’s wildest open (+0.8%, recap); Friday NVDA lead quiet finish (+0.4%, recap) to $754.9 close.

The two names wey dey center of Tuesday rout, receipts:

QueryTuesday rout: INTC and TER, July 7 close vs July 6 close
tickerday 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 ticker
Run am yourself

Tuesday move for both names: INTC -9.6%, TER -9.6%, against SPY’s -0.5% for the session.

Wetin dem talk

Our writing dey only describe wetin happen; we attach names to the narratives we quote for the week. First, see how the feed share attention across the four names wey dey center of the whipsaw, out of 981 articles for the week:

QueryNews feed coverage by day: articles wey tag NVDA, MU, INTC, TER, July 6-10
dNVDA articlesMU articlesINTC articlesTER articles
2026-07-06251270
2026-07-07171320
2026-07-08131720
2026-07-09201230
2026-07-1011760
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 d
Run am yourself

We no dey paraphrase those headlines here. We read dem directly from the stored feed:

QueryWetin the news feed really carry, word for word (The Motley Fool, rout day and bounce day)
sessionoutletheadline
2026-07-07The Motley FoolMichael Burry Just Revealed His Next Big Short, and It's a Bet Against Nvidia, Micron, and AMD
2026-07-08The Motley FoolWhy 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, title
Run am yourself

For the rout day, the feed carry The Motley Fool's “Michael Burry Just Revealed His Next Big Short, and It's a Bet Against Nvidia, Micron, and AMD”; for the bounce day, the same outlet ask “Why Did Sandisk Stock Pop Today?.” NVDA's Friday rally happen without any catalyst headline; na only valuation-framed pieces dey. This data no show the cause.

Two findings: MU (17 articles) cover pass NVDA (13) exactly once, on Wednesday, the bounce day (NVDA lead the other four); and TER, one-half of the pair wey suffer the hardest hit during the rout, get tagged 0 times on the day e break, and zero every other day. Na one feed's attention be this, no be the whole world's media.

Breadth: green week wey most stocks fall

QueryWeekly breadth: July 10 close vs July 2 close, names wey trade $5M+ during the week
advancersdeclinersnames wey dem measureadvancer pct
30153270631947.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
)
Run am yourself

Among 6319 names wey trade at least $5M during the week, 3270 fall compared with 3015 wey rise, so na only 47.7% of stocks advance for week wey growth index gain 1.8%. Na the biggest members manufacture the index green week; median stock get red week. The same narrowness wey Friday recap catch for one session, build up across five sessions.

Sector scoreboard

Where exactly the fall happen? Na the ten SPDR sector ETFs, from July 2 close reach July 10 close, arranged alphabetically:

QuerySector ETFs, full-week change: July 10 close vs July 2 close
tickerthis week pct
XLB-2.1
XLE3.5
XLF0.2
XLI-1.1
XLK2.9
XLP-1
XLRE-0.5
XLU-0.8
XLV-1.8
XLY0.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 ticker
Run am yourself

Four out of the ten sectors close positive, but na only two show any meaningful margin: energy (XLE, +3.5%) and tech (XLK, +2.9%) lead the way. Financials (+0.2%) and consumer discretionary (+0.1%) barely close above flat. The other six, from materials (-2.1%) reach healthcare (-1.8%), finish red. Apart from those two clear winners, the board lean downward.

MU lead the tape: e trade pass the index. For one week.

QueryTop names by regular-hours dollar volume, full week July 6-10
tickerthis week dollar bn
MU164
SPY137.3
NVDA107.1
QQQ103.4
SNDK88
TSLA69.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 6
Run am yourself

MU record 164B for regular-hours dollar volume across the five sessions, ahead of SPY wey get 137.3B. One memory stock wey trade pass the S&P 500 ETF for full week resemble wetin happen for June (MU June deep-dive); NVDA (107.1B), the week’s AI/GPU bellwether, and SNDK (88B), another memory name, complete the week’s top five. The sharp back-and-forth no be only about price. E also show where market money spend the whole week dey argue.

The whipsaw result: same complex, opposite weeks

The fourteen chip names wey drive all the week’s stories, measured across the full week, from July 2 close to July 10 close. Rows dey alphabetical order.

QueryFull-week change for the chip complex: July 10 close vs July 2 close, fourteen names
tickerthis week pct
AMD7.7
AVGO11
INTC-8.8
KLAC-1.8
LRCX-0.3
MRVL-3.9
MU0.3
NVDA8.5
SNDK9.9
SOXL6.1
SOXS-9.5
STX11
TER-2.6
WDC8.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 ticker
Run am yourself

After the rout, bounce, big open and Friday rally, the complex no move together. E split down the middle. AVGO (+11%), STX (+11%), SNDK (+9.9%), NVDA (+8.5%) and WDC (+8.1%) finish with strong green weeks. INTC (-8.8%) get brutal week. The equipment names wey lead Thursday’s huge gaps, KLAC (-1.8%) and LRCX (-0.3%), round-tripped back to roughly flat. The main point: MU, the name wey outperform the S&P 500 ETF for the whole week, finish with +0.3%. 164 billion dollars change hands to move the price almost nowhere. Na the clearest picture of market participants arguing with each other at maximum volume.

The week get new ticker: SK Hynix US debut

Friday add one listed member to the memory complex wey control the week’s tape. The debut, receipted:

QuerySK Hynix US debut: the raise, delayed open, close vs offer, and where the first-day tape rank for 2026
offer pxraised bnbigger 2026 raisesbiggest 2026 raise bnfirst RTH pxfirst RTH bar ET minutefirst RTH bar ETdebut closeclose vs offer pcte fade from first printRTH dollar bn2026 debuts wey dem measure2026 debut dollar rankbiggest 2026 debut bn
158.1428.117517069411:34168.336.41.6718.03144281.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'
Run am yourself

The raise: $28.1 billion for $158.14 per share. Na 1 US raise for 2026 wey bigger, after SpaceX listing of $75 billion for June. Since no prior close dey, opening cross no find price until 11:34 ET: $170. The close, $168.33, drop $1.67 from that first print but still remain 6.4% above the offer. And the tape: $18.03 billion in regular-hours dollars. Among 144 US debuts measured for 2026, only SpaceX first-day volume of $81.2 billion pass am.

Wey move pass anybody for this week

Apart from chips, who win and who lose? For tape wey no adjust, this week 30 reverse splits fit fake four-digit “gains”. So these boards no include splits wey happen inside the week, and dem require at least $5 million trade value.

QueryWeekly movers: ten biggest gainers and decliners, $5M+ traded, in-week splits no dey count
tickerboardthis week pctweek dollar mpct of dollar max
FXHOgainers147.3113.81.2
FBRXgainers109.6305.83.2
CRNXgainers989660.5100
GMMgainers97.6639.36.6
LHSWgainers91.6307.83.2
JZXNgainers89.9356.53.7
TRAXgainers87.4225.62.3
ZCMDgainers86.277.20.8
WRAPgainers72.3172.71.8
SUNEgainers67363.93.8
JEMdecliners-76.426.10.3
ELPWdecliners-70.3105.21.1
HAOdecliners-65.8128.51.3
ALARdecliners-65.114.80.2
CCHHdecliners-55.5105.91.1
SDOTdecliners-53.7366.73.8
ONFOdecliners-47.675.20.8
YHCdecliners-46.917.70.2
GMEXdecliners-44.914.80.2
BYRNdecliners-44.644.80.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) DESC
Run am yourself

To enter either board, stock need make big move. The smallest gainer wey show rise by 67%, while the smallest decliner print -44.6% loss. Even INTC brutal chip week (-8.8%) no near any of the two levels. These boards mostly na small-cap territory, with one strong exception: CRNX, +98% on $9660.5 million traded, the biggest dollar volume among the twenty, Tuesday overnight move wey nearly double am still hold the gain reach Friday.

The shorts: one truncated file inside an otherwise complete week

QueryDaily short-volume file coverage: tickers wey dey on file and total short shares, July 6-10
dtickers wey dey fileshort shares bn
2026-07-06153844.62
2026-07-0743331.86
2026-07-08151274.65
2026-07-09151244.61
2026-07-10151164.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 date
Run am yourself

Four out of the five daily short-volume files come complete, with around 15384 tickers each. Tuesday July 7 file get only 4333, less than one-third of the other files, and total short shares (1.86B versus around 4.62B on complete days) drop to match. The June 29 file get the same truncation pattern (that week recap), and July 7 na the day wey market crash. Treat any per-ticker short-volume claim about July 7 as unverifiable until dem refile the file.

The options week: crowd wey dey trade same-day options follow the calendar

QueryOptions contracts and 0DTE share by session, July 6-10
dcontracts mpct 0DTE
2026-07-066138.7
2026-07-0761.131.2
2026-07-0863.338.7
2026-07-0958.928.7
2026-07-1065.648.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 d
Run am yourself

Contract volume run from 58.9M (Thursday, the lightest) reach 65.6M (Friday, the heaviest). The 0DTE share show wetin the calendar bring: e drop reach 28.7% on Thursday, when no major expiry pull dey, then e jump to 48.7% on Friday as the weeklies expire, just as the expiration calendar dey predict. The calendar still dey decide how big the same-day fraction go be.

Rates: e dey gradually rise throughout the week

QueryTreasury curve: Friday July 10 print vs July 2 close, both late receipts wey dey on file
chg 2Y bpchg 10Y bpchg 30Y bpY10 Friday pctY30 Friday pctJul9-Jul10 print rows
7784.565.062
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')
Run am yourself

Compared with the final print for the week (Friday, July 10), the curve rise almost parallel from the previous week close: 2-year +7 bp, 10-year +7 bp reach 4.56%, 30-year +8 bp reach 5.06%. No twist, na just general level increase. The July 9 and 10 prints enter after authoring with longer-than-usual delay (2 rows don dey on file now); this section cover the complete week.

The calendar behind the week

QueryThe week's corporate calendar: filings, dividends, splits, news
filings for weekFriday filingsMonday minus next busiestMonday pass Friday Form 4minimum daily 424B2maximum daily 424B2ex-dividends for weekreverse splits for weekforward splits for weeknews week
18353313712883.6487679560309981
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_week
Run am yourself

18353 SEC filings, 560 ex-dividend records, 30 reverse and 9 forward splits, 981 news articles. Friday July 10 EDGAR index still dey transit when this page first run (ingest lag wey we don write about before). E don land now at 3137 filings, so the weekly total above now include all five sessions.

The filing week, by day and by form:

QuerySEC filings by session and form type, July 6-10
dfilingsform4form8kf424b2
2026-07-0650192464203487
2026-07-073485958175679
2026-07-083731775163527
2026-07-092981623149606
2026-07-103137694150532
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_date
Run am yourself

Monday na the week’s busiest filing session at 5019. E pass the next-busiest day by 1288. Insider Form 4 na the biggest part: 2464 of dem, 3.6 times Friday’s 694, for the first session after the four-day Independence Day break. The most steady line na 424B2, the shelf-takedown prospectus wey banks file for structured notes. E stay inside narrow range every session, 487 to 679. Insider paperwork dey follow the calendar. The note machine no dey.

Friday file still carry the week’s newest ticker. Na SK Hynix paper trail into its US listing:

QuerySK Hynix SEC paper trail as e enter July 10 US listing
filing dateform_type
2026-06-11DRS/A
2026-06-24F-1
2026-07-01F-6
2026-07-06F-1/A
2026-07-098-A12B
2026-07-09CERT
2026-07-09EFFECT
2026-07-09EFFECT
2026-07-10424B4
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 ASC
Run am yourself

The registration statement for June, the amendment on Monday this week, the exchange certification on Thursday, then the last row: the 424B4 final prospectus, filed 2026-07-10, the same session wey the stock open. The filing index and the tape agree on the date.

The sessions, verified

QuerySession verification: five sessions, no holiday, next scheduled closure
sessions wey dey for weekfirst sessionlast sessionholiday rows wey dey for weeknext closure datenext closure name
52026-07-062026-07-1002026-09-07Labor 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 1199
Run am yourself

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

QueryNext week for calendar: closures, ex-dividends, and the monthly expiry's pull
closures wey dey next weekex dividends wey dey next weekhousehold ex div wey dey next weekjul17 expiry pct of week volume
0692014
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_volume
Run am yourself

The holiday table show say 0 closures dey happen next week, across five full sessions. 692 ex-dividend records go fall inside that period, but none come from the ten household names wey the panel dey track. Next Friday na the third Friday for July, the monthly options expiration, and contracts wey expire that day don already account for 14% of this week’s options volume. One receipt still dey open: the July 9 and July 10 Treasury prints (2 rows dey on file), a zero-bounded tripwire wey dey hold this page regeneration until Treasury file land. Friday’s EDGAR index, the page’s other tripwire, don already land and dem don read am complete above.

FAQ

Stock market take dey be like for the week wey start July 6, 2026?

Split: SPY rise 1.4% and QQQ 1.8%, DIA and IWM finish for red, while 3270 out of 6319 liquid stocks wey dem measure fall.

Which sector perform pass for the week wey start July 6, 2026?

Energy: XLE gain 3.5%, ahead of tech wey gain +2.9%. Na dem be the two clear winners out of ten. Financials and consumer discretionary too close slightly positive (+0.2%, +0.1%), while the other six finish for red.

How SK Hynix US stock market debut go?

E raise $28.1 billion, wey be the second-biggest US raise for 2026, behind SpaceX. E close the first session 6.4% above the $158.14 offer, with $18.03 billion regular-hours turnover.

When the next monthly options expiration go happen?

Na the third Friday for July, wey be the Friday immediately after this week. Contracts wey go expire that day don already carry 14% of this week options volume.

Data notes

All timestamps na UTC; regular hours na 13:30-20:00 UTC for each session; week boundary dey run from July 2 regular close reach July 10 own. The weekly trailing rank dey use OPEN-to-close returns, so e different from the close-to-close scoreboard, and both get their own labels. Weekly breadth dey compare July 2 and July 10 closes, using $5M-traded-in-week filter. One arrival tripwire get zero boundary: the July 9 and July 10 treasury prints. Friday EDGAR daily index land after this page first run, and dem don now count am complete inside weekly filings total, wey no longer be floor. No VIX-style print dey here: dem no license index implied-volatility series into this warehouse, so volatility dey come from the tape through ranges, 0DTE share and quote behavior. IPO table store the debut ticker with one extra space; debut panel join am using the cleaned symbol.

Methodology

  • Market data source: consolidated tape, delayed_stocks_minute_aggs for prices and volumes, options_trades for the options week.
  • Time zone handling: stored timestamps na UTC; ET labels dey come through toTimeZone(...) inside SELECT lists; WHERE clauses dey use raw UTC literals.
  • Deterministic aggregates: tuple-keyed tie-breaks; prose claims encode as bounds.
  • SEC filings source: stocks_sec_edgar_index, the daily EDGAR filing index, wey filing_date count.
  • Warehouse as-of date: July 13, 2026; equity tapes, options trades, and the week's five EDGAR daily indexes don fully enter. The July 9 and July 10 treasury prints still dey 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.

#recap#weekly#spy#qqq#semiconductors#market structure