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

Market Recap July 1 2026: Index quiet but underneath e

H2 open calm for index but memory complex break, META jump, and most S&P sectors still close green. Na di first session of second half.

Wednesday, July 1, 2026 — di first session of second half — put one of di quietest index days for di month on top of e most violent tape. SPY close -0.08% and QQQ close -1.44%, but di memory complex wey carry di second quarter lose one-tenth of e value, META jump 8.88%, and 7 of 11 S&P sector funds still close green. Di session before na June 30.

Di scoreboard

Di changes dey compare July 1 last regular-session bar wit Tuesday June 30 own.

QuerySPY / QQQ / DIA / IWM — July 1 versus June 30 close, regular hours
The exact SQL behind every number
WITH prior AS (
    SELECT ticker, argMax(close, window_start) AS prior_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
      AND window_start >= '2026-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

Di split na di real story: DIA wey dey 0.02% and SPY wey dey -0.08% hold steady, but QQQ drop go -1.44% and IWM fall go -0.37% — na growth selloff wey di broad market no really feel.

One of di quietest index days for di past month

QuerySPY open-to-close move rank against di trailing month sessions (rank 1 = biggest absolute move)
The exact SQL behind every number
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
)

From open to close inside di session — different view from di close-over-close scoreboard — SPY move 0.09%: e rank 20 out of 22 past sessions by absolute size, only two move less. Di volatility complex gree. Dis warehouse no carry spot VIX index, so we check listed VIX-futures funds — di closest tradeable read on di price of protection:

QueryDi volatility complex for July 1: VIX-futures ETFs versus Tuesday close, with SPY as anchor
The exact SQL behind every number
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, di biggest front-month VIX futures fund, rise 0.72%; VIXY 0.8%; di leveraged UVXY 1.13% across a 3.68% range; di inverse SVXY -0.42%. Rounding errors beside wetin single stocks do.

Breadth: di ones wey fall pass di ones wey rise — and di ones wey make new highs pass di ones wey make new lows

QueryAdvancers, decliners, and new quarterly highs vs lows among tickers wey get at least $1M traded on July 1
The exact SQL behind every number
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% of di liquid tape rise. But scope no be severity: against di second quarter regular-hours range, 836 of di 6217 names wey get complete quarter of trading print new quarterly high for dis red day, against 246 wey print new low — 3.4 new highs per new low. Plenty slip; few break dia range. Drops: 5435 of 11910 dual-session tickers under di $1 million filter, 258 liquid names wey no get full quarter of bars.

Di sector board: di damage na only one sector deep

Di eleven SPDR sector funds na di cheapest whole-market cross-section — di same basket every session.

QueryDi eleven S&P sector ETFs on July 1, best to worst versus Tuesday close
The exact SQL behind every number
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) — di sector fund wey hold META — lead for 2.41%, financials (XLF) dey behind at 2.2%. Technology (XLK) siddon alone for bottom, -2.56% and 4.97 percentage points below di leader. For all, 7 of 11 funds close green — discretionary 0.68%, health care 0.57% — against utilities (-1.28%), industrials (-0.98%) and energy (-0.6%) for red. Na so "di index barely move" from underneath.

Di day highlight: memory crash, META waka opposite direction

Eight names carry di dispersion: di four memory-and-storage stocks wey lead di second quarter, plus four chip and platform names around dem. Dem report co-movement, magnitude and timing; di data no talk why.

QueryDi memory complex and di megacaps: change versus Tuesday close, range timing, and dollar volume
The exact SQL behind every number
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%) and Micron (-10.23%) each drop pass one-tenth of dia value; Marvell -8.68%, AMD -6.87%, Western Digital -6.3%, Seagate -5.11%. MU turnover na $42.94 billion, e pass wetin SPY trade for whole day, and MU, AMD and Marvell each print session lows for di closing minutes (15:59, 15:57, 15:58 ET) — dem sell am into di closing auction, no be morning air pocket wey heal (di MU deep-dive get di quarter behind am).

META na di mirror image: 8.88% on $22.72 billion wey dem trade, im low dey at 09:30 ET — di opening bar — and dem never revisit am. NVDA no go anywhere at -1.09% (NVDA im June).

Wetin dem tok

