三個分數全贏,我們還是判它不能用:82 天撐不起一個結論
讀者互動
0 次瀏覽,登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
三個分數全贏,我們還是判它不能用:82 天撐不起一個結論
我們做了一個猜「0050 明天會晃多大」的模型,跟一個很笨的對手比。三項評分,我們的模型全贏。
判決是:不能用。
這篇要講的是這個判決怎麼下的。下完之後還有一件更難堪的事:我們回頭檢查自己寫在設定檔裡的放行標準,發現那個標準也訂得太鬆。
「晃多大」是可以量出來的
0050 的成交價每五分鐘記一次。把一天之內每五分鐘的漲跌幅各自平方、全部加起來,會得到一個數字。數字大,代表那天價格上下甩得凶;數字小,代表整天貼著平盤慢慢走。這個數字就是那一天的實際晃動量。
這段期間平均每天有 52.1 根五分鐘資料,最少的一天也有 52 根,沒有哪一天是靠零星幾筆成交硬湊出來的。
我們的模型只做一件事:拿前一天、前五天、前一個月的晃動量,去推明天的晃動量。背後的想法很直白,市場抖起來會抖一陣子,靜下來也會靜一陣子。
對手更簡單,簡單到有點欺負人:直接把昨天的晃動量抄過來當作明天的答案。這種對手在波動預測裡出了名的難纏,因為波動本來就黏著昨天走。
先講怎麼防自己作弊
預測明天的東西,最容易出錯的地方是不小心把明天的資料放進去。
所以所有輸入都往前挪了一天,五天平均和一個月平均也是建在挪過之後的序列上,不是原始序列。訓練跟測試按時間先後切開,前面 70% 拿來學,後面 30% 拿來考,中間不打亂順序。要猜的目標是當天的晃動量,而當天的任何資訊都沒有出現在輸入端。
模型要看一個月,所以前面 22 天當暖身丟掉。82 個交易日剩下 60 列可用,切成 42 天訓練、18 天測試。
18 天。這個數字後面會一直回來找我們。
計分板:三比零
| 評分項目 | 我們的模型 | 昨天照抄 | 差距 |
|---|---|---|---|
| 預測誤差分數(越低越準) | 0.265 | 0.375 | 我們低 29.3% |
| 平方誤差(越低越準) | 0.360 | 0.710 | 我們低 49.3% |
| 贏過「猜平均值」的程度(零是及格線) | −0.038 | −1.049 | 兩邊都在零以下 |

前兩格看起來很漂亮。誤差分數低了 29.3%,平方誤差直接砍掉快一半。
第三格是這篇文章的第一個轉彎。
那一格問的問題是:把測試那 18 天的平均晃動量算出來,每天都填這個平均值當預測,這樣的成績當作零分。你比這條水平線好多少?
我們的模型是 −0.038,對手是 −1.049。兩個都在零以下。對手輸得很難看,我們輸得比較好看,但一樣是輸。
贏過一個笨對手,跟贏過一條水平線,是兩件事。我們只做到前面那件。
正式對決:差距撐不起結論
前兩格的分數是把 18 天的誤差平均起來看,看不出這個差距有多穩。所以要跑一次正式的兩兩比較:每天算一次雙方的誤差差距,再看這串差距的平均值,相對於它自己每天的跳動幅度有多大。差距又大又穩,這個檢定就會給出很高的統計強度。
結果是 0.88,對應的顯著性數值 0.390。
白話講:如果這兩個模型其實一樣爛,光靠 18 天的運氣,也很容易湊出我們看到的這種差距。
專案自己訂的及格線是統計強度的絕對值要超過 3。這條線比金融研究常用的標準嚴,因為波動預測的訊號很容易是雜訊裝出來的。0.88 離 3 不是差一點,是差一個檔次。
模型內部的體檢也不好看。三根柱子(前一天、前五天、前一個月)的統計強度分別是 0.79、1.10 和 −1.88,沒有一根站得穩。更麻煩的是最後那根帶負號,跟這類模型該有的方向相反。資料太少的時候,模型會開始硬記雜訊裡的巧合,記出來的東西通常就長這樣。
兩天新資料,把分數搖大、把結論搖成反方向
這條產線之前跑過一次檢查點。那時候資料是 80 天,測試窗一樣是 18 天。
多了兩天資料之後,誤差分數從 0.353 掉到 0.265,看起來是個大進步。統計強度卻從 0.992 退到 0.883。
兩天資料就能把表面分數推動這麼多,卻沒有把推論的體質推動半分,反而還退了一步。小樣本的定義大概就是這個樣子:分數很敢跳,結論一動也不動。
如果只看第一個數字寫報告,這一輪會被寫成「模型明顯改善」。
要多少資料才夠?我們算了一下,答案很難看
統計強度大致隨著測試天數開根號成長。把目前每天觀察到的差距原封不動往後複製,可以推估不同測試長度下大概會落在哪裡。
| 測試天數 | 推估統計強度 | 過得了門檻嗎 |
|---|---|---|
| 18(現況) | 0.88 | 不過 |
| 50(原訂重啟門檻) | 約 1.47 | 不過 |
| 208(推估所需) | 3 | 剛好碰到 |

