Strasmore Research
市場概況 Matt Connor著者: Matt Connor ・更新: 2026-07-24

2026年7月2日の相場概況

休場前のセクターローテーションを解説します。Nasdaqは下落しましたが、DIAは上昇し、メモリ関連銘柄の動向に注目が集まりました。

2026年7月2日(木)は、独立記念日の休場前最後の取引日でした。全体としては売りが先行する展開でしたが、セクター間でのローテーションが発生しました。QQQは-1.71%の下落となった一方、DIAは1.04%の上昇となりました。騰落銘柄数はプラスで、3398の流動性の高い銘柄が上昇しました。成長株指数が下落する一方で、2758の銘柄に対し54.6%の銘柄が上昇しました。11のセクターファンドのうち8つが上昇しました。売りは、前日に下落したテック株とメモリ関連銘柄に集中しました。

スコアボード

クエリSPY / QQQ / DIA / IWM — 7月2日 vs 7月1日終値(通常取引時間)
各数値の背後にある正確なSQL
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

本日の概況は、DIAが1.04%、QQQが-1.71%となり、工業株とグロース株の騰落率の差が約3ポイントとなりました。SPYは中間値の-0.12%で引け、IWMは-0.59%となりました。

本日の相場は異例でしたか?

一つのパネルに2つの視点:SPYの始値から終値までの変動と、QQQの前日終値からの変動を、絶対値に基づき過去1ヶ月間と比較してランク付けしています(ランク1が最大)。

クエリSPYおよびQQQの過去1ヶ月間における順位(1位は絶対変動率最大)
各数値の背後にある正確なSQL
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

指数レベルでは、異例ではありませんでした。SPYの-0.35%(始値から終値)の変動は、過去22セッションのうち15位であり、下位半分に位置しています。QQQはより大きな変動を見せましたが、極端な数値ではありませんでした。-1.71%(前日終値からの変動)は、確定した前日終値がある過去21セッションのうち9位、2026-06-02セッションまで遡っても中程度の変動であり、グロース指数としては平均的な下落日でした。個別銘柄の動きにおいて、7月2日は大きな変動が見られました。

市場の広がり:上昇銘柄の増加と成長指数の低下

クエリ7月2日に取引額$1M以上の銘柄における騰落数
各数値の背後にある正確なSQL
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銘柄が上昇、2,758銘柄が下落、63銘柄が変わらず。QQQが下落する一方で、54.6%の流動性の高い銘柄が上昇しました。時価総額加重型指数と等金額加重型の広がり指数では結果が異なります。このような日は、両方の指数がパネル(評価対象)となる理由です。このフィルターでは、取引額が100万ドル未満の11,536銘柄のうち、5,31711,536銘柄を除外しています。

セクター別分析:上昇銘柄の動向

騰落銘柄数(ブレス)は銘柄の総数を示しますが、その内訳までは示しません。11のSPDRセクターETFを業種別に分類すると、最大上昇セクターと最大下落セクターの差が、その日の分散度を表します。

クエリSPDR 11セクターETF — 7月2日終値 vs 7月1日終値(通常取引時間)
各数値の背後にある正確なSQL
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

ヘルスケア (XLV) が 2.63% でトップとなり、次いで公共事業 2.23%、生活必需品 2%、素材 1.94% と続きました。テクノロジー (XLK) は -2.71% で最下位となり、唯一1ポイント以上の下落を記録しました。その他、一般消費財 (-0.81%) と通信サービス (-0.13%) が下落し、残りの8セクターは上昇しました。最大・最小間の分散は 5.34 パーセントポイント でした。DIAの上昇とQQQの下落という乖離は、主要4銘柄だけでなく市場全体で見られました。そのため、Nasdaqが下落していても、騰落線(ADライン)が上昇することは矛盾ではありません。

本日のハイライト:メモリ株の売り抜け、2日目

水曜日に始まった下落は、木曜日にさらに加速しました。これは原因ではなく、規模と連動性の問題です。

