分類
績效
難度
進階
適用情境
回測策略設計EA 評估

過度配適

過度配適是把 EA 參數調得過分貼合歷史資料,使策略在回測中表現亮眼、在未曾見過的資料上表現不佳,因為它利用的是雜訊而非真正的市場規律。

亦稱:overfitting, 曲線配適, 過度最佳化

更新於 · 審閱於

一句話講清

把規則一路調到與過去貼合得極緊,於是它學會的是那段歷史的偶然,而不是它的規律。回測越來越好看,策略卻越來越差,而報告裡沒有任何東西能把兩者分開。

為什麼重要

過度配適是一種會產出漂亮證據的失效方式,正因如此,它能通過一個差策略過不了的審查。每跑一輪最佳化,報告出來的結果都會變好,無論策略本身是否變好;只看報告結果的流程,因此根本分辨不出差別。

  • 它解釋了最常見的 EA 失望:回測出色,實盤平庸或虧損,卻找不出任何 bug。什麼都沒壞——那次調參量到的是樣本。
  • 你越用力,它越嚴重。參數更多、最佳化輪次更多、候選策略更多,都會一起抬高「勝者是靠貼合雜訊取勝」的機率。
  • 從獲勝的那次執行裡看不出來。把真實優勢與配適出來的優勢分開的唯一證據,是調參從未見過的資料上的表現,而這段資料必須在調參開始之前就先留出來。

用它驗證策略

用在哪裡

  • 判斷一支 EA 公布的回測是優勢的證據,還是調參的證據。
  • 在動手最佳化之前,決定一個策略最多可以有幾個參數。
  • 解讀向前推進檢驗中樣本內與樣本外結果之間的落差。
  • 解釋為什麼一個在最佳化表裡排第一的策略,一投入使用就走樣。

可靠的結果長什麼樣

  • 公布的區間包含挑選參數期間未被動過的資料。
  • 策略參數很少,且每一個都對應交易者不引用回測也能解釋清楚的東西。
  • 相鄰參數值的表現相近。只在某一個設定下才成立的優勢,是樣本的性質。
  • 同樣的設定,在沒有被用來挑選它們的商品與時間區間上依然有效。
  • 在這一個之前試過多少策略是公開的,因為一次大規模搜尋的勝者本來就該憑運氣看起來不錯。

警訊

  • 精度離譜的參數——37 週期的均線、23.7 點的停損——而如果優勢是真的,取整值的表現幾乎一樣。
  • 多年回測裡勝率超過 90 %、或夏普超過 3,卻沒有任何前推紀錄。
  • 結果只在挑選參數所用的那一個商品、那一個區間上呈現。
  • 績效曲面上只有一個孤零零的尖峰,而不是一片寬闊的高原。
  • 完全沒提在公布這一版之前測試過多少個變體。

回測與實盤的差異

  • 實盤帳戶是第一次真正意義上的樣本外檢驗,所以下滑是立刻出現而不是逐漸出現。
  • 被配適的策略通常滑向「損益兩平減去成本」,而不是戲劇性的巨虧,這讓人很容易把它解釋成一段行情不好。
  • 要量的是樣本內與實盤之間落差的大小。任何策略出現溫和回落都很正常;跌穿損益兩平線才是那個簽名。
  • 下滑之後重新最佳化會讓回測恢復好看,並把整個循環再走一遍——這正是流程自己造出來的陷阱。

建議的驗證方法

  1. 1在動任何一個參數之前先留出樣本外區間,並且只在最後看它一次。
  2. 2寧可要少而含義站得住的參數,也不要多而結果更好的參數。
  3. 3看鄰域而不是看峰頂:取一片寬高原的中間,而不是一根尖刺的頂端。
  4. 4把定稿的設定原封不動地拿到其他商品、其他時間區間上重測。
  5. 5當策略確實需要隨時間重新配適時,就用向前推進分析,讓重新配適本身也成為被檢驗的一部分。

範例

最佳化工具給出一個策略最好的十組參數。被公布的是最上面那一行;而真正說明優勢是否為真的,是它周圍那張表的形狀。

樣本內最佳設定(週期 37)
PF 2.41
相鄰設定(週期 35–39)
PF 0.94–1.06
挪一格就把結果毀掉——那個峰是尖刺,不是高原。
同樣的設定,未被動過的樣本外區間
PF 0.88

真實的優勢會隨著參數遠離最佳點而平緩變弱。被配適的優勢則從懸崖上掉下去,而這道懸崖在花掉任何一份樣本外資料之前就已經看得見。

計算 樣本內 2.41 → 樣本外 0.88,而相鄰設定都停在損益兩平附近

