我們以為找到了新指標,結果兩個模型的預測值到小數點後 16 位都一樣
讀者互動
0 次瀏覽,登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
我們以為找到了新指標,結果兩個模型的預測值到小數點後 16 位都一樣
先講一個聽起來很合理的想法。
一個指數會漲會跌,是底下幾百檔股票加總的結果。但指數的波動不等於成分股波動的平均,如果今天所有股票一起漲,指數會大動;如果一半漲一半跌,互相抵消,指數可能幾乎不動,即使每一檔個股當天都很激烈。
中間差的那個東西,一般叫「離散度」:股票們有多不同步。
那如果我們把離散度算出來,拿去預測指數明天、下週、下個月的波動,會不會比只看指數自己的歷史波動更準?
我們拿標普 500 和台灣 50 做了這件事。SPX 部分是 2010 年 1 月 4 日到 2026 年 7 月 10 日,共 4,153 個有離散度資料的交易日 ,平均每天納入 439 檔成分股 (最少 346,最多 503)。成分股名單是按歷史上每一天實際的納入與剔除紀錄倒推的,不是拿今天的名單回頭套,這點很重要,否則等於偷看未來。

第一輪結果:好像沒什麼用
把離散度加進預測模型,跟不加的版本比,六種組合(兩個市場 × 三種預測期間:明天、五天、二十二天)。
結果是 0 比 6 。沒有任何一格通過我們事先設定的門檻。預測誤差的改善幅度從 -5.13%(台灣 50、22 天)到 +0.69%(台灣 50、1 天)都有,正負都有,看不出方向。
到這裡為止,故事是「這個指標沒用」。很無聊,但也算個結論。
問題是這個結論也是錯的。
檢查程式的時候,發現了一件事
我們順手做了一個一致性檢查:把「加了離散度的模型」和「加了成分股平均波動的模型」拿來對比,看兩者預測值差多少。
理論上這是兩個不同的模型,應該給出不同答案。
實際差距是 0.000000000000000088 。
寫成科學記號是 8.85 × 10⁻¹⁷。那不是「很接近」,那是浮點數運算的捨入誤差,在電腦能表達的精度內,兩個模型給出的是同一組數字。
原因是一行國中程度的算式。離散度的定義展開之後:
log(離散度) = log(成分股平均波動) − log(指數波動)
而我們的預測模型裡,本來就有「指數波動」這一項。所以往模型裡加「離散度」,等於是加了「成分股平均波動」減掉一個模型早就知道的東西。兩個模型張開的是同一個空間,預測值當然一樣。
換個說法:我們以為在給模型一個新資訊,其實只是把它已經握有的資訊換個名字再說一遍。任何「效果」都不是發現,是命名錯誤。
那真正的離散度呢
前面那個不算數,所以要重做:先讓模型吃飽波動水準這件事,然後才問「在波動水準之外,股票有多不同步」有沒有額外貢獻。
這次用兩個真的在測不同步程度的指標:成分股之間的平均相關係數,以及相對的橫斷面波動離散度。
兩個市場 × 三種期間 × 兩個指標 = 12 格 。
| 檢驗階段 | 格數 | 通過 |
|---|---|---|
| 第一輪(含代數重複的指標) | 6 | 0 |
| 事先設定的 1% 實質增益排除 | 6 | 0 |
| 控制波動水準後的真離散度 | 12 | 0 |
12 格裡,只有 2 格在單獨看的時候達到一般說的「統計顯著」。但一次做 12 個檢驗,本來就會有幾格純粹靠運氣達標,做完多重比較校正之後,存活數是 0 。

有些話不能講得太滿
這次的結論是「證據不足以宣稱它有穩健的增量預測力」。它不等於「已證實完全沒用」,這兩句話在統計上差很多,我們只能講前者。
另外三件必須講的事:
在兩個穩健性子樣本裡,加了這個指標反而顯著變差 (2020 年後的高覆蓋率子樣本,以及用產業 ETF 取代個股的版本)。方向對「這指標有用」不利,我們沒有藏起來。
平均相關係數的算法不夠嚴謹 :允許每檔股票用 15 到 22 天的最少觀測數,逐日取平均,有效權重會漂移,所以它不是精確的波動加權平均相關。
成分股資料有存活者偏誤 :資料源缺少已下市的股票,這部分沒辦法補。
帶得走的一句
如果你要往一個模型裡加新變數,先花五分鐘把新變數的定義展開,看它會不會被既有的變數用加減湊出來。
我們是在跑完整套回測、寫完第一版結論之後,才靠一個順手的檢查發現這件事。差別在於:前一版的結論寫的是「這個指標沒有預測力」,而正確的說法是「我們根本沒測到那個指標」。
資料來源 :SPX 與台灣 50 成分股日資料(yfinance),成分股名單依歷史納入/剔除紀錄還原。完整結果 experiments/k1701/k1701_results.json,方法與限制 experiments/k1701/README.md。
懶人包圖組




相關文章
先讀正式關聯,若無則使用標籤與主題相似度補齊