クエリメモリ・ストレージ銘柄:水曜終値比の騰落、レンジ形成時間、およびドル建て出来高
各数値の背後にある正確なSQL
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

SanDiskは-14.32%、Seagateは-10.38%、Western Digitalは-9.92%、MUは-5.57%を記録しました。MUの売買代金は$51.4 billionに達し、SPYの約one-and-a-half倍となりました。MUとSanDiskの安値は取引終了間際(15:2615:26 ET)に記録され、SeagateとWestern Digitalはそれより早い時間帯(14:2313:59)に記録されました。背景として、水曜日およびMUの深掘り分析があります。

大型株におけるローテーションのもう一方の動き:

クエリメガキャップ・ローテーション:水曜終値比の騰落、レンジ形成時間、およびドル建て出来高
各数値の背後にある正確なSQL
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

AAPLは4.75%上昇し、一方向の動きを見せました。安値は09:30 ET、高値は引けの3分前の15:57でした。一方、TSLAは-7.65%と真逆の動きをしました。MSFTは1.41%上昇し、NVDAは-1.55%で取引を終えました。同じ指数内で、対照的な動きとなりました。

売買代金の内訳

クエリ出来高リーダー(2種):取引額上位6銘柄、および出来高数上位4銘柄(重複銘柄1件を除く)
各数値の背後にある正確なSQL
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

MUの$51.4 billionが4営業日連続で取引額トップとなりました(月曜日火曜日水曜日)。SPYの$32.7 billionを上回っています。また、SanDiskの$26.57 billionにより、メモリ関連銘柄が上位4銘柄のうち2銘柄を占めました。SOXS(半導体3倍インバースETF)は748.2 millionで株数ベースのトップとなりました。株数ベースでは低価格株が、金額ベースでは高価格株が上位を占めます。相対ボリュームは、各銘柄の通常時と比較した数値です。算出基準:7月2日の取引時間内、重複シンボルの銘柄1件(リポジトリ)を除く。

クエリ30分ごとの出来高(通常取引時間、単位: billions)
各数値の背後にある正確なSQL
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

最初の30分間で2.13 billion株、14:30時点で0.81 billion株の底を打ち、2.3 billion株で祝前日の取引を終えました。クロージング・オークションによって未約定の注文がまとめられるため、最後の時間帯の取引額がその日の最大となります。

オプション市場:週次満期のずれ

クエリオプション市場全体:出来高、当日満期、祝日調整後の週、および7月月間データ
各数値の背後にある正確なSQL
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'

オプションの取引量は13.15百万件の約定で80.96百万枚に達し、そのうち47.4%が同曜日の満期を迎えました。7月3日満期の契約は終日一度も約定せず(0件)、木曜日は日次満期と週次満期のずれが同時に発生しました。最も活発だったのは、同日満期のSPY $740プットでした。平均プレミアム$0.499540,403が取引され、SPYは権利行使価格を4.8ドル上回って取引を終えたため、アウト・オブ・ザ・マネーとなりました。また、火曜日水曜日にコールオプションが取引されていた局面で、プットオプションが取引されました。コールオプションの取引シェアは依然として58.4%でした。次回の週次満期は9.64百万枚、7月の月次満期は8.82百万枚でした(満期メカニズム)。

クオート・テープ:取引コストについて

価格は「何が起きたか」を示し、クオート(気配値)は「いくらかかったか」を示します。bid-ask spread(売買スプレッド)は、中間価格を基準としたベーシスポイント(1ベーシスポイントは0.01%)で表される、すべての往復取引にかかる手数料のようなものです。私たちは、通常の日であっても、あるいはそうでない日であっても、毎セッションこの値を測定しています。だからこそ「スプレッドが拡大した」という主張は、検証可能なものとなります。

クエリ銘柄別NBBO更新数:7月2日 vs 7月1日(単位: millions)
各数値の背後にある正確なSQL
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'

