關閉選單

過度擬合是什麼?把資料打亂重跑,最佳參數照樣跑出漂亮的年化

10 秒看懂

過度擬合是把規則調到剛好貼合過去那段資料。看起來很厲害,換一段期間就不管用。

我們用 SPY 三十三年資料示範:前半段掃 131 組均線參數,最好的一組年化 10.81%

把同一組拿到後半段,變成輸給買進持有 5.25 個百分點。

最關鍵的是這一段:我們把日報酬順序打亂,讓資料裡不可能有任何訊號,再用同一套流程挑出最好的一組,這樣重跑 200 次。結果有 12 次,純運氣挑出來的還贏過原始資料。那個漂亮數字有很大一部分是「挑最好的」這個動作做出來的。

過度擬合是什麼:一句話

你有一條規則,例如「快線上穿慢線就買、下穿就賣」。快線用幾日、慢線用幾日,這兩個數字叫參數。你把各種組合都試一遍,挑出過去表現最好的那組。

那挑出來的成績,能不能相信?

問題就在這裡。只要試的組合夠多,總會有一組在過去表現特別好,哪怕那條規則本身什麼都不是。這件事聽起來抽象,所以我們直接做給你看。

BOS 回測:在前半段找出最好的參數

資料是 SPY 從 1993-02-01 到 2026-08-12 的含息還原日線,對半切成兩段。我們先在前半段(1993-02 到 2009-10)把 131 組參數全部跑一遍。

前半段的冠軍

快線 35 日、慢線 240 日,年化 10.81%。同期買進持有是 7.36%,也就是多賺了 3.45 個百分點

如果只看到這裡,這是一個很值得拿出來講的策略。

把它拿到沒看過的資料上

那把它拿去跑一段它沒看過的資料,會怎麼樣?

後半段(2009-10 到 2026-08)這段資料,在挑參數的時候完全沒有用到。把同一組 35/240 日拿過去跑:

後半段的成績

同一組參數,年化 9.32%。同期買進持有 14.57%,也就是輸了 5.25 個百分點

兩張參數熱力圖並排,左為 1993 到 2009 年、右為 2009 到 2026 年,左圖最佳參數為 35/240 日,右圖最佳參數變成 50/240 日,位置完全不同
顏色越深表示年化越高。兩張圖的深色區域根本不在同一個地方。

而且後半段自己的最佳參數是 50/240 日,跟前半段那組不一樣。如果你在 2009 年做完回測、選了 35/240 日,接下來十七年你抱的就是一組已經不是最好的參數,而且你不會知道,因為要等到現在才看得出來。

最狠的一招:把資料打亂重跑

前後兩段挑出來的最佳參數對不上,你還可以辯解說「只是後來市場變了」。所以我們做了第二個測試,這個沒得辯。

把前半段的日報酬順序完全打亂。每天漲跌多少都還在,但先後次序被洗掉了,資料裡因此不可能有任何趨勢可以利用。然後用同一片網格、同一套挑最好的流程,重跑 200 次。

長條圖比較三個數字:打亂後網格的平均那一格 3.80%、打亂後網格的最好那一格 7.34%(範圍 4.5% 到 11.0%)、原始資料網格的最好那一格 10.81%
中間那根是「純運氣」能達到的水準。原始資料那根,只是剛好站在它的上緣。
打亂之後

那一百多組裡普通的一組:年化 3.80%。這很合理,因為資料裡既然沒有訊號,隨便挑一組參數本來就不該賺到什麼,這個數字剛好可以拿來當「完全沒有本事」的基準線。

那一百多組裡最好的一組:一半以上的次數都做得到 7.34%,200 次跑下來最低 4.5%、最高 11.0%。

把兩邊放在一起看。原始資料挑出來的最好成績是 10.81%,而完全沒有訊號的那 200 次裡,有 12 次挑得比它還好。光靠運氣就摸得到這個成績,原始資料那一組並沒有跳出運氣的範圍。

這一段要說的不是「均線沒有用」。要說的是:你看到的那個漂亮數字,有很大一部分是「從一百多格裡挑最好」這個動作製造出來的,跟資料裡有沒有真的訊號無關。任何人拿一堆參數給你看最好的一組,你都可以問他這一句:那把資料打亂之後,能挑到多少。

「參數動一格就崩」這個檢查沒有你想的可靠

