跳至主要內容
美股研究 約 11 分鐘閱讀

VIX 恐慌指數抄底美股有用嗎?1990-2026 回測:12 次突破 40 平均報酬 22%

VIX 恐慌指數飆破 40 時抄底美股到底有沒有用?本文用 Python 回測 1990 到 2026 共 36 年資料:S&P 500 在 12 次 VIX 收盤突破 40 後買進持有 250 個交易日,平均報酬 22.1%、勝率 83%,高於任意時點進場的 10%。但 2020 年舊版「等降溫再買更好」的結論在全樣本不成立,2022 年空頭甚至全程沒有訊號。附 12 次事件明細、門檻與持有期敏感度矩陣、可下載程式碼。

VIX 突破 40 該恐懼還是該貪婪?36 年、12 次恐慌事件一次跑給你看。

VIX 恐慌指數與 S&P 500 走勢對照:1990-2026 共 12 次 VIX 突破 40,買進持有 250 日平均報酬 22.1%

2020 年 7 月,本站發表過一篇用 pandas 回測「VIX 大於 40 買進美股」的教學。當時可用的資料只涵蓋到 2019 年,訊號只出現過 4 次。六年過去,市場又經歷了 2020 年 3 月 VIX 收在 82.69 的歷史最高收盤、2022 年整年的空頭,以及 2025 年 4 月的關稅恐慌。這篇文章把資料拉長到 1990 年至 2026 年 6 月,用同一套規則從頭重跑,並逐一檢驗舊版的每個結論。重跑後的關鍵數字:

進場規則(1990-2026,S&P 500) 樣本數 持有 250 日平均報酬 勝率 最差一次
訊號 A:VIX 收盤突破 40 當天買進 12 次 +22.1% 83% -14.3%(2001 年)
訊號 B:VIX 曾破 40、回落到 30 以下再買 10 次 +16.8% 90% -18.5%(2001 年)
任意一天買進(無條件基準) 8,900+ 個交易日 +10.0% 81% 不適用

三個重跑後才看得到的事實:

  • 恐慌進場的優勢在報酬幅度,幾乎不在勝率。平均 +22.1% 是任意時點 +10.0% 的兩倍以上;但勝率 83% 對 81%,與隨便挑一天買幾乎相同。
  • 舊版「等 VIX 降溫再買比較好」的結論在全樣本不成立。降溫進場(訊號 B)的平均報酬反而較低,而且 2001 年那次虧損 18.5%,比訊號 A 的任何一次都深。
  • 把訊號做成連續策略會長期輸給買進持有:年化 4.76% 對 SPY 含息的 10.73%。它適合當「手上有閒置資金時的加碼參考」,當成主策略並不及格。

以下是完整的定義、規則、12 次事件明細與方法限制。

VIX 恐慌指數是什麼?

VIX(CBOE Volatility Index,波動率指數)是芝加哥選擇權交易所用 S&P 500 選擇權的市場價格,反推出來的「未來 30 天年化隱含波動率」,因為它在市場急跌時飆高,俗稱恐慌指數(fear index)。這裡更正一個舊版的錯誤:VIX 衡量的是未來 30 天,舊文寫成「預估 12 個月的波動」是錯的。

CBOE 白皮書的做法,是用一籃子不同履約價的選擇權報價,近似一張方差交換(variance swap)合約的價值:

σ2=2TiΔKiKi2eRTQ(Ki)1T[FK01]2\sigma^2=\frac{2}{T}\sum_i \frac{\Delta K_i}{K_i^2}e^{RT}Q(K_i)-\frac{1}{T}\left[\frac{F}{K_0}-1\right]^2

VIX=100×σ\text{VIX}=100\times\sigma

口語拆解:Q(Ki)Q(K_i) 是履約價 KiK_i 那檔選擇權的買賣中價,FF 是遠期指數水準,TT 是到期時間(約 30 天),RR 是無風險利率。第一項把所有履約價的選擇權價格加權加總,權重 ΔKi/Ki2\Delta K_i/K_i^2 讓價外選擇權也納入計算;第二項是用 FF 與第一個低於它的履約價 K0K_0 之間的差距做小幅修正。整條公式的直覺只有一句:市場越願意花錢買保險(選擇權越貴),VIX 越高