結果 那個 2.41 是區間的性質,不是規則的性質

怎麼讀這個數字

過度配適是從產出結果的流程去診斷的,而不是從結果本身。要問:調了什麼、在什麼資料上調、又留下了什麼。

區間 含義
一個區間,全部參數都最佳化,什麼都沒留 這份報告對未來沒有證據價值。它描述的是規則能被扳到多貼合一個樣本。
公布了樣本外區間,但每次調整後又拿來用 預留已經花掉了。一旦它的結果反過來餵給調參,它也變成了樣本內。
一個未被動過的樣本外區間,只看了一次 最低標準。要解讀落差,而不是解讀水準。
帶寬闊參數高原、並做跨商品校驗的向前推進檢驗 實盤之前能拿到的最強證據,因為重新配適這件事本身被檢驗過了。
  • 要數試過的策略數量,而不只是參數數量。試兩百個想法再公布最好的那個,是一次勝者本就該看起來不錯的搜尋。
  • 把公布的參數取整再跑一遍。如果結果大體還在,那份精度只是裝飾;如果結果垮掉,那份精度本身就是優勢。
  • 去評判參數曲面,而不是峰頂。能遷移到未見資料上的性質是寬度。

mt5depot 的列表會寫明資料區間、測試模型與成交筆數,讀者因此可以問出上面這些問題,而不是直接相信那條曲線。

常見誤解

重複使用樣本外區間

每當預留區間裡的一個結果又指導了一次調整,那段區間就成了訓練資料的一部分。幾輪之後已經沒有樣本外了,而流程感覺更嚴謹,證明的東西卻更少。

把高夏普或高勝率當成沒有過度配適的證據

那恰恰是配適會吹大的數字。零售 EA 的樣本內夏普超過 3,更可能是症狀而不是安慰。

以為參數少策略就安全

參數數量是一條路徑,策略篩選是另一條。在同一個區間裡從兩百個簡單策略中挑出最好的一個,對樣本的配適效果,和調一個複雜策略一樣有效。

實盤表現讓人失望時就重新最佳化

這會讓回測恢復好看,並把失敗重演一次,因為新的配適出自和舊配適完全相同的流程。要先回答的問題是:原來那個優勢有沒有哪怕一次是樣本外的。

深入說明

十四份公開回測能定下什麼,又定不下什麼

這裡公開的 14 支 EA數值
樣本內獲利因子1.27–1.52
獲利因子低於 1.00 的條目0
報告了樣本外區塊的11
樣本外報酬率−0.57 % 至 +3.01 %
虧損的樣本外區塊2
在真實資金帳戶上驗證過的執行0

先讀最後一行,再讀第一行。滾動回測跑的仍然是有人可能早就看過的歷史,所以上面沒有任何一項是「能定下什麼」的那種樣本外——而且有三支 EA 公布了預留區間的起始日期,此後再沒有發布過任何結果,從內部看,報告偏差正是這個樣子。

弱點在規模,不在正負號。這裡樣本內紀錄的中位數是 362 筆已平倉交易,預留區塊的中位數只有 21 筆。這麼短的一段跑不出優勢與一個平靜季度的區別,所以那些小幅的負數(−0.57 %、−0.47 %)並不比正數帶有更多判決。

策略測試器的 Forward 下拉選單(No、1/2、1/3、1/4、Custom)會替你把區間切開。它攔不住你在每一輪最佳化之後又去看一遍前半段,而正是這一次次重看把它花掉了。把 Forward 設為 Custom,填上你停止查看的那個日期——上面十個區塊用的是 2026-04-01——預留區間值多少,就取決於落進去多少:Cairn 有 142 筆,其次最大的是 40 筆,另有兩支只有個位數。

常見問題

買之前怎麼判斷一支 EA 是不是過度配適了?
看流程,別看曲線。要問:挑參數期間是否留出過某段區間;設定是取整的還是精確得不合常理;相鄰的參數值表現是否相近;這套規則有沒有在並非用來挑選它的商品上被測過。在這裡答不上來的問題,本身就是答案。
少用參數能防住過度配適嗎?
有幫助,但防不住。在同一批資料上從眾多候選中挑出表現最好的那個策略,即使每個候選都很簡單,也仍然是在配適這批資料;所以試過多少個想法,和其中任何一個有多少個旋鈕同樣重要。
最佳化總是壞事嗎?
不是——策略總得有一套設定,從歷史裡挑選它們是合理的。把最佳化和過度配適分開的,是有沒有留出什麼來對照這個選擇,以及選中的設定是落在一片寬闊高原上,還是落在一根尖刺上。