← 研究動態
研究2026/05/24 下午12:07

VIX 期貨曲線真能當交易訊號嗎?我們抓到自己的 lookahead bug

ContangoVIX研究誠實交易策略期貨曲線槓桿錯覺

讀者互動

已追蹤瀏覽 0 次,登入會員可按讚與收藏。

分享到:LINEFacebookX / Twitter

VIX 期貨曲線真能當交易訊號嗎?我們抓到自己的 lookahead bug

VIX 期貨經常處在 contango(遠月比近月貴),市場上有不少策略宣稱可以靠這條曲線形狀做擇時。我們在 SPY 上跑了 4482 個交易日的回測,最後得到一個誠實但不討喜的結論: VIX 期貨曲線訊號本身,沒有比「直接調整槓桿」多帶來任何價值(Newey-West 統計強度 0.37) 。更重要的是,過程中我們抓到自己的程式碼有 lookahead bias,修正後優勢就消失。本文記錄這次「失敗」,因為它比成功更值得寫。

[提出: 賴奕豪, 執行: Claude]

一條看似漂亮的訊號

VIX 期貨曲線(VIX term structure)是 vol 圈最常被拿來說嘴的訊號之一。它的故事很簡單:

  • 當市場平靜, 遠月 VIX 期貨 (例如 3 個月後到期)會比 近月 VIX (spot 或最近月)貴一些。這狀態叫  contango ——投資人對「未來不確定性」要求風險溢酬,所以遠月貴。
  • 當市場恐慌,整條曲線會反轉:近月 VIX 飆高,遠月相對偏低。這叫  backwardation ——大家覺得短期內波動會更可怕。

直覺上,這個形狀看起來就像市場的「體溫計」:曲線越陡峭的 contango,市場越平靜;倒掛得越深,恐慌越濃。

於是一個很自然的策略冒出來: contango 時加碼股票、backwardation 時減碼 。聽起來合理對吧?這也是我們在 K671 想驗證的核心問題: VIX 期貨曲線的形狀,到底是不是一個有用的交易訊號? 

樣本與資料

  •  資產 :SPY(標普 500 ETF)
  •  訊號來源 :VIX(^VIX,現貨)與 VIX3M(^VIX3M,3 個月隱含波動率指數)
  •  Contango 訊號 :(VIX3M − VIX) / VIX,即 3 個月相對近月的溢價比例
  •  樣本期間 :2008-06-04 ~ 2026-03-27,共  4482  個交易日
  •  資料來源 :yfinance

注意:我們用 VIX3M 取代真正的 VIX 期貨曲線,因為 VIX3M 是免費可取得的近似指數(CBOE 編製,模擬 3 個月期 VIX 期貨)。VIX 期貨本身需要付費資料,且涉及期貨展期,把問題複雜化。VIX3M 在學術文獻(Mixon 2007, Johnson 2017)裡是常用的代理變數。

訊號的描述統計:

統計量數值
平均 contango11.4%
標準差9.4%
中位數12.1%
最小值-30.1%
最大值40.8%
偏態-0.53
超額峰態0.88

也就是說, 平均而言遠月比近月貴 11.4% ,是一個系統性的風險溢酬。

更關鍵的是  regime 分佈 :

Regime天數佔比
全部 contango411089.6%
陡峭 contango(>5%)350776.5%
Backwardation47510.4%

 76.5% 的時間市場都處於陡峭 contango 。這個事實會在後面變成關鍵。

五個策略 vs. 兩個基準

我們設計了以下策略,都是基於「12/VIX」這個 well-known 的 vol-targeting 邏輯,目標年化波動率 12%,每日權重 = 12/VIX_lagged,capped at 100%:

  1.  Buy & Hold SPY :滿倉 SPY,不擇時。
  2.  Standard 12/VIX (baseline):純 vol-targeting,不看 contango。
  3.  Contango Enhanced :當 contango > 5% 時把權重再 +20%。
  4.  Backwardation Reduced :當 contango < 0(倒掛)時把權重砍 50%。
  5.  Combined :3 + 4 同時用。
  6.  Contango Binary :只有 contango > 0 才進場。
  7.  Leverage-Matched 12/VIX (這是真正的對照組):純 vol-targeting,但平均槓桿故意調到跟 Combined 一樣。

第 7 個策略是這次研究的關鍵。後面會解釋為什麼。

全期間結果,表面上 contango 訊號「贏了」

策略CAGR年化波動Sharpe最大回撤平均權重
Buy & Hold11.0%19.9%0.475-50.7%1.00
Standard 12/VIX6.95%9.49%0.603-23.2%0.69
Contango Enhanced8.00%10.78%0.621-24.6%0.81
Backwardation Reduced7.02%8.76%0.660-17.9%0.67
 Combined 8.07%10.15% 0.667 -19.4%0.79
Contango Binary7.13%8.50%0.692-16.6%0.65
 Leverage-Matched 12/VIX 7.82%10.83%0.603-26.1%0.79

乍看 Combined 策略 Sharpe 0.667 比 Standard 0.603 好,看起來 contango 訊號真的有效,直到你看 Leverage-Matched 那一行。

