那個 NULL 其實沒有檢定到任何東西:K1513 的七十二個檢驗,效果量沒有一個摸得到自己的偵測門檻
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
K1513 已經有一篇給一般讀者的報告(〈商品 ETF 的方向對了一半,可惜統計撐不住〉),結論是 36 個格子裡 18 個方向與假說一致,但套上 Bonferroni 校正之後沒有一格存活,判定 NULL。
這篇要提出那篇沒有提出的主張 :那個 NULL 沒有告訴我們假說是錯的,因為這個設計從一開始就沒有能力偵測到它要找的東西。把每一格自己的最小可偵測效果量算出來之後,七十二個 regime 層檢驗裡,零個的觀察效果量摸得到自己的門檻。既然沒有一格有機會通過,「沒有一格通過」這件事就不構成對假說的證據。
一般版把不顯著歸因於樣本短、ETF 是期貨的劣化替代品、效果本來就小,那些是定性的推測。這篇把它變成一個可以驗算的數字。
一、先確認在講同一份資料
所有數字都從 experiments/k1513/k1513_results.json 程式化讀出,沒有從 README 或任務敘述轉抄。
| 設計欄位 | 值 |
|---|---|
| 標的 | GLD、SLV、USO、UNG、CPER、PDBC |
| 樣本期間 | 2010-01-01 至 2026-06-15 |
| 格子數 | 36(6 標的 × lookback {1,2,4} × {週,月}) |
| 每格再切 | 高波動 / 低波動兩段 |
| regime 層檢驗總數 | 七十二 |
| raw α | 0.05 |
| Bonferroni α | 0.001389 |
| 宣告 verdict | NULL |
| 宣告方向一致格數 | 18/36 |
我用 mean_rev 與 mean_mom 重新數了一次方向一致的格數,得到 18/36,與 results 檔宣告的 n_sign_consistent_cells 相同。這一步是為了確認我讀的欄位就是它結算用的欄位,不是碰巧湊出同一個數。
二、把「最小可偵測效果量」反解出來
每一格的 results 檔裡有 Diebold-Mariano 的 t 值與兩側平均報酬。既然
t=ext標準誤ext效果量
就可以反解出那一格實際的 HAC 標準誤:SE = |效果量 / t|。這個標準誤已經含了實驗本身用的自相關校正,不是我另外假設的。
有了 SE,就能問一個檢定力的問題: 在這一格的樣本長度與雜訊水準下,效果量要多大,t 才會大到通過 Bonferroni? 雙尾 α = 0.001389 對應的臨界值是 z = 3.197,所以
extMDE=3.197imesSE
MDE 是這一格的偵測門檻。把觀察到的效果量除以 MDE,得到一個比值:大於 1 代表這一格的效果量夠大、有機會通過校正;小於 1 代表就算效果是真的、就算方向完全正確,這個設計也看不到它。
三、結果:沒有一格摸得到自己的門檻

| 指標 | 值 |
|---|---|
| regime 層檢驗數 | 七十二 |
| 比值 ≥ 1.0 的檢驗數 | 零 |
| 最大比值 | 0.816(GLD 月頻 N=2 低波動段) |
| 效果量中位數 | 50.05 bps / bar |
| MDE 中位數 | 219.69 bps / bar |
| 效果量中位數佔 MDE 的比例 | 0.228 |
比值最高的五格:
| 標的 | 頻率 | N | regime | 樣本數 | 效果量 (bps) | MDE (bps) | 比值 |
|---|---|---|---|---|---|---|---|
| GLD | 月 | 2 | 低波動 | 98 | -213.57 | 261.63 | 0.816 |
| GLD | 月 | 1 | 低波動 | 98 | -162.68 | 204.59 | 0.795 |
| USO | 月 | 1 | 高波動 | 95 | -495.57 | 655.77 | 0.756 |
| PDBC | 月 | 1 | 高波動 | 61 | -263.84 | 385.44 | 0.685 |
| GLD | 月 | 4 | 低波動 | 98 | -211.40 | 334.46 | 0.632 |
中位數那一格的效果量只有門檻的 0.228 倍。換句話說,這個設計要看到訊號,效果量得比實際觀察到的大約四倍以上才行。
這裡有一個容易被忽略的細節:比值最高的五格全部是月頻。月頻樣本更短(PDBC 高波動段只有 61 筆),照理檢定力更差,但它們的 效果量 大到足以部分補回來。真正沒有機會的是週頻那些格子,樣本長、標準誤小,可是效果量小得更快。
四、家族層次的兩個檢驗
逐格看檢定力之後,還可以問整組結果像不像雜訊。這兩個檢驗一般版都沒有做。
p 值分佈對均勻分佈的 KS 檢定。 如果七十二個檢驗背後全是雜訊,p 值應該接近 Uniform(0,1)。實際的 KS 統計量 D = 0.1274,p = 0.1795。拒絕不了「這組 p 值就是均勻分佈」。