用一個數字示例感受 VIX 的單位

以下是示意用的換算,並非任何實際報價。假設今天 VIX = 20,代表市場為未來 30 天定價的「年化」波動率是 20%。把年化換算回 30 天的預期波動幅度:

20%125.8%\frac{20\%}{\sqrt{12}}\approx 5.8\%

意思是市場認為未來一個月 S&P 500 上下 5.8% 以內的震盪屬於正常範圍。若 VIX 跳到 40,同樣的算法得到上下約 11.5%:市場正在為「一個月內可能再跌一成」的劇烈行情買保險。

1990 年以來 VIX 收盤的中位數是 17.6,歷史最高收盤是 2020 年 3 月 16 日的 82.69。常見的水位解讀:

VIX 收盤水位 市場狀態
15 以下 平靜,保險便宜
15 ~ 20 正常區間(36 年中位數 17.6 落在這裡)
20 ~ 30 緊張,通常伴隨明顯回檔
30 ~ 40 恐慌,多數空頭的尖峰落在此區
40 以上 極端恐慌,36 年只出現 12 次首次突破,平均三年一次

回測設定:把「恐慌買點」寫成可檢驗的規則

口頭上的「VIX 很高時買進」無法檢驗,必須先寫成規則。本文沿用 2020 年舊文的兩條規則,參數完全不動,只把資料換成 1990 年 1 月至 2026 年 6 月 10 日的完整樣本:

  • 訊號 A(恐慌當天買):VIX 收盤首次突破 40 當天買進。「首次」的定義是之前 30 個交易日內不得出現過突破,避免同一波恐慌重複計算。
  • 訊號 B(降溫再買):最近 120 個交易日內曾出現 VIX 收盤大於 40,且當天收盤回落到 30 以下,同樣加 30 個交易日的去重條件。這是舊文提出的「等恐慌降溫再進場」版本。

兩種訊號都假設買進 S&P 500 並持有 250 個交易日(約一年)。評估指標是前瞻報酬:

Rt,h=Pt+hPt1R_{t,h}=\frac{P_{t+h}}{P_t}-1

其中 PtP_t 是訊號日收盤的指數水準,hh 是持有的交易日數。比較基準是「任意一天買進持有同樣天數」的全樣本平均,這比拿大盤年化報酬比較更公平,因為兩者衡量的是同一種持有行為。資料用 Yahoo Finance 的 ^VIX 與 ^GSPC(價格指數,源頭為 CBOE 與 S&P),下載方式見 yfinance 全球指數教學

順帶更新一個舊數字:舊文說「大盤的平均年報酬率大概是 6%」,那是 2004 至 2019 年那段資料算出來的。全樣本下,S&P 500 價格指數 1990-2026 的年化報酬是 8.6%(不含股息),SPY 含息 1993 年起則是 10.73%,年化的定義是:

CAGR=(PendPbegin)1/y1\text{CAGR}=\left(\frac{P_{end}}{P_{begin}}\right)^{1/y}-1

yy 為經過的年數。如果你對回測流程本身還不熟,可以先讀回測是什麼的入門指南

訊號 A:VIX 突破 40 當天買進,12 次事件全表

兩種 VIX 進場訊號在 S&P 500 走勢上的落點:恐慌當下買 vs 等降溫再買

36 年來,VIX 收盤首次突破 40 只發生過 12 次。每一次的進場點、持有 250 個交易日的報酬,以及持有期間曾經歷的最深跌幅如下:

