量化交易這幾年在台灣愈來愈普及,不少投資人開始學寫程式、抓歷史資料、跑回測,看著螢幕上一條漂亮的權益曲線一路向右上方爬升,年化報酬率動輒 30%、40%,勝率超過六成,最大回撤壓在個位數百分比——那種成就感很難不讓人心動。
但如果你身邊有朋友真的把這樣的策略拿去實盤跑過,十之八九會告訴你一件事:回測的美好曲線,跟真實帳戶的走勢是兩回事。有人形容這叫「回測是天堂,實盤是人間」。這種落差不是巧合,也不是運氣不好,背後有一個在統計學與機器學習領域被研究得很透徹的現象,叫做「過度配適」(overfitting,也譯作過度擬合)。這篇文章想把這個觀念從頭到尾說清楚:它是什麼、為什麼會發生、怎麼辨識、又該用什麼方法降低風險。
什麼是過度配適
過度配適原本是統計學與機器學習的核心概念之一。簡單說,當一個模型(或一套交易策略)為了追求在「已知資料」上的表現,把參數調到剛好能完美解釋這批資料裡的每一個細節,包括其中的雜訊與偶然事件,這個模型就失去了「泛化能力」——也就是套用到「未知資料」時預測力大幅下降。
用白話一點的比喻來說:假設你要準備一場考試,題庫有 100 題歷史考古題。如果你的讀書方法是把每一題的答案死背下來,不去理解背後的觀念,那麼只要正式考試出的是這 100 題裡的原題,你可以考滿分;但只要題目換了敘述方式、換了數字,你就完全答不出來。這就是過度配適——你學到的不是「規律」,而是「答案本身」。
量化策略的過度配適,發生的機制一模一樣。策略開發者拿一段歷史資料(例如台股加權指數過去五年的日線),不斷調整參數(均線天數、RSI 門檻、停損停利比例、進出場條件的邏輯組合),直到回測結果「好看」為止。問題是,這五年的歷史資料裡,有些漲跌本來就是隨機雜訊、偶發事件(例如某天因為特定新聞出現的異常跳空),不是可以重複發生的規律。當策略被調整到剛好能「吃到」這些雜訊帶來的獲利,它記住的其實是這五年獨一無二的巧合,而不是市場真正存在、未來還會重複出現的結構性規律。
回測與實盤落差的常見成因
過度配適是造成回測與實盤落差最核心的原因之一,但實務上落差往往是好幾個因素疊加造成的,不是單一原因可以完全解釋。理解全貌,才不會誤把所有問題都歸咎給「模型不夠好」,然後陷入不斷加參數、越調越複雜的迴圈。
一、參數過度優化
這是過度配適最典型的形式。假設你在測試一套均線交叉策略,你把短均線天數從 3 天到 20 天、長均線天數從 20 天到 120 天,兩兩組合窮舉一遍,總共測了上千種參數組合,然後挑出歷史報酬率最高的那一組(例如「5 日均線穿越 47 日均線」)當作最終策略。
問題來了:為什麼是 47 天?有沒有什麼市場結構、產業周期、法人結算週期可以解釋「47」這個數字的合理性?如果答案是「沒有,純粹是回測跑出來最賺的數字」,那麼這組參數很可能只是剛好擬合了這段特定歷史資料裡的雜訊,未來換一段時間、換一種市場氛圍,這組參數不見得還會有效。這種「用暴力窮舉找出歷史最佳參數」的做法,在量化領域有個專有名詞,叫做資料探勘偏誤(data mining bias)或稱「資料窺探」(data snooping):測試的參數組合越多,找到一組純屬巧合、剛好在歷史上表現很好的機率就越高,這跟策略本身有沒有真正的邏輯無關。
二、交易成本沒有確實計入
回測環境是理想化的。很多新手寫的回測程式,預設是「以收盤價成交、沒有手續費、沒有滑價」,這樣算出來的報酬率會系統性地偏高。台灣股票市場的實際交易成本至少包含:
- 證券交易稅:現股賣出課徵成交金額 0.3%(當沖減半課徵,且需符合當沖適用條件)
- 券商手續費:牌告費率通常為成交金額的 0.1425%,買賣雙邊都要收,不少券商依交易量或活動提供折扣
- 滑價(slippage):下單當下的市價與實際成交價之間的落差,尤其在下單量較大、或標的流動性不足時更明顯
一套策略如果換手頻率很高(例如每天進出好幾次),光是手續費與交易稅的累積侵蝕,就可能把回測上看起來不錯的報酬率吃到所剩無幾,甚至轉正為負。這不是過度配適的問題,而是回測模型「假設過度理想化」的問題,但兩者常常一起出現,讓落差被放大。
三、流動性與委託成交的落差
回測程式假設「訊號出現時就能以某個價格成交」,但真實市場不是這樣運作的。尤其是量能較低的中小型股,回測裡買得到、賣得掉的價位,實盤下單時可能出現「委託掛進去卻等不到成交」,或是「一次性下大量委託,把價格往不利的方向推」(這在學術上稱為市場衝擊成本,market impact)。這種落差在標的成交量小、策略部位相對於日均量偏大時特別明顯。
四、前視偏差與生存者偏誤
前視偏差(look-ahead bias)指的是回測程式不小心用到了「當下時間點還不存在的資訊」。舉個常見的例子:用財報數據做選股策略時,如果直接用「該季財報的公告值」去回測「季底那天」的選股結果,就會有問題——因為財報通常是季底之後一到兩個月才公告,季底當天你根本還看不到這份數字。這種資訊時序錯置,會讓回測績效被嚴重高估,因為策略等於是「用未來的答案來預測過去」。
生存者偏誤(survivorship bias)則是指歷史資料庫如果只保留「現在還存在」的股票,那些下市、合併、被下市櫃的公司就會從資料集裡消失。如果回測用的股票池是「目前的上市公司清單」往回套用到過去,就會漏掉那些後來表現差到下市的公司,導致回測績效被系統性高估——因為真正糟糕的案例已經被資料庫悄悄「洗掉」了。
過度配適的辨識方法:樣本內與樣本外
既然過度配適這麼難察覺,業界(不論是學術界的計量金融研究,還是實務界的量化基金)發展出一套基本功,就是把歷史資料切成「樣本內」(in-sample)與「樣本外」(out-of-sample)兩段。
具體做法是:假設你有 2016 到 2026 共十年的資料,你只用其中前七年(2016–2022,樣本內)來設計策略邏輯、調整參數;後三年(2023–2026,樣本外)完全保留不看,等策略邏輯定案之後,才拿樣本外這段資料去驗證。
這個做法背後的邏輯很直觀:如果一套策略是抓到了真實的市場規律,它在「沒看過」的資料上應該也要維持一定水準的表現,即使不如樣本內那麼漂亮,至少方向與績效等級要接近;但如果樣本外的表現與樣本內判若兩人——樣本內年化 30%,樣本外變成年化 -5%——這就是過度配適的強烈警訊。
比較嚴謹的做法還會用到「滾動視窗驗證」(walk-forward analysis):把資料切成一段一段,每一段都用「前一段訓練、後一段驗證」,然後往前滾動,重複這個過程好幾次。這種方式比單純切一刀「前七年後三年」更能反映策略在不同市場階段(多頭、空頭、盤整)的穩健度,因為單一一段樣本外資料,剛好可能是特別溫和或特別劇烈的行情,本身也帶有偶然性。
另一個常被學術界引用的觀念,是計量金融學者 Marcos López de Prado 提出的「最小回測長度」(Minimum Backtest Length)與「回測過度配適機率」(Probability of Backtest Overfitting, PBO)等概念,核心精神都是同一件事:測試過的參數組合數量越多,你就需要越長、越多樣的歷史資料來支撐這個結論的可信度,否則挑出來的「最佳策略」很可能只是統計上的偶然。
一個匿名化的案例:型態描述
為了說明過度配適實際上長什麼樣子,我們可以用一個匿名化、不指涉任何真實個股的假設情境來說明。
假設某位開發者針對某檔虛構標的「A 股」,設計了一套結合三項技術指標(KD、MACD、布林通道)搭配特定天數均線的複合策略。他在 2019 到 2023 這五年的資料上反覆調整每一項指標的參數門檻,最終找到一組組合,回測結果顯示:五年累積報酬率超過 200%,最大回撤僅 8%,勝率 68%。
這個結果乍看之下非常吸引人。但仔細檢視會發現幾個警訊:
- 參數數量過多:三項技術指標加上均線天數,總共牽涉七、八個可調參數,每個參數又各自有一個合理的數值區間。當可調參數的自由度越高,「剛好找到一組在歷史上表現特別好」的機率就越高,這跟策略是否真的有效,其實是兩件事。
- 報酬集中在少數幾筆交易:如果把五年裡的所有交易攤開來看,發現其中 200% 的累積報酬有一半以上是來自其中兩、三筆單一交易貢獻的——例如剛好搭上某一波急漲——那麼這套策略的「平均」績效其實是被少數極端值撐起來的,一旦拿掉這幾筆交易,整體表現會大幅滑落,代表策略的穩健性其實不高。
- 樣本外表現崩壞:若把這套參數組合拿到 2024 到 2026 這段沒有參與過調參過程的資料上驗證,年化報酬率從樣本內的驚人數字,滑落到接近零甚至轉負,勝率也從 68% 降到 45% 左右——這正是典型的過度配適樣態:策略在「看過的」資料上表現優異,在「沒看過的」資料上打回原形。
這個型態描述沒有指涉任何真實股票,也沒有給出任何實際的參數數值建議,純粹是說明「過度配適在真實回測報告中,通常會呈現什麼樣的統計特徵」,讓讀者未來檢視自己或他人的回測報告時,有一份可以核對的檢查清單。
常見的誤解
誤解一:「回測績效越漂亮,代表策略越好。」
事實恰好相反。當回測績效好到不合常理(例如年化報酬率遠遠超過大盤指數,且幾乎沒有虧損月份),這往往是過度配適的警訊,而不是策略優異的證明。真正穩健的策略,樣本內外的表現通常會有一定程度的衰減,這才符合統計上的常態;如果樣本外表現「絲毫不打折」,反而更值得懷疑資料處理過程是否有前視偏差之類的邏輯漏洞。
誤解二:「參數調得越細,策略越精準。」
可調參數越多、自由度越高,模型就越容易去擬合資料中的雜訊而非規律,這在統計學上稱為「維度災難」的相關概念之一。越簡單、參數越少、背後邏輯越能被基本面或市場結構解釋的策略,通常泛化能力反而較好。
誤解三:「只要樣本外測過一次沒問題,就可以放心。」
如果開發者針對同一批樣本外資料,反覆調整策略、一次次拿去驗證,直到「這次終於過關」,那麼這批「樣本外」資料實質上已經變成新的「樣本內」資料了——因為它同樣被用來篩選、挑選策略。這種現象有個名稱叫「樣本外資料的洩漏」(information leakage),是實務上很容易不小心犯的錯誤。真正嚴謹的做法,是樣本外資料只能驗證一次,驗證完不論結果好壞,都不能回頭再調整參數重測。
誤解四:「過度配適只是統計問題,不影響真實下單。」
過度配適的策略在實盤最直接的後果,就是虧損發生的時間點與方式,跟回測報告完全對不上——回測說最大回撤只有 8%,實盤卻連續虧損兩成以上都撐不住停手;這種心理上的落差往往才是投資人真正付出代價的地方,而不只是帳面數字的差異。
與台灣市場的連結
台灣證券交易所與期貨交易所都對使用應用程式介面(API)進行程式下單訂有規範。依「證券商受理投資人使用應用程式介面(API)服務作業規範」,投資人申請 API 服務前,證券商必須指派合格業務人員向投資人充分說明使用須知及相關權利義務,包括網路壅塞、斷線、停電、電腦程式錯誤等相關風險,投資人須簽署聲明書確認已了解並詳閱相關內容。換句話說,程式交易在台灣是被明文規範、且風險揭露義務落在券商身上的合法交易方式,但監理規範管的是「連線與委託的合法性與風險告知」,並不是、也無法替投資人保證策略本身的獲利能力——策略的過度配適風險,終究要靠開發者自己用嚴謹的驗證方法去把關。
期貨交易所方面,對程式交易下單的委託方式也有明確限制,例如盤前時段的期貨、選擇權委託僅限「市價立即成交否則取消」、「限價立即成交否則取消」與「限價當日有效」等特定類型,不接受範圍市價單與市價或限價立即全部成交否則取消單。這類制度細節提醒我們,回測時如果沒有把「哪些委託類型在特定時段其實下不了單」這種制度限制納入模擬,回測結果同樣會偏離實際可執行的狀況——這也是造成回測與實盤落差的另一種來源,跟策略邏輯本身無關,而是制度規則沒有被完整模擬進去。
對台灣的量化交易者來說,還有幾個在地化的現實條件必須放進回測模型裡,才不會低估落差:現股當沖交易稅減半課徵、平盤下不得放空的限制(依現行規則,一般個股在平盤以下通常不得融券賣出或借券賣出,但也有例外情況隨制度調整)、漲跌幅限制(現行為 10%)、以及個股流動性差異極大——同樣一套策略,套用在成交量長期偏低的中小型股與大型權值股上,滑價與流動性風險完全是兩個量級的問題。回測時如果用同一套「零成本、零滑價」的簡化假設套用到所有標的,很容易高估策略在中小型股上的可執行性。
如何降低過度配適風險:實務原則
以下幾點是量化領域普遍認可、有助於降低過度配適風險的做法,這裡只做觀念性說明,不涉及任何具體標的或參數建議:
- 保留足夠長且未被使用過的樣本外資料,且樣本外驗證只做一次,不因結果不理想就回頭調整參數重測。
- 偏好參數少、邏輯可被基本面或市場結構解釋的策略,對於參數眾多、邏輯複雜到難以用一句話講清楚「為什麼有效」的策略保持警覺。
- 把交易成本、滑價、流動性限制、委託制度規則完整納入回測模擬,而不是用理想化的零成本假設。
- 檢視報酬是否集中在極少數交易,如果拿掉表現最好的幾筆交易後績效大幅滑落,代表策略的穩健性值得懷疑。
- 用滾動視窗驗證取代單一切分,觀察策略在不同市場階段(多頭、空頭、盤整)的表現是否具有一致性,而非只在單一段歷史行情中被驗證過。
- 小額實單測試作為最後一道關卡,在正式投入預定資金規模之前,先用相對小的部位在真實帳戶跑一段時間,藉此觀察下單延遲、滑價、以及自己在真實虧損發生時的心理反應,這些都是回測模擬無法完全複製的變數。
重點回顧
- 過度配適是指策略在調參過程中,過度貼合歷史資料中的雜訊與偶然事件,導致回測表現亮眼、但套用到未看過的資料時預測力大幅衰退。
- 回測與實盤落差的成因是多重的,除了過度配適,還包括交易成本未確實計入、流動性與滑價、前視偏差、生存者偏誤等,實務上通常是疊加發生。
- 樣本內/樣本外切分與滾動視窗驗證,是學術界與業界公認用來檢驗策略是否過度配適的基本方法;樣本外資料只應驗證一次,重複調整重測會讓驗證失去意義。
- 回測績效「好到不合常理」本身就是一個警訊,而非策略優異的證明;越簡單、邏輯越能被解釋的策略,通常泛化能力較好。
- 台灣市場的證交稅、手續費、漲跌幅限制、平盤下放空限制、期交所對特定時段委託類型的限制等制度細節,都必須完整納入回測模擬,否則回測可執行性會被高估。
- 過度配適的風險無法靠監理規範消除——券商依規範必須做風險揭露,但策略本身的穩健性,終究要靠開發者自己的驗證方法把關。
量化交易的魅力在於它把決策邏輯白紙黑字寫下來,可以被檢驗、被回溯、被優化,這是它相較於單純憑感覺操作最大的優勢。但也正因為「可以被優化」這件事太容易做到,過度配適幾乎是每一位量化策略開發者都會遇到的陷阱——差別只在於,有沒有建立一套機制及早發現它、或是等到實盤虧損發生才回頭意識到問題出在哪裡。理解回測數字背後可能存在的水分,是任何想長期走在這條路上的人,都應該具備的基本素養。