7月2日のナショナル・ベスト・ビッド・アンド・オファー(統合オーダーブックの最良気配)の更新回数は597.22 million回に達しました。7月1日の449.15 million回から、取引終了にかけて33%の増加を見せました。QQQは7.56 million回で、SPYの5.42 million回を上回りました。MUは1.01 million回でした。

クエリ中央値スプレッド(bps、通常取引時間)— 指数ETF、メガキャップ、メモリ銘柄
各数値の背後にある正確なSQL
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

SPYのメディアン・スプレッドは0.27 basis pointsでした。これは$744.8のETFにおいて約2セントに相当します。QQQは0.83 bps、NVDAは1.03でした。取引コストが高騰したのは、価格下落を見せた銘柄でした。MUは5.52 bps、SanDiskは10.4、Western Digitalは10.79であり、SPYのスプレッドの40xに達しました。メモリ銘柄のバスケットを約定させるコストは、価格への影響を考慮する前から、インデックスを約定させるコストの数倍にのぼりました。無効なクオート(片方向またはクロスしたもの)は、隠されることなく銘柄ごとにカウントされています。

クエリ流動性の異常検知:SPYの通常取引時間中央値スプレッド vs 過去1ヶ月間
各数値の背後にある正確なSQL
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

流動性に関しては、通常通りの一日であったという結果が出ています。SPYのメディアン・スプレッドである0.27 bpsは、過去1ヶ月のメディアン(0.27 bps)から0 bpsの乖離に留まっています。これは、スプレッドの広さにおいて全11セッション中22位に相当し、今月の最大値である0.409 bpsには遠く及びません。価格上昇局面での集中した下落があっても、市場のインフラに負荷はかかりませんでした。

金利:7月2日の確定値が反映されました

クエリTreasury記録:7月2日の財務省発行データ
各数値の背後にある正確なSQL
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

財務省のフィードは市場の動きより1、2日遅れることがあります。初回の公開時には7月2日の終値データがゼロであったため、本ページでは推測を行わずその旨を記載しました。その後、データが更新されました。1 行が7月2日分、1 行が7月1日分であり、以下のパネルには当該セッションのイールドカーブが表示されています。

クエリイールドカーブ:7月2日 vs 7月1日(該当満期のみ)
各数値の背後にある正確なSQL
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
)

終値において、10年債は4.49%、2s10s spread0.35ベーシスポイントとなりました。

The calendar behind the day

クエリ7月2日の企業カレンダーおよび情報フロー(1行に集約)
各数値の背後にある正確なSQL
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 went ex-dividend, 2 new listings arrived (MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II), and the SEC index logged 5200 filings into the holiday — 2109 Form 4s, 258 8-Ks. The news feed carried 201 articles from 3 publishers (NVDA most-covered, 18 of them).

The splits trap anyone reading raw closes. CRWD ran a 4-for-1 forward split, so the unadjusted tape shows $772.45 on Wednesday and $193.67 on Thursday — a fake decline that is really four new shares for each old one. It was not alone: 8 split records executed, 5 forward and 3 reverse (the split_records column lists them), and a reverse split fakes the opposite artifact — a raw price that leaps overnight. Only 2 of those names traded on our tape; CRWD's $1473.51 million of turnover is the one big enough to contaminate a screen, and every mover screen here excludes it.

今後の予定

予測ではなく、確定したスケジュールに基づき、次回のセッションの内容をまとめます。

クエリ祝日明け:次回の取引日、配当落ち・株式分割、次回の休場日、および空売り残高の遅延データ
各数値の背後にある正確なSQL
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

7月6日月曜日の取引は、自身のバーによって確認された390バーのセッションで再開しました。118件の配当落ち記録(調査対象の10銘柄のうち1銘柄は有名銘柄です JPM)と、15件の株式分割の執行を伴いました。次回の取引終了予定は Labor Day2026-09-07 (closed) です。空売り残高については、従来通り既知の情報です。最新の決済日は 2026-06-30 で、2日前のものです。公表は決済から約2週間遅れます (理由)。