進場日 事件背景 VIX 收盤 250 日報酬 期間最深跌幅
1998-08-31 LTCM 與俄羅斯違約 44.28 +40.8% 0.0%
2001-09-17 911 恐怖攻擊復市日 41.76 -14.3% -23.2%
2002-07-22 網路泡沫後段 41.87 +21.2% -5.3%
2002-09-19 網路泡沫尾聲 40.65 +21.7% -7.9%
2008-09-29 金融海嘯,TARP 首次被否決 46.72 -5.6% -38.9%
2010-05-07 閃電崩盤與歐債 40.95 +21.3% -7.9%
2011-08-08 美債降評 48.00 +24.3% -1.8%
2015-08-24 人民幣貶值恐慌 40.74 +15.4% -3.4%
2020-02-28 COVID 崩盤起點 40.11 +29.6% -24.3%
2020-06-11 COVID 二次恐慌 40.79 +40.6% 0.0%
2020-10-28 美國大選前恐慌 40.28 +39.9% 0.0%
2025-04-04 關稅衝擊 45.31 +30.3% -1.8%

平均 +22.1%、中位數 +23.0%、勝率 83%(10 勝 2 敗)。把持有期縮短,平均報酬降低但勝率反而更高:持有 125 日平均 +13.1%(勝率 92%),持有 60 日平均 +8.2%(勝率 92%),對照任意時點的 60 日基準只有 +2.3%。

兩次虧損值得放大看。2008 年 9 月 29 日進場後,S&P 500 又繼續跌了 38.9% 才見底,250 個交易日後仍虧 5.6%:這就是舊文用「賠了 40% 的資產,非常恐怖」描述的那條藍線,全樣本重跑後它依然是最痛的一次。2001 年 9 月那次更說明問題:911 復市日進場,60 日後還有 +9.4%,但網路泡沫的下跌趨勢沒有結束,250 日後反而虧 14.3%。VIX 突破 40 抓的是「恐慌尖峰」,不保證是「趨勢底部」,這兩件事在 2008 與 2001 都明確分離過。

另外注意 2020 年出現了三次訊號(2 月、6 月、10 月),三段 250 日的持有期互相重疊,吃到的是同一波 V 型反彈。把它們當成三個獨立樣本會高估訊號的穩定性,這一點在文末的方法限制裡有完整交代。

訊號 B 重檢:等 VIX 降溫再買,舊結論不成立

2020 年舊文的主打結論是:VIX 飆高代表恐慌還沒結束,應該等它降溫(曾破 40、回落到 30 以下)再進場,當時看到的 4 次訊號全部獲利。全樣本重跑後,這個結論翻了一半:

進場日 VIX 收盤 250 日報酬 期間最深跌幅
1998-10-29 29.50 +19.4% 0.0%
2001-10-25 29.46 -18.5% -29.4%
2002-08-15 29.43 +5.8% -16.5%
2002-11-01 29.30 +16.2% -11.1%
2009-05-19 28.80 +25.2% -3.2%
2010-05-10 28.84 +15.1% -11.8%
2011-10-14 28.24 +17.0% -5.4%
2015-08-27 26.10 +9.4% -8.0%
2020-05-08 27.98 +43.4% -3.7%
2025-04-17 29.65 +34.9% -2.4%

每次 VIX 訊號後 250 個交易日的 S&P 500 前瞻走勢:訊號 A 與訊號 B 對照,2008、2020、2025 事件特別標色

降溫進場在 2008 那一輪確實漂亮:2009 年 5 月 19 日才進場,避開了訊號 A 在 2008 年 9 月進場後 38.9% 的下殺,持有期間最深只回檔 3.2%,最後賺 25.2%。但它在 2001 年接到了另一把刀:2001 年 10 月 25 日 VIX 降溫、訊號成立,之後網路泡沫繼續跌到 2002 年 10 月,250 日下來虧 18.5%,途中最深虧 29.4%,比訊號 A 在全樣本的任何一次都慘。

兩相比較:訊號 B 的勝率較高(90% 對 83%)、平均報酬較低(+16.8% 對 +22.1%)、最差一次更深。「等降溫」把接刀的痛從 2008 移到了 2001,並沒有消除它。更要緊的是樣本只有 10 次對 12 次,這種幅度的差異完全可能是雜訊。2020 年舊文用 4 個樣本宣稱降溫進場「可能是比較好的投資方法」,是典型的小樣本過度推論,本次重跑正式收回這個說法。

