Strasmore Research
Marktoverzichten Matt ConnorDoor Matt Connor · Bijgewerkt 2026-07-24

Marktoverzicht 1 juli 2026 in cijfers

De tweede helft begon rustig voor de index maar volatiel daaronder: het geheugencomplex zakte en META steeg, terwijl de meeste S&P sectoren groen sloten.

Woensdag 1 juli 2026 — de eerste sessie van de tweede helft — plaatste een van de rustigste indexdagen van de maand bovenop de meest volatiele handelsactiviteit. SPY sloot op -0.08% en QQQ op -1.44%, terwijl het geheugencomplex dat het tweede kwartaal ondersteunde een tiende van zijn waarde verloor, META met 8.88% steeg, en 7 van de 11 S&P sectorfondsen nog steeds in de groene cijfers sloot. Vorige sessie: 30 juni.

Het scorebord

Veranderingen zijn vergeleken met de laatste reguliere sessie van 1 juli versus dinsdag 30 juni.

QuerySPY / QQQ / DIA / IWM — 1 juli t.o.v. sluiting 30 juni, regular hours
De exacte SQL achter elk getal
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-06-30 13:30:00' AND window_start < '2026-06-30 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-01 13:30:00' AND window_start < '2026-07-01 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_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 AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.ticker

De spreiding is bepalend: DIA op 0.02% en SPY op -0.08% bleven vlak ten opzichte van de -1.44% van QQQ en de -0.37% van IWM — een selloff in growth die de brede markt nauwelijks beïnvloedde.

Een van de rustigste indexdagen van de afgelopen maand

QuerySPY open-to-close beweging gerangschikt tegen de voorgaande maand sessies (rank 1 = grootste absolute beweging)
De exacte SQL achter elk getal
SELECT round(anyIf(oc_pct, d = toDate('2026-07-01')), 2) AS day_move_pct,
       arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-01'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-01'))) + 1 AS abs_move_rank,
       count() AS sessions_compared,
       toString(min(d)) AS first_session
FROM (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-06-01 00:00:00')
      AND window_start < toDateTime('2026-07-02 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY d
)

De beweging van open naar close binnen de sessie — een ander perspectief dan de close-over-close resultaten — liet SPY 0.09% zien: dit is de 20e van 22 sessies in absolute omvang, waarbij slechts twee sessies een kleinere beweging lieten zien. De volatiliteitsindex bevestigde dit beeld. Deze database bevat geen spot VIX-index, dus de controle vindt plaats via beursgenoteerde VIX-futures fondsen — de meest directe verhandelbare indicator voor de prijs van protection:

QueryVolatility complex op 1 juli: VIX-futures ETF's t.o.v. sluiting dinsdag, met SPY als anchor
De exacte SQL achter elk getal
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-01 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-01 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-01 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-01 00:00:00') AS day_low
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'SVXY', 'UVXY', 'VIXY', 'VXX')
      AND ((window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00')
        OR (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 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 - 1) * 100, 2) AS range_pct
FROM per_name
ORDER BY ticker

VXX, het grootste front-month VIX futures fonds, steeg met 0.72%; VIXY met 0.8%; de leveraged UVXY met 1.13% binnen een bereik van 3.68%; de inverse SVXY met -0.42%. Dit zijn verwaarloosbare verschillen ten opzichte van de prestaties van individuele aandelen.

Breedte: meer dalingen dan stijgingen — en meer nieuwe highs dan nieuwe lows

QueryAdvancers, decliners en nieuwe quarterly highs vs lows onder tickers met min. $1M volume op 1 juli
De exacte SQL achter elk getal
WITH per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-01 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-01 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start < '2026-07-01 00:00:00') AS quarter_high,
        minIf(toFloat64(low), window_start < '2026-07-01 00:00:00') AS quarter_low,
        maxIf(toFloat64(high), window_start >= '2026-07-01 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-01 00:00:00') AS day_low,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-01 00:00:00') AS day_dollar_volume,
        countIf(window_start < '2026-07-01 00:00:00') AS quarter_bars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= '2026-04-01 13:30:00' AND window_start < '2026-06-30 20:00:00')
        OR (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00'))
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY ticker
)
SELECT
    countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
    countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
    countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
    round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
        / countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct,
    countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000 AND day_high > quarter_high) AS new_quarter_highs,
    countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000 AND day_low < quarter_low) AS new_quarter_lows,
    round(countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000 AND day_high > quarter_high)
        / countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000 AND day_low < quarter_low), 1) AS highs_per_low,
    countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000) AS names_with_a_full_quarter,
    countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
    count() AS tickers_traded_both_sessions,
    count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
    countIf(day_dollar_volume >= 1000000 AND quarter_bars < 1000) AS dropped_short_quarter_history