セッションの検証 — そして存在しなかった金曜日

クエリセッション確認:SPYの分足スパン、および7月3日の終値データ
各数値の背後にある正確なSQL
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'

7月2日は早期終了ではなく、フルセッションでした。SPYのバーはニューヨーク時間の04:00から19:59まで続き(プレマーケットおよびアフターアワーズのバーを含む)、通常の取引時間におけるバーは正確に390でした。7月3日(金)のSPYのバーは0となりました。7月4日の独立記念日が土曜日のため、金曜日は完全休場でした。4セッションにわたる週のまとめ:週の振り返り

FAQ

2026年7月2日に、なぜダウは上昇し、ナスダックは下落したのですか?

両指数は構成銘柄が異なります。DIAは1.04%で引け、QQQは-1.71%でした。セクター構成も同様の傾向にあります。ヘルスケア、公共事業、生活必需品が上位を占め、テクノロジーは最下位の-2.71%でした。これは、最も高いセクターと最も低いセクターの間で5.34ポイントの差があります。

独立記念日の週の金曜日は、株式市場は開いていましたか?

いいえ。独立記念日が土曜日であったため、取引所は祝日として金曜日を休場としました。本セッションの翌日のデータとして、0のSPY分足が記録されています。

株式分割を行うと、株価はどうなりますか?

発行済株式数が4倍になり、株価が4分の1になります。ポジションの価値は変わりません。CRWDの7月2日の例:水曜日の未調整終値は772.45ドル、木曜日は193.67ドルでした。株式分割を考慮しないスクリーナーでは、見かけ上の下落として表示されます。

2026年7月2日のビッド・アスク・スプレッドはどの程度でしたか?

通常取引時間におけるSPYの中央値スプレッドは、中間価格に対して0.27ベーシスポイントでした。これは、スプレッドの広さにおいて過去22セッションのうち11に相当し、通常の取引日といえます。個別銘柄はより広いスプレッドとなりました。MUは5.52 bps、WDCは10.79でした。

データに関する注記

  • ドル建て出来高は1分あたりの近似値です — 終値 × 出来高をバーごとに合算したものです。
  • 7月の2年債利回りのデータは、初版の公開後に反映されました — 元のノートでは行数による受領確認でデータの欠落を示していましたが、この改訂版にはデータが含まれており、受領確認も表示されています。
  • CRWDの生の終値変化は株式分割によるものです — ムーバー・スクリーンからは除外されています。
データに関する詳細
  • セクターボードは11のSPDR Select Sectorファンド(XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY)で構成されています。これはベンダーのセクター項目ではなく、公開された固定バスケットです。
  • クオート・テープのカウントは、SIPタイムスタンプのUTC日付に基づきます。サマーセッションは1つのUTC日に含まれます。
  • シンボルが再利用されている6月の銘柄が1つ、リーダーボードから除外されています(受領確認)。詳細なティック分析は、ディープダイブ・レポートに記載されています。

手法

  • 対象期間は1取引セッション(観測されたバーから確認された1セッション)です。タイムスタンプはUTCで保存され、クエリ内でニューヨーク時間に変換されます。「終値」は通常のセッションにおける最後の分足バーを指し、日付の変更は7月2日と7月1日を比較して判定されます。7月3日の終値は、仮定ではなくバーから確認済みです。
  • スプレッドは、通常の時間帯におけるNBBO更新の中央値に基づき、ミッドプライスのベーシスポイント(Ask minus Bid)で算出されます。比率の計算を行う前に、小数は浮動小数点数に変換されます。オプションの満期日はOCCティッカーから再解析されます。すべてのパネルは、作成時にゲート付きの読み取り専用パスを通じて一度だけ読み取られます。

チャート、表、SQLは一つのオブジェクトです。任意のパネルをStrasmoreターミナルに貼り付けて利用できます。前セッション:7月1日。今週:4セッションの祝日週