門檻與持有期敏感度:40 是恐慌,30 只是緊張

只測一組參數容易被「剛好漂亮」的數字騙。把門檻換成 30、40、50,持有期換成 60、125、250 個交易日,九宮格全測:

VIX 門檻與持有期敏感度熱力圖:門檻 40 以上平均前瞻報酬才明顯高於基準,門檻 30 反而不如隨機進場

門檻 樣本數 持有 60 日 持有 125 日 持有 250 日
VIX > 30 31 次 +3.6%(勝率 65%) +5.5%(勝率 61%) +6.1%(勝率 61%)
VIX > 40 12 次 +8.2%(勝率 92%) +13.1%(勝率 92%) +22.1%(勝率 83%)
VIX > 50 3 次 +8.1%(勝率 67%) +13.2%(勝率 67%) +24.3%(勝率 67%)

兩個重要的讀法:

  • 門檻 30 的成績比無條件基準還差:250 日平均 +6.1%、勝率 61%,輸給任意時點進場的 +10.0% 與 81%。VIX 30 出頭通常代表回檔還在進行中,恐慌未到極端就進場,等於在下跌途中接刀。「VIX 高就買」的口訣,門檻設錯比不設還糟。
  • 門檻 50 的數字雖然更高,但樣本只剩 3 次(2008、2020 與其後續),統計上不構成證據。門檻 40 是樣本數與報酬之間比較合理的平衡點,這也是為什麼本文維持舊文參數不動,避免事後挑參數的嫌疑。

把訊號做成連續策略:輸給買進持有

事件研究回答「訊號後平均會怎樣」,但很多讀者真正想問的是:把它當策略執行,長期績效如何?做法:訊號 B 成立就買進 SPY(含股息)持有 250 個交易日,期間再有訊號就延長,其餘時間空手,每次進出場各扣 0.1% 摩擦成本:

VIX 降溫訊號連續部位版與 SPY 買進持有的權益曲線與回撤對照,1993-2026

指標(1993-2026) 訊號 B 連續部位版 SPY 買進持有
總報酬 +371.6% +2,900.7%
年化報酬(CAGR) 4.76% 10.73%
日夏普比率 0.55 0.64
最大回撤 -34.2% -55.2%
持倉時間佔比 26.8% 100%
完整進出次數 7 次 0 次

結果一翻兩瞪眼:33 年下來總報酬差了七倍以上。訊號本身並沒有失準,持倉期間的報酬仍優於平均;真正的問題是恐慌訊號太稀有:73% 的時間抱著現金看市場上漲,錯過的複利遠大於恐慌進場賺到的超額。本回測的空手期間以零報酬計,若計入貨幣市場利息,連續版年化會略高一些,但量級差距不會翻轉。風險調整後也沒有佔到便宜:日夏普 0.55 還低於買進持有的 0.64,距離本站策略文常用的 1.5 標準更遠。

所以這個訊號的正確用途是清楚的:它是「手上剛好有閒置資金時,值得加碼的時點訊號」,承擔的是已知較淺的回撤(-34.2% 對 -55.2%);它不能取代長期持有部位。想看更多把單一指標做成擇時策略的同類實驗,可以對照美國失業率擇時 S&P 500 的回測,結構性的限制非常類似。

2022 年的盲點:整年空頭,VIX 卻沒收在 40 以上

這是全樣本重跑最有價值的發現之一。2022 年 S&P 500 從高點到低點以收盤計下跌 25.4%,是 2008 年以來最長的空頭之一,但 VIX 收盤全年最高只有 36.45(2022 年 3 月 7 日),訊號 A 與訊號 B 全程沒有觸發。等恐慌訊號進場的人整年空手,既沒有在低點買到,也沒有參與 2023 年的反彈起點。

2024 年 8 月 5 日的日圓套利平倉恐慌則暴露另一種失準:VIX 盤中一度衝到 65.73,收盤卻只剩 38.57,以收盤價判斷的規則同樣沒有訊號,而那天事後看是個不錯的買點。

