台股自己算出來的衰減因子是 0.945,課本寫 0.94:我花了一天,量不出這 0.005 的好處
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
台股自己算出來的衰減因子是 0.945,課本寫 0.94:我花了一天,量不出這 0.005 的好處
風險管理課本裡有一個數字,幾乎每本都出現,幾乎沒有一本解釋它為什麼是那個值。
它叫衰減因子,符號寫成 λ。用途很單純:估今天的波動有多大時,昨天的市場動靜該佔多少權重、上個月的該剩多少。λ 越大,模型記性越長;λ 越小,模型越健忘。摩根大通一九九六年的 RiskMetrics 技術文件把日頻的 λ 訂在 0.94,之後三十年,這個數字就這樣被抄進教材、抄進風控系統、抄進無數張投影片。
那份文件量的是美債、美股、幾個主要匯率。沒有台股。
所以我想知道一件很直接的事:如果讓台股加權指數自己說,它會選哪一個 λ?
資料與做法
我用了加權指數從一九九七年七月二日到二○二六年九月三日的日收盤價,7149 個日報酬。這段期間的年化波動是 21.73%,超額峰態 4.32,最慘的一天是 -10.20%。這不是一條溫和的序列,正好適合拿來壓測一個「該記多久」的問題。
做法只有一句話:把 λ 從 0.8 掃到 0.99,每 0.005 一格,共 39 個候選值。每一個 λ 都用同一條遞迴去預測「明天」的報酬平方,前 250 天當暖機不計分。前段(到二○一五年底,4308 天)當作選 λ 的樣本內,後段(二○一六年起,2591 天)完全不參與選擇,只用來打分。
打分用 QLIKE。它比常見的均方誤差更適合波動率,因為它對「低估風險」罰得比「高估風險」重,這正是風控真正在乎的方向。
台股自己選出來的答案:0.945
樣本內最低點落在 0.945。
課本是 0.94。差距 0.005。
換成比較好懂的說法:0.945 的記憶半衰期是 12.25 天,0.94 是 11.20 天,兩者相差 1.05 天。也就是說,台股希望模型比課本多記一天多一點。
我承認看到這個數字的第一反應是有點失望。跑了二十九年的資料,結論是「跟課本差一天」。
但真正該問的問題還在後面:這一天,換到沒看過的資料上,值多少?
搬到樣本外,這 0.005 是負的

把樣本內選出的 0.945 拿到二○一六年之後那 2591 天,QLIKE 是 1.6113。(其中有一天的報酬平方剛好是零,QLIKE 在那天沒有定義,實際計分的是 2590 天。)
直接用課本的 0.94,是 1.6089。
課本贏。差 0.0024。
我對這兩條損失序列跑了 Diebold-Mariano 檢定(Newey-West HAC 標準誤,未套用 Harvey-Leybourne-Newbold 小樣本修正),統計量 1.57,p 值 0.1161。翻成白話:這 0.0024 分不出來是真的差距還是雜訊。
| 方法 | 樣本外 QLIKE(2590 天) | 相對課本 0.94 |
|---|---|---|
| 樣本內選出的 λ = 0.945 | 1.6113 | +0.0024(更差,且不顯著) |
| RiskMetrics λ = 0.94 | 1.6089 | — |
| 二十日滾動均值 | 1.6676 | -0.0586(課本贏這麼多) |
所以第一個結論很乾脆: 在這批樣本外資料上,把 λ 從 0.94 調到 0.945 沒有拿回來,而且那個差距不顯著。
三段各自重問一次,最低點落在三個位置
我原本以為問題只是差距太小。把樣本外那段再切一層之後,看到的是另一個現象。
把樣本外那段本身切成前後兩半,各自重新問一次「哪個 λ 最好」:
- 前半(二○一六年一月四日到二○二一年五月十日,1295 天):0.93
- 後半(二○二一年五月十一日到二○二六年九月三日,1296 天):0.905
- 整段樣本外一起看:0.915

