Strasmore Research
Market recaps Matt ConnorNi Matt Connor · Na-update noong 2026-07-25

market recap july 2 2026 numbers

Holiday-eve rotation: green breadth sa ilalim ng bumabagsak na Nasdaq, tech huli sa labing-isang sector funds, memory-rout day two, at ang split na nag-fake ng crash.

Thursday, July 2, 2026 — ang huling sesyon bago ang pagsasara para sa Araw ng Kalayaan — ay isang araw ng rotation na may headline ng selloff. Ang QQQ ay nag-print ng -1.71% habang ang DIA ay tumaas ng 1.04%, at POSITIBO ang breadth: 3398 na liquid names ay tumaas laban sa 2758, 54.6% ng tape ay berde habang ang growth index ay bumagsak. Walo sa labing-isang sector funds ang nagsara nang mas mataas; ang pagbebenta ay nasa tech at memory complex na bumagsak noong nakaraang araw.

Ang scoreboard

QuerySPY / QQQ / DIA / IWM — July 2 vs July 1 close, regular hours
Ang eksaktong SQL sa likod ng bawat numero
WITH prior AS (
    SELECT ticker, argMax(close, window_start) AS prior_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
      AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 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-02 13:30:00' AND window_start < '2026-07-02 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

Ang DIA sa 1.04% laban sa QQQ sa -1.71% ang buod ng araw — halos tatlong puntos ang agwat ng daily return ng industrials at growth. Naghati ang SPY sa pagitan sa -0.12%; nagsara ang IWM sa -0.59%.

Hindi ba pangkaraniwan ang araw?

Dalawang lente sa iisang panel: ang galaw ng SPY mula bukas hanggang sara at ang galaw ng QQQ mula sara hanggang sara, bawat isa ay niraranggo laban sa trailing month ayon sa absolute size (rank 1 = pinakamalaki).

QuerySPY at QQQ vs trailing month ng sessions (rank 1 = biggest absolute move)
Ang eksaktong SQL sa likod ng bawat numero
WITH per_day AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct,
           argMax(toFloat64(close), window_start) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ')
      AND window_start >= toDateTime('2026-06-02 00:00:00')
      AND window_start < toDateTime('2026-07-03 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY ticker, d
),
with_prev AS (
    SELECT ticker, d, oc_pct,
           lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) AS prev_close,
           (rth_close / lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct
    FROM per_day
)
SELECT
    round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02'))),
               groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-02'))) + 1 AS spy_abs_move_rank,
    countIf(ticker = 'SPY') AS spy_sessions_compared,
    round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02')), 2) AS qqq_close_over_close_pct,
    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02'))),
               groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-02') AND isFinite(cc_pct) AND prev_close > 0)) + 1 AS qqq_abs_move_rank,
    countIf(ticker = 'QQQ' AND isFinite(cc_pct) AND prev_close > 0) AS qqq_sessions_compared,
    toString(minIf(d, ticker = 'SPY')) AS first_session
FROM with_prev

Sa antas ng index, hindi. Ang -0.35% open-to-close ng SPY ay nasa 15 sa 22 na nakaraang sesyon — nasa ilalim na kalahati. Mas maingay ang QQQ ngunit hindi pa rin sukdulan: ang -1.71% close-over-close nito ay nasa 9 sa 21 na sesyon na may tiyak na naunang sara, pabalik sa 2026-06-02 — isang mid-pack na masamang araw para sa growth index. Ang single-name tape ang dahilan kung bakit maingay ang July 2.

Lawak: berdeng tape, pulang growth index

QueryAdvancers vs decliners sa mga ticker na may $1M+ traded noong July 2
Ang eksaktong SQL sa likod ng bawat numero
WITH per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') AS day_dollar_volume
    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')
       OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
    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,
    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,
    round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
        / countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct,
    reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close > prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS advancers_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close < prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS decliners_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_fmt
FROM per_ticker
WHERE prior_close > 0 AND day_close > 0

3,398 umakyat, 2,758 bumagsak, 63 hindi nagbago — 54.6% ng liquid tape ang tumaas habang bumagsak ang QQQ. Magkaiba ang sagot ng cap-weighted indexes at equal-count breadth; sa mga araw na ganito kaya pareho silang may panel. Ang filter ay nagtatanggal ng 5,317 sa 11,536 dual-session tickers na nasa ilalim ng $1 milyon ang trade.

Sektor por sektor: kung saan huminto ang berdeng tape

Ang breadth ay nagbibilang ng mga pangalan; hindi nito sinasabi kung anong uri. Ang labing-isang SPDR sector fund ay hinati ang sesyon ayon sa industriya, at ang agwat sa pagitan ng pinakamataas at pinakamababa ay ang dispersion ng araw sa iisang numero.

QueryEleven SPDR sector ETFs — July 2 close vs July 1 close, regular hours
Ang eksaktong SQL sa likod ng bawat numero
WITH per_etf AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 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-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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 pts_above_worst_sector,
    day_dollar_bn
FROM per_etf
ORDER BY ticker

Ang Health care (XLV) ang nanguna sa board sa 2.63%, sinundan ng utilities 2.23%, staples 2%, materials 1.94%. Ang Technology (XLK) ang huling pumwesto sa -2.71%, ang tanging sektor na bumaba nang mahigit isang punto; ang consumer discretionary (-0.81%) at communication services (-0.13%) ang iba pang pulang pondo, ang natitirang walo ay berde. Dispersion mula pinakamataas hanggang pinakamababa: 5.34 percentage points. Ang hati ng DIA-up/QQQ-down ay tumakbo sa buong merkado, hindi lang sa apat na megacap — kaya naman ang berdeng advance-decline line sa ilalim ng bumabagsak na Nasdaq ay walang kontradiksyon.

Highlight ng araw: ikalawang araw ng pagbagsak ng memory sector

Ang complex na bumagsak noong Miyerkules ay mas matinding bumagsak noong Huwebes — magnitude at sabay-sabay na paggalaw, hindi ang dahilan.

QueryMemory at storage names: change vs Wednesday close, range timing, at dollar volume
Ang eksaktong SQL sa likod ng bawat numero
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
      AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

Nag-print ang SanDisk ng -14.32%, Seagate -10.38%, Western Digital -9.92%, MU -5.57% — sa $51.4 bilyon na turnover ng MU, halos isa't kalahating beses ng SPY. Na-print ng MU at SanDisk ang kanilang mga pinakamababa nang huli (15:26, 15:26 ET), mas maaga naman ang Seagate at Western Digital (14:23, 13:59). Konteksto: Miyerkules at ang malalimang pagsusuri sa MU.

Ang kabilang bahagi ng rotation, sa mga megacap:

QueryMegacap rotation: change vs Wednesday close, range timing, at dollar volume
Ang eksaktong SQL sa likod ng bawat numero
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA')
      AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

Tumaas ang AAPL ng 4.75% sa isang direksyong galaw — pinakamababa noong 09:30 ET, pinakamataas noong 15:57, tatlong minuto bago magsara — habang ang TSLA ay nagpakita ng salamin na imahe sa -7.65%. Nagdagdag ang MSFT ng 1.41%; nagsara ang NVDA sa -1.55%. Parehong index, magkasalungat na araw.

Kung saan nag-trade ang pera

QueryVolume leaders two ways: top 6 by dollars traded, top 4 by shares traded (excluded ang isang reused-symbol listing pending entity verification)
Ang eksaktong SQL sa likod ng bawat numero
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-02 13:30:00' AND window_start < '2026-07-02 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-02 13:30:00' AND window_start < '2026-07-02 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

Ang $51.4 bilyon ng MU ang nanguna sa tape para sa ika-apat na sunod na sesyon (Lunes, Martes, Miyerkules) laban sa $32.7 bilyon ng SPY, at ang $26.57 bilyon ng SanDisk ay naglagay ng pangalawang pangalan ng memory sa top four. Ang SOXS — ang 3x-inverse semiconductor ETF — ang nanguna sa share board sa 748.2 milyon: ang murang shares ang nangingibabaw sa share count, ang mahal naman sa dollar count, at ang relative volume ay nagkukumpara sa alinman laban sa sariling norm ng isang pangalan. Basis: July 2 regular hours, isang reused-symbol listing ang hindi kasama (receipts).

QueryShares traded per 30-minute bucket, regular hours (billions)
Ang eksaktong SQL sa likod ng bawat numero
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
    round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
    round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY et_time
ORDER BY et_time

2.13 bilyong shares sa opening half hour, isang 0.81 bilyong trough sa 14:30, 2.3 bilyon papasok sa holiday-eve close — ang huling bucket ang pinakamalaki sa araw, dahil hinihila ng closing auction ang mga resting orders sa iisang print.

Ang options tape: ang na-shift na weekly ay lumapag

QueryIsang row para sa buong options day: volume, same-day expiry, holiday-shifted week, at July monthly
Ang eksaktong SQL sa likod ng bawat numero
WITH
    (
        SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
                any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
                sum(size), count(), round(avg(toFloat64(price)), 3))
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
        GROUP BY ticker
        ORDER BY sum(size) DESC
        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-02 13:30:00' AND window_start < '2026-07-02 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(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702') / 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, substring(ticker, length(ticker) - 14, 6) = '260710')) / 1e6, 2) AS jul10_weekly_contracts_m,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717')) / 1e6, 2) AS jul17_monthly_contracts_m,
    round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
    round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
    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_expiry,
    top_contract.5 AS top_contract_volume,
    reverse(arrayStringConcat(extractAll(reverse(toString(assumeNotNull(top_contract.5))), '[0-9]{1,3}'), ',')) AS top_contract_volume_fmt,
    round(top_contract.7, 3) AS top_contract_avg_price,
    round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close,
    round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'