208 個測試日不是 208 天就好。測試只佔三成,前面還要扣掉 22 天暖身,往回推大約需要 715 個交易日的原始資料,接近 2.9 年。
現在手上有 82 天,大約四個月。
這條外推是等比例放大,前提是每天的差距維持現在的平均值跟現在的浮動幅度。它是個估算,不是正式的檢定力計算。真實世界裡差距可能變大,那就早一點過;也可能變小,那就永遠過不了。
不管往哪邊偏,量級是清楚的:現在缺的資料不是多幾週,是多幾年。
我們的門檻自己也沒過關
專案原本寫死的重啟條件是:總天數達到 200,或測試天數達到 50,就把這條線再撿起來跑一次。
按上面那條曲線,測試天數 50 只會把統計強度推到 1.47 附近。也就是說,我們設的那個「再回來看看」的時間點,到了之後還是什麼都不能宣稱,只會再寫一份一模一樣的「不足以下結論」。
門檻訂鬆了。這是這次跑完最有用的一個發現,而它跟 0050 沒關係,跟我們自己怎麼設檢查點有關係。這條會拿回去改,改成能真正分出勝負的長度。
這篇沒有東西可以拿去用
沒有「所以 0050 的波動可以這樣預測」,沒有進場出場,也沒有「模型有效但要小心」這種和稀泥的說法。
有的只是:目前這份資料量,不足以判斷這個模型比昨天照抄更好。同時,我們原本用來決定何時重新判斷的標準,本身也不夠格。
兩件事都寫出來,這一輪才算沒有白跑。
資料與範圍
標的是 0050.TW,原始資料為五分鐘 intraday bar,聚合成每日已實現波動。樣本 82 個交易日,期間 2026-01-20 至 2026-06-01,平均每日 52.1 根 bar、最少 52 根。模型需要 22 天暖身,暖身後剩 60 列,依時間順序 70/30 切成 42 天訓練與 18 天測試。
所有輸入變數都往前位移一天,滾動平均建在位移後的序列上,時序切分不打亂,當日資訊不進入預測變數。對照組是「以昨日已實現波動作為今日預測」的隨機漫步。兩模型比較採用含小樣本修正與序列相關修正的預測誤差檢定。
文中所有分數與統計強度取自本次實驗的結果檔(隨機種子 42,產出時間 2026-06-03)。測試天數與統計強度的對應關係為等比例外推估算,非正式檢定力分析,前提是每日誤差差距的平均與離散度維持不變。
本次判決為不足以下結論,不代表該模型有效,也不代表無效。本文是資料分析紀錄,不是投資建議。
懶人包圖組



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