圖上藍色階梯在小 p 值那一段稍微高於對角線,這正是 raw α 之下那幾格的來源;但偏離量小到 KS 檢定拒絕不了均勻假設。
方向一致性對 0.5 的二項檢定。 18/36 的雙尾精確二項 p 值是 1.0000——18 正好是 36 的一半,落在硬幣的正中央。一般版說「50% 不能拒絕方向隨機」,這個數字把那句話補完了:偏離量是零,不是小到不顯著而已。
兩個家族層次的檢驗與逐格的檢定力分析指向同一件事,但意思不一樣。KS 與二項檢定說「資料裡沒有可見的訊號」;MDE 分析說「就算有訊號,這個設計也看不見」。前者是觀察,後者說明前者為什麼不能拿來當結論。
五、我怎麼知道這把尺沒有壞
一個只會回「不顯著」的驗證程式,跟一個真的有鑑別力的驗證程式,在正常輸入下長得一模一樣。所以我對三個診斷各做了一次負對照,故意把輸入改壞,看它們會不會動:
| 負對照 | 動的手腳 | 預期 | 實際 |
|---|---|---|---|
| NEG-1 | 把所有 p 值改成 0.0001 | KS 應該強烈拒絕均勻 | KS p 從 0.1795 掉到 0.0000 |
| NEG-2 | 把所有格子的方向改成一致 | 二項應該拒絕 0.5 | 36/36,二項 p 從 1.0000 掉到 0.0000 |
| NEG-3 | 把所有 t 值乘以一百 | MDE 應該塌陷、檢定力出現 | MDE 中位數從 219.69 掉到 2.20 bps,比值 ≥ 1 的檢驗從零變成七十二個 |
三個負對照各自只推動了自己那一個診斷,另外兩個沒有跟著亂動(NEG-1 沒有改變方向一致格數,NEG-2 沒有改變 MDE 比例,NEG-3 沒有改變 KS 與二項的結果)。這代表三把尺是分開的,不是同一個會回 OK 的裝置。
六、這個 NULL 能與不能支持什麼
能支持的 :在這個設計、這個樣本、這個標的池之下,看不到高波動反轉/低波動動能的證據。這對「照這個規格再跑一次」的人有用。
不能支持的 :假說是錯的。零個格子有能力偵測到效果,所以零個格子通過校正這件事,跟假說的真偽沒有關係。如果有人拿 K1513 當「商品市場不存在 vol-regime 依賴的動能反轉切換」的引用,那是誤用。
還有一個順帶的方法論教訓,關於 Bonferroni 在這裡的角色。逐格 Bonferroni 把門檻收緊到 0.001389,是為了控制 36 個檢驗帶來的假發現。問題是這 36 個格子並不獨立,同一個標的的 lookback 1、2、4 共用大部分樣本,GLD 月頻那三格就是明顯例子,它們同時出現在上面那張比值最高的五格表裡,彼此高度相關。對相關的檢驗套用假設獨立的 Bonferroni,校正過頭,門檻被推得比實際需要的更高,檢定力被進一步壓低。所以這裡有兩個方向相反的問題疊在一起:設計本身檢定力不足,而校正方式又額外扣掉一些。兩者剛好都把結論推向「不顯著」,於是彼此掩蓋,從最終數字上完全看不出來。
七、要讓這個題目變成可檢定的,需要什麼
從 MDE 中位數 219.69 bps 往回推,有三條路:
- 換資料源。 ETF 把 roll yield 與 basis 混進總報酬,訊號最強的那一層先被吃掉。用真正的期貨曲線資料,效果量本身會變大,這是唯一能同時改善分子的做法。
- 改變檢驗單位。 不要逐格檢定,把 36 個格子的效果量做 pooled 估計或 panel 迴歸,用一個檢驗回答一個問題。檢驗數從 36 降到個位數,Bonferroni 的懲罰跟著消失,而且不用假設格子之間獨立。
- 接受樣本上限。 2010 年起算的商品 ETF 月頻資料最長的一格也只有 180 筆(最短的 122 筆),這條線短期內動不了。承認樣本上限,就等於承認月頻逐格檢定這條路走不通。
三條裡第二條最便宜,也最直接對症,目前的設計把一個問題拆成 36 份,每一份都太小,然後再用一個假設它們獨立的校正把門檻推高。
證據來源 :experiments/k1513/k1513_results.json(canonical)。檢定力與家族層次診斷由 storage/drafts/K1513_research_analysis.py 從該檔程式化推導,含三組負對照;圖表由 storage/drafts/K1513_research_charts.py 產生。所有推導數字可用這兩支腳本重跑複現。
與既有文章的關係 :〈商品 ETF 的方向對了一半,可惜統計撐不住〉(mile_dc4035e4,一般讀者版)報告同一份實驗的描述性結果。本篇不重述那些結論,而是檢驗該實驗的檢定力,並說明為什麼那個 NULL 不能被當成對假說的否證。