Dis page no dey give reason for wetin happen. But di news feed wey we get license for na table like any oda one — wetin e carry dat day:

QueryDi day last twelve news articles wey tag MU, SNDK, STX, WDC or META (one licensed feed)
The exact SQL behind every number
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

Di mid-afternoon piece wey The Motley Fool write about Micron (14:11 ET) come out wit di headline "Why Micron Stock Is Plummeting Today". Dia evening wrap (17:12 ET) and di follow-up wey come four minutes later (17:16 ET) both put META jump near one plan wey dem report say na to sell extra AI computing power as cloud business. Na so di outlet frame am, e no be wetin dey inside di tape, and 12 articles from two publishers na just one feed attention, no be wetin di whole market dey look.

Where the money trade

QueryVolume leaders two ways: top 6 by dollars traded, top 4 by shares traded (one reused-symbol listing dey excluded pending entity verification)
The exact SQL behind every number
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 na $42.94 billion wey lead the tape — SPY dey second with $27.76 billion, META dey fourth with $22.72 billion — one stock wey dey fall out-trade the index fund by half again. The extremes of the move na the loudest names on am. The share board na the usual funhouse mirror: SOXS, the 3x-inverse semiconductor ETF, lead with 553.1 million shares — e be the busiest on the day wey chips break — while one low-priced name round am out with 189.8 million shares wey worth $319 million (relative volume flag exactly this one). Basis: July 1 regular hours, dem exclude one reused-symbol listing (receipts).

Di options tape

QueryOne row for di whole options day: volume, same-day expiry, put/call skew, and di busiest contract
The exact SQL behind every number
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'

Options trade 68.46 million contracts across 11.22 million prints — calls na 58.6% of volume, same-day expiries na 33.5%. Nobody dey hedge di index: 0.71 puts per call market-wide, and out of SPY im 5.76 million puts, only 11.6% dey struck more than two percent below im 745.69 close — di far-downside strikes wey dey pay for crash. Di skew siddon for single names: Micron im puts pass im calls (1.11 per call) while META im calls beat im puts better than two to one (0.39). Di busiest contract na di same-day SPY $748 call — 878,947 contracts at $0.707 average — wey expire 2.31 dollars out of di money, as Tuesday own do. No July 3 expiry print for di whole day (0 prints — dat Friday na holiday); di Thursday weekly carry 14.43 million.

Rates: dey drift up, front end dey down

Yields na daily closes against June 30.

QueryDi Treasury curve, July 1 close versus June 30 (populated maturities only)
The exact SQL behind every number
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
)

Di 10-year add 4 bp to 4.48% and di 30-year 6 bp, while di 1-month bill move -3 bp — belly and long end up, front end down. Di 2s10s spread close at 0.31 percentage points: nothing here match di equity dispersion.

Di calendar wey dey behind di day

QueryJuly 1 corporate calendar and information flow, for one row
The exact SQL behind every number
WITH
    (
        SELECT (count(), uniqExact(publisher))
        FROM global_markets.stocks_news
        WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-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

Di quarter turn reach im peak here: 745 dividend records comot dividend — di wave wey di June recap bin dey watch as e dey build — plus 9 splits and 3 listings (BSP — Bending Spoons S.p.A.; ITG — ITG Inc.; LIME — Neutron Holdings Inc.). Di filing feed come back to life: 4282 filings, 1072 of dem na Form 4s and 248 8-Ks, after June 30 near-empty index day (di month-end gap note). Our feed carry 201 articles, di one wey dem cover pass na MSFT for 16.

But count no dey tell pesin who dey pay. If you rank dem by di money wey trade inside dem, di board no be corporate matter at all:

QueryDi biggest names wey dey go ex-dividend on July 1, rank by di day dollar volume
The exact SQL behind every number
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 di eight busiest ex-dividend tickers na fund wey dey pay 12 times for year: SGOV, a Treasury-bill fund, comot dividend for $0.2958 per share (0.29% of price, 3.54% annualized) for $3.5 billion wey dem trade; HYG, a high-yield bond fund, comot for $0.3688. Dat one na first-of-month wave: 572 of di day 745 records (76.8%) na monthly payers — funds wey dey distribute interest — against 123 quarterly payers. Di ex-date drop na mechanical, e no be loss.

First day of quarter, e fit ever be ordinary day?

Di story dey write imself: new quarter, new money, fresh allocations. But di database no gree.

QueryEvery quarter-opening session since 2004: SPY open-to-close move, with July 1 rank inside am
The exact SQL behind every number
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
)