兩件事指向同一個結構性限制:VIX 事件訊號抓的是「急跌」,抓不到「緩跌」,也抓不到「盤中恐慌、尾盤收斂」。2022 年式的陰跌沒有恐慌尖峰,整段下跌對這套規則是隱形的。如果你的進場計畫完全依賴恐慌訊號,就要接受某些空頭從頭到尾不會給你訊號。同場加映:大跌後除了買大盤,還可以用 Python 篩選逆勢強勢股,那是另一種利用恐慌的方式。

學術文獻怎麼看 VIX 與前瞻報酬

恐慌買點的邏輯並非民間偏方,有對應的研究脈絡,引用時也要分清楚每篇支持的是哪一段機制:

  • Whaley (2000) 在《The Investor Fear Gauge》把 VIX 定位成投資人恐懼計,指出 VIX 的異常高點常對應市場短期底部。「VIX 高=逆勢買點」這個直覺的學術源頭就是這篇。
  • Giot (2005) 按隱含波動率水位分組檢驗後續指數報酬,發現極高 VIX 水位之後的中長期前瞻報酬顯著為正。本文「突破 40 後 250 日平均 +22.1%、門檻 30 反而無效」的形狀,與他的分組結果同方向。
  • Bekaert & Hoerova (2014) 把 VIX 平方拆成「預期實際方差」與「方差風險溢酬」兩個成分,發現對未來股市報酬有預測力的主要是後者。這給恐慌買點一個機制解釋:VIX 飆高時投資人為承擔波動索取超額補償,這份補償之後以較高的前瞻報酬實現。

注意這三篇支持的都是「極端恐慌後的前瞻報酬偏高」,沒有任何一篇宣稱以 VIX 擇時能勝過長期持有,這與本文連續部位版的結果一致。

回測方法與限制

漂亮數字沒有方法支撐就只是行銷。本文的口徑與沒做的事,逐項列明:

項目 本文做法
交易成本 事件研究不含任何成本與稅;連續部位版每次進出場各扣 0.1%。美股 ETF 沒有台股的證交稅,實際成本以券商手續費與買賣價差為主
滑價 未假設。訊號以收盤價認定並假設同日收盤價成交,實際執行需盤中估算 VIX 或次日開盤進場,會有小幅落差
標的與股池 無選股,單一標的。事件研究用 ^GSPC 價格指數(不含股息,250 日報酬約低估 2 個百分點),連續部位版用 SPY 調整收盤(含股息)
流動性 SPY 是全球流動性最高的 ETF 之一;指數本身不可直接交易
排除類別 不適用。指數成分股的更替由 S&P 維護,本文層級不受個股下市影響
前視偏差 VIX 與指數皆用當日收盤,無財報或公告對齊問題
權重 全倉單一部位,無上限設定問題
周轉率 連續部位版 33 年只有 7 次完整進出,成本影響極小;空手期間現金報酬以零計,未計入利息
樣本內外 全段 in-sample,未做樣本外或滾動測試。門檻 40/30 與持有 250 日沿用 2020 年舊文設定、未重新優化,降低了事後挑參數的嫌疑,但 12 次與 10 次事件的統計力本來就有限,且 2020 年三次訊號持有期重疊、非獨立樣本

用 Python 自己重跑一次

核心邏輯不到 20 行。下載資料、定義訊號、算前瞻報酬:

顯示程式碼
import pandas as pd
import yfinance as yf
 
# 下載 VIX 與 S&P 500(價格指數)收盤價
vix = yf.download("^VIX", start="1990-01-01", auto_adjust=True)["Close"].squeeze()
sp500 = yf.download("^GSPC", start="1990-01-01", auto_adjust=True)["Close"].squeeze()
 
# 對齊兩個序列的交易日
common = vix.index.intersection(sp500.index)
vix = vix.reindex(common)
sp500 = sp500.reindex(common)
 
# 訊號 A:VIX 收盤首次突破 40(前 30 個交易日內不得出現過突破)
panic = vix > 40
first_panic = panic & (panic.shift(1).rolling(30, min_periods=1).sum() == 0)
 