80.96 milyong kontrata ng options ang na-trade sa 13.15 milyong prints, at 47.4% ng volume na iyon ay nag-expire nang parehong Huwebes. Walang kontratang may July 3 expiration code na na-trade buong araw (0 prints), kaya sabay na dala ni Huwebes ang daily expiry at ang na-shift na weekly ng linggong ito. Ang pinakabusy na kontrata ay ang same-day SPY $740 put — 540,403 kontrata sa average na $0.499 premium, kung saan nagsara ang SPY 4.8 dolyar sa itaas ng strike: out of the money, at isang put sa ibabaw ng board kung saan ang Martes at Miyerkules ay may calls. Ang calls ay kumuha pa rin ng 58.4% ng volume; ang susunod na weekly ay nakakuha ng 9.64 milyong kontrata, ang July monthly ay 8.82 milyon (mekanismo ng expiry).

Ang quote tape: magkano ang gastos para mag-trade

Sinasabi ng presyo kung ano ang nangyari; sinasabi ng quote kung magkano ang gastos. Ang bid-ask spread ay ang toll sa bawat round trip, sa basis points ng mid-price (ang basis point ay isang daan ng isang porsyento). Sinusukat namin ito bawat session, ordinary man o hindi — iyon ang dahilan kung bakit ang "pumutok ang spreads" ay isang claim na mapapatunayan.