為什麼 Combined 看起來贏?因為它 槓桿比較高 

這是整個故事的轉捩點。

仔細看  平均權重 那一欄:

  • Standard 12/VIX:0.69(保守)
  • Combined:0.79(明顯加碼)
  • Leverage-Matched 12/VIX:0.79( 故意調成跟 Combined 一樣 )

也就是說,Combined 平均槓桿是 Standard 的  1.14 倍 。它表面上的 Sharpe 優勢,可能單純是因為 它平均吃了更多市場 beta ,而不是 contango 訊號真的在做什麼擇時。

於是我們做了  Leverage-Matched 對照 :把 Standard 12/VIX 的權重等比例放大,讓平均權重 = 0.79(跟 Combined 一樣),但 不看 contango 訊號 。結果:

  • Combined Sharpe =  0.667 
  • Leverage-Matched Sharpe =  0.603 

差距只剩 +0.064。

接著跑  Newey-West 修正後的 t 檢定 (針對日報酬序列相關性穩健):

比較年化日均報酬差(bps)NW 統計強度NW p-value
Combined vs Standard+1.051.7480.081
 Combined vs LevMatch(公平比較)  +0.24  0.368  0.713 

 0.368 的 t 值,達顯著水準(顯著性 0.71)。這在統計上完全不顯著。 

這就是 NULL:訊號 ≈ 槓桿

研究誠實的結論很清楚:

 VIX 期貨曲線的 contango/backwardation 訊號,沒有比「直接把 vol-targeting 槓桿開大」帶來任何額外價值。 

為什麼?回頭看 regime 分佈—— 76.5% 的時間都是陡峭 contango 。這代表「contango > 5% 就 +20% 權重」這個規則,幾乎等於「永遠 +20% 權重」。它根本不是擇時訊號,只是一個 換了名字的槓桿提升 。

換句話說,Contango Enhanced 策略真正在做的事是:「平均把槓桿從 0.69 拉到 0.81,順便丟一些 backwardation 期間的減碼」。前者貢獻了大部分績效;後者貢獻了背景雜訊。

Cross-OOS 驗證再補一刀

我們把樣本切成 6 個子期間(GFC 復甦、長牛、COVID、後疫情、2024-2026 等),看 Combined vs Leverage-Matched 在每段的 Sharpe 差距:

期間Δ Sharpe(Combined - LevMatch)
2014-2015-0.06
2016-2017-0.04
2018-2019-0.00
2020-2021+0.27
2022-2023-0.06
2024-2026+0.15

 6 段裡只有 2 段贏(33%) 。如果 contango 訊號真的有資訊量,這個 win rate 應該要顯著高於 50%。33% 看起來更像隨機,而且 2020-2021 那段「贏」很可能是因為 COVID 期間 backwardation 訊號剛好抓到一兩次大恐慌(樣本只有 253 天,雜訊很大)。

我們抓到自己的 Lookahead Bug

研究做到這裡,故事還沒講完。最值得寫的其實是這段。

最初的版本,我們用「 今天 的 contango 訊號」來決定「 今天 的權重」。乍看沒問題,資料本來就是日資料,contango 是當天計算的。

但仔細想:如果你想用 contango 訊號決定今天的部位, 你必須在開盤前就知道今天的 contango 。可是 contango 是用 VIX 和 VIX3M 計算的,而 VIX/VIX3M 都是市場交易期間動態變動, 今天的收盤值要等收盤後才知道 。

如果你用「今天的收盤 contango」決定「今天日內的部位」,你就是用未來資訊在交易。這就是經典的  lookahead bias 。

修正方式很簡單: 所有訊號都 lag 一天 ——用 t-1 的 contango 決定 t 的權重,用 t-1 的 VIX 決定 t 的 vol-targeting。

修正前的版本,Combined Sharpe 看起來更漂亮一些;修正後(也就是上面所有數字),訊號優勢就消失了。Results JSON 裡明確記錄:"look_ahead_bias_fix": "All weights use lagged (t-1) contango and VIX signals"

這就是研究誠實原則的具體展現。如果我們選擇「不修正、發 paper、宣稱訊號有效」,數字會比較好看,但結論會是錯的。

為什麼要寫這篇文章?

因為 研究失敗的故事比成功的故事更重要 。

第一,市場上有不少 ETF 和策略宣稱用 VIX term structure 做訊號(VXX/VIXY 的 backwardation 反向策略、SVXY 的 contango harvesting 等等)。它們是不是真的有訊號價值?還是只是把「結構性放空 vol」這個 beta 換個包裝?K671 的結果暗示: 先把槓桿對齊,再來談訊號 。

第二, lookahead bias 是量化研究最常見也最隱蔽的 bug 。它不會讓你的程式 crash,不會讓回測結果看起來離譜,它只會讓你的 Sharpe 多 0.05~0.2。然後你發 paper、上 strategy、開始虧錢,才意識到問題。我們在 K671 抓到了,但下一個實驗還會再犯,所以我們把每個訊號的 lag 規則寫進團隊的 experiments.md,作為 hard rule 持續檢查。

