Strasmore Research
Market Recap

2026年上半期市場まとめ

Matt ConnorBy Matt Connor Updated 2026-07-24

2026年上半期は、性質の異なる2つの市場が組み合わさった期間でした。第1四半期は主要なインデックスETFが下落または横ばいとなりましたが、第2四半期はそれを十分に挽回しました。SPYは上半期で8.8%上昇しました。QQQは18.7%上昇しました。IWMの21.3%は、当サイトが記録している中で、この小型株ETFにとって最高の上半期となりました。以下に、全年度のデータを照合した結果を記載します。金利市場では、2s10s spreadが、逆転することなく、半年間で72ベーシスポイントから30へとフラット化しました。本ページには、上半期の全記録を掲載しています。スコアボード、過去の順位、月次推移、満期別のイールドカーブ、11セクター、オプション市場の月次推移、および注目銘柄が含まれます。すべての数値はクエリの結果です。各パネルを展開すると、SQLを確認できます。

半期の動向

クエリ2026年H1: 4つのインデックスETFの半年間、Q1、Q2の収益率
各数値の背後にある正確なSQL
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS h1_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker

2四半期にわたる推移が、この半期の形状を決定づけています。SPYは-5.2%から14.1%へ、QQQは-6.9%から26.5%へと推移しました。21.3%においては、IWMが静かなリーダーとなりました。小型株は、この6か月間ですべての大型株指数を上回りました。四半期ごとの詳細は、Q2の振り返りに記載されています。半期の計算に関する注意点があります。SPYの6か月間の8.8%は、Q2単独の結果よりも大幅に低くなっています。これは、下落と回復が連続しているためです。-5.2%と14.1%の複利計算の結果が表の数値となります。「上半期の収益率」という見出しには、この一連の変動が内包されています。

上半期のパフォーマンス比較

8.8%の半年間は異例でしょうか。以下のパネルでは、すべての年の分単位の履歴を用いて、同一の計算式で上半期のリターン(1月から6月までの通常取引時間の始値から終値まで)を再計算しています。各ETFペアごとに1つのクエリを実行し、その結果を他の期間と比較してランク付けしています。分単位のデータにおける最古の日付は、以下の手法で検証済みです。記録されている最初の完全な上半期は、レシートに記載されているものです。

クエリSPYおよびQQQの各上半期の推移(年ごとの再計算)
各数値の背後にある正確なSQL
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
       ticker,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
       round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 1) AS h1_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
  AND window_start >= toDateTime('2003-01-01 00:00:00')
  AND window_start < toDateTime('2026-07-01 00:00:00')
  AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y, ticker
HAVING sessions >= 100
ORDER BY y ASC, ticker ASC
クエリSPYおよびQQQのランキング(過去の全上半期との比較、1位が最良)
各数値の背後にある正確なSQL
SELECT ticker,
       round(anyIf(ret, y = 2026), 1) AS h1_2026_pct,
       arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
       count() AS halves_compared,
       min(y) AS first_year,
       anyIf(sessions, y = 2026) AS sessions_2026
FROM (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
           ticker,
           uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ')
      AND window_start >= toDateTime('2003-01-01 00:00:00')
      AND window_start < toDateTime('2026-07-01 00:00:00')
      AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY y, ticker
    HAVING sessions >= 100
)
GROUP BY ticker
ORDER BY ticker ASC

SPYの8.8%は、2004以降の23個の上半期のうち6位にランクされています(1位が最良)。上位3分の1に入っていますが、記録的な数値ではありません。QQQの18.7%は、16個の比較対象のうち3位です。QQQのシリーズは短くなっています。これは、同ファンドが数年間にわたり異なるティッカーシンボルで取引されていたためです。また、セッション数による除外ルールにより、上半期のセッション数が100に満たない年は除外されます。除外されたデータは、表に明示されます。

クエリDIAおよびIWMの各上半期の推移(同一計算)
各数値の背後にある正確なSQL
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
       ticker,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
       round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 1) AS h1_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('DIA', 'IWM')
  AND window_start >= toDateTime('2003-01-01 00:00:00')
  AND window_start < toDateTime('2026-07-01 00:00:00')
  AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y, ticker
