你有沒有試過這種晚上:一套 ea程式 的回測曲線漂亮得令人心跳加速,於是你徹夜微調參數,每一組都跑出更高的年化回報。第二天早上信心滿滿把它掛上實盤,一個星期後帳戶卻開始漏血。問題不一定出在策略本身,更常見的原因是:你掉進了參數優化最經典的陷阱——過度擬合。
過度擬合,就是把參數調到完美貼合過去的數據,令系統在未來的真實行情中失去盈利能力。市面上大部分調參教學都在教「怎麼把數字調靚」,卻很少教「怎麼防止調過頭」。我這些年在 USIC 全美投資大賽與量化教學中,見過太多回測漂亮、實盤翻車的系統,下文先把三個最容易被忽略的過度擬合徵兆逐個拆開,再給一套可以重複執行的穩健性測試流程。
過擬合三信號:一眼看穿會「造假」的 EA 程式
在談判斷方法之前,先接受一個事實:幾乎所有基於歷史數據的策略,都帶着不同程度的過度擬合,分別只在於嚴重與否。正如IG 交易學院的移動平均線課程所講,任何技術指標都是從過去行情歸納出來的,問題在於把歸納做到極致時,系統記住的不只是規律,還有一大堆不應重演的雜訊。我把最常見的三種病徵歸納為一個概念,稱之為「過擬合三信號」,只要中了一項,就應該立即暫停優化。
第一信號,回測完美,樣本外暴跌。一套 ea程式 在 2015 至 2024 年的回測裡年化回報亮眼,把時間軸換到完全沒有參與調參的 2025 年,盈利卻瞬間變成虧損。樣本外數據是過度擬合的照妖鏡,我在 USIC 比賽中見過不少參賽者,回測報告人人叫好,樣本外測試一跑便現形。判斷方法很簡單:任何策略都必須預留一段從未調過參的數據,作為最終考核。
第二信號,參數微調,勝率劇變。把均線週期由 20 改為 22,勝率由 55% 跌到 41%;把止蝕距離改動半個百分比,年化回報出現三成波幅。參數敏感度如此之高,代表系統貼住的不是規律,而是雜訊。真正穩健的策略,參數在小範圍內移動時,表現應該平穩過渡,而不是大上大落。
第三信號,同一邏輯,多組參數一齊爆。有人喜歡用優化軟件一次跑幾萬組參數組合,再從中挑出回報最高的一組。假如絕大多數組合都在虧損,只有一兩組暴賺,而那幾組又剛好對應近年的單邊行情,請冷靜下來想一想:這不是軟件挖到寶,而是數據挖掘的偶然命中。把幾萬組結果攤開畫成分布圖,如果只有極窄的一條尖峰賺錢,其餘全部虧損,這套 ea程式 的本質就是賭博,不是交易。
三個信號說穿了同一件事:系統把過去背得太熟,以至於行情稍有變化就不知所措。競品教程教你如何調出更好的參數,這篇文章想提醒你的是另一面——如何分辨一套系統已經調過頭。
值得留意的是,這三個信號出現的時間點各有不同。信號一最遲發現,因為樣本外測試要等到策略接近完成才做;信號三最容易被忽略,因為多數人不會把幾萬組結果的分布攤開看,只盯着最靚的那一組。養成習慣之後,你會發現診斷過度擬合不需要複雜工具,三條問題就夠用:系統在陌生數據上還賺錢嗎?參數輕輕一動,表現穩不穩?優化結果是孤峰一座,還是一片高原?
為什麼「參數越多越精準」是常見的誤解
很多人的直覺是:參數愈多,系統對行情的描述愈細緻,理論上應該愈準確。這個想法在統計學上有一個專名,叫做維度災難。參數愈多,數據空間容許系統「硬湊」的餘地就愈大,一套八個參數的策略幾乎可以畫出任何形狀的曲線,也因此幾乎必然是順着雜訊作畫;一套只有兩個參數的策略自由度低,想硬拗都拗不動,反而更貼近真實的規律。
我在量化工作中見過不少這樣的反面教材。有學員拿一套集合時間過濾、新聞過濾、波幅過濾與多指標確認的系統來給我驗證,參數總數接近十個,回測數字靚到難以置信。我請他把每個參數逐一凍結、逐一解除,結果發現刪掉任何一個,表現都會明顯回落,看似每個參數都不可或缺。但當我把整段回測拉到樣本外,系統立刻打回原形。這種「每個參數都必不可少」的完美結構,正是過度擬合的典型特徵——真正穩健的系統,通常容許你刪掉一部分仍然站得住。
因此我提出「最小參數原則」:單策略參數控制在 3 至 5 個以內。超過這個數目,每多一個參數都要追問一句,它對策略邏輯有什麼不可取代的貢獻?答不出來,就刪掉。以移動平均線交叉為例,快線與慢線兩個週期,加上止蝕距離,三至四個參數已經足以完整描述整套邏輯。如果你發現需要第六個、第七個參數才能跑靚,問題通常不是參數太少,而是策略邏輯本身不夠清晰,需要靠參數堆砌去修補。
這套原則的另一面是:參數愈少,系統對你的要求反而愈高。因為沒有足夠的參數去遷就行情,策略必須依賴清晰的進出場條件取勝,這逼着你把邏輯想透。我時常跟學員說,調參是給策略化妝,化妝愈濃,卸妝之後愈見真章。與其花時間把八個參數慢慢試到完美,不如先把三個參數的核心邏輯反覆驗證清楚。一套經得起推敲的簡單系統,遠比一套經不起檢驗的複雜系統有價值。
穩健性測試:五個步驟,讓系統接受「未來模擬考」
判斷過度擬合不能靠感覺,要靠程序化的測試。以下是我在課堂上反覆使用的五步穩健性測試,全部做完大約一至兩小時,成本遠低於一次實盤虧損。
第一步,切割樣本內與樣本外數據。把歷史數據分成兩段,前半段用來調參,後半段鎖起來,調參期間一眼都不看。樣本外數據是整場考試的試卷,先看了答案,考試就失去意義。
第二步,做前推測試,亦即 Walk-Forward Testing。把樣本窗口不斷向前滾動:用第一段數據調參,第二段驗證;再用第二段數據調參,第三段驗證,如此類推。統計每一段的樣本外表現,如果每一段都能維持盈利,系統才算經得起考驗。前推測試的結論,比單一次的十年回測可靠得多。
第三步,檢查參數鄰域。把每個參數在基準值上下各移動一成至兩成,跑一組網格,觀察表現是否穩定。鄰域內勝率與回報平穩過渡的,才算穩健;表現像懸崖一樣突然崩塌的,就是過度擬合。
第四步,分市況測試。把行情按趨勢、橫行與高波幅分類,逐段測試。穩健系統不一定三種市況都賺錢,但它必須清楚自己在哪種市況不賺錢,並有對應的暫停機制。一套只會在大趨勢中盈利、橫行期長期虧損的 ea程式,本身沒有錯,錯的是使用者不知道這個前提,把倉位一直開到橫行期。
第五步,成本與滑點敏感度測試。把點差、手續費與滑點假設逐級加碼,觀察盈利曲線的變化。下一節的算例會示範,同一套系統在成本增加後,可以由盈利變成白做。對成本愈敏感的策略,實盤與回測的差距愈大,上實盤的風險也愈高。
五步做完,你會得到一張完整的成績單。值得強調的是,穩健性測試不是一次性的動作,而應該在每次修改策略後重新執行。市場結構會改變,波動特性會改變,半年前通過測試的系統,不代表半年後依然成立。我自己對實盤中的每套系統,都設定了三個月一次的例行複檢,把五步重新走一遍。測試的價值不在於一次通過,而在於長期跟蹤。
一套算例:兩期之差,如何吃掉三百美元
理論講完,用一組具體數字把過度擬合算給你看。假設一套雙均線 ea程式,基準參數為 20 期與 50 期,交易標的是歐元兌美元。回測一年共 200 筆交易,平均每筆盈利 9 美元,平均每筆虧損 8 美元,勝率 56%。
先算基準參數的期望值:
每筆期望值 = 56% × 9 − 44% × 8 = 5.04 − 3.52 = 1.52 美元
全年結果 = 200 × 1.52 = 304 美元(假設本金 10,000 美元,約等於 3%)
現在把快線參數由 20 改為 22,其餘條件完全不動,勝率由 56% 跌至 47%:
每筆期望值 = 47% × 9 − 53% × 8 = 4.23 − 4.24 ≈ 0 美元
全年結果 = 200 × 0 = 0 美元
兩期之差,一年盈虧相差約 304 美元。這個結果不一定代表策略失效,但它清楚指出參數敏感度過高。穩健的系統,20 期與 22 期的表現差距應該在兩成以內,而不是由賺 304 變成白做一年。
再用同一基準參數做成本敏感度測試。假設實盤平均點差比回測假設多 0.5 點,每筆額外成本約 0.5 美元,200 筆合共 100 美元,304 美元的盈利立刻壓縮至約 204 美元;若滑點再放大,利潤空間還會進一步收窄。這解釋了為什麼 EA 供應商展示的回測毛利,與實盤淨回報永遠對不上——把成本算清楚,往往是揭穿過度擬合的最快方法。
過度擬合系統與穩健系統:一張對比表看清分別
為了讓診斷更直觀,我把兩種系統的關鍵特徵整理成下表。你可以把手上任何一套策略拿來逐行比對,中箭愈多,過度擬合的風險愈高。
| 比較維度 | 過度擬合系統 | 穩健系統 |
|---|---|---|
| 參數數量 | 通常 6 個或以上 | 3 至 5 個以內 |
| 參數微調反應 | 勝率劇變,表現如懸崖 | 平穩過渡,小幅波動 |
| 樣本外表現 | 明顯遜於樣本內 | 與樣本內接近 |
| 市況適應 | 只在一種行情賺錢 | 多種行情各有邏輯 |
| 成本敏感度 | 毛利薄,加成本即虧 | 扣除成本後仍有空間 |
| 回測展示 | 只展示最好的一組 | 公開全部測試結果 |
表格最後一行值得特別強調。過度擬合的系統像賭徒,只會炫耀贏錢的那幾局;穩健系統則像審計報告,願意把每一組測試都攤開。評估任何自動化策略,看的不應該是「最好的那一組數字」,而是全部結果的分布形狀。
這張表對照的背後,是投資者都熟悉的一個常識:任何宣稱低風險高回報的工具都值得警惕。根據IFEC 投委會的交易須知,入市之前應該先了解交易機制與風險。把這份謹慎應用到自動交易上,就是先做穩健性測試,再談收益。與此同時,CFTC 的自動交易警示亦提醒,市面上不少以自動交易為名的方案,最後都被證實與零售外匯詐騙有關,尤其是那些只展示回測、拒絕公開邏輯的供應商。
總結與行動:從今晚開始的參數健康檢查
與其把時間花在尋找「最靚」的參數,不如先建立一套防止調過頭的健康檢查。以下四件事,今晚就可以開始:
- 數一數策略參數總數,超過 5 個,逐個質問它存在的理由
- 每次調參後記錄勝率、回撤與期望值的變化,微調即劇變的,直接淘汰
- 預留一段從未參與調參的樣本外數據,把它當成最終考核標準
- 上實盤前,把點差、滑點與手續費敏感度測試完整做一遍
我自己近年開發與評估策略,都會把這份清單印出來逐項打勾。魔鬼藏在細節:多數人不是輸在沒有好策略,而是輸在沒有驗證策略的方法。把「防止調過頭」變成習慣,比任何參數優化技巧都重要。記住過擬合三信號,守住最小參數原則,一套 ea程式 才值得把真實資金交給它。
常見問題
問:EA 程式參數越多越好嗎?
答:不是。參數愈多,系統在過去數據上硬湊的空間愈大,過度擬合的風險愈高。單策略參數建議控制在 3 至 5 個以內,每多一個參數都要問它對策略邏輯有沒有不可取代的貢獻。
問:什麼叫過度擬合?怎麼知道自己的系統有沒有?
答:過度擬合是把參數調到完美貼合過去數據,令系統在未來行情失去盈利能力。可以用過擬合三信號自檢:回測完美但樣本外暴跌、參數微調勝率劇變、同一邏輯多組參數一齊爆,中一項就要警惕。
問:樣本外測試是怎麼做的?
答:把歷史數據切開,前半段調參,後半段鎖起來完全不看,最後才用鎖起來的數據考核系統。更進階的做法是前推測試,讓樣本窗口不斷向前滾動,逐段驗證每一段的樣本外表現。
問:參數微調之後勝率大上大落,代表什麼?
答:代表系統對參數過分敏感,正在順着雜訊作畫而不是捕捉規律。穩健系統的參數在小範圍移動時,勝率與回報應該平穩過渡。敏感度異常高的系統,不宜直接上實盤。
問:回測很靚的 EA 程式,可以直接上實盤嗎?
答:不建議。先做完整穩健性測試,再檢查成本與滑點敏感度,最後用模擬帳戶實跑一段時間,核對實盤成交與回測假設是否吻合,才考慮用閒置資金小額開始。
問:新手應該先學調參,還是先學資金管理?
答:先學資金管理。調參追求的是收益,資金管理決定的是生存。一組參數再靚,倉位控制不當同樣可以一次虧光。先定好單筆風險上限,再談優化。
準備好開始你的交易之旅?立即聯絡我們的專業團隊。
WhatsApp:+852 5378 5383
網站:https://aitrading.ace-fortune.com/EA
投資涉及風險,過往表現不代表未來回報。本內容僅供教育參考,不構成任何投資建議。



