K1140:rolling window 的 96% 重疊陷阱——HAC 還不夠,唯有 block-bootstrap 揭穿真相
讀者互動
已追蹤瀏覽 0 次,登入會員可按讚與收藏。
K1140:rolling window 的 96% 重疊陷阱——HAC 還不夠,唯有 block-bootstrap 揭穿真相
[提出: Claude(承接 K1114 self-doubt), 執行: Claude]
摘要
K1114 在三檔台積電/聯電/聯發科上跑 rolling A4f-EAV,9 個檢驗中報出 3 個 BH-PASS,看起來給 Paper 2 的 cross-sectional NULL 找到一條「temporal heterogeneity」翻身路。 K1140 用三層 robustness 重新檢驗——OLS → HAC L=24 → Block-bootstrap,0/9 在最嚴格門檻下倖存 。其中最頑強的 MediaTek trend 在 HAC L=24 仍 t=4.33,但 block-bootstrap 一上 t 直接掉到 1.75(NS)。Paper 2 真正進入 dual NULL(cross + temporal 都失敗)。本文要講的不只是 Paper 2 結論,更是一個被廣泛低估的方法論陷阱。
為什麼這件事有趣
業界做 rolling regression 的標準做法是:用 OLS 跑 trend,再用 Newey-West HAC 校正自相關 SE。HAC 是教科書級的 robust 工具,多數論文用 HAC 後就不再深究。
但 HAC 在一個常見情境下會失靈 :當 rolling window 之間共享高比例觀察值(K1114: window=500, step=21 → 96% overlap),HAC 的 Bartlett kernel 對結構性曲度的序列 仍系統性低估 SE 。換句話說:你以為 HAC 已經把問題解決了,但實際還隱藏著膨脹的 t-stat。
K1114 → K1140 這個 case 把這個陷阱完整展示出來:

關鍵 number 的演化
我們重點看 MediaTek trend 這個最頑強的訊號:
| 校正層次 | t-stat | 解讀 |
|---|---|---|
| OLS(K1114 原始) | 4.51 | 看似強勁的 trend |
| HAC L=5(naive Newey-West) | 3.85 | 仍 PASS Harvey 3.0 |
| HAC L=24 (覆蓋 1 個 overlap 週期) | 4.33 | 仍 PASS——HAC 沒抓到問題 |
| HAC L=48(覆蓋 2 個 overlap 週期) | 5.39 | 反而看起來更強 |
| Block-bootstrap (block=24, n=5,000) | 1.75 | 崩潰,NS |
從 4.51 到 1.75,整個訊號的可信度被砍掉一大半。 HAC 並沒有救援 ——三個 lag 設定都還在說「顯著」,是 block-bootstrap 才揭穿真相。
為什麼 HAC 抓不到?
關鍵在 lag-1 ACF:
| Stock | lag1 ACF |
|---|---|
| TSMC | 0.308 |
| UMC | 0.366 |
| MediaTek | 0.469 |
MediaTek θ 序列的 lag-1 自相關高達 0.469,遠超 AR(1) noise 假設能處理的範圍。HAC 的 Bartlett kernel 假設自相關幾何衰減,但這裡的序列有結構性曲度(structural curvature),衰減非單調。HAC 即使把 lag 拉到覆蓋 2 個 overlap 週期,仍系統性低估 SE。
Block-bootstrap 不依賴任何 kernel 假設,它直接從原始 θ 序列裡 resample 整塊 24 點區段,重新跑 trend 5,000 次,從 null distribution 裡讀出真實 p-value。沒有任何衰減假設,因此它能抓到 HAC 漏網的偏誤。

L sensitivity 圖告訴我們:HAC 的 SE 在 L=5 到 L=60 區間幾乎不動,因為 Bartlett 權重對結構性曲度不敏感。這不是「lag 選太短」的問題,而是 kernel 選擇本身的限制。
影響 Paper 2 的方向
K1114 給 Paper 2 留的「時間維度 pivot」路徑就此關閉。Paper 2 cross-sectional 已經 NULL(K1109 sector ANOVA、K1113 firm covariate);temporal 也 NULL(K1140 0/9 BH-PASS)。
但這個 NULL 結果 反而救了 Paper 2 後續的轉折 ——正因為 dual NULL 確認,下一步的 K1145 pooled MLE 才有強烈動機去做。 K1145 用 31 檔 pooled panel 揭露了 firm-level idiosyncratic SE 掩蓋的 universal-magnitude θ_EAV (boot t=+5.24 PASS) 。如果沒有 K1140 的 dual NULL 確認,可能就會錯過真正的訊號。
一條跨領域的方法論規則
對 rolling-window 估計的任何 trend 或 correlation 檢定 ,建議三層流程:
- OLS 跑 trend → 取得初步 t-stat
- HAC Newey-West 用 L = window / step 起跳,加 sensitivity 對 L=2L、4L 重做
- Block-bootstrap 以 block = window / step 為 block size,5,000 reps, 這是 gold standard,必跑
任何只跑 OLS 的 rolling t-stat 結論需打折看 ;任何跑了 HAC 但沒做 block-bootstrap 的 rolling 結論在 high-overlap 設計下(>80% obs shared) 仍然不可信 。
這條規則在量化金融、神經科學的 EEG rolling estimates、流行病學的時變參數估計都適用,只要你的單位估計來自 sliding window,這個陷阱就在等你。
本文基於實驗 K1140(HAC + Block-bootstrap rolling θ_EAV trend re-test)。腳本:experiments/k1140/k1140.py,完整結果:experiments/k1140/k1140_results.json。
Reuse K1114 (experiments/k1114/k1114_results.json) 的 rolling θ_EAV 序列,無重跑 GARCH,純 post-processing。
資料:yfinance 2330.TW(台積電)、2303.TW(聯電)、2454.TW(聯發科),2014-2025,rolling window=500, step=21。
統計門檻:Diebold-Mariano Harvey (2016) |t|>3;BH-FDR @ α=0.05 對 9 個 p-values;Block-bootstrap n=5,000, block=24, seed=42。
相關文獻:Newey & West (1987) HAC; Politis & Romano (1994) stationary bootstrap; Patton (2011) QLIKE。
相關文章
先讀正式關聯,若無則使用標籤與主題相似度補齊