市場如何從崩跌中復甦
標普500指數自2016年來每次崩跌最終都收復失地。本文圖解市場處於水面下的歷史:回撤多深、多頻繁,以及當前位置。
自2016年以來,標普500指數的每一次崩跌,至今都已回升至新高。該指數在2020年初的五週內下跌約三分之一,並在六個月內回升至歷史高點。它在2022年全年下跌了四分之一,並在2024年收復高點。市場大部分時間都處於某個先前高點之下,而迄今為止,每一個這樣的低點都是暫時的。
最後那句話就是整篇文章的核心。一次崩跌感覺像是圖表上的一道斷裂。但在紀錄中,它只是一個指數最終總會爬出來的坑。這並不保證下一次也會如此。它只是展示了過去十年實際發生的情況,基於你可以打開並審計的儲存價格數據。
市場通常距離其高點有多遠
投資者將市場想像成一條向上的線。但大多數時候,它是一條位於已創下高點之下的線。回撤是指從迄今最高收盤價到當前價格的跌幅,這個回撤會一直持續,直到指數創下新的紀錄。下圖將自2016年以來,透過SPY ETF衡量的標普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% 的交易日收於全新高點。在另外 38.7% 的時間裡,它處於高點的5%以內,而在 2.8% 的時間裡,它低於高點超過20%。處於虧損狀態是市場的常態,而非警報。深幅回撤很罕見,而小幅回撤幾乎是常態。
自2016年以來的市場虧損歷史
繪製出每個月最嚴重的未收復回撤,過去十年的輪廓便浮現出來。每一次事件都是先下跌,然後隨著指數創下新紀錄而爬回零線。讀數為零意味著市場在該月觸及了新高。
每個數據背後的精確 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 month兩個深谷清晰可見。2020年3月的新冠疫情崩跌在幾週內將指數削減了約三分之一。2022年的熊市在一年中的大部分時間裡持續走低。圍繞它們的是普通的回調:2018年艱難的12月、2019年劇烈的秋季,以及反覆出現的5%至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 dd自2016年以來,標普500指數從高點下跌的最大幅度是 34.2%,即新冠疫情時的低點。截至最近一個交易日,它位於高點下方 0.6%。在 2647 個交易日中,它有 70% 個交易日收於先前峰值之下,有 32% 個交易日低於5%以上,有 16% 個交易日低於10%以上。市場大約有三分之一的時間處於與其高點有顯著距離的位置,而迄今為止,它從每一個這樣的坑中都爬升到了新的紀錄高點。
這些都不是預測。過去的復甦描述的是已發生的事情,而非未來崩跌會如何,一個從34%跌幅中恢復的指數,下次仍可能跌得更深。紀錄的價值在於提供視角:回撤既是市場的緊急狀態,也是其常態,而在這個時間窗口內,因回撤而賣出的本能反應,恰好賣在了復甦之前。
常見問題
股市崩盤總是會恢復嗎?
自2016年以來,標普500指數的每一次回撤至今都已回升至新高,包括約 34.2% 的新冠疫情崩跌和2022年的熊市。過去的復甦是對已發生事件的紀錄,而非對任何未來下跌的保證。
市場從崩盤中恢復需要多長時間?
時間差異很大。2020年的崩盤在數月內收復了高點,而2022年的熊市則持續到了2024年。上方的虧損圖表顯示了每一次回撤以其自身的速度回到零線。
股市有多少時間處於其高點之下?
自2016年以來,標普500指數大約有 70% 的交易日收於先前高點之下。它僅在 29.7% 的交易日達到全新高點。處於峰值之下是市場的常態。
自2016年以來最嚴重的股市回撤是什麼?
2020年初的新冠疫情崩跌,當時指數在幾週內從高點下跌了約 34.2%。2022年的熊市是次嚴重的,年內低點接近 -25.4%。
在崩盤後買入股票是個好主意嗎?
本文不提供任何建議。歷史紀錄顯示,市場大部分時間都處於高點之下,且迄今為止已從此窗口內的每一次崩跌中恢復,儘管這種情況是否會持續尚不可知。請參閱我們關於在恐慌時買入的數據研究,了解市場最恐慌時日的表現。
此處的每一個數字都來自於你可以在每張圖表下打開並審計的儲存查詢。在Strasmore終端上對任何股票代碼執行相同的虧損測試。