VIX 切太早,反而吃掉報酬:用 VIX 期限結構斜率重新校準「保守 VT」
讀者互動
已追蹤瀏覽 0 次,登入會員可按讚與收藏。
VIX 切太早,反而吃掉報酬:用 VIX 期限結構斜率重新校準「保守 VT」
TL;DR 線上保守型 VT 用 VIX 水準閾值(>22 切現金)2018 至今年化 6.1%、Sharpe 0.54,遠輸 Buy&Hold 的 16.8%、0.81。改用 VIX/VIX3M 斜率,且只在斜率 ≥1.05(短端恐慌遠超長端)時切現金,OOS Sharpe 升到 0.92、MDD -24.5%、Calmar 0.63,是五策略中唯一同時把風險與報酬都做出來的版本。但 bootstrap 雙尾 p=0.096、Bonferroni 校正後 p≈0.29,Codex 給的是 CONDITIONAL_PASS 而非 PASS。
一、線上 VT 策略的盲點:VIX 水準閾值切太早
VolPred 線上保守型 VT 用一條簡單規則:VIX 高於某個閾值就把倉位切到現金,等恐慌過去再回場。邏輯本身沒問題,VIX 站上 25、30 確實常常對應市場顛簸。
問題是「閾值」這個設計把所有資訊壓縮成一個數字。VIX=22 可能是 SPY 從高點回檔 5% 的小擾動,也可能是 2020 三月那種真的要崩的訊號,一視同仁處理。
我們把 VIX 水準閾值在 IS(2010–2017)做 grid tune,最佳閾值落在 22。套到 OOS(2018-01 至 2026-06-13、2,123 個交易日),結果是年化報酬 6.1%、Sharpe 0.54、最大回檔 -23.0%。
同期間單純 Buy&Hold 的 Sharpe 是 0.81、年化 16.8%。這套保守 VT 確實壓低了回檔,代價是把 alpha 也削掉一大塊,等於用很高的成本買了一份未必需要的保險。
K1335 想問的是:如果改用 VIX 期限結構斜率(VIX/VIX3M)當訊號,會不會比單看 VIX 水準準?
二、斜率比水準更精準?K1335 五策略對照
VIX/VIX3M 斜率 >1.0 在期權市場是 backwardation 訊號:短端隱含波動率高於長端,代表交易者押注「近期」會有事。教科書版的閾值就是 1.0;我們同時測 0.95(更早切)與 1.05(只在極端時切)。
OOS 期間 2018-01-01 至 2026-06-13,n=2,123,資料來源 yfinance,全部策略都用 signal.shift(1) lag、每邊交易成本 tc_per_side=0.001,seed=42:
| 策略 | 年化報酬 | 年化波動 | Sharpe | MDD | Calmar | turnover |
|---|---|---|---|---|---|---|
| Buy & Hold | 16.8% | 19.2% | 0.81 | -33.7% | 0.50 | 0.0 |
| VIX level (th=22, 線上保守 VT 邏輯) | 6.1% | 11.1% | 0.54 | -23.0% | 0.27 | 14.72 |
| Slope 1.00(教科書 backwardation) | 12.1% | 14.4% | 0.80 | -30.1% | 0.40 | 13.3 |
| Slope 0.95(敏感切) | 8.8% | 12.4% | 0.68 | -29.0% | 0.30 | 22.8 |
| Slope 1.05(只在極端切) | 15.5% | 15.7% | 0.92 | -24.5% | 0.63 | 5.0 |
斜率 1.0 的版本基本上跟 Buy&Hold 打平(Sharpe 0.80 vs 0.81),低 turnover 也沒帶來明顯優勢,但至少沒像水準閾值那樣把報酬切掉一半。
0.95 更敏感的版本最慘,turnover 飆到 22.8、報酬只剩 8.8%,每次過早切現金都被 V-shape 反彈打臉。
真正有意思的是 1.05。turnover 從 14.72 砍到 5.0、Sharpe 從 0.54 拉到 0.92、MDD 從 -33.7%(B&H)降到 -24.5%,Calmar 0.63 是五策略中最高。
年化 15.5% 雖然略輸 B&H 的 16.8%,但用 9% 的報酬差換 9% 的回檔改善,這個 trade-off 是合理的。
三、equity curve 與 drawdown


2020 三月 COVID、2022 升息、2025 末的修正三次都看得到 slope_1_05 的曲線在拉開差距。它沒有每次都比 B&H 早離場,事實上很多小回檔它根本沒動。
碰到斜率衝到 1.05 以上的真實恐慌(2020-03、2022-02、2022-09 那幾次)才會果斷切現金,等斜率回落再回場。
四、機制:切太早 vs 切太晚的 trade-off
VIX/VIX3M 斜率反映「市場對近期 vs 中期波動的相對定價」。平時這個比值在 0.85–0.95 之間(contango,長端高於短端,正常狀態),出現急跌或事件衝擊時短端會先暴衝,比值才會翻過 1.0。
閾值設 0.95 等於把正常 contango 末端也當訊號,誤判率高、turnover 高,每個月都在繳「假警報稅」。
閾值設 1.0 抓得到 backwardation 開始,但 backwardation 初期常常是「假突破」,會看到很多次切了又切回來。
閾值設 1.05 等於只回應「短端比長端高 5% 以上」的極端訊號。這種狀態在過去 16 年大概只出現過 50–60 次,每次幾乎都對應真實的市場壓力,所以 turnover 才會壓到 5.0。
1.05 這個閾值的優勢來自「有耐心」。它放掉所有看起來像 backwardation 但其實只是雜訊的訊號,只在訊號夠強的時候才動。
五、結論與後續
斜率訊號相對 VIX 水準閾值有方向性優勢(Sharpe +0.38、turnover 只有三分之一),這個方向跟我們對「期權市場資訊密度比現貨指數高」的先驗一致。
但 bootstrap p=0.096 在多重比較校正後 p≈0.29,技術上是 CONDITIONAL_PASS,還沒到可以直接上架 VolPred 策略板的程度。
下一步是把 IS-tuning 的 asymmetry 修掉(VIX 水準閾值有 IS tune、slope 沒有),加上 walk-forward 與 multi-test honest framework(避免 grid 偷看 OOS),交易成本改用 round-trip 而非 per-side,再跑一次。
若 honest framework 下 p<0.05 仍能保住,這就是 slope_vt_overlay_v1 候選策略。若退到不顯著,仍可作為線上保守 VT 的修補建議(把水準閾值換成斜率閾值,至少不會像現在這樣吃掉那麼多 alpha)。
來源
- 實驗 K1335:
experiments/K1335/K1335.py、結果experiments/K1335/K1335_results.json - 資料:yfinance(SPY、^VIX、^VIX3M),2010-01-01 至 2026-06-13,OOS n=2,123
- Codex review verdict:CONDITIONAL_PASS(reviewer Codex CLI gpt-5.4,2026-06-15 08:21 台灣時間),caveats: multi_test_bonferroni_failed、is_tuning_asymmetric、tc_per_side_not_round_trip
- 對應線上策略:保守型 VT(VIX 水準閾值邏輯);候選改進策略
slope_vt_overlay_v1
相關文章
先讀正式關聯,若無則使用標籤與主題相似度補齊