QueryStocks NBBO update count: July 2 vs July 1, may named-ticker updates (millions)
Ang eksaktong SQL sa likod ng bawat numero
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-01')) / 1e6, 2) AS jul1_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / countIf(toDate(sip_timestamp) = toDate('2026-07-01')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'SPY') / 1e6, 2) AS jul2_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'QQQ') / 1e6, 2) AS jul2_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'MU') / 1e6, 2) AS jul2_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'

Ang national best bid and offer — ang tuktok ng consolidated book — ay na-rewrite ng 597.22 milyong beses noong July 2 laban sa 449.15 milyon noong July 1: isang 33% na pagtalon patungo sa closure. Kumuha ang QQQ ng 7.56 milyon, higit sa 5.42 milyon ng SPY; MU 1.01 milyon.

QueryMedian quoted spread in basis points, regular hours — index ETFs, megacaps, at memory names
Ang eksaktong SQL sa likod ng bawat numero
SELECT
    ticker,
    round(med_bps, 2) AS median_spread_bps,
    round(med_dollars * 100, 1) AS median_spread_cents,
    round(med_bps / min(med_bps) OVER (), 1) AS times_the_spy_spread,
    round(quote_updates / 1e6, 2) AS rth_updates_m,
    invalid_quotes_dropped