最常聽到的判斷方法是:把參數微調一點,如果績效整個崩掉,那就是過度擬合。這個方法有用,但這次的資料給了我們一個反例。

那組 35/240 日的鄰居(快線加減 5 日、慢線加減 20 日)在前半段的年化是 9.76% 到 10.48%,最佳格本身是 10.81%。鄰居完全沒有崩,看起來非常穩健。

但它到了後半段照樣輸給買進持有 5.25 個百分點。

所以這一關過了不代表安全。原因是整片網格可能一起過度擬合到同一段行情:前半段包含了兩次大空頭,任何「跌破就跑」的規則在那段期間都好看,鄰居當然一起好看。鄰居之間互相印證,證明不了什麼。

三個實際可用的做法

  1. 先想道理,再決定要測什麼:如果你說不出這條規則為什麼應該有效,那撈出來的最佳參數就只是一個運氣的名字,而運氣不會因為你多試了幾百組就變成本事。
  2. 把調整與驗證分開:切一段資料出來完全不碰,等參數都調好了再拿它驗一次,而驗出來比較難看是正常的,那個比較難看的數字才是接近你實際會拿到的成績。
  3. 做一次打亂對照:這是三個裡面最少人做、卻最有力的一個,因為前面兩關都還可以用「市場變了」解釋過去,這一關不行。把資料洗牌重跑整套流程,如果你的成績沒有明顯超過純運氣的範圍,那就先不要上線。

這篇是量化交易是什麼那篇「回測最會騙人的三個陷阱」的展開版。想看我們自己怎麼把這套紀律用在實際案例上,可以看200 日均線策略有用嗎台灣散戶技術指標實測報告。至於「勝率」這個同樣很會騙人的數字,在勝率高就會賺錢嗎

常見問題

過度擬合到底是什麼?

就是把規則調到剛好貼合你手上那段歷史資料。參數多試幾組,總有一組在過去表現特別好,但那組好是為那段歷史量身訂做的,換一段期間就不見得管用。

怎麼判斷一個回測有沒有過度擬合?

三個方法,由弱到強。第一,把參數微調一格看績效會不會崩,但要注意這一關過了不代表安全,我們的例子裡鄰居就沒有崩。第二,切出一段沒有拿來調參數的期間單獨驗證。第三,把資料打亂之後重跑同一套搜尋流程,看你的成績有沒有明顯超過「純運氣也做得到」的範圍。

為什麼把資料打亂還會跑出好成績?

因為你測的不是一組參數,你是在 131 組裡面挑最好的出來。就算每一組本身都沒有優勢,一百多組的最好那一組看起來也會不錯。這個成績是搜尋這個動作製造出來的,跟資料裡有沒有訊號無關。

那參數到底該怎麼決定?

兩個原則。先想清楚這條規則背後的道理,再決定要測哪些參數,不要拿一整片網格去撈。決定之後就固定住,用沒有參與調整的那段期間驗一次,而且要接受驗證的結果通常會比調參時難看。

這是不是代表所有回測都不能信?

不是。回測本身是有用的工具,問題出在「用同一段資料反覆調整、然後拿調完的成績當證據」。把調整與驗證分開、把搜尋次數算進去、加上打亂對照,回測仍然可以告訴你很多事。

林修禾 Joshua Lin

本文作者|林修禾 Joshua Lin

投資與教學資歷都超過二十年。教學橫跨三個階段:從兒童理財教育起步,到成人的價值投資,再到近年的量化交易。曾創立三間公司,並以價值投資建立起財務上的獨立與自信,也擔任過台積電的理財培訓師,是價值投資的國際級講師。他始終相信,理財是為了把生活過得更好,而看懂財報、獨立思考,遠比追逐明牌或現成的答案更重要。

延伸閱讀

實測資料為 SPY 含息還原日線,1993-02-01 至 2026-08-12。規則為快線上穿慢線做多、下穿空手、不做空,訊號取前一日收盤判斷、隔日收盤成交以避免前視偏差,共 131 組參數。不計交易成本與滑價,這一項只會往一個方向偏:加上成本只會讓換手高的參數更難看。打亂對照固定亂數種子、重跑 200 次。資料來源 FMP,查證日 2026 年 8 月 13 日。本文為方法論示範,不構成投資建議。