唯一通過 Bonferroni 的那一格,只存在於錯的資料版本裡
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
我們先前寫過〈銀行風險看存款、房地產還是股價?三種公開指標的預測邊界〉,那篇把四個實驗並排,對 K1679-rev2 只報了一件事:用當時可見的資料重建訊號之後,八組主要測試沒有一組原始 p 低於 0.05。那個結論仍然成立,但它省略了這份實驗真正費工的部分,同一份 H.8 存款資料,我們建了三個版本,而三個版本的裁決不一樣。這篇把那個對照攤開來看。
三個版本差在哪
被檢定的訊號是小型銀行相對大型銀行的存款流失強度(dep_flight_4w 與 dep_flight_13w),資料來自聯準會 H.8 週報的 DPSSCBW027SBOG 與 DPSLCBW027SBOG。三個版本的差別只在「建訊號時允許看到哪一版數字」:
- current vintage :今天從 FRED 下載的序列。每一週的值都是歷經多年修訂後的最終數字,這是回測裡最常見、也最方便的做法。
- first-release only :ALFRED 的
output_type=4,只取每一週的初次公布值。這常被當成 point-in-time 的替代品。 - true PIT :抓完整的 ALFRED real-time 修訂歷史(
output_type=1),在每一個週報發布日重建當天真正看得到的整條序列,最新那一週是初次公布值,而更早的每一週則是「在那個發布日當時已經修訂到的版本」。
第三種和第二種的差別就是那句「更早的每一週」。first-release 版把歷史上每一週都凍結在它的初次公布值,可是交易日當下看到的並不是這樣:早幾週的數字早就被修訂過了。first-release 不是快照,是一條由不同時點的初次公布值拼起來的、歷史上從來沒有人看過的序列。
這個差別大到可以量。三個版本兩兩相關:
| 版本配對 | 相關係數 |
|---|---|
| current vs true PIT | 0.886 |
| first-release vs true PIT | 0.616 |
| current vs first-release | 0.549 |
真正的時點快照跟今天下載的修訂版相關 0.886,反而是 first-release 這個號稱要修正前瞻偏誤的版本,離真快照最遠。

八格檢定,三種版本
主要格子是 KRE 的兩個訊號(4w、13w)乘兩個目標(已實現波動 rv、下行半變異 dsv)乘兩個期程(H=5、H=21),共八格。基準模型是 HAR(d,w,m) 加 SPY 二十一日已實現波動加 VIX 水準;增強模型只多加存款訊號這一項。樣本外用展延式重估,Diebold-Mariano 檢定走 Newey-West HAC 加 Harvey-Leybourne-Newbold 小樣本校正,多重比較在 m=8 的家族上做 Bonferroni 與 BH。符號約定是 d = loss_aug - loss_base,所以 DM t 為正代表加入存款訊號之後預測變差 。
| 格子 | current t | first-release t | true PIT t |
|---|---|---|---|
| 13w·rv·H5 | +0.6327 | +2.7722 | +1.5573 |
| 13w·rv·H21 | +0.6610 | +1.9255 | +0.6414 |
| 13w·dsv·H5 | +1.1543 | +1.2135 | +1.9465 |
| 13w·dsv·H21 | -0.0966 | +1.7918 | +1.2989 |
| 4w·rv·H5 | +0.6968 | +1.3189 | +1.2220 |
| 4w·rv·H21 | +1.7226 | +1.8387 | +0.2439 |
| 4w·dsv·H5 | +1.7749 | +1.0061 | +1.5575 |
| 4w·dsv·H21 | +1.4473 | +1.8450 | +0.3855 |
| 裁決 | safe_null | documented_negative | safe_null |
二十四個 t 值裡只有一個是負的,其餘全為正:這個訊號在任何版本下都不曾幫上忙,差別只在「沒用」與「顯著地有害」。而跨過門檻的只有一格——first-release 版的 13w·rv·H5,DM t = +2.7722,原始 p = 0.005649,Bonferroni 校正後 0.0452,剛好壓在 0.05 底下。
同一格換版本再看:
| 13w·rv·H5 | DM t | 原始 p | Bonferroni |
|---|---|---|---|
| current | +0.6327 | 0.5270 | 1.0 |
| first-release | +2.7722 | 0.005649 | 0.0452 |
| true PIT | +1.5573 | 0.1196 | 0.9571 |
在真正的時點快照下,這一格的 p 是 0.1196,離顯著很遠。整份實驗唯一一個能寫進摘要的「顯著」結果,只在那個建錯的版本裡存在。