第三, 「槓桿錯覺」是策略比較最常被忽視的陷阱 。如果你比較兩個策略,但平均權重不一樣,那你比較的就不是「訊號好壞」而是「槓桿大小」。這個錯誤在 vol-targeting / risk-parity / managed futures 文獻裡反覆出現,學界已經有專門的 leverage-matched benchmark 慣例。我們希望透過 K671 把這個 discipline 帶進個人交易者的視野。

對讀者的實務建議

  1. 看到任何宣稱「XX 訊號改善 Sharpe」的策略時,先問: 「跟 leverage-matched baseline 比過了嗎?」  如果沒有,這個 Sharpe 改善很可能只是槓桿錯覺。
  2.  76.5% 的時間都是 contango ——所以「contango 時加碼」幾乎等於「永遠加碼」。這不是擇時,這是更積極的部位。
  3. 對波動率 ETF(VIXY、VXX、SVXY)感興趣的讀者:roll yield 是真實的,市場確實長期會付出 contango 溢酬給空 vol 的人。但這是  risk premium 不是 alpha 。它的代價是 backwardation 期間的尾部風險(2018 年 2 月 XIV 的 96% 一日跌幅就是經典案例)。
  4. 自己做回測時, 所有訊號都先 lag 一天 作為預設規則。如果你的策略加了 lag 後優勢就消失,那它本來就不是訊號,只是 lookahead。

結論

 VIX 期貨 contango/backwardation 訊號,在 SPY 擇時這個情境下,沒有比簡單的槓桿調整提供額外價值(NW 統計強度 0.37, 達顯著水準(顯著性 0.71),6 個 OOS 段 win rate 33%)。 

這不是說 VIX 期貨曲線沒有任何資訊,它對波動率本身的預測(K638 在這方面有後續結果)、對 VIX 期貨展期收益的解釋、對市場恐慌程度的描繪,都還是有價值。但 用它來擇時 SPY 部位 這個特定應用,過了 leverage-matched 公平比較這一關後,就站不住腳了。

研究做到這裡,最該被記住的其實不是哪個 Sharpe 數字,而是兩件事: 先做 lag、再做比較 。前者防 lookahead bias,後者防槓桿錯覺。這兩個 discipline,比任何單一策略結果都更值得長期內化。

資料來源

  •  實驗代號 :K671(VolPred 研究系統)
  •  資料 :SPY、^VIX、^VIX3M(yfinance)
  •  樣本期間 :2008-06-04 ~ 2026-03-27(4482 個交易日)
  •  方法 :日頻 vol-targeting + contango 訊號疊加,Newey-West HAC 修正 t 檢定,6 段 cross-OOS 驗證
  •  相關實驗 :K638(VIX term structure slope 對波動率本身的預測力,VolPred 內部研究)
  •  學術參考 :Mixon (2007) JEF "The implied volatility term structure"、Johnson (2017) JFQA "VIX term structure"、Alexander & Korovilas (2013) JoR "Diversification of equity with VIX futures"

圖表

K671 全期間 6 策略風險調整後報酬與最大回撤對比

Cross-OOS 子期間:Combined 策略 vs 基準

相關文章

先讀正式關聯,若無則使用標籤與主題相似度補齊

📄
VIX 自己的波動率,能不能預測 VIX?
# VIX 自己的波動率,能不能預測 VIX? > 一個誠實的弱訊號:自製 vol-of-vol 在統計上贏 AR(1) baseline,但過不了多重檢定。 ## 我們在問什麼 VIX 是市場的「恐慌溫度計」,每天上下跳。一個自然的問題是:**VIX 自己的波動率(vol-of-vol),能不能預測明天 VIX 的水位或變動幅度?** 業界做這件事通常會用 VVIX,也就是「VIX 選擇...
📄
把 VIX 期限結構算成「波動風險溢酬」,能預測美股回檔嗎?4500 天回測,答案是不行
# 把 VIX 期限結構算成「波動風險溢酬」,能預測美股回檔嗎?4500 天回測,答案是不行 VIX 大家都熟。它是市場恐慌指數。 但市場其實還有兩個少人提的兄弟:VIX3M(3 個月版)和 VIX6M(6 個月版)。把這三個拉出來看「斜率」,理論上能告訴你交易員對未來幾週與未來半年的恐慌定價差多少。 更進一步,把 IV²(隱含波動率平方)減去同期間的實現波動率平方,就是學界很重視的 VRP...
📄
新興市場主權債的波動率,能提前預告 EM 股市風暴嗎?一次誠實的否定(K1621)
新興市場的美元主權債,波動起來的時候,會不會比股市早一步聞到火藥味?如果會,那些免費就能取得的債券 ETF 與信用利差,或許能當作跨資產的預警訊號。我們用 2015 到 2026 十一年的資料把這個念頭認真測了一遍,結論很乾脆:**不會**。主權信用的「波動率」和新興市場股票的波動率幾乎是同一時間一起動的,不存在可以拿來做日頻預測的領先關係。 這是一個 NULL 結果,但它是乾淨、可複現、而且對...