For di 91 quarter-opening sessions wey start from January 2004, SPY median open-to-close move for quarter first day na 0.01% — 46 green against 45 red, e stretch from -2.28% go reach 3.18%: na coin flip wey get small rounding error join body. July 1 print na 0.09%, rank 50 out of 91 from worst go best — e just dey centre. Basis: SPY regular-hours open-to-close, every quarter first session for di database.

Wetin di day leave for pesin wey read

Di index move 0.09%; di eight-name panel stretch from -10.45% go reach 8.88%; protection no really change price. Na di normal maths for market wey tight — one sector loss dem balance am with gain for 7 of 11 oda ones na wetin di index net out. If you look di index level, you no go see anytin here; if you look di position level, you go see one-tenth of wetin you hold don vanish for one day.

Di session, wey dem verify

QuerySession check: SPY observed minute-bar span
The exact SQL behind every number
SELECT
    formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
    formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
    count() AS spy_minute_bars,
    countIf(window_start >= '2026-07-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'

SPY bars dey run from 04:00 go reach 19:59 New York time, plus 390 regular-window bars and 0 holiday rows for di date — na complete session, wey dem verify from di tape.

FAQ

Stock market go up or down for July 1, 2026?

E depend on where you look. SPY close -0.08%, DIA 0.02%, QQQ -1.44%; 3465 liquid names drop against 2928 wey rise — but 7 of 11 sector funds close green, technology na the odd one out.

Why Micron, SanDisk, Western Digital and Seagate all fall for July 1, 2026?

This data show co-movement, no be cause: the four fall between -5.11% and -10.45%. The Motley Fool piece wey dem write same day for Micron (e dey the news panel for this page, 14:11 ET) carry headline wey be "Why Micron Stock Is Plummeting Today". Na the outlet framing be that, no be something wey the tape find.

Why META rise for July 1, 2026?

META close 8.88% higher, e low for the opening bar. The Motley Fool coverage say the move come from reports wey talk say the company plan to sell excess AI computing capacity as cloud business: na the outlet attribution be that, no be our own.

The first trading day of quarter dey usually strong?

No be something wey you fit measure. Across 91 quarter openings since January 2004, SPY median open-to-close move na 0.01%: 46 green, 45 red — na coin flip; July 1 land for mid-pack.

Options market dey hedge the selloff for July 1, 2026?

No be for index level: 0.71 puts per call market-wide, and only 11.6% of SPY put volume strike more than two percent below the close.

Data notes

  • Dollar volume na per-minute proxy — close × volume wey dem sum for each minute bar, regular hours. Di extremes wey show don cross-check with bars wey dey near; ties go take di earliest one.
  • No spot VIX index dey here. Di volatility panel dey read listed VIX-futures funds, wey hold and roll futures — e relate to di index, but e no be di same.
  • New quarterly highs/lows dey compare July 1 regular-hours extremes with each name own range from April 1–June 30, for liquid names wey get full quarter of bars; drops dey inside di panel.
  • Di sector board na curated basket (eleven SPDR ETFs, no be vendor field); di news panel na one licensed feed (12 articles, two publishers); dem exclude one reused-symbol listing from di leaderboards (its receipts).

How We Do Am

  • Na one trading session (1 session, wey we confam from the bars wey we see and the holiday table — we no just guess). We dey store timestamps for UTC, but we convert am to New York time inside the queries; "close" na the last bar for the regular-session minute, and day changes dey against June 30.
  • We dey cast decimals to 64-bit floats before we do ratio arithmetic; we dey re-parse option expiries from the OCC ticker. Panels dey run just one time, when we dey write, through the gated read-only path. Warehouse state as of July 13, 2026; this edition add the sector, volatility, news, dividend and quarter-history panels.

Every panel na stored query result — chart, table and SQL na one object. You fit paste any of dem inside the Strasmore terminal. Next: July 2; the week: the holiday week.