這個對照不乾淨,而它不乾淨的方式是可以說清楚的
三個版本的樣本期不一樣,所以不能宣稱裁決差異純粹來自版本。current 版可以一路回溯到 2007-01-03,樣本外從 2018-09-11 起算,n_oos = 1962;true PIT 受限於 ALFRED 對這兩條序列的 real-time 歸檔約從 2012-08 才開始,樣本外自 2020-12-14 起,n_oos = 1393;first-release 版更短,樣本外自 2021-06-11 起,n_oos = 1270。版本與樣本在 current 這一欄上是綁在一起的。
但最關鍵的那組對照剛好是最乾淨的一組:first-release 與 true PIT 的樣本外起點只差半年出頭,n_oos 分別是 1270 與 1393,兩者都涵蓋矽谷銀行事件。這兩欄之間主要變動的就是訊號建構方式,而它們的相關只有 0.616、裁決一個是 documented_negative 一個是 safe_null。要把這個差異歸給樣本,得先解釋為什麼多出來的那一百二十三個交易日能把 DM t 從 +2.7722 拉到 +1.5573。
還有一件不能省的:Clark-West 檢定在這八格全部跑過,而它在三個版本裡都沒有拒絕。CW 是單邊的、檢定的是增強模型「較好」,訊號有害時本來就不會拒絕,所以 CW 沒拒絕不構成對零假設的救援,只是說明這裡沒有被巢狀模型檢定漏掉的正向訊號。
PIT 重建本身也留了稽核痕跡:可用作預測原點的發布週共 725 週,另有 449 週只存在於修訂歷史、從未成為預測原點(它們仍是每個快照裡合法的落後歷史);發布延遲介於 8 到 16 天之間,沒有任何一個原點被 30 天上限排除;兩個訊號在 725 個原點上的唯一值個數都是 725,非退化檢查通過。
對其他實驗的意思
這份實驗的實質結論仍是原來那個:公開的 H.8 規模別存款資料,沒有穩健提高 KRE 五日或二十一日的波動預測準確度。新的部分是方法上的,把 output_type=4 當成 point-in-time,在這個案例裡不只是不夠嚴謹,它是三個版本中唯一會生出「顯著」結果的那一個,而且方向還是有害。如果一份研究只跑那一版並把它寫成 PIT,得到的會是一個看起來通過多重比較校正、實際上由建構方式造出來的結論。
這不是說 first-release 一定會製造假陽性,這裡只有一個資料集、一個標的、八格檢定,樣本又不同步,推不出通則。可以說的是:宣稱做了 point-in-time 的實驗,應該把 vintage 的重建方式當成一個要報告的設計選項,而不是資料處理的附註;如果三個版本裁決不同,那三個都該印出來。
資料與限制
本文只用 K1679-rev2 的結果檔。資料來源為 FRED/ALFRED 的 DPSSCBW027SBOG 與 DPSLCBW027SBOG,價格走 yfinance(KRE、XLF、SPY、^VIX,auto_adjust=True)。樣本外採展延式重估,初始訓練佔 60%,並對 j+H<i 設 embargo;移動區塊拔靴 block=max(10,H)、重複 2000 次,seed=42。存款資料自 as-of 日到可用日的間隔在各格裡介於 9 到 23 天。
限制:三個版本的樣本期不同步,版本效果與樣本效果無法完全分離;標的只有 KRE 一檔,主要格子只有八個;公開的 H.8 規模別加總不等於個別銀行的未保險存款曝險。完整程式、README 與結果檔位於 experiments/K1679-rev2/。ALFRED 的 real-time 資料庫說明見 ALFRED 官方文件,H.8 週報見 聯準會 H.8 發布頁。本文不構成投資建議。