危機來了要換模型嗎?GW(2006) 條件檢定實測 HAR-RV 與 GJR-GARCH 的贏家會不會隨行情翻盤
讀者互動
已追蹤瀏覽 0 次,登入會員可按讚與收藏。
危機來了要換模型嗎?GW(2006) 條件檢定實測 HAR-RV 與 GJR-GARCH 的贏家會不會隨行情翻盤
摘要
一個流傳很廣的直覺是:平靜行情用簡單模型、危機行情換複雜模型。過去我們在 SPY 與台股用無條件 Diebold-Mariano(DM)檢定跑 HAR-RV 對 GJR-GARCH 的賽馬,每次都只報一個全樣本贏家,卻沒有工具回答「這個贏家會不會因為行情從平靜切到恐慌而換人」。本篇用 Giacomini & White(2006,Econometrica)的條件預測能力檢定,搭配落後一期的 VIX regime 工具變數,直接測試這件事。
結果是一個嚴謹的 NULL:在 SPY(OOS 4,156 天,橫跨 2020 崩盤與 2022 空頭)與 0050.TW(OOS 1,212 天,橫跨 2018 波動與 2020 崩盤)兩個市場、兩種變異數 proxy 上,GJR-GARCH 都小幅、一致地贏過 HAR-RV,高波動與低波動 regime 都是同一個贏家,沒有出現符號翻轉。但這個優勢小到無條件下不顯著(HAC-DM |t| 介於 1.0 到 2.1,全部低於 Harvey(2016)的 3.0 門檻),而判定「贏家是否隨行情翻盤」的直接檢定,regime-slope 檢定,在四組資產與 proxy 組合中全數不顯著。GW 聯合檢定在兩個市場各有一個 proxy 拒絕條件等價,但那反映的是「兩個 regime 都存在的一致小幅優勢」,不是贏家換人。實驗過程還挖出兩個差點讓結論反過來的方法論陷阱,proxy 效度與資料完整性,會在後段細談。
研究背景:一個沒被嚴格檢定過的迷思
「危機來了模型要升級」聽起來合理,但過去 K1049、k1054、k1057、k1063 這幾個 HAR-RV vs GJR-GARCH 賽馬實驗,用的都是無條件 DM 檢定。無條件檢定的邏輯是把整段 OOS 期間的損失差取平均、算一個統計量,本質上假設「誰比較準」這件事在樣本期間內是恆定的。這個假設如果不成立,比如某個模型只在恐慌時期比較準、平靜時期反而較差,兩相抵銷後無條件平均值可能顯示不出顯著差異,也可能被平靜期主導而誤導了整體結論。
Giacomini 與 White 在 2006 年提出的條件預測能力檢定,正是為了處理這個問題。他們把無條件 DM 檢定看作條件檢定的一個特例:如果加入一個描述當下狀態的工具變數(本文用落後一期的 VIX 高低),就可以同時檢驗「平均上誰比較準」與「誰比較準是否隨狀態而變」。近幾年的預測評估文獻(JoE、JBES 2025 到 2026 的相關工作)也重新強調,條件化才是誠實模型選擇的標準做法,而不是無條件平均。K1611 就是把這套框架套進平台的日頻標準賽馬,誠實回答贏家會不會隨行情翻盤。
方法與資料:從「誰贏」升級到「誰在什麼行情下贏」
兩個候選模型維持平台的標準設定。HAR-RV 用三個落後波動率的滾動平均(前一日、前五日、前二十二日)跑展開式 OLS,每天重新估計,每個特徵都是明確的落後一期,訓練列的目標值也嚴格早於預測起點,不會看到未來。GJR-GARCH(1,1) 用常態誤差、每月重新估計參數,一步預測用精確的變異數遞迴公式計算,並且用 arch 套件的內建預測值交叉驗證,確保沒有目標對齊的位移錯誤(K445 的教訓)。
變異數 proxy 用平方報酬(r²,主要)與「日內全距 + 隔夜跳空」的組合(rsov,穩健性檢定),兩者都是對收盤對收盤變異數的不偏估計,公平地對待用收盤報酬校準的 GJR 模型。QLIKE 用 actual / predicted − log(actual / predicted) − 1 的標準方向計算(K783c 慣例),d_t 定義為 QLIKE_HAR 減 QLIKE_GJR,正值代表 GJR 較好。
檢定分三層。第一層是無條件 DM,用 Newey-West HAC 標準誤(資料驅動的落後期數),Harvey(2016)門檻 |t|>3。第二層是 GW 條件檢定,聯合檢定 E[d_t]=0 與 E[regime_{t-1}·d_t]=0 是否同時成立,統計量在虛無假設下服從自由度 2 的卡方分配。第三層,也是判定「贏家是否隨行情翻盤」的正確工具,是 regime-slope 迴歸:d_t = a + b·regime_{t-1} + e_t,用 HAC 標準誤檢定 b 是否顯著不為零。b 顯著才代表兩個 regime 的損失差確實不同;GW 聯合檢定拒絕只代表「模型在條件上不等價」,不能直接讀成「贏家換人」,這是本文要特別澄清的一點。
regime 工具變數的定義是 regime_{t-1} = 1{VIX_{t-1} > 擴張式中位數(VIX_{0..t-1})},用落後一期的 VIX 對比只用過去資訊算出的擴張式中位數,嚴格屬於 t-1 期資訊集合,不含前視。
| 資產 | 期間 | OOS 樣本數 | Regime 工具變數 | 橫跨的行情 |
|---|---|---|---|---|
| SPY | 2005-01 至 2026-07(yfinance,自動還原股利) | 4,156(2009-12-21 至 2026-07-01) | ^VIX | 2020 COVID 崩盤、2022 空頭 |
| 0050.TW | 2014-01-06 起的乾淨窗口 | 1,212(2017-01-10 至 2021-12-30) | 台指VIX(VIXTWN) | 2018 波動急升、2020 COVID 崩盤 |
SPY 高波動 regime 有 1,932 天、低波動 regime 有 2,224 天;0050.TW 高波動 regime 有 807 天、低波動 regime 有 405 天。兩個市場的樣本都夠大,足以支撐一個 df=2 的 GW 檢定與一個迴歸斜率檢定。
核心發現:GJR-GARCH 小勝,但不隨行情反轉
主結果如下表,主要 proxy 為 r²,HAC 頻寬取保守的資料驅動落後期數:
| 資產 | proxy | 樣本數(OOS) | QLIKE 均值 HAR / GJR | 無條件 DM(HAC |t|、p 值) | GW 聯合檢定 χ²(HAC、p 值) | Regime-slope b(t、p 值) | 高 VIX regime 平均 d(贏家) | 低 VIX regime 平均 d(贏家) |
|---|---|---|---|---|---|---|---|---|
| SPY | r² | 4,156 | 1.765 / 1.579 | 2.12(p=0.034) | 57.3(p 極小) | 0.163(t=0.86,p=0.39) | 0.273(GJR) | 0.110(GJR) |
| SPY | rsov | 4,156 | 0.447 / 0.435 | 1.20(p=0.232) | 5.02(p=0.081) | −0.011(t=−0.52,p=0.60) | 0.006(GJR) | 0.017(GJR) |
| 0050.TW | r² | 1,212 | 1.984 / 1.947 | 1.25(p=0.211) | 5.47(p=0.065) | −0.051(t=−1.00,p=0.32) | 0.020(GJR) | 0.070(GJR) |
| 0050.TW | rsov | 1,212 | 0.646 / 0.582 | 1.01(p=0.311) | 20.8(p=3.0×10⁻⁵) | −0.019(t=−0.20,p=0.84) | 0.058(GJR) | 0.077(GJR) |
四行有三個重點需要逐一講清楚。
第一,GJR-GARCH 在兩個資產、兩種 proxy 上都是贏家,而且高低兩個 regime 都是贏家,沒有一格出現符號翻轉。但這個優勢的絕對值不大,換算成無條件 HAC-DM 統計量,最高也只到 2.12(SPY r²),其餘三格都在 1 到 1.3 之間,全部不到 Harvey 的 3.0 顯著門檻。換句話說,GJR 的平均表現略優於 HAR,但這個差距在統計上稱不上顯著。
第二,也是判定行情翻盤與否的關鍵,regime-slope 檢定的四個 t 值分別是 0.86、−0.52、−1.00、−0.20,p 值全部大於 0.3,沒有一格顯著。更值得留意的是,四格裡有三格的點估計是負值,代表 GJR 的優勢在高 VIX regime 反而略小一點,方向剛好與「GJR 危機時大放異彩」的直覺相反。這個直接檢定給出的答案很明確:贏家沒有隨行情翻盤。
第三,GW 聯合檢定在每個資產各有一個 proxy 顯著拒絕條件等價:SPY 用 r² 時 GW 統計量高達 57.3、p 值極小,0050.TW 用 rsov 時 p 值是 3.0×10⁻⁵;但換另一個 proxy,SPY 的 rsov(p=0.081)與 0050.TW 的 r²(p=0.065)都沒有拒絕。這個拒絕不能直接解讀成「模型會隨行情換人」。GW 檢定的自由度是 2,同時檢驗 E[d_t]=0 與 E[regime_{t-1}·d_t]=0 是否成立,只要無條件損失差本身不是零,就足以讓聯合檢定拒絕,跟兩個 regime 的損失差是否不同是兩件事。這裡的拒絕,對照 regime-slope 檢定的不顯著結果,反映的正是「兩個 regime 都存在、但幅度接近的一致小優勢」,而不是某個 regime 特有的效應。
下面兩張圖是原始實驗輸出,上半部畫出累積損失差(d_t 的累積和)並用陰影標出高 VIX 期間,下半部列出各 regime 的平均 d_t 以及 GW/regime-slope 統計量。

