過度最佳化陷阱:完美回測的謊言
想像這樣一個場景:你花了幾個星期測試台股的各種技術指標組合,調整了 RSI 的超買超賣門檻、均線的週期、成交量的過濾條件,最終找到了一組「完美」的參數——回測報酬率高達 400%,最大回撤只有 8%,曲線平滑得像教科書範例。你興奮地把這套策略投入實際市場,結果第一個月就虧了 15%。
這不是個案,這幾乎是每位量化交易初學者都會親身經歷的「洗禮」。這個現象有個專業名稱:過度最佳化(Over-optimization),或在機器學習領域稱為過擬合(Overfitting)。它是量化投資最致命的陷阱之一,也是讓無數「看起來很厲害的策略」在真實市場中慘敗的根本原因。
台股市場因為散戶比例高、資訊透明度較高、日成交量集中在少數大型股,使得特定歷史時期的價格模式特別容易被「發現」——但這些模式往往只是隨機雜訊,而不是可重複利用的交易優勢。本文將帶你徹底理解過度最佳化的本質,學會識別它的徵兆,並建立防範它的正確方法。
什麼是過度最佳化?
過度最佳化是指在策略開發過程中,對模型參數進行過多調整,使其「完美地符合歷史資料」,但因此失去了對未來新資料的預測能力。
用一個直觀的比喻:
假設你有一組 10 個點的散佈圖(代表歷史交易數據),你想找一條「最能描述這些點的曲線」。
- 如果你用一條直線(只有 2 個參數),可能無法完美通過每個點,但它抓住了數據的整體趨勢
- 如果你用一條 9 次多項式曲線(10 個參數),可以完美通過每一個點,但這條曲線在這 10 個點之外的地方表現極度不穩定,遇到新的數據點就完全失效
交易策略的過擬合正是如此:你用太多的參數,把歷史資料的每一個「彎折」都記了下來,包括那些純屬隨機的雜訊。這樣的策略在回測中「完美」,卻無法在未來的市場中複製。
過擬合的本質:把雜訊當成訊號
金融市場的價格變動,可以分解成兩個部分:
價格變動 = 真實規律(Signal)+ 隨機雜訊(Noise)
理想中的策略應該只「學到」真實規律,忽略隨機雜訊。但過擬合的策略卻把雜訊也學進去了,導致它在歷史資料上表現完美(因為雜訊也被精確模擬),卻無法預測未來(因為未來的雜訊是新的、不同的隨機事件)。
過擬合發生的主要原因
原因一:參數數量過多
每增加一個可調整的參數,策略就多了一個「自由度」來擬合歷史資料。當你的策略有:
- RSI 週期(可選 5-30)
- RSI 超買門檻(可選 60-80)
- RSI 超賣門檻(可選 20-40)
- 均線週期 A(可選 5-30)
- 均線週期 B(可選 10-60)
- 成交量倍數(可選 1.0-3.0)
- 停利比例(可選 5%-20%)
- 停損比例(可選 2%-10%)
你有 8 個參數,每個有十幾種可能,總組合數超過幾億種。在幾億種組合中找出「歷史表現最好」的那一組,並不代表找到了真正有效的策略——只是找到了最能「記住歷史」的組合而已。
原因二:樣本數不足
這是台股回測最常見的問題。某些策略觸發頻率很低,5 年回測可能只有 30-40 筆交易。30 筆交易的統計意義極低——即使在完全隨機的市場中,30 筆交易也可能因為運氣出現「看起來有效」的規律。
一個經驗法則:如果你有 N 個可調整參數,你至少需要 10N 筆以上的獨立交易記錄才有基本統計意義。8 個參數至少需要 80 筆,最好是 200 筆以上。
原因三:反覆測試導致的「多重比較問題」
這是統計學中的經典問題。假設你同時測試 20 種不同的策略,每種策略有 5% 的機率「看起來有效但其實是隨機的」,那麼在 20 種策略中,期望有 1 種(20 × 5% = 1)會因純粹的運氣而看起來有效。
當你測試幾十種甚至幾百種策略變體時,必定會找到幾個「歷史表現出色」的,但其中很可能大多數只是隨機幸運者,而非真正有效的策略。
識別過擬合的關鍵徵兆
徵兆一:樣本外表現遠低於樣本內
最直接的判斷方式:將歷史資料分成「訓練集」和「測試集」,如果策略在訓練集(樣本內)表現遠優於測試集(樣本外),就是過擬合的強烈訊號。
可接受的降幅:樣本外表現比樣本內差 20-30% 是正常的(因為樣本內是針對這段資料優化的)。但若樣本外報酬率只有樣本內的一半以下,甚至轉為負值,則幾乎可以確定發生了嚴重過擬合。
| 情境 | 樣本內年化報酬 | 樣本外年化報酬 | 評估 |
|---|---|---|---|
| 健康策略 | 20% | 14% | 正常降幅,可信 |
| 輕微過擬合 | 25% | 10% | 值得警惕 |
| 嚴重過擬合 | 40% | −5% | 策略失效 |
| 完全過擬合 | 60% | −20% | 根本沒有真實優勢 |
徵兆二:策略對參數極度敏感
測試方法:對策略的關鍵參數做「敏感性分析」——稍微改動參數,看結果是否劇烈變化。
例如,你的最佳組合是 RSI(14) 超買線 70、超賣線 30。如果你把 RSI 改成 13 或 15,把超買線改成 68 或 72,策略表現仍然相近,這代表策略有一定的穩健性(Robustness)。
反之,如果微小的參數改動(例如 RSI 從 14 改成 13)就讓策略從盈利變虧損,這代表策略只是「精準地擬合了歷史中的某個特定規律」,而不是真正普遍有效的邏輯。
徵兆三:策略的參數具有特殊性
健康策略的最佳參數,通常落在「合理範圍的中間值」附近。如果最佳參數是某個極端值,例如 RSI(3)(非常短期)或者停損精確設在 3.7%(而不是整數),這往往是過擬合的跡象——因為這組參數可能只是特別巧合地避開了歷史上的某幾次大跌。
徵兆四:策略在不同市場條件下表現截然不同
如果策略在 2019-2020 年大多頭中表現極好,但在 2022 年熊市中虧損 40%,這代表策略可能只是「學到了多頭市場的特性」,而不是真正的交易優勢。
正確的驗證方式:把回測拆成不同的子市場環境(多頭、空頭、震盪),分別計算績效。真正有效的策略應該在不同環境下都有正期望值,即使不同環境的表現有差異。
台股過擬合的典型案例
案例一:「完美」的除權息套利策略
台股有個獨特現象:每年 7-9 月是密集的除權息季節,許多殖利率高的股票在除息後一段時間內股價「填息」(回到除息前水準)。有投資人因此建立了一套「在 X 個交易日前買進、除息後 Y 個交易日賣出」的策略。
透過大量測試不同的 X 和 Y 值,他發現 X=5、Y=23 在 2018-2022 年的回測中年化報酬高達 35%。但 2023 年上線後,卻因為升息環境改變、高殖利率股票評價邏輯轉變,策略只剩 3% 報酬率。
這是典型過擬合:在特定市場環境(低利率、追求高殖利率的年代)奏效的時序,被誤認為是永久有效的規律。
案例二:過度優化的 RSI 策略
某投資人在台股小型科技股上測試 RSI 策略,嘗試了 400 種不同的參數組合(RSI 週期 5-30、超買超賣門檻各 20 種組合),最終找到 RSI(7)、超買 62、超賣 38 的組合,樣本內年化報酬 47%。
然而,若把這 400 種組合的樣本外表現全部平均,只有 8% 的年化報酬——接近台股大盤長期平均,沒有任何特殊優勢。最佳組合之所以在樣本內看起來很厲害,只是「400 次嘗試中的最幸運者」。
這個案例說明了多重比較問題的嚴重性:測試的組合越多,找到「看起來有效但其實只是運氣」的組合機率越高。
防範過擬合的六大方法
方法一:奧卡姆剃刀原則——保持策略簡單
「能用少量規則描述的策略,比需要大量規則才能描述的策略更可靠。」
優先測試邏輯直觀、參數少的簡單策略。以下是一個實際建議:
- 核心條件:最多 3-4 個
- 可調整參數:最多 4-5 個
- 每增加一個參數,要問自己:「這個參數背後有什麼市場邏輯支撐?」
如果一個參數只是「調出來表現比較好,但我說不出為什麼」,很可能就是過擬合的來源。
方法二:先有假設,再做驗證
正確的量化策略開發流程是:
- 先提出市場假設:例如「成交量放大的突破比縮量突破更可靠,因為大量代表機構入場」
- 設計驗證這個假設的測試:例如比較「放量突破」與「縮量突破」的後續表現
- 用歷史資料驗證:看假設是否被數據支持
而不是反過來:先在歷史資料中找「表現最好的規律」,再事後給它一個解釋。後者幾乎必然導致過擬合。
方法三:嚴格執行訓練集/測試集分割
把歷史資料分成三段,只能各用一次:
- 訓練集(60%):開發策略、選擇基本邏輯
- 驗證集(20%):優化參數
- 測試集(20%):最終驗證,絕對不能用來調整任何參數
測試集的資料必須「封存」,在策略完全定稿後才能揭開。一旦你用測試集的結果來修改策略,它就不再是真正的測試集,而變成了另一個「訓練集」。
方法四:敏感性測試
將最佳化後的參數做系統性的敏感性分析。好的策略在參數的合理範圍內,報酬率應該呈現平滑的山形分佈,而不是在某個特定點突然出現高峰後急劇下降。
例如,最佳參數是均線週期 20,那麼:
- 週期 18、19、20、21、22 的表現應該都在相近水準
- 如果週期 20 報酬率 30%,但週期 19 只有 5%,週期 21 是 −3%,這是嚴重的過擬合警訊
方法五:蒙地卡羅模擬(Monte Carlo Simulation)
將回測中的交易序列隨機打亂順序,重新排列幾百次,觀察結果的分佈。如果策略真的有效,即使交易順序打亂,平均結果仍然應該是正的。如果只有在特定的交易順序下才有效,代表策略依賴某些「恰好相連的幸運交易序列」,並不穩健。
方法六:走勢前向測試(Paper Trading)
在真實資金投入前,先進行 模擬交易(Paper Trading) 至少 3-6 個月。在這段期間:
- 用和回測完全相同的規則,對每一個真實訊號做出決策
- 記錄每一筆「假設性交易」的結果
- 比較實際績效與回測預期的差距
如果 3 個月的真實模擬期望值接近回測預期的 70-100%,策略才值得投入真實資金。
接受不完美的回測:反過擬合思維
過擬合的核心問題在於:投資人無法接受「不完美的回測」。一看到某段時期策略虧損,就想加一個條件過濾掉它;看到某次大虧就想加入特殊停損規則。這種「永遠要讓曲線更漂亮」的衝動,正是過擬合的推手。
正確的心態轉變:
- 允許回測中有虧損期:真實的有效策略也會有虧損期,這是正常的。策略不需要在每個時期都賺錢,只需要整體期望值為正。
- 不要為了每一次虧損添加「特殊規則」:如果你為了避開 2020 年 3 月的急跌加了一個「遇到大盤跌 5% 就全部停損」的條件,你只是讓策略「記住了 2020 年 3 月」,不代表在下一次危機中這條規則仍然有效。
- 接受策略的自然邊界:好的策略有其適用範圍和限制,不要試圖讓一個策略在所有市場環境下都表現完美。
一個實用的「複雜度懲罰」框架
借鑒機器學習的思維,可以用以下方式衡量策略的「合理複雜度」:
每增加一個可調整參數,要求策略的年化報酬率至少提升 2-3% 才值得加入。否則,這個參數帶來的邊際效益可能只是過擬合,而非真實的策略改進。
量化台股策略的過擬合風險排行
以下是台股常見策略類型的過擬合風險評估:
| 策略類型 | 過擬合風險 | 主要原因 |
|---|---|---|
| 高頻/日內策略 | 極高 | 雜訊比例高,參數多 |
| 技術指標多重組合 | 高 | 參數多,自由度大 |
| 均線策略(少參數) | 中 | 邏輯簡單,穩健性較好 |
| 趨勢跟隨策略 | 中低 | 邏輯有基本市場依據 |
| 基本面量化策略 | 低 | 財報資料變化慢,規律較穩定 |
| 事件驅動策略 | 中 | 取決於事件的樣本數 |
結語:最好的回測,是讓你知道哪裡可能失敗的回測
過度最佳化陷阱的存在提醒我們一個根本事實:市場是一個持續演化的複雜系統,而非一個等待你「破解密碼」的固定謎題。
台股的歷史資料中確實存在一些結構性的規律(例如:台股具有顯著的「元月效應」、長期來看跟隨美股的相關性極高、財報優於預期的股票在公告後短期有超額報酬),這些是有市場邏輯支撐的真實規律,可以透過嚴謹的方法驗證和利用。
但每次你試圖用複雜的參數組合「最佳化」一個策略的歷史表現時,你都在冒著一個風險:也許你只是找到了一個「特別擅長描述過去的模型」,而不是一個「真正理解市場的策略」。
真正有效的量化策略開發應該是這樣的流程:先有想法,再找證據;先定規則,再跑回測;先定參數,再看績效。嚴格遵守這個順序,才能讓回測成為真正有意義的科學驗證,而不是讓你自我安慰的數字遊戲。
記住:一個在回測中「完美」但在現實中慘敗的策略,其實比一個「從不回測、純憑感覺」的投資人帶給你更大的傷害——因為虛假的信心,往往讓人在失敗時押注更重。