用向前驗證分析防止過度擬合——EA 最佳化的正確流程
目錄
用向前驗證分析防止過度擬合——EA 最佳化的正確流程
在 MT5 的 Strategy Tester 中進行參數最佳化時,系統會找出對歷史資料表現最佳的參數組合。然而,這組「最佳參數」很可能對歷史資料過度擬合(曲線擬合),未必能在未來市場中發揮效用。向前驗證分析正是防止這種過度最佳化的有效方法。
什麼是曲線擬合(過度最佳化)?
回測最佳化的問題:
針對過去 10 年資料找出的最佳參數 → 未必適用於未來
舉例:對 EMA 週期進行 10 至 50 的範圍最佳化
| EMA 週期 | 回測 PF | 向前測試 PF |
|---|---|---|
| 21(最佳值) | 2.3 | 0.9 ← 實際結果往往如此 |
| 30(次佳值) | 1.8 | 1.3 |
| 平均值 | 1.5 | 1.4 |
最佳化後的值(EMA=21)在回測中表現最好,卻可能在未來令人失望。這就是曲線擬合。
向前驗證分析的原理
向前驗證分析將資料分為「最佳化期間(樣本內)」和「驗證期間(樣本外)」,並沿時間序列反覆執行,以偵測過度最佳化。
【資料分割範例(10 年)】
├─ 最佳化期間 ─┤─ 驗證期間 ─┤
2015〜2018 年 2019 年 → 導出參數 A 並在 2019 年驗證
↓
2016〜2019 年 2020 年 → 導出參數 B 並在 2020 年驗證
↓
2017〜2020 年 2021 年 → 導出參數 C 並在 2021 年驗證
↓
(以此類推)
彙整各驗證期間的結果,即可評估「這個 EA 的參數在市場環境改變後是否仍然穩定」。
在 MT5 執行向前驗證分析的方法
MT5 的 Strategy Tester 目前並不原生支援向前驗證分析,但可透過以下方式替代。
方法①:手動分割樣本內 / 樣本外資料
步驟:
- 將回測期間設定為 2015〜2020 年並執行最佳化
- 從最佳化結果中挑選 3〜5 組頂尖參數
- 將選定的參數在 2021〜2025 年(樣本外)進行回測
- 比較最佳化期間與樣本外的 PF
評估標準(向前驗證效率):
WFE = 樣本外 PF ÷ 樣本內 PF × 100%
WFE 60% 以上 → 合格(無過度最佳化)
WFE 40〜60% → 需持續觀察
WFE 40% 以下 → 疑似曲線擬合(禁止使用)
方法②:使用第三方工具
- Strategy Quant X:可自動化執行向前驗證分析
- MT5 向前驗證最佳化(experimental):部分版本已實作此功能
最佳化時的注意事項
注意事項①:最佳化的變數限制在 1〜2 個
同時最佳化的參數越多,曲線擬合的風險就越高。
✅ 良好範例:僅最佳化 EMA 週期(10〜50,步距 5)
❌ 不良範例:同時最佳化 EMA 週期 × ATR 倍率 × RSI 週期
增加最佳化變數只會導致「組合爆炸」,不過是靠運氣找到恰好配對的組合而已。
注意事項②:不要直接採用最佳化結果的第一名
最佳化結果清單中,PF 最高的參數組合最有可能發生曲線擬合。
建議改用以下方法:
推薦做法:
1. 篩選出排名前 20% 的參數
2. 尋找彼此相近的參數群(群集)
3. 採用群集中央值附近的參數
舉例:如果 EMA 週期最佳化結果依 PF 由高至低排列為 21, 23, 19, 35, 22, 20...,則存在 20〜23 的群集,此時採用該群集的中央值(21〜22)。
注意事項③:拉長最佳化期間
建議設定:
- 最佳化(樣本內)期間:5〜7 年
- 驗證(樣本外)期間:2〜3 年
- 比例(樣本內:樣本外):70:30〜80:20
最佳化期間越短,過度最佳化的風險就越高。
如何解讀向前驗證分析的結果
優質 EA 的特徵
- WFE(向前驗證效率)達 60% 以上
- 樣本外 PF 介於樣本內 PF 的 50〜90%
- 各驗證期間的 PF 均為正值(全期間皆為正)
需要注意的 EA 特徵
- WFE 低於 40%
- 只有特定驗證期間表現良好(其他期間為負值)
- 樣本內 PF 超過 3.0(典型的過度最佳化徵兆)
設計不易過度最佳化參數的技巧
技巧①:確認參數敏感度
確認最佳值前後(±10〜20%)的參數是否也能維持穩定的 PF。
若 EMA=21 為最佳值:
EMA=18: PF 1.25
EMA=19: PF 1.31
EMA=20: PF 1.34
EMA=21: PF 1.38 ← 最佳值
EMA=22: PF 1.33
EMA=23: PF 1.29
EMA=24: PF 1.24
→ 附近的參數也能穩定維持正 PF = 穩健的策略
若前後的 PF 出現劇烈變化,則有可能是過度最佳化。
技巧②:使用不易過度擬合的簡單邏輯
參數越少、邏輯越簡單的 EA 越不容易發生曲線擬合。請組合使用 EMA 交叉、ATR 基礎的 SL/TP 設定等簡單要素。
總結
向前驗證分析重點整理:
- 樣本內(最佳化):樣本外(驗證)= 70:30 分割
- WFE(向前驗證效率)= 樣本外 PF ÷ 樣本內 PF × 100%
- WFE 60% 以上為合格標準
- 最佳化變數限制在 1〜2 個
- 採用群集中央值而非最佳值
透過執行向前驗證分析,即可找出在向前測試中也能穩定運作的 EA。回測成績越漂亮的 EA,這項驗證就越重要。
常見問題
Q:MT5 的原生功能可以執行向前驗證分析嗎?
MT5 的 Strategy Tester 基本上不支援向前驗證分析,但最新版本中可能已作為實驗性功能加入。最可靠的方式仍是手動分割期間、多次執行回測。
Q:WFE 為 50% 也可以使用嗎?
WFE 50% 處於臨界線。若樣本外 PF 在 1.2 以上,可以考慮實際運用,但建議先累積至少 6 個月的向前測試實績再做判斷。
Q:不做向前驗證分析就使用 EA 很危險嗎?
不能一概而論,但曲線擬合的風險確實會提高。至少請實施「保留部分最佳化期間作為樣本外」這個最基本的做法。
相關頁面
相關文章