FROM per_ticker
WHERE prior_close > 0 AND day_close > 0

2928 advancers, 3465 decliners, 82 unchanged — 45.2% van de liquid tape steeg. De omvang zegt echter niets over de ernst: ten opzichte van de range tijdens de reguliere handelsuren van het tweede kwartaal, bereikte 836 van de 6217 names met een volledige handelsperiode van een kwartaal een nieuwe quarterly high op deze rode dag, tegenover 246 die een nieuwe low bereikte — 3.4 nieuwe highs per nieuwe low. De meeste namen daalden; slechts enkelen doorbraken hun range. Dalingen: 5435 van 11910 dual-session tickers onder de $1 miljoen filter, 258 liquid names zonder een volledige kwartaal aan bars.

Het sectoroverzicht: de schade beperkte zich tot één sector

De elf SPDR sector funds vormen de goedkoopste dwarsdoorsnede van de gehele markt — elke sessie dezelfde mand.

QueryDe elf S&P sector ETF's op 1 juli, van best naar worst t.o.v. sluiting dinsdag
De exacte SQL achter elk getal
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-01 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-01 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-01 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
      AND ((window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00')
        OR (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 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_close / prior_close - 1) * 100 - min((day_close / prior_close - 1) * 100) OVER (), 2) AS pct_above_worst_sector,
    sum(if(day_close > prior_close, 1, 0)) OVER (ORDER BY (day_close / prior_close) DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS green_so_far,
    day_dollar_bn
FROM per_name
ORDER BY pct_chg DESC

Communication services (XLC) — het sector fund met META — leidde met 2.41%, gevolgd door financials (XLF) op 2.2%. Technology (XLK) sloot als enige onderaan af, -2.56% en 4.97 percentage points onder de koploper. In totaal sloot 7 van de 11 funds in de groene zone — discretionary 0.68% en health care 0.57% — tegenover utilities (-1.28%), industrials (-0.98%) en energy (-0.6%) in het rood. Dit betekent dat "de index nauwelijks bewoog" vanuit de onderliggende waarden.

Het hoogtepunt van de dag: geheugen breekt, META beweegt de andere kant op

Acht namen veroorzaakten de dispersion: de vier memory-and-storage aandelen die het tweede kwartaal leidden, en vier chip- en platformnamen daaromheen. Co-movement, omvang en timing worden gerapporteerd; de data geeft geen verklaring voor de oorzaak.

QueryDe memory complex en de megacaps: verandering t.o.v. sluiting dinsdag, range timing en dollar volume
De exacte SQL achter elk getal
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-01 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-01 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-01 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-01 00:00:00') AS day_low,
        argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-01 00:00:00') AS low_bar,
        argMaxIf(window_start, (toFloat64(high), -toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-01 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-01 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AMD', 'META', 'MRVL', 'MU', 'NVDA', 'SNDK', 'STX', 'WDC')
      AND ((window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00')
        OR (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 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,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    toHour(toTimeZone(low_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(low_bar, 'America/New_York')) AS low_minute_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

SanDisk (-10.45%) en Micron (-10.23%) verloren elk meer dan een tiende van hun waarde; Marvell -8.68%, AMD -6.87%, Western Digital -6.3%, Seagate -5.11%. MU had een omzet van $42.94 miljard, meer dan de totale handel in SPY gedurende de dag. MU, AMD en Marvell bereikten elk een session low in de laatste minuten van de handel (15:59, 15:57, 15:58 ET) — verkocht tijdens de closing auction, niet door een ochtend-air pocket die zich herstelde (de MU deep-dive laat het kwartaal achter zich)).

META is het spiegelbeeld: 8.88% op $22.72 miljard in handel, met een low op 09:30 ET — de opening bar — die nooit meer werd bereikt. NVDA bleef onveranderd op -1.09% (NVDA's juni).

Wat er werd gezegd

Deze pagina wijst nooit oorzaken toe. Onze gelicentieerde nieuwsfeed is echter een tabel zoals elke andere — dit was de inhoud van die dag:

QueryDe laatste twaalf nieuwsartikelen van de dag met MU, SNDK, STX, WDC of META (één gelicentieerde feed)
De exacte SQL achter elk getal
SELECT published_et, publisher, names_tagged, headline
FROM (
    SELECT
        published_utc,
        formatDateTime(toTimeZone(published_utc, 'America/New_York'), '%H:%i') AS published_et,
        JSONExtractString(publisher, 'name') AS publisher,
        arrayStringConcat(arrayFilter(x -> x IN ('MU', 'SNDK', 'STX', 'WDC', 'META'), tickers), ' ') AS names_tagged,
        substring(title, 1, 72) AS headline
    FROM global_markets.stocks_news
    WHERE published_utc >= '2026-07-01 04:00:00' AND published_utc < '2026-07-02 04:00:00'
      AND hasAny(tickers, ['MU', 'SNDK', 'STX', 'WDC', 'META'])
      AND NOT has(tickers, 'SPCX')
      AND position(title, 'SPCX') = 0
    ORDER BY published_utc DESC
    LIMIT 12
)
ORDER BY published_utc ASC

Het artikel van The Motley Fool over Micron (14:11 ET) in het midden van de middag had de kop "Why Micron Stock Is Plummeting Today". De avondsamenvatting (17:12 ET) en het vervolg vier minuten later (17:16 ET) plaatsten de stijging van META naast een gerucht over een plan om overtollige AI compute als cloud business te verkopen. Dit is de context van het medium en geen vaststelling in de tape; 12 artikelen van twee uitgevers vormen de focus van één feed, niet van de markt.

Waar de handel plaatsvond

QueryVolume leaders op twee manieren: top 6 naar dollars traded, top 4 naar shares traded (één lijst met herhaalde symbolen uitgesloten)
De exacte SQL achter elk getal
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, shares_m,
    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(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
        round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 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(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
        round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    ORDER BY shares_m DESC
    LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESC

MU met $42.94 miljard leidde de handel — SPY volgde met $27.76 miljard, META stond op de vierde plaats met $22.72 miljard — een dalend aandeel met een handelsvolume dat 1,5 keer zo hoog was als dat van de indexfondsen. De uitersten van de beweging waren de meest actieve namen. Het aandelentabblad vertoont de gebruikelijke afwijkingen: SOXS, de 3x-inverse semiconductor ETF, leidde met 553.1 miljoen aandelen — de meest verhandelde op de dag dat de chipsector daalde — terwijl een aandeel met een lage koers de lijst sloot met 189.8 miljoen aandelen ter waarde van $319 miljoen (relatieve volume geeft dit precies aan). Basis: 1 juli tijdens reguliere handelsuren, één hergebruikte listing uitgesloten (ontvangsten).

De options tape

QueryEén rij voor de gehele options dag: volume, same-day expiry, put/call skew en het drukste contract
De exacte SQL achter elk getal
WITH
    (
        SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
                sum(size), round(avg(toFloat64(price)), 3),
                any(if(substring(ticker, length(ticker) - 14, 6) = '260701', 1, 0)))
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-02 00:00:00'
        GROUP BY ticker
        ORDER BY sum(size) DESC, ticker ASC
        LIMIT 1
    ) AS top_contract,
    (
        SELECT round(toFloat64(argMax(close, window_start)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00'
    ) AS spy_regular_close
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
    round(sumIf(toFloat64(size), option_type = 'P') / sumIf(toFloat64(size), option_type = 'C'), 2) AS put_call_ratio,
    round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260701') / sum(size), 1) AS same_day_expiry_pct,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
    countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
    round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P')) / 1e6, 2) AS spy_put_contracts_m,
    round(100.0 * sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P' AND toFloat64(strike_price) < spy_regular_close * 0.98)
        / sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P'), 1) AS spy_puts_2pct_below_pct,
    round(100.0 * sumIf(size, underlying_symbol = 'SPY' AND option_type = 'C' AND toFloat64(strike_price) > spy_regular_close * 1.02)
        / sumIf(size, underlying_symbol = 'SPY' AND option_type = 'C'), 1) AS spy_calls_2pct_above_pct,
    round(sumIf(toFloat64(size), underlying_symbol = 'MU' AND option_type = 'P')
        / sumIf(toFloat64(size), underlying_symbol = 'MU' AND option_type = 'C'), 2) AS mu_put_call_ratio,
    round(sumIf(toFloat64(size), underlying_symbol = 'META' AND option_type = 'P')
        / sumIf(toFloat64(size), underlying_symbol = 'META' AND option_type = 'C'), 2) AS meta_put_call_ratio,
    top_contract.1 AS top_contract_underlying,
    top_contract.2 AS top_contract_strike,
    top_contract.3 AS top_contract_type,
    top_contract.4 AS top_contract_volume,
    reverse(arrayStringConcat(extractAll(reverse(toString(assumeNotNull(top_contract.4))), '\\d{1,3}'), ',')) AS top_contract_volume_fmt,
    round(top_contract.5, 3) AS top_contract_avg_price,
    top_contract.6 AS top_contract_is_same_day,
    round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close,
    spy_regular_close AS spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-02 00:00:00'

Er werd op 68.46 miljoen contracten in de handel gebracht via 11.22 miljoen prints — calls vormden 58.6% van het volume, met 33.5% van de expiries op dezelfde dag. Er was geen sprake van hedging op de index: de marktbreedte vertoonde 0.71 puts per call, en van de 5.76 miljoen puts van SPY waren er slechts 11.6% met een strike meer dan twee procent onder de 745.69 close — de far-downside strikes die uitbetalen bij een crash. De skew zat in individuele aandelen: de puts van Micron overtroffen de calls (1.11 per call), terwijl de calls van META de puts versloegen met een ratio van meer dan twee-op-één (0.39). Het meest verhandelde contract was de SPY $748 call met dezelfde expidatie — 878,947 contracten tegen een gemiddelde van $0.707 — die 2.31 dollar out of the money afliep, zoals die van dinsdag. Er werden gedurende de dag geen contracten verhandeld met een expidatie op 3 juli (0 prints — die vrijdag is gesloten); de weekly van donderdag had 14.43 miljoen.

Rates: drifting up, front end down

Yields are daily closes against June 30.

QueryDe Treasury curve, sluiting 1 juli t.o.v. 30 juni (alleen ingevulde maturities)
De exacte SQL achter elk getal
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jul1_yield_pct,
    round((t.2 - t.3) * 100) AS one_day_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-01') AS d,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-30') AS p
)

The 10-year added 4 bp to 4.48% and the 30-year 6 bp, while the 1-month bill moved -3 bp — belly and long end up, front end down. The 2s10s spread closed at 0.31 percentage points: nothing here matched the equity dispersion.

The calendar behind the day

QueryCorporate calendar en informatieverloop van 1 juli, in één rij
De exacte SQL achter elk getal
WITH
    (
        SELECT (count(), uniqExact(publisher))
        FROM global_markets.stocks_news
        WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-01'
    ) AS news,
    (
        SELECT (argMax(t, n), max(n))
        FROM (
            SELECT t, count() AS n
            FROM (
                SELECT arrayJoin(tickers) AS t
                FROM global_markets.stocks_news
                WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-01'
            )
            WHERE t != 'SPCX'
            GROUP BY t
        )
    ) AS top_news
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-01') AS ex_dividend_records,
    (SELECT countIf(frequency = 12) FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-01') AS monthly_payers,
    (SELECT countIf(frequency = 4) FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-01') AS quarterly_payers,
    (SELECT round(100.0 * countIf(frequency = 12) / count(), 1) FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-01') AS monthly_payer_pct,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-01') AS splits_executed,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-01') AS ipos_listed,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-01') AS sec_filings,
    (SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-01') AS insider_form4_filings,
    (SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-01') AS filings_8k,
    (SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
        SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-01' ORDER BY ticker
    )) AS ipo_names,
    news.1 AS news_articles,
    news.2 AS news_publishers,
    top_news.1 AS most_covered_ticker,
    top_news.2 AS most_covered_articles

The quarter turn crested here: 745 dividend records went ex-dividend — the wave the June recap watched building — alongside 9 splits and 3 listings (BSP — Bending Spoons S.p.A.; ITG — ITG Inc.; LIME — Neutron Holdings Inc.). The filing feed revived: 4282 filings, 1072 of them Form 4s and 248 8-Ks, after June 30's near-empty index day (the month-end gap note). Our feed carried 201 articles, most-covered MSFT at 16.

But a count says nothing about who was paying. Ranked by the money that traded in them, the board is not corporate at all:

QueryDe grootste namen die ex-dividend gaan op 1 juli, gerangschikt naar dollar volume van de dag
De exacte SQL achter elk getal
WITH divs AS (
    SELECT ticker, max(toFloat64(cash_amount)) AS cash, max(frequency) AS freq
    FROM global_markets.stocks_dividends
    WHERE ex_dividend_date = '2026-07-01' AND distribution_type = 'recurring'
    GROUP BY ticker
),
tape AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) AS dollar_volume,
           toFloat64(argMax(close, (window_start, close))) AS day_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
)
SELECT
    d.ticker AS ticker,
    round(d.cash, 4) AS cash_per_share,
    d.freq AS payments_per_year,
    round(t.day_close, 2) AS day_close,
    round(100 * d.cash / t.day_close, 2) AS pct_of_price,
    round(100 * d.cash * d.freq / t.day_close, 2) AS annualized_yield_pct,
    round(t.dollar_volume / 1e9, 2) AS day_dollar_bn
FROM divs d JOIN tape t ON d.ticker = t.ticker
WHERE t.dollar_volume > 0 AND d.cash > 0
ORDER BY t.dollar_volume DESC
LIMIT 8

Every one of the eight busiest ex-dividend tickers is a fund paying 12 times a year: SGOV, a Treasury-bill fund, went ex on $0.2958 a share (0.29% of price, 3.54% annualized) on $3.5 billion traded; HYG, a high-yield bond fund, on $0.3688. That is a first-of-month wave: 572 of the day's 745 records (76.8%) are monthly payers — funds distributing interest — against 123 quarterly payers. The ex-date drop is mechanical, not a loss.

Is de eerste dag van een kwartaal ooit een gewone dag?

Het scenario lijkt logisch: een nieuw kwartaal, nieuw kapitaal en nieuwe allocaties. De database is het daar niet mee eens.

QueryElke quarter-opening sessie sinds 2004: SPY open-to-close beweging, waarbij 1 juli is gerangschikt
De exacte SQL achter elk getal
SELECT
    count() AS quarter_opens_measured,
    round(quantileExact(0.5)(oc_pct), 2) AS median_quarter_open_pct,
    countIf(oc_pct > 0) AS quarter_opens_green,
    countIf(oc_pct <= 0) AS quarter_opens_red,
    round(anyIf(oc_pct, first_day = toDate('2026-07-01')), 2) AS jul1_oc_pct,
    arrayCount(x -> x < anyIf(oc_pct, first_day = toDate('2026-07-01')), groupArrayIf(oc_pct, first_day != toDate('2026-07-01'))) + 1 AS jul1_rank_worst_to_best,
    round(min(oc_pct), 2) AS worst_quarter_open_pct,
    round(max(oc_pct), 2) AS best_quarter_open_pct,
    concat(monthName(min(first_day)), ' ', toString(toYear(min(first_day)))) AS first_measured
FROM (
    SELECT f.first_day AS first_day, d.oc_pct AS oc_pct
    FROM (
        SELECT toStartOfQuarter(d) AS q, min(d) AS first_day
        FROM (
            SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'SPY'
              AND window_start >= toDateTime('2004-01-01 00:00:00')
              AND window_start < toDateTime('2026-07-02 00:00:00')
              AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
            GROUP BY d
        )
        GROUP BY q
    ) f
    INNER JOIN (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               (argMax(toFloat64(close), (window_start, close)) / argMin(toFloat64(open), (window_start, open)) - 1) * 100 AS oc_pct
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= toDateTime('2004-01-01 00:00:00')
          AND window_start < toDateTime('2026-07-02 00:00:00')
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY d
    ) d ON d.d = f.first_day
)

In 91 openingssessies van kwartalen sinds January 2004 is de mediane move van de SPY van opening naar sluiting op de eerste dag van een kwartaal 0.01% — 46 groen tegenover 45 rood, variërend van -2.28% tot 3.18%: een kansverdeling die nauwelijks afwijkt van een muntworp. 1 juli leverde 0.09% op, rang 50 van 91 slechtste tot beste — exact in het midden. Basis: de SPY open-to-close tijdens reguliere handelsuren voor elke eerste sessie van een kwartaal in de database.

Wat de dag de lezer laat achter

De index bewoog 0.09%; het panel met acht namen varieert van -10.45% tot 8.88%; de protection werd nauwelijks opnieuw geprijsd. Dit is de gebruikelijke rekenkundige logica van een geconcentreerde markt — de verliezen in één sector worden gecompenseerd door winsten in 7 van de andere 11, wat het nettoresultaat van een index bepaalt. Een analyse op indexniveau laat hier niets zien; een analyse op positieniveau laat zien dat een tiende van een holding in één dag is verdwenen.

De sessie, geverifieerd

QuerySession check: SPY geobserveerde minute-bar span
De exacte SQL achter elk getal
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-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-01') AS jul1_holiday_rows
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-01 00:00:00' AND window_start < '2026-07-02 00:00:00'

De bars van SPY lopen van 04:00 tot 19:59 New York tijd, met 390 regular-window bars en 0 holiday rows op de datum — een volledige sessie, geverifieerd via de tape.

FAQ

Ging de aandelenmarkt omhoog of omlaag op 1 juli 2026?

Dat hangt af van de gekozen index. SPY sloot op -0.08%, DIA op 0.02% en QQQ op -1.44%; 3465 liquide namen daalden terwijl 2928 steeg — toch sloot 7 van de sectorfondsen van 11 in de groene cijfers, waarbij technologie de uitzondering was.

Waarom daalden Micron, SanDisk, Western Digital en Seagate allemaal op 1 juli 2026?

Deze data rapporteert gelijktijdige bewegingen, geen oorzaken: de vier namen daalden tussen -5.11% en -10.45%. Het artikel van The Motley Fool over Micron van diezelfde dag (in het nieuwsvenster op deze pagina, 14:11 ET) had de kop "Why Micron Stock Is Plummeting Today". Dit is de interpretatie van dat medium, geen vaststelling in de marktgegevens.

Waarom steeg META op 1 juli 2026?

META sloot 8.88% hoger, met het laagste punt tijdens de openingsbar. De berichtgeving van The Motley Fool schreef de beweging toe aan rapporten dat het bedrijf de overtollige AI-rekenkracht als cloud-business wilde verkopen: dit is de toeschrijving van het medium, niet die van ons.

Is de eerste handelsdag van een kwartaal meestal een sterke dag?

Niet meetbaar. Over 91 kwartaalopeningen sinds January 2004 was de mediane beweging van open naar close voor SPY 0.01%: 46 groen en 45 rood — een kop-of-munt; 1 juli viel midden in het middenveld.

Was de optiemarkt de selloff aan het hedgen op 1 juli 2026?

Niet op indexniveau: de ratio was 0.71 puts per call marktbreed, en slechts 11.6% van het put-volume van SPY sloot meer dan twee procent onder de close.

Datanotities

  • Dollar volume is een proxy per minuut — prijs × volume opgeteld per minuut-bar, tijdens reguliere handelsuren. De weergegeven extremen zijn gecontroleerd aan de hand van aangrenzende bars; bij gelijke waarden wordt de vroegste waarde gehanteerd.
  • Er bestaat hier geen spot VIX-index. Het volatiliteitspanel bevat beursgenoteerde VIX-futures fondsen die futures aanhouden en rollen — deze zijn gerelateerd aan de index, maar nooit identiek.
  • Nieuwe kwartaal-extremen (highs/lows) vergelijken de extremen tijdens de reguliere handelsuren van 1 juli met de range van elk aandeel tussen 1 april en 30 juni; dit geldt voor liquide namen met een volledige kwartaal aan bars; dalingen zijn opgenomen in het paneel.
  • Het sectorbord is een samengestelde basket (elf SPDR ETF's, geen vendor-veld); het nieuwspaneel is één gelicentieerde feed (12 artikelen, twee uitgevers); één vermelding met een hergebruikt symbool is uitgesloten van de leaderboards (deze gegevens).

Methodologie

  • Eén handelsessie (1 sessie, geverifieerd aan de hand van geobserveerde bars en de feestdagtabel — nooit aangenomen). Timestamps worden opgeslagen in UTC en binnen de queries omgezet naar New York-tijd; "close" is de laatste minute bar van de reguliere sessie, waarbij de dagwijziging plaatsvindt op basis van 30 juni.
  • Decimalen worden omgezet naar 64-bit floats vóór ratio-berekeningen; de expiries van opties worden opnieuw geparsed vanuit de OCC ticker. Panels worden eenmalig uitgevoerd tijdens het schrijven via het beveiligde read-only pad. Warehouse-status per 13 juli 2026; deze editie voegt de panels voor sector, volatiliteit, nieuws, dividend en kwartaalhistorie toe.

Elk panel is een resultaat van een opgeslagen query — grafiek, tabel en SQL vormen één object. Plak elk onderdeel in de Strasmore terminal. Volgende: 2 juli; de week: de feestdagweek.