FROM (
    SELECT
        ticker,
        quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000,
                             toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_bps,
        quantileExactIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price),
                             toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_dollars,
        count() AS quote_updates,
        countIf(NOT (toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price))) AS invalid_quotes_dropped
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'TSLA', 'NVDA', 'MU', 'SNDK', 'WDC')
      AND sip_timestamp >= '2026-07-02 13:30:00' AND sip_timestamp < '2026-07-02 20:00:00'
    GROUP BY ticker
)
ORDER BY median_spread_bps ASC

Ang SPY ay nag-quote ng median na 0.27 basis points ang lapad: mga 2 sentimo sa isang $744.8 ETF. Pumasok ang QQQ sa 0.83 bps, NVDA 1.03. Ang mga pangalang bumabagsak ay ang mga mahal i-trade: MU 5.52 bps, SanDisk 10.4, Western Digital 10.7940x ang spread ng SPY. Ang pag-cross ng basket ng memory names ay nagkakahalaga ng multiple ng pag-cross ng index, bago pa ang anumang price impact. Ang mga invalid quotes (one-sided, crossed) ay binibilang bawat pangalan, hindi itinatago.

QueryMay unusual ba na liquidity? SPY's regular-hours median spread vs trailing month ng sessions
Ang eksaktong SQL sa likod ng bawat numero
WITH per_day AS (
    SELECT toDate(sip_timestamp) AS d,
           quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS med_bps
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'SPY'
      AND sip_timestamp >= '2026-06-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
      AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
      AND toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)
    GROUP BY d
)
SELECT
    round(anyIf(med_bps, d = toDate('2026-07-02')), 3) AS jul2_median_spread_bps,
    round(quantileExact(0.5)(med_bps), 3) AS trailing_median_bps,
    round(anyIf(med_bps, d = toDate('2026-07-02')) - quantileExact(0.5)(med_bps), 3) AS jul2_minus_trailing_bps,
    arrayCount(x -> x > anyIf(med_bps, d = toDate('2026-07-02')), groupArrayIf(med_bps, d != toDate('2026-07-02'))) + 1 AS wider_rank,
    count() AS sessions_compared,
    round(max(med_bps), 3) AS widest_session_bps
FROM per_day

Isang ordinaryong araw para sa liquidity, at iyon ang natuklasan: ang median spread ng SPY na 0.27 bps ay nasa 0 bps mula sa trailing month's median (0.27 bps), na nagra-rank ng 11 sa 22 sessions ayon sa lapad — malayo sa pinakamalawak ng buwan sa 0.409 bps. Ang isang concentrated rout sa ilalim ng green tape ay hindi nag-stress sa plumbing.

Rates: ang July 2 print, dumating na

