S&P 500の暴落と回復の歴史
2016年以降のS&P 500の暴落を分析しました。過去のドローダウンの深さと回復の傾向をチャートで詳しく解説します。
2016年以降、S&P 500のすべての暴落は、その後最高値を更新して回復しています。2020年初頭、同指数は5週間で価値の約3分の1を失いましたが、6か月以内に過去最高値まで上昇しました。2022年には4分の1を失いましたが、2024年に最高値を奪還しました。市場は大部分の期間、過去のピークを下回って推移しますが、これまでのところ、それらの安値はすべて一時的なものでした。
最後の文章が、この記事の全容です。暴落はチャートの断絶のように感じられます。しかし、記録上では、指数が最終的に必ず脱出する一時的な下落に過ぎません。これは、次の暴落も同様になると保証するものではありません。これは、監査可能な過去の価格データに基づいた、過去10年間の実際の動きを示しています。
市場が最高値から通常どの程度下落しているか
投資家は市場を右肩上がりの線として捉えがちです。しかし、実際にはほとんどの場合、すでに記録した最高値よりも低い位置にあります。ドローダウンとは、これまでの最高終値から現在の価格までの下落幅を指し、指数が新たな最高値を更新するまで継続します。以下のチャートは、2016年以降のすべての取引日について、SPY ETFで測定したS&P 500が、直近のピークから何パーセント下落して取引を終えたかで分類したものです。
各数値の背後にある正確なSQL
WITH d AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2016-01-01'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY dt
),
dd AS (
SELECT dt,
(c / max(c) OVER (ORDER BY dt ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - 1) * 100 AS ddpct
FROM d
),
b AS (
SELECT multiIf(ddpct >= -0.5, 'At a new high',
ddpct >= -5, 'Within 5% of the high',
ddpct >= -10, '5-10% below',
ddpct >= -20, '10-20% below',
'More than 20% below') AS bucket,
multiIf(ddpct >= -0.5, 0, ddpct >= -5, 1, ddpct >= -10, 2, ddpct >= -20, 3, 4) AS ord
FROM dd
)
SELECT bucket, round(100.0 * count() / (SELECT count() FROM b), 1) AS pct_of_trading_days
FROM b GROUP BY bucket, ord ORDER BY ord指数が史上最高値を更新したのは、全取引日のわずか 29.7% でした。最高値の5%以内に収まったのは 38.7% であり、20%以上下落していたのは 2.8% でした。価格が最高値より低い状態は市場の通常の状態であり、異常事態ではありません。大幅な下落は稀ですが、軽微な下落はほぼ常に発生しています。
2016年以降の市場の下落局面の推移
各月の最大ドローダウンをプロットすると、過去10年間の形状が明らかになります。指数が新高値を更新するたびに、下落した後にゼロラインまで回復しています。ゼロは、その月に市場が新高値を記録したことを意味します。
各数値の背後にある正確なSQL
WITH d AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2016-01-01'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY dt
),
dd AS (
SELECT dt, c,
max(c) OVER (ORDER BY dt ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS peak
FROM d
)
SELECT toStartOfMonth(dt) AS month, round(min((c / peak - 1) * 100), 1) AS worst_drawdown_pct
FROM dd GROUP BY month ORDER BY month2つの深い谷は明白です。2020年3月のCOVIDショックにより、指数はわずか数週間で約3分の1下落しました。2022年の弱気相場は、年間の大部分にわたって下落が続きました。その間には、2018年12月の激しい下落や、2019年秋の急落、ニュースになるほどではない5%から10%の繰り返される下落といった、通常のプルバックが存在します。これらはすべてゼロラインまで回復しました。このチャートは、次々と現れる新高値によって、過去10年間の恐怖が払拭されてきた過程を示しています。
これまでのすべてのドローダウンは回復済み
回復の傾向は、年を追うごとに明確になっています。以下の各暦年において、指数が最高値から記録した最大ドローダウンと、その年の実際の価格リターンを併記します。
各数値の背後にある正確なSQL
WITH d AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2016-01-01'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY dt
),
dd AS (
SELECT dt, toYear(dt) AS yr, c,
(c / max(c) OVER (ORDER BY dt ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - 1) * 100 AS ddpct
FROM d
)
SELECT toString(yr) AS year,
round(min(ddpct), 1) AS worst_drawdown_pct,
round((argMax(c, dt) / argMin(c, dt) - 1) * 100, 1) AS year_return_pct
FROM dd GROUP BY yr ORDER BY yr2020年は最も分かりやすい例です。最大ドローダウンは-34.2%に達しましたが、年度末の騰落率は15.1%でした。2019年は安値で-16.8%まで下落し、28.6%で取引を終えました。この期間で唯一のマイナス年は2022年で、年度内の安値は-25.4%、年間価格リターンは-20%でした。指数は翌年、2023年に24.8%のリターンを記録して、その水準を回復しました。年内の二桁ドローダウンは例外ではなく、むしろ常態化していますが、その年の大半は最終的にプラスで終了しています。
このパターンは魔法ではありません。指数を少数のメガキャップ銘柄とそれ以外の銘柄に分けて考えると、現代のドローダウンの多くが説明できます。これについては指数の集中度に関する調査で詳しく述べています。また、暴落はハイベータ銘柄に最も大きな影響を与えますが、低ボラティリティ銘柄の下落はそれよりも緩やかです。しかし、これまでのところ、回復は市場全体で見られます。
本日の市場状況
ある指標に基づき、現在の状況を全期間と比較します。
各数値の背後にある正確なSQL
WITH d AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2016-01-01'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY dt
),
dd AS (
SELECT dt,
(c / max(c) OVER (ORDER BY dt ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - 1) * 100 AS ddpct
FROM d
)
SELECT round(-min(ddpct), 1) AS deepest_fall_pct,
round(-argMax(ddpct, dt), 1) AS current_fall_pct,
round(100.0 * countIf(ddpct < -0.5) / count(), 0) AS pct_days_below_high,
round(100.0 * countIf(ddpct < -5) / count(), 0) AS pct_days_below_5,
round(100.0 * countIf(ddpct < -10) / count(), 0) AS pct_days_below_10,
count() AS trading_days
FROM dd2016年以降、S&P 500の最高値からの最大下落率は34.2%のコロナショック時の低値です。直近のセッション時点では、最高値から0.6%下落しています。2647の取引日のうち、70%の割合で直近のピークを下回って引けました。また、32%では5%超、16%では10%超の下落となりました。市場は全期間の約3分の1を、最高値から大きく乖離した状態で推移していますが、これまでの下落局面からは、その都度最高値を更新してきました。
これらは予測ではありません。過去の回復局面は、過去に起きたことを示しているだけであり、将来の暴落を予言するものではありません。34%の下落から回復した指数であっても、次回はさらに下落する可能性があります。記録の価値は、視点を与えることにあります。下落は市場にとって緊急事態であると同時に、常態でもあります。この期間において、下落局面で売るという反応は、結果として回復局面での売りにつながってきました。
FAQ
株価暴落は必ず回復しますか?
2016年以降のS&P 500のすべてのドローダウンは、約34.2%のCOVIDショックや2022年の弱気相場を含め、現在までに最高値を更新して回復しています。過去の回復事例は過去の記録であり、将来の下落を保証するものではありません。
市場の回復にはどのくらいの期間がかかりますか?
期間は大きく異なります。2020年の暴落は数ヶ月以内に最高値を回復しましたが、2022年の弱気相場は2024年まで続きました。上記のアンダーウォーターチャートは、各ドローダウンがそれぞれのペースでゼロラインに戻る様子を示しています。
市場が最高値を下回っている期間はどのくらいありますか?
2016年以降、S&P 500が直近の最高値を下回って取引を終えた日は、全取引日の約70%に及びます。そのうち、新たに最高値を更新したのはわずか29.7%でした。ピークを下回っている状態は、市場の通常の姿です。
2016年以降で最悪のドローダウンはどれですか?
2020年初頭のCOVIDショックです。この時、指数は数週間で高値から約34.2%下落しました。次に深い下落は2022年の弱気相場で、年内の安値は-25.4%付近に達しました。
暴落後に株を買うのは良い考えですか?
この記事は投資助言を行うものではありません。歴史的な記録によれば、市場はその大部分を最高値より低い水準で過ごしており、現在までの期間におけるすべての暴落から回復しています。ただし、今後もそれが続くかは不明です。市場が最も恐怖を感じた日のパフォーマンスについては、恐怖局面での買いに関するデータ調査を参照してください。
ここに記載されている数値はすべて、各チャートの下にある保存済みクエリから取得されており、監査が可能です。Strasmoreターミナルを使用すれば、任意のティッカーで同様のアンダーウォーターテストを実行できます。