HAVING sessions >= 100
ORDER BY y ASC, ticker ASC
クエリDIAおよびIWMのランキング(過去の全上半期との比較、1位が最良)
各数値の背後にある正確なSQL
SELECT ticker,
       round(anyIf(ret, y = 2026), 1) AS h1_2026_pct,
       arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
       count() AS halves_compared,
       min(y) AS first_year,
       anyIf(sessions, y = 2026) AS sessions_2026
FROM (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
           ticker,
           uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('DIA', 'IWM')
      AND window_start >= toDateTime('2003-01-01 00:00:00')
      AND window_start < toDateTime('2026-07-01 00:00:00')
      AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY y, ticker
    HAVING sessions >= 100
)
GROUP BY ticker
ORDER BY ticker ASC

小型株の行が今回のハイライトです。IWMは2004以降の23個の上半期のうち1位にランクされています。これは同ファンドの記録上最高であり、表にあるすべての回復局面の上半期を上回っています。DIAの8.4%は、23個のうち4位です。計算の基準は、各暦年上半期の通常取引時間の始値から終値までとし、すべての年で同一の計算式を用いています。比較対象のデータセットが将来のデータ追加によって意図せず拡大しないよう、上限は今期の末に固定されています。

月別推移

クエリSPYおよびQQQの月別収益率(H1期間)
各数値の背後にある正確なSQL
SELECT toString(toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York')))) AS period_start, ticker,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS month_return_pct,
    round(argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS month_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY period_start, ticker
ORDER BY period_start, ticker

株価は上昇、下落、急落、上昇、上昇、小幅下落と推移しました。4月は半期の転換点となりました(SPY 9.9%、QQQ 14.8% — QQQにとってこの6ヶ月間で最高の月)。6月のSPYは-1.2%で落ち着いて取引を終えました。この数値の背景にある騰落レシオを含む6月の詳細は、こちらで確認できます。月別の推移は以下の通りです。年初はほぼ横ばい(1月はSPY 0.9%)で始まり、2月(-0.5%)と3月(-4.2%)にかけて下落しました。その後、4月に一転して上昇に転じ、5月(4.9%)に上昇が続きましたが、6月は緩やかに下落しました。6ヶ月のうち3ヶ月がマイナスとなりました。半期全体では堅調なプラスで終えていますが、月ごとの騰落数は半々です。これは株式市場の半期で見られる一般的な傾向であり、単月の動きだけで判断を下す際の注意点となります。

金利:イールドカーブの期間別動向

米国債利回りは、平行移動ではなく、形状が変化する「ツイスト」の動きを見せました。政策金利に最も敏感な超短期債はほとんど動きませんでした。2年債は0.67パーセントポイント上昇しましたが、30年債はほぼ横ばいでした。本パネルでは、半期の初めと終わりを比較して、カーブ全体の動きを示します。

クエリ7つの満期:期首と期末の利回りおよび変化幅
各数値の背後にある正確なSQL
SELECT maturity, start_pct, end_pct, round((end_pct - start_pct) * 100, 0) AS change_bp FROM (
    SELECT '1-month' AS maturity, (SELECT round(argMin(yield_1_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_month)) AS start_pct, (SELECT round(argMax(yield_1_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_month)) AS end_pct, 1 AS o
    UNION ALL SELECT '3-month', (SELECT round(argMin(yield_3_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_3_month)), (SELECT round(argMax(yield_3_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_3_month)), 2
    UNION ALL SELECT '1-year', (SELECT round(argMin(yield_1_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_year)), (SELECT round(argMax(yield_1_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_year)), 3
    UNION ALL SELECT '2-year', (SELECT round(argMin(yield_2_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_2_year)), (SELECT round(argMax(yield_2_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_2_year)), 4
    UNION ALL SELECT '5-year', (SELECT round(argMin(yield_5_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_5_year)), (SELECT round(argMax(yield_5_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_5_year)), 5
    UNION ALL SELECT '10-year', (SELECT round(argMin(yield_10_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_10_year)), (SELECT round(argMax(yield_10_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_10_year)), 6
    UNION ALL SELECT '30-year', (SELECT round(argMin(yield_30_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_30_year)), (SELECT round(argMax(yield_30_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_30_year)), 7
) ORDER BY o

「変化」の列を上から順に見ていくと、明確なツイストが確認できます。1ヶ月債は6ヶ月間で-2ベーシスポイント動きましたが、2年債は67上昇し、30年債はわずか5でした。平行移動はすべての期間の利回りが一斉に動くことを指します。しかし、今半期はカーブの中間部分が動き、両端は固定されました。つまり、短期金利は政策金利付近に留まり、長期金利はほとんど再価格形成されませんでした。

スロープへの影響

クエリスロープ:期首、期末、最小値(今期は逆転なし)
各数値の背後にある正確なSQL
SELECT
    round((argMin(yield_10_year - yield_2_year, date)) * 100, 0) AS start_bp,
    round((argMax(yield_10_year - yield_2_year, date)) * 100, 0) AS end_bp,
    round(min((yield_10_year - yield_2_year)) * 100, 0) AS min_bp,
    count() AS prints
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
  AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)

短期金利が長期金利よりも速く上昇することが、フラットニング(イールドカーブの平坦化)です。2s10s spreadは、124回の発表を通じて72から30ベーシスポイントまで低下しました。今半期の最低値は27であり、カーブは逆転することなく平坦化しました。カーブの平坦化が将来について何を「意味するか」は予測の範疇であり、この表は予測を行うものではありません。

クエリ2s10sスプレッドの期中推移
各数値の背後にある正確なSQL
SELECT toString(date) AS d, round((yield_10_year - yield_2_year) * 100, 0) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
  AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)
ORDER BY date

日次データによると、平坦化は単発の事象ではなく、継続的なプロセスでした。124回の発表を経て段階的に低下しており、スプレッドは年初の72ベーシスポイントから、期末には30となりました。

セクター:指数が隠した分散

市場のどの部分が、実際に上半期の利益をもたらしたのでしょうか。11のSPDRセクターETFを、半年間と四半期ごとに分けて分析します。

クエリ11セクターETF:2026年H1収益率、Q1/Q2内訳、H1売買代金
各数値の背後にある正確なSQL
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS h1_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 >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker

分散が重要な鍵となります。テクノロジー(XLK)は、30.8%の上昇、および42%の第2四半期を記録しました。一方、コミュニケーション・サービス(XLC)は-9.3%で終了しました。半年間の最良セクターと最悪セクターの差は約40パーセントポイントに及びます。「市場全体」を保有することは、その両端を保有することを意味しました。エネルギー(XLE)は、長期保有における教訓を示しています。XLEは18.8%の良好な上半期を記録しましたが、これは36.9%の第1四半期と、それに続く-11%の第2四半期によって構成されています。指数が下落した四半期には市場で最も強い大型セクターでしたが、指数が回復した四半期には最も弱いセクターの一つでした。金融(XLF)は、これとは逆の動きを見せました。第1四半期は-9.9%、第2四半期は7.7%でした。上半期の単一の数値では、これら両方の変動が相殺されてしまいます。四半期ごとの内訳こそが、実態を正確に示しています。

各セクターの取引コスト

リターン表は一般的ですが、気配値のテープは一般的ではありません。このパネルでは、各セクターETFの1セッションにおける中央値のビッド・アスク・スプレッドを測定しています。対象は半年間で 123 セッションであり、ここでは6月29日のデータを測定し、その旨を記載しています。測定は、その日のすべてのNBBO更新に基づいています。

クエリセクターETF別中央値スプレッド(2026年6月29日、通常取引時間)
各数値の背後にある正確なSQL
SELECT ticker,
    round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 2) AS med_spread_bps,
    round(count() / 1e6, 2) AS quote_updates_m,
    countIf(NOT (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price)) AS invalid_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
  AND sip_timestamp >= toDateTime64('2026-06-29 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-29 20:00:00', 9)
GROUP BY ticker
ORDER BY med_spread_bps

11の銘柄すべてが、数ベーシスポイント以下で推移しています。最も狭いのは 0.62 bps (XLV)、最も広いのは 2.23 bps (XLRE) です。これが「セクターETFは流動性が高い」という言葉の実際的な意味です。つまり、セクターへの投資コストは、パーセントの100分の1単位で測定されます。個別銘柄と比較するための基準として、6月29日の詳細分析では、同セッションにおける流動性の低い銘柄のスプレッドが、これらの水準の数百倍であることを示しています。

半期における騰落の広がり

半期ベースでの騰落の広がりには、2つの視点があります。まず、大まかな視点です。SPYは、半期の全 123 日のうち、64 日が上昇し、59 日が下落しました。全体としては堅調なプラスですが、日次で見るとほぼ五分五分の推移であり、これは緩やかな上昇局面の特徴です。次に、全銘柄を対象とした詳細な視点です。これは月次スケールで確認できます。6月の騰落比については 6月のまとめ を参照してください(上昇銘柄よりも下落銘柄の方が多い結果でした)。また、四半期境界の集計は 第2四半期のまとめ に記載されています。6ヶ月間の全市場騰落銘柄スキャンは、本ページのクエリ制限を超えるため、ここでは表示していません。

クエリH1におけるSPYの陽線・陰線セッション数
各数値の背後にある正確なSQL
SELECT countIf(day_ret > 0) AS up_sessions,
       countIf(day_ret < 0) AS down_sessions,
       countIf(day_ret = 0) AS flat_sessions,
       count() AS sessions_total
FROM (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 2) AS day_ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      AND window_start < toDateTime('2026-07-01 00:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY d
)

オプション取引の推移(月別)

半年間のデータから、オプション取引の変遷が分かります。各パネルは、ある月の取引全容を示しています。これには総契約数と、当日満期(0DTE)の取引シェアが含まれます。データによると、契約数は1月の1316.1百万から、半年で最も活発だった6月の1477.9百万へと増加しました。また、当日満期のシェアは1月の26.5%から、半年で最高となる6月の34.3%へと上昇しました。6月のオプション取引量の3分の1は、当日満期の契約によるものです。

クエリ1月:オプション契約総ボリュームおよび当日満期シェア
各数値の背後にある正確なSQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-01-01 00:00:00')
  AND window_start < toDateTime('2026-02-01 00:00:00')
クエリ2月:オプション契約総ボリュームおよび当日満期シェア
各数値の背後にある正確なSQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-02-01 00:00:00')
  AND window_start < toDateTime('2026-03-01 00:00:00')
クエリ3月:オプション契約総ボリュームおよび当日満期シェア
各数値の背後にある正確なSQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-03-01 00:00:00')
  AND window_start < toDateTime('2026-04-01 00:00:00')
クエリ4月:オプション契約総ボリュームおよび当日満期シェア
各数値の背後にある正確なSQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-04-01 00:00:00')
  AND window_start < toDateTime('2026-05-01 00:00:00')
クエリ5月:オプション契約総ボリュームおよび当日満期シェア
各数値の背後にある正確なSQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-05-01 00:00:00')
  AND window_start < toDateTime('2026-06-01 00:00:00')
クエリ6月:オプション契約総ボリュームおよび当日満期シェア
各数値の背後にある正確なSQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-01 00:00:00')
  AND window_start < toDateTime('2026-07-01 00:00:00')

月次サンプリングによる取引コスト

クエリSPYの中央値スプレッド(毎月第2水曜日のNBBO更新時)
各数値の背後にある正確なSQL
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session,
       round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 3) AS med_spread_bps,
       round(count() / 1e6, 2) AS quote_updates_m,
       countIf(NOT (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price)) AS invalid_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
  AND ((sip_timestamp >= toDateTime64('2026-01-14 14:30:00', 9) AND sip_timestamp < toDateTime64('2026-01-14 21:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-02-11 14:30:00', 9) AND sip_timestamp < toDateTime64('2026-02-11 21:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-03-11 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-03-11 20:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-04-15 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-04-15 20:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-05-13 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-05-13 20:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-06-10 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-10 20:00:00', 9)))
GROUP BY session
ORDER BY session ASC

毎月第2水曜日のSPYのメディアン・クオート・スプレッドは、1月サンプルで0.145 bps、2月は0.144 bpsでした。春のサンプル期間中は、その約2倍の0.409 bpsとなり、6月サンプルが6ヶ月間で最も広い値となりました。補足事項として、これらは月間メディアンではなく、特定のセッション(毎月第2水曜日)のデータです。6ヶ月間の全クオート・テープをスキャンすることは、本ページのクエリ予算を超えるため不可能です。サンプル日はパネル内に記載されており、無効なクオートも除外せずカウントしています。

上半期の主要銘柄

編集上の選定ではなく、取引高に基づいた指標です。以下のリストは、四半期ベースのドル建て取引高ランキングの上位銘柄です。各銘柄の詳細は、リンク先の詳細分析を参照してください。

クエリQ2通常取引時間の総売買代金(一部銘柄を除く)
各数値の背後にある正確なSQL
SELECT ticker,
    round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS dollar_bn,
    round(100 * sum(toFloat64(close) * toFloat64(volume)) / max(sum(toFloat64(close) * toFloat64(volume))) OVER (), 1) AS pct_of_leader
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-04-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
  AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
  AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_bn DESC
LIMIT 8

MUの取引高は、SPYの$2047.5 billionに対し$2032 billionであり、第二四半期においてSPYを上回りました。詳細は Q2 recap を参照してください。ランキング上位6銘柄の上半期実績は以下の通りです。

クエリ主要銘柄のH1およびQ2収益率、H1売買代金
各数値の背後にある正確なSQL
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, window_start >= toDateTime('2026-04-01 00:00:00') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS h1_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'NVDA', 'TSLA', 'SNDK', 'AMD', 'INTC')
  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker

メモリおよび半導体セクターが上半期を牽引しました。SNDKは半年間で830.1%、MUは290%(6月の詳細分析はこちら)の収益を記録し、INTCは269.3%でした。NVDAは半年間の取引高が$3287.9 billionに達し、リスト内で最大の取引量を記録しましたが、収益は5.2%にとどまりました。メモリ銘柄が数倍に上昇した一方で、NVDAは一桁台の成長でした。この乖離については 6月の詳細分析 でセッションごとに解説しています。TSLAは-8.2%の下落となり、リスト内で唯一のマイナスとなりました。6月に上場した大型銘柄は、現在ティッカーシンボルの再利用が行われており、実体確認が完了するまでランキングからは除外されています。初月の詳細レポートはこちら。算出基準:ランキングは第2四半期の取引時間内のドル建て取引高に基づきます。収益率は、上半期の最初の取引開始から最後の取引終了までの数値です。

上半期のIPOラッシュ、月別推移

クエリH1期間中の月別新規上場数
各数値の背後にある正確なSQL
SELECT toString(toStartOfMonth(listing_date)) AS m, count() AS listings
FROM global_markets.stocks_ipos
WHERE listing_date >= toDate('2026-01-01') AND listing_date <= toDate('2026-06-30')
GROUP BY m
ORDER BY m

上場ラッシュは前半に集中し、月ごとに偏りがありました。47件の上場を記録した2月が上半期で最も活発な月でした。一方、3月は17件と最も静かな月となりました。有名な6月の大型上場は、それ以外の月は平時並みの取引量(35件)であった月に発生しました。

上半期のカレンダー

クエリ2026年H1 企業カレンダー(3つの月末報告ギャップを含む)
各数値の背後にある正確なSQL
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-01-01') AND ex_dividend_date <= toDate('2026-06-30')) AS ex_div_events,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= toDate('2026-01-01') AND execution_date <= toDate('2026-06-30')) AS splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-01-01') AND listing_date <= toDate('2026-06-30')) AS ipos,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= toDate('2026-01-01') AND filing_date <= toDate('2026-06-30')) AS h1_filings,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-03-31')) AS filings_mar31,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-04-30')) AS filings_apr30,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30

上半期には205社が新規上場しました。6月の最大規模の上場事例については 個別銘柄ごとの詳細記事 をご確認ください。これに加えて、830件の株式分割と28356件の配当落ちが発生しました。規模の目安として、上半期を通じて1取引日あたり1件以上の新規上場があったことになります。提出書類の総数には、3つの注意点があります。SECのインデックスでは、月末が平日の月において、各月末の数値が極端に少なくなっています(3月31日は55件、4月30日は34件、6月30日は31件であり、前後の日には数千件のデータがあります)。そのため、フィードのデータ補完が行われるまで、半年間の提出件数は実際よりも少なく表示されます。 月末のデータ欠損に関する診断ノート を参照してください。

セッションの概要

クエリH1期間中の全123セッション(テープ検証済み)
各数値の背後にある正確なSQL
SELECT
    (SELECT uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')) AS h1_sessions

データに関する注記

詳細なデータ注記
  • 空売り残高は6月15日の決済分までとなっています(生成時点では6月末の数値は未反映です。詳細は 6月のまとめ を参照してください。データの更新に合わせて本記事も再生成されます)。
  • 2026年の月次報告日のうち、3日分がデータ欠損しています(3月31日、4月30日、6月30日。最終日が平日の半期の各月末日)。数値とともに記載しており、詳細は 月次報告の欠損に関する注記 で分析しています。前年の月末には数千件の報告があるため、これは報告の休日ではなく、フィードの欠損によるものです。
  • 半年間のリーダーボードは範囲が限定されています。市場全体の6か月間のスキャンは、本ページのクエリ予算を超えるため、インラインで示されている四半期単位のリーダースキャンによって主要銘柄を選定しています。半年間のリターンは、その固定された銘柄セットに基づいて計算されます。詳細は該当箇所に記載しています。第2四半期 および 6月 のまとめには、各スケールにおける完全なリーダーテーブルが掲載されています。
  • 半年間の市場全体の広がり(ブレス)も同様に範囲が限定されています。日次単位の分割を表示しています。ティッカー単位のカウントは月次および四半期単位で管理されており、ブレスのセクションからリンクされています。
  • QQQの履歴シリーズはSPYよりも短くなっています。当該ファンドは数年間にわたり別のティッカーシンボルで取引されていました。セッション数の制限により、それらの期間は除外されています(年ごとのセッション数は表に記載されています)。
  • 6つのオプションパネルは、月次の全テープスキャンであり、スプレッドのトレンドは月ごとにラベル付けされた1セッションのサンプルです。どちらもバッチパスで実行されます。サンプルベースはインラインに記載されています。
  • マイクロストラクチャの詳細は 6月29日のディープダイブ を参照してください。

手法

  • 対象期間は2026年1月1日から6月30日までです。観測されたバーに基づき、123 セッションを確認済みです。リターンは、各期間内の通常の取引開始から終了までを計算しており、すべて示されているものと同じクエリで算出しています。
  • 過去データの比較は、生成時に全分足履歴に対してリアルタイムで再計算されます。保存された値は使用しません。データの検証:遅延ビューにおける最古の分足日付は、作成時に確認されたベーステーブル(2003年9月)と一致しています。そのため、ファイル内の最初の完全な上半期は2004年となります。すべての履歴クエリは、この期間の末尾を上限として固定します(後続の年が取り込まれても比較セットは拡大しません)。また、年ごとのセッション数に基づき、最小セッション数のガードを適用しています。
  • タイムスタンプはUTCで保存され、生のUTC範囲が使用されます。複数年の履歴ブロックでは、米国東部時間の取引時間(9:30–15:59、行ごとに変換。数十年にわたるDSTに安全な唯一の慣習)で正規取引時間をフィルタリングします。EDTのみの範囲における単一ウィンドウのブロックには、同等の生UTC帯域を使用します。両方の慣習をここに明記します。
  • 生成は、制限された読み取り専用パスを通じて実行されます。公開ページがライブクエリを実行することはありません。データウェアハウスの状態は2026年7月5日時点のものです。

これは定期的な半年ごとの総括の第1版です。通年の版は1月に発行されます。四半期詳細:2026年第2四半期。比較対象となるマクロ指標は マクロ状況 に含まれます。