三個答案,三個位置,而且跟樣本內選出的 0.945 都不一樣。
這三個落點是三個點估計,只能這樣讀: 三個固定期間各自的網格最低點落在 0.905、0.915 與 0.93,彼此的距離大於 0.94 與 0.945 的距離。 它與「這個參數不穩定」相容,但本文沒有做最低點的 bootstrap 信賴集合、沒有做分段差異檢定、也沒有做 change-point 檢定,所以不能宣稱最適值正在移動,更不能把落點不同的原因歸給市場記憶結構或雜訊。上面那張圖裡樣本外那條藍線在最低點附近有一段幾乎是平的,谷底很寬,站在哪裡差別都不大。
真正有差的那條線,在另一個地方
同一張表裡還有第三列,它的差距是前兩列的二十幾倍。
二十日滾動均值,也就是「最近一個月的平均波動」,很多人的直覺做法、也是不少 Excel 風控表的實際做法,樣本外 QLIKE 是 1.6676。課本的 0.94 是 1.6089,好了 0.0586。這一次 Diebold-Mariano 統計量是 -4.92,p 值小於百萬分之一。
這個差距是真的。
而且它的方向很好理解:二十日均值把三十天前和昨天的資訊給了一樣的權重,還在第二十一天把舊資訊一次丟掉。台股的波動來得急、去得也快,這種等權窗口既反應太慢、又在窗口滑出時製造假跳動。EWMA 的指數衰減沒有這兩個毛病。
所以你該帶走什麼
如果你手上有一張在算波動的表:
先看你用的是不是等權窗口。 是的話,換成 EWMA,這是本文唯一一個統計上站得住的改善。
λ 就用 0.94。 不是因為它最好,是因為在台股上「更好」這件事,我量了二十九年也量不出來,而且各段自己的最低點落在不同位置。把時間花在調它上面,是拿確定的力氣去換一個不顯著的差距。
別把「樣本內最低點」當成答案。 這篇文章最值錢的一行是那個 +0.0024:一個在四千多天資料上贏的參數,換到兩千多天新資料上就輸了。這種事在參數少的模型上都會發生,參數多的模型只會更嚴重。
這篇文章不能宣稱的事
寫清楚比較誠實:
- 我只測了加權指數一檔標的。個股、元大台灣五十、期貨的答案可能不同,本文沒有證據。
- 我用日報酬平方當波動的代理。它是無偏但很吵的估計;如果換成日內高頻的已實現波動,QLIKE 的絕對水準會變,各方法的排序有可能跟著變。
- 我只比了 EWMA 家族與二十日均值。GARCH、HAR 這些更完整的模型不在這次的比較裡,本文沒有資格說 EWMA 比它們好或差。
- 樣本內外的切點(二○一五年底)是我先訂的、只訂一次,但它終究是一個選擇。前後兩半的穩健性檢查放在上面,就是為了讓你自己判斷這個切點有多要緊。
- 沒能拒絕差別不等於兩者等價。0.945 與 0.94 的樣本外 QLIKE 差距是 0.0024、DM p 值 0.1161; 本文沒有事前訂出等價界限、沒有做 TOST,也沒有針對 0.0024 這個幅度做檢定力分析。 另一個大二十幾倍的差距量得到,不代表這個幅度量得到,更不能證明它是零。
- 三段各自的最低點不同是點估計的描述。本文沒有最低點的 bootstrap 信賴集合、分段差異檢定或 change-point 檢定,因此不能宣稱參數在漂移,也不能宣稱原因是市場記憶結構或雜訊。
復現
原始價格序列已經凍結在 experiments/k1845/data/twii_daily.csv(sha256 記在結果檔裡),分析腳本 k1845_analysis.py 不連網、只讀這個檔案。這件事有必要講:yfinance 的歷史價格會隨除權息與調整而回溯修訂,如果每次重跑都重新抓一次網路資料,這篇文章印出來的每一個數字都會在下次重跑時悄悄改變。凍結之後,你重跑得到的就是我看到的。
所有數值、λ 曲線與檢定統計量都在 experiments/k1845/k1845_results.json。
懶人包圖組



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