# 每次訊號後持有 250 個交易日的前瞻報酬
forward_250 = sp500.shift(-250) / sp500 - 1
event_returns = forward_250[first_panic].dropna()
 
print(event_returns.round(3))
print("平均報酬:", round(event_returns.mean() * 100, 1), "%")
print("勝率:", round((event_returns > 0).mean() * 100), "%")

含訊號 B、敏感度矩陣與連續部位版的完整腳本可以下載:strategy.py。重跑時資料比 2026 年 6 月更長,數字會略有不同,屬正常現象。

VIX 對台股投資人同樣有用。台股與美股高度連動,本站在 4 種均線指標濾網實測中,把 VIX 長短均線交叉當成台股部位的空頭濾網跑過完整回測,與本文的「美股、事件式進場、固定持有期」是兩種互補的用法。想把這類規則套在台股策略上,用 FinLab 的 Python 套件最快:pip install finlab 之後 from finlab import data 即可取得台股資料,執行回測時套件會自動引導登入;搭配 yfinance 取 VIX,就能複製本文流程。從零開始的讀者可以先讀量化交易完整指南建立框架,再用程式交易教學把想法變成可自動執行的程式。

常見問題 FAQ

VIX 指數是什麼意思?和 S&P 500 是什麼關係?

VIX 是用 S&P 500 選擇權價格反推的未來 30 天年化隱含波動率,反映市場願意為「保險」付多少錢。它與 S&P 500 高度負相關:指數急跌時避險需求暴增,VIX 飆高;指數平穩上漲時 VIX 通常在 20 以下。

VIX 多少算高?多少算恐慌?

1990 年以來 VIX 收盤中位數是 17.6。20 到 30 屬於緊張,30 到 40 是恐慌,收盤突破 40 是極端恐慌,36 年只發生 12 次、平均約三年一次。歷史最高收盤是 2020 年 3 月 16 日的 82.69。

VIX 超過 40 就應該買美股嗎?

歷史統計站在買方這邊:12 次突破 40 後買進持有 250 個交易日,平均報酬 +22.1%、勝率 83%。但 2008 年那次進場後又跌了 38.9% 才見底,2001 年那次最終虧 14.3%。它是勝算不錯的加碼時點,前提是你拿的是可以承受途中再跌四成的閒置資金。

等 VIX 降溫再進場,會比恐慌當天買更好嗎?

全樣本的答案:勝率較高(90%)、平均報酬較低(+16.8% 對 +22.1%)、最差一次更深(2001 年虧 18.5%)。2020 年舊文宣稱降溫進場較好,是 4 個樣本的過度推論,更長的資料不支持。

為什麼 2022 年美股大跌,VIX 卻沒有給訊號?

2022 年是緩跌:S&P 500 收盤計最深跌 25.4%,但跌勢分散在十個月,沒有單日恐慌尖峰,VIX 收盤最高只到 36.45。恐慌訊號的結構性限制就是只抓急跌,抓不到陰跌。想對崩盤型態做更系統的偵測,可以參考 LPPL 泡沫模型的 Python 實作選擇權 Put/Call 未平倉比率的避險訊號

VIX 本身可以買嗎?

VIX 是計算出來的指數,不能直接買賣。可交易的是 VIX 期貨、選擇權與相關 ETN/ETF,但這些工具有轉倉成本與期限結構問題,長期持有的損耗極大,性質與「買進恐慌指數等它漲」的直覺差距很大,不適合用本文的持有一年框架去操作。

VIX 歷史資料去哪裡下載?

CBOE 官網提供 1990 年起的每日歷史資料;用 Python 最方便的做法是 yfinance 的 ^VIX 代碼,一行程式碼取得完整序列,詳見 yfinance 下載全球指數教學。對量化名詞不熟的話,詞彙表整理了波動率、夏普比率等核心定義。

延伸閱讀

投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。

最後更新:2026-06|回測區間:1990-01 ~ 2026-06(資料截至 2026-06-10)|作者:FinLab 量化研究團隊(經量化研究員審閱)

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多總經與市場研究

查看全部