QueryAng receipt: July 2 treasury print ay on file
Ang eksaktong SQL sa likod ng bawat numero
SELECT
    (SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS jul2_rows,
    (SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS jul1_rows

Ang treasury feed ay nauuna o nahuhuli ng isa o dalawang araw kumpara sa tape: noong unang publikasyon, ang July 2 close ay walang kahit isang row na naka-file, at ang pahinang ito ay nagsabi na lang nito sa halip na manghula. Dumating na ang print — 1 row para sa July 2, 1 para sa July 1 — kaya ang panel sa ibaba ay nagtataglay ng sariling curve ng session na iyon.

QueryAng session's curve print: July 2 vs July 1 (populated maturities lang)
Ang eksaktong SQL sa likod ng bawat numero
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jul2_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-02') AS d,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS p
)

Sa close, ang 10-year ay nasa 4.49%, ang 2s10s spread ay nasa 0.35 points.

Ang kalendaryo sa likod ng araw

QueryJuly 2's corporate calendar at information flow, sa isang row (kasama ang eight splits sa likod ng isang fake screener move)
Ang eksaktong SQL sa likod ng bawat numero
WITH
    (
        SELECT (count(), uniqExact(publisher))
        FROM global_markets.stocks_news
        WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-02'
    ) 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-02'
            )
            WHERE t != 'SPCX'
            GROUP BY t
        )
    ) AS top_news,
    (
        SELECT (count(), countIf(split_to > split_from), countIf(split_to < split_from),
                arrayStringConcat(groupArray(concat(ticker, ' ', toString(split_to), '-for-', toString(split_from))), '; '))
        FROM global_markets.stocks_splits
        WHERE execution_date = '2026-07-02' AND ticker NOT IN ('SPCX')
    ) AS splits
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-02') AS ex_dividend_records,
    splits.1 AS splits_executed,
    splits.2 AS forward_splits,
    splits.3 AS reverse_splits,
    splits.4 AS split_records,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02') AS ipos_listed,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS sec_filings,
    (SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS insider_form4_filings,
    (SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') 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-02' 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,
    (SELECT any(split_from) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_from,
    (SELECT any(split_to) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_to,
    (SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS crwd_prev_close,
    (SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_day_close,
    (SELECT round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_dollar_m,
    (SELECT count() FROM (
        SELECT ticker FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-02')
          AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
        GROUP BY ticker
    )) AS split_names_with_bars

319 dividend records ang nag-ex-dividend, 2 bagong listing ang dumating (MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II), at ang SEC index ay nagtala ng 5200 filings sa holiday — 2109 Form 4s, 258 8-Ks. Ang news feed ay nagdala ng 201 artikulo mula sa 3 publishers (NVDA pinaka-cover, 18 sa kanila).

Ang mga splits ay nakakalito sa sinumang nagbabasa ng raw closes. Ang CRWD ay nagpatakbo ng 4-para-sa-1 forward split, kaya ang unadjusted tape ay nagpapakita ng $772.45 noong Miyerkules at $193.67 noong Huwebes — isang pekeng pagbaba na talagang apat na bagong shares para sa bawat lumang share. Hindi ito nag-iisa: 8 split records ang na-execute, 5 forward at 3 reverse (ang split_records column ang naglilista sa kanila), at ang reverse split ay nagpe-peke ng kabaligtarang artifact — isang raw price na tumatalon magdamag. 2 lamang sa mga pangalang iyon ang nag-trade sa ating tape; ang $1473.51 milyon na turnover ng CRWD ang tanging sapat na malaki upang makontamina ang isang screen, at bawat mover screen dito ay hindi ito kasama.

Naka-iskedyul

Hindi ito hula, kundi nakatalang datos — kung ano ang nasa talahanayan para sa mga susunod na sesyon.

QueryPagkatapos ng holiday: next session, ex-dividends at splits nito, next scheduled closure, at short-interest lag
Ang eksaktong SQL sa likod ng bawat numero
SELECT
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS jul6_spy_regular_bars,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS exdiv_records_jul6,
    (SELECT arrayStringConcat(groupArray(ticker), ', ') FROM global_markets.stocks_dividends
     WHERE ex_dividend_date = '2026-07-06'
       AND ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'XOM', 'KO', 'PG', 'WMT', 'CVX', 'HD')) AS household_exdivs_jul6,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_jul6,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02') AS next_scheduled_closure,
    (SELECT any(name) FROM global_markets.stocks_market_holidays
     WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_name,
    (SELECT any(status) FROM global_markets.stocks_market_holidays
     WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_status,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
     WHERE settlement_date <= '2026-07-02') AS latest_si_settlement,
    (SELECT dateDiff('day', max(settlement_date), toDate('2026-07-02')) FROM global_markets.stocks_short_interest
     WHERE settlement_date <= '2026-07-02') AS si_settlement_age_days

Lunes, Hulyo 6, nagbukas muli na may buong 390-bar na sesyon, na-verify mula sa sarili nitong mga bar. Nagdala ito ng 118 na tala ng ex-dividend — isang kilalang pangalan sa sampung sinusuri namin (JPM) — at 15 na pagpapatupad ng split. Susunod na nakatakdang pagsasara: Labor Day, 2026-09-07 (closed). Ang short interest ay lumang balita, gaya ng dati — pinakabagong settlement na nasa file 2026-06-30, 2 araw ang nakalipas, ang publikasyon ay sumusunod sa settlement nang humigit-kumulang dalawang linggo (bakit).

Ang sesyon, beripikado — at ang Biyernes na hindi nangyari

QuerySession check: SPY's observed minute-bar span, at ang July 3 closure sa tape
Ang eksaktong SQL sa likod ng bawat numero
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-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= '2026-07-03 00:00:00' AND window_start < '2026-07-04 00:00:00') AS jul3_spy_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 00:00:00' AND window_start < '2026-07-03 00:00:00'

Ang July 2 ay isang buong sesyon, hindi maagang pagsasara: ang mga bar ng SPY ay tumatakbo mula 04:00 hanggang 19:59 oras sa New York (kasama ang mga bar bago ang merkado at pagkatapos ng oras), na may eksaktong 390 na bar sa regular na window. Ang Biyernes July 3 ay nag-print ng 0 SPY bar — isang buong pagsasara para sa Araw ng Kalayaan, July 4 na bumagsak sa Sabado. Ang apat-na-sesyon na linggo: ang recap ng linggo.

FAQ

Bakit tumaas ang Dow habang bumagsak ang Nasdaq noong Hulyo 2, 2026?

Magkaiba ang mga kompanyang hawak ng dalawang index: nagsara ang DIA sa 1.04%, ang QQQ sa -1.71%. Ganito rin ang hatian sa sector board — nangunguna ang health care, utilities at staples, at huli ang technology sa -2.71%, may 5.34-point na agwat mula pinakamaganda hanggang pinakamasama.

Bukas ba ang stock market noong Biyernes ng linggo ng Araw ng Kalayaan?

Hindi. Bumagsak ang Araw ng Kalayaan sa isang Sabado, at ipinagdiwang ito ng mga palitan sa pamamagitan ng buong pagsasara ng Biyernes pagkatapos ng sesyong ito: ipinapakita ng aming tape ang 0 SPY minute bars para rito.

Ano ang epekto ng forward stock split sa presyo ng bahagi?

Pinarami nito ang bilang ng bahagi ng apat at hinahati ang presyo sa apat; hindi nagbabago ang halaga ng posisyon. CRWD, Hulyo 2: isang hindi na-adjust na pagsasara na $772.45 noong Miyerkules, $193.67 noong Huwebes — isang pekeng pagbaba sa anumang screener na lumalaktaw sa split.

Gaano kalawak ang bid-ask spreads noong Hulyo 2, 2026?

Ang median quoted spread ng SPY ay 0.27 basis points ng mid-price sa regular na oras — 11 sa 22 na nakaraang sesyon ayon sa lawak, isang ordinaryong araw. Mas malawak ang mga single names: MU 5.52 bps, WDC 10.79.

Mga tala sa datos

  • Ang dollar volume ay isang per-minutong proxy — close × volume, na pinagsama-sama kada bar.
  • Ang treasury print noong July 2 ay nailathala pagkatapos ng unang publikasyon — ang orihinal na tala ay nagpahayag ng kawalan nito gamit ang isang row-count receipt; ang rebisyong ito ay nagtataglay ng print, na ipinapakita ang receipt.
  • Ang raw close change ng CRWD ay isang split artifact — hindi kasama sa mover screens.
Buong tala sa datos
  • Ang sector board ay ang labing-isang SPDR Select Sector funds (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY) — isang fixed, disclosed basket, hindi isang vendor sector field.
  • Ang quote-tape counts ay naka-bucket ayon sa UTC date ng SIP timestamp; ang isang summer session ay nasa loob ng isang UTC day.
  • Isang reused-symbol June listing ang hindi kasama sa leaderboards (mga receipt); ang forensic tick work ay nasa deep-dives.

Pamamaraan

  • Ang panahon ay isang trading session (1 session, na-verify mula sa naobserbahang bars). Ang mga timestamp ay naka-store sa UTC at kino-convert sa New York time sa loob ng queries; ang "close" ay nangangahulugang huling minute bar ng regular session, at ang pagbabago ng araw ay nagkukumpara ng July 2 sa July 1. Ang pagsasara ng July 3 ay na-verify mula sa bars, hindi ipinapalagay.
  • Ang mga spread ay naka-quote (ask minus bid) sa basis points ng mid-price, median sa buong regular-hours NBBO updates, sa isang deterministic quantile. Ang mga decimals ay naka-cast sa floats bago ang ratio arithmetic; ang mga option expiry ay nire-reparse mula sa OCC ticker. Ang bawat panel ay binabasa nang isang beses, sa oras ng paggawa, sa pamamagitan ng gated read-only path.

Ang chart, table, at SQL ay iisang bagay. I-paste ang anumang panel sa Strasmore terminal at gawin itong sarili mo. Nakaraang session: July 1. Ang linggo: ang apat na session na holiday week.