SPY,2009-12-21 至 2026-07-01,n=4,156。上圖累積線持續向上代表 GJR 持續小幅優於 HAR;陰影區塊是高 VIX regime,線的斜率在陰影內外沒有系統性差異,呼應下方 regime-slope 檢定不顯著的結果。

0050.TW,2017-01-10 至 2021-12-30,n=1,212。同樣的累積損失差圖,樣本涵蓋 2018 波動急升與 2020 COVID 崩盤兩段高 VIX 期間。
兩個差點推翻結論的方法論陷阱
這個實驗在收斂到最終結論之前,踩過兩個坑,記錄下來對做類似日頻波動率賽馬的人應該有參考價值。
第一個是 proxy 效度陷阱。變異數 proxy 若只用日內全距(純 Parkinson estimator),就會漏掉隔夜跳空的貢獻,對收盤對收盤變異數會系統性低估。診斷結果指出,純 Parkinson 抓到的變異數水準只有 r² 的 44% 到 61%(SPY 61%、0050.TW 44%),而 GJR 的一步預測是針對收盤對收盤報酬校準的。用一個系統性偏低的 proxy 去評分 GJR,等於是機械性地懲罰它,同時虛假地墊高「proxy 剛好匹配」的 HAR 表現。初版分析誤用純 Parkinson 當主要 proxy,跑出 0050.TW 上 |DM t|=49 的結果,數字好到不合理,正是「太好等於有問題」的典型警訊。修正後這個 proxy 被排除在正式賽馬之外,只保留當診斷用途,正式比較改用 r² 為主、range 加隔夜跳空的 rsov 做穩健性檢定。
第二個是資料完整性陷阱,而且後果更嚴重。0050.TW 的原始 yfinance 資料裡,2014-01-02 這一天有一筆異常報價,還原後收盤價從 37.41 一夜之間跳到 9.33,一夜蒸發掉約四分之三的價值,是一筆量級極端的異常報價。這種等級的離群值餵進 GJR 的變異數遞迴後,α 乘上一個極端離群的殘差平方,把接下來整整一個月的條件變異數估計都污染了。第一版分析在這個壞資料上跑出一個「穩健的 regime-dependent」結論,而且因為這個臨界值對浮點數捨入極度敏感,同一組程式碼重複執行還會得到不同答案,結果本身不可復現。修正方式是把 0050.TW 的樣本起點限制在異常點之後的乾淨窗口(2014-01-06 起),並且加入兩道資料閘門:任何超過交易所漲跌停限制的報酬會直接讓程式中止,GJR 手動遞迴與 arch 套件內建預測值的落差若超過容忍值也會中止。修好之後,兩個交叉驗證的相對誤差都落在機器精度等級(3×10⁻¹⁶),結論翻回 null,而且同一組程式碼重跑會得到位元對位元一致的結果。
這兩個陷阱有一個共同教訓:日頻波動率賽馬如果跑出「好得不像話」或「跟預期完全吻合」的結果,第一反應不該是慶祝,而是先去查 proxy 定義跟資料品質。本實驗最早版本的「regime-dependent」結論,其實是這兩個陷阱疊加造成的假象,清理過後才顯露出真正的 null。
實務與研究意義
對實務操作者,這個結果的意涵很直接:不需要因為市場從平靜切到恐慌就換一套波動率模型。GJR-GARCH 在兩個市場、兩個 regime 都是穩定的小幅贏家,但差距小到不足以支撐「危機時一定要用複雜模型」這種強烈主張。如果模型維護成本、重新校準頻率、對交易系統的相容性都要納入考量,一個全樣本都表現穩定的模型可能比在不同行情間切換更務實。
對做預測評估研究的人,這個結果補上了一塊過去缺的驗證。過去的無條件 DM 賽馬只給一個全樣本贏家,理論上有可能掩蓋了平靜期與危機期贏家互換、平均後互相抵銷的情形。GW 框架提供了直接檢驗這個可能性的工具,檢驗結果指出,過去的無條件贏家模糊,並不是被隱藏的狀態效應所掩蓋,這個模糊是真實的:GJR 確實稍微好一點,但好得不夠多、也不夠因行情而異。這對後續要不要投入資源開發 regime-switching 或 state-dependent 的日頻波動率模型,是一個可參考的基準線。
限制與穩健性
日頻變異數 proxy(無論 r² 或 rsov)雜訊都不小,這會壓低 regime-slope 檢定的檢定力,一個真實但幅度不大的行情效應有可能因此偵測不到。不過,四組結果一致不顯著,加上三格點估計方向剛好與「危機時更好」的直覺相反,這些跡象合在一起,比較支持「沒有大型 regime 效應」而不是「效應被雜訊蓋住」。0050.TW 的 OOS 樣本受限於乾淨窗口與 VIXTWN 資料涵蓋範圍,只落在 2017 到 2021 年,只包含一次真正的危機(2020),樣本代表性比 SPY 橫跨 2009 到 2026、涵蓋兩次危機要弱一些。GW 條件化目前只用單一二元 VIX regime 工具變數,用連續 VIX 水準、期限結構或總體變數當工具變數的延伸版本,留給後續研究。
本實驗經過 Codex 第一輪程式碼審查,找出五項問題並全數修正,其中最重要的一項正是提醒不能把 GW 聯合檢定的拒絕直接讀成 regime-dependent 的贏家翻轉,這也是為什麼最終判定改成以 regime-slope 檢定為準。第二輪確認性複審尚未完成,因此結論狀態記為條件通過,而不是完全通過,後續若要用在論文層級的引用,會再補一輪複審。
結論
用 Giacomini-White(2006)條件檢定重新檢驗 SPY 與 0050.TW 的 HAR-RV 對 GJR-GARCH 賽馬,答案是誠實的 NULL:GJR-GARCH 在高波動與低波動 regime 都小幅領先,領先幅度小到無條件下不顯著,而且直接測試行情依賴性的 regime-slope 檢定在四組資產與 proxy 組合中全數不顯著。GW 聯合檢定的局部拒絕,反映的是一致存在於兩個 regime 的小優勢,不是贏家換人。這個結果本身雖然不是一個能寫進交易規則的訊號,但它把過去的無條件賽馬結論放進了一個更嚴謹的框架裡重新檢驗過一次,同時留下兩個對後續研究有用的方法論提醒:日頻變異數賽馬務必用收盤對收盤一致的 proxy,以及任何「好得不像話」的結果都應該先懷疑資料品質。
本文基於實驗 K1611(腳本:experiments/K1611/K1611.py,結果:experiments/K1611/K1611_results.json)。資料來源:yfinance(SPY、0050.TW 日頻 OHLC)、CBOE(^VIX)、台指VIX(VIXTWN,歷史資料歸檔於 experiments/k1098/k1098_vixtwn_daily.csv)。SPY 樣本期間 2005 至 2026 年、OOS 4,156 個交易日;0050.TW 樣本期間 2014 至 2021 年、OOS 1,212 個交易日。相關實驗:K1049、k1054、k1057、k1063(本文檢定的原始無條件 DM 賽馬)、K445(GJR 目標對齊規則)、K783c(QLIKE 方向慣例)、K1355(不可跨資產混合檢定)。
相關文章
先讀正式關聯,若無則使用標籤與主題相似度補齊