跳至主要內容
研究 / 教育 / 交易日誌

技術分析 · 專業 · 第 13 篇,共 16 篇

過度擬合與樣本外測試:為何最好的回測最不可信

同一條規則試過足夠多的版本,總有一個會碰巧在過去的數據上表現亮眼。甚麼是過度擬合、為何嘗試次數比勝出者的數字更重要,以及預留數據和前推測試如何分辨擬合與運氣。

InnoMP Research · Education Desk 發佈於 2026年10月25日 · 更新於 2026年10月25日 10 分鐘閱讀
InnoMP Research 封面插圖 — 四十五次 中的最佳
重點摘要

過度擬合(overfitting)是把一條規則調整到貼合測試樣本中的雜訊,以致其紀錄無法延續到新的數據。它來自嘗試次數:在十種毫無真正優勢的配置之中,表現最好的一種,預期樣本內 Sharpe 比率接近 1.6;有五年數據時,45 次嘗試就足以產生一種在樣本內看似有實力、在樣本外平均為零的配置。防範方法是:計算每一次嘗試、預留規則從未見過的數據、以前推方式進行測試,以及選擇參數的高原而非尖峰。

過度擬合(overfitting)是把一條規則調整到貼合測試樣本中的雜訊,以致其紀錄無法延續到新的數據。它來自嘗試次數,而不是來自任何一次測試——而嘗試次數,正是證據中幾乎從來沒有被寫下來的那一部分。在眾多回測之中,最好的那一個,數字的意義最小。

第 11 篇和第 12 篇假設只有一份如實保存的紀錄。這一篇講的是那些沒有被保存的紀錄:在得出筆記簿上那一版規則之前,一路嘗試過又丟棄的各個版本。它們改變了留下來的那份紀錄的意義,而處理它們的工具,比交易本身還要古老。

貼合訊號,貼合雜訊

任何一組過去的交易都包含兩樣東西:會重複出現的,以及只發生過一次的。一條有足夠多可調部件的規則,可以被扭曲到兩者都貼合。

貼合訊號的規則,與貼合雜訊的規則 兩個面板,各有同樣七個由左至右上升的散點。左邊:一條直線穿過點群,與每一點都差一點點。右邊:一條彎彎曲曲的曲線準確穿過每一點。註明:每一點都差一點;每一點都命中,下一點則一無所知。 貼合訊號每一點都差一點貼合雜訊記住了這七個點 InnoMP Research
同一組數據。直線對它只有一句話要說,對下一點也說同一句話。曲線學會的是這七個點各自的位置,而那並不是關於第八個點的資訊。

在一套交易設置裡,可調的部件就是參數:止蝕的 ATR 倍數、回看期、交易時段過濾、最小回調深度,以及某個糟糕的星期五之後加上去的「星期幾不交易」。每一個都是一個旋鈕,而在同一組數據上試過的每一個數值,都是一次貼合偶然的機會。過度擬合——舊說法叫曲線擬合(curve fitting)——就是交易設置在調整用數據上紀錄出色、在其他任何數據上卻表現平平甚至更差時,它所做過的事。做這件事的交易者很少察覺,因為從內部看,每一次調整都像是在學習。

N 次中的最佳,並不是最佳

這個機制並不隱晦。2014 年,Bailey、Borwein、López de Prado 及 Zhu 在《Notices of the American Mathematical Society》發表的一篇論文,為它定出了數字。假設一位研究者嘗試某個策略的 N 種配置,而其中沒有一種具備真正的優勢——每一種的真實 Sharpe 比率都是零。這 N 種之中最好的一種,在樣本上量度出來的結果不會是零。它會顯示 N 個偶然結果的預期最大值,而這個數字會隨 N 增大。

N 次嘗試中的最佳——當全部都毫無實力時 五支直條,分別代表 N 等於 2、5、10、45 及 100 次嘗試,顯示當每一次嘗試的真實 Sharpe 比率都是零時,最佳一次嘗試的預期樣本內 Sharpe 比率:約 0.5、1.2、1.6、2.2 及 2.5。直條起初急升,之後升勢放緩。 N 次中最佳,全部毫無實力0.51.21.62.22.5N = 251045100最佳一次嘗試的樣本內 Sharpe 比率 InnoMP Research
每一種配置都毫無價值,看起來最好的那一種卻不是這樣。試十次,勝出者在樣本內預期會顯示接近 1.6 的年化 Sharpe 比率;試一百次,就是 2.5。這個數字反映的是試了多少次,而不是勝出者本身。

Sharpe 比率是這一組已經用過的一個比率的金融版本:平均回報除以回報的離散程度,再年化——也就是期望值除以其標準差,用的是第 11 篇的單位。論文的例子是十種配置,全部毫無實力,其中最好的一種預期會顯示 1.57 的樣本內 Sharpe 比率。主觀交易者不會計算 Sharpe 比率,但這個邏輯可以原封不動地套用:同一套交易設置的十個版本,在同一年的圖表上調整,其中最好的一個,期望值因為挑選而被誇大;而第 11 篇的誤差範圍——按它是唯一一個版本來計算——則過窄,窄多少,取決於被丟掉的那九個。

整個問題可以用一句話說完:在知道落敗者有多少之前,勝出者的紀錄並不是關於勝出者的證據。

最短回測長度

論文把同一道算術變成一條經驗法則,稱為最短回測長度(minimum backtest length):所需的數據年數,使得 N 次嘗試中最好的一次,不會被預期純屬偶然地達到某個樣本內 Sharpe 比率。

最佳一次嘗試有意義之前,需要多少年的數據 兩支橫條。七次嘗試:兩年數據。四十五次嘗試:五年數據。註明數字出自 Bailey、Borwein、López de Prado 及 Zhu(2014),門檻是毫無實力的最佳一次嘗試預期樣本內 Sharpe 比率為一。 每種嘗試次數所需的數據7 次嘗試2 年45 次嘗試5 年Bailey、Borwein、López de Prado、Zhu(2014) InnoMP Research
有兩年日線數據時,七種獨立配置就足以令其中最好的那種毫無實力的配置,預期顯示樣本內 Sharpe 比率 1。有五年數據時,是四十五種。交易者要越過的門檻是嘗試次數,而這個門檻很低。

論文本身的例子就是圖中的兩個:五年數據最多支持約四十五種獨立配置,之後就預期會有一種毫無實力的配置看似擁有 Sharpe 比率 1;兩年數據約支持七種。作者小心地說明這個數字不是甚麼。它假設各次嘗試互相獨立,因此偏向保守——同一個止蝕倍數的十個數值,並不是十個獨立的想法——而且它是必要條件,不是充分條件:即使樣本遠長於最短長度,回測仍然可能過度擬合。它是甚麼?它是對一份紀錄的一個多數人從來不問的問題——它是由多少次嘗試產生的——的第一個答案。作者的核心不滿是:這個數字幾乎從來不被公開,無論在學術論文中,還是由任何推銷某個結果的人,以致單憑結果本身,無法評估過度擬合的風險。

對主觀交易者來說,嘗試次數不多,數據也很短。兩個貨幣對一年的四小時圖表,加上一套止蝕倍數、交易時段過濾和回調深度各試了三個數值的交易設置,就是一年數據上的二十七種配置——已經越過論文的界線。勝出者的紀錄也許仍然沒問題,只是它還不算證據。

預留數據

最古老的補救方法,是把部分數據留在調整過程之外。

樣本內與樣本外 一條時間軸色帶。左邊較大的部分加上陰影,標示為樣本內、在此調整;右邊較小的部分以另一種陰影顯示,標示為樣本外、只運行一次。兩者之間以虛線分隔。註明看第二次,它就變成樣本內。 樣本內在此調整樣本外只運行一次看第二次,它就變成樣本內 InnoMP Research
在碰任何參數之前,先把最後一段擱在一旁。在其餘部分上調整,凍結規則,在預留的那一段上運行一次,並把結果寫下來。如果規則之後再被調整並再次運行,預留的那一段就已經被用來調整過,它現在是樣本內了。

樣本外測試(out-of-sample test)是把一條規則,原封不動地在從未用來調整它的數據上運行一次。如果樣本外紀錄與樣本內紀錄相似——期望值在同一個數量級、區間互相重疊——規則學到的東西在調整數據之外仍然持續。如果紀錄崩潰,樣本內的數字就是雜訊。全部紀律都在「一次」這兩個字裡:預留數據一被看過就用掉了,看過之後作出的任何調整,按定義都會令下一次運行變成樣本內。論文也指出這個方法的局限——預留數據不知道之前有過多少次嘗試,所以一條通過預留測試的規則,在另一種意義上仍然是 N 次中的最佳——但作為第一道過濾,它能清除上一節所描述的大部分問題。

中級的前向測試是同一個想法,只是數據由日曆而非檔案庫提供:即時進行的模擬交易不可能被用來調整過,因為它們當時還沒有發生。

前推測試

單一切分只把數據用一次。前推測試則反覆使用數據,在同一段歷史上得到一份更長的樣本外紀錄。

前推測試:調整、測試、推移、重複 三行成對的橫條,逐行向右移。每一行都是一個較長的調整窗口,接著一個較短的測試窗口。每一行都比上一行開始得晚,所以各個測試窗口互不重疊。底部第四行只顯示三個測試窗口首尾相接,標示為拼接紀錄。 調整 · 測試 · 推移調整測試拼接紀錄一份從未經調整的樣本外紀錄 InnoMP Research
在一個窗口上調整,在其後的一段上測試,把兩者向前推移,重複。各段測試期互不重疊,沒有一段被用來調整過。首尾相接後,它們就是一份覆蓋大部分歷史的樣本外紀錄——而每個窗口所選的參數,本身也是一份紀錄。

前推測試(walk-forward test)是在整段歷史中重複進行的樣本外測試:在第一個窗口上調整,在其後的期間測試,把兩者按測試期的長度向前推移,再把各段測試期拼接起來。拼接出來的紀錄具備關鍵的特性——沒有任何一部分被用來調整過——而且長得足以有自己的誤差範圍。它還產生一樣單一切分不會產生的東西:每個窗口所選參數的序列。如果測試結果最好的止蝕倍數,在一個窗口是 1.5,下一個是 2.5,第三個是 1.2,這條規則就沒有穩定的參數,而每個窗口重新調整一次,本身就是過度擬合——只不過是按時間表進行。

選高原,不選尖峰

最後一道防線,關乎在一個窗口之內如何選擇參數,而且完全不需要預留數據。

選擇參數:高原,而不是尖峰 一條回測結果相對止蝕倍數(由一至三個 ATR)的曲線。曲線在兩端偏低,在約 1.4 至 2.5 之間形成一片寬闊的隆起區域,並在 1.8 有一個尖銳的單一尖峰。寬闊區域標示為高原,尖峰標示為尖峰,註明在高原之內選擇。 按止蝕倍數的結果,1 至 3 ATR尖峰:1.8高原:1.4 至 2.51.02.03.0在高原之內選擇 InnoMP Research
掃描整個參數範圍,看的是形狀,而不是最大值。一片寬闊、附近每個數值都可行的區域,是市場的特性;一個單一尖峰,則是這個樣本的特性。尖峰會是回測中最好的數字,也會是第一個失效的。

把一個參數在其合理範圍內掃描一遍,並把結果相對它畫出來。有效的規則會有一片高原:一段結果相近的數值,因為規則所捕捉的市場特徵對確切的數字並不敏感。貼合雜訊的規則會有一個尖峰:一個比相鄰數值好得多的數值,因為那個數值剛好捕捉到這個樣本的偶然。尖峰永遠是最大值,所以選最大值正是錯誤所在。在高原之內選一個數值——選它的中間,而不是它上面最好的一點——規則在調整數據上會損失一點,在其他地方則能保住大部分。

重點 N 次嘗試中最好的一次,預期會因為偶然而看起來不錯,而且好到甚麼程度,隨 N 增大。計算嘗試次數,並把次數與紀錄放在一起。把數據預留起來,只用一次。以前推方式測試,除了拼接紀錄,也要解讀參數的序列。在一個窗口之內,選高原,不選尖峰。

嘗試紀錄

以上種種,歸結為對交易心理課程所建立的交易日誌的一項補充:一份嘗試紀錄。每一種試過的配置、試用的數據、結果,以及放棄它的原因——包括那些只在腦海裡試了一個下午就放棄的,因為論文的重點正是這些也要計算在內。這份紀錄做三件事。它給出 N,讓倖存者的數字可以對照落敗者的數目來解讀。它記下參數掃描,讓日後樣本更長時,可以分辨尖峰和高原。它還令各次調整以「調整」的面目顯現出來,這是唯一能對抗那種從內部看、每一次調整都像在學習的感覺的方法。

論文的最後一個觀察,正好用來作結。當嘗試次數沒有被計算時,一個好的回測不只是沒有資訊價值;在有記憶性的數據上——被貼合過的一段時期,往往接著出現相反的走勢——作者指出,過度擬合規則的樣本外預期值是負數。他們寫道,在這種情況下,「過往表現並不代表未來結果」這句慣常的警告,還是太樂觀了。一份經過挑選的紀錄,不只是一個微弱的訊號,它可能是一個指向錯誤方向的訊號。

紀錄走到哪裡

這一組到此完結。一份紀錄現在帶有三樣在中級結束時沒有的東西:期望值的誤差範圍、圍繞回撤的分佈,以及背後的嘗試次數。一套交易設置,若其區間在扣除成本後仍然為正、其回撤尾部已按倉位大小預留、其嘗試次數少而且有寫下來,就具備這一級所說的唯一意義上的交易優勢。這一級的最後一組——第 14 至 16 篇——把一套已通過檢驗的交易設置,變成可以運行的東西:一張決策表、提示與執行規則,以及檢討週期與停用準則。

下一篇:從規則到決策表——市場的每一種狀態都有一個直欄,文字描述所隱藏的漏洞與矛盾都會浮現出來。
關鍵事實
  • 在 10 種真實 Sharpe 比率為零的配置之中,表現最好的一種,預期樣本內 Sharpe 比率為 1.57(Bailey、Borwein、López de Prado 及 Zhu,2014)。
  • 有 5 年數據時,嘗試的獨立配置不應超過 45 種,否則預期會有一種毫無實力的配置達到樣本內 Sharpe 比率 1;只有 2 年數據時,這個數字是 7。
  • 回測背後的嘗試次數幾乎從不公開,因此單憑結果本身,無法評估其過度擬合的風險。
  • 過度擬合規則的樣本外表現,若序列沒有記憶性,預期約為零;若有記憶性,則預期為負。
  • 樣本外測試預留規則從未用來調整的數據;前推測試(walk-forward test)則在整段歷史中逐個窗口重複這種切分。

常見問題

交易中的過度擬合是甚麼?

不斷調整一條規則的參數——回看期、倍數、過濾條件、交易時段——直到它在某一段數據上的回測看起來好得不能再好,結果規則學會的是那段數據裡的偶然,而不是任何會重複出現的東西。過度擬合的規則,在用來調整它的數據上紀錄出色,在之後的所有數據上卻表現平平,甚至是負數。

回測嘗試多少次才算太多?

視乎數據有多少。Bailey、Borwein、López de Prado 及 Zhu 指出,有五年日線數據時,嘗試超過約 45 種獨立配置,就很可能會有一種毫無實力的配置達到樣本內 Sharpe 比率 1;只有兩年數據時,約七次嘗試已經足夠。這個數字是警告,不是許可:嘗試次數少於此數,同樣可能過度擬合。

甚麼是樣本外測試?

在任何調整之前,先把一部分數據擱在一旁——例如最近的一年——然後用完成的規則在上面只運行一次,之後不作任何改動。如果樣本外紀錄與樣本內紀錄相似,規則學到的是會持續的東西;如果紀錄崩潰,樣本內紀錄貼合的只是雜訊。調整規則之後再看一次預留數據,它就變成樣本內數據。

甚麼是前推測試(walk-forward test)?

在整段歷史中重複進行的樣本外測試:在一個窗口內調整,在其後的期間測試,把兩者一起向前推移,再把各段測試期拼接成一份從未經過調整的紀錄。它顯示規則的參數是否隨時間保持穩定,還是每個窗口都要重新調整——後者本身就是貼合雜訊的跡象。

這與樣本大小的問題有甚麼不同?

樣本大小關乎一份紀錄:它的期望值可以與真實值相差多遠。過度擬合關乎多份紀錄:如果產生了十份並只保留最好的一份,那份的期望值會因為挑選而被誇大,而按它是唯一一次嘗試來計算的誤差範圍則會過窄。嘗試次數本身就是證據的一部分,所以所有嘗試過的東西的紀錄,應該與交易紀錄放在一起。

資料來源

  1. Bailey, Borwein, López de Prado, Zhu — Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance, Notices of the AMS 61(5), May 2014 — expected maximum Sharpe ratio of N trials (1.57 at N = 10), Minimum Backtest Length (45 trials for 5 years, 7 for 2), trials rarely reported, negative OOS under memoryams.org
InnoMP Research · Education Desk

Trading education from first principles — position sizing, risk, market structure and the habits that keep accounts alive. Written for someone who has never opened a chart, with a diagram at every step.

發佈於 2026年10月25日 · 更新於 2026年10月25日

免責聲明: 本網站資料只供一般資訊用途,不構成投資建議、要約或買賣任何金融工具的招攬。內容並未考慮你的個人財務狀況或投資目標。公司不對因交易活動造成的損失承擔責任。交易前請閱讀法律文件並尋求獨立專業意見。

相關文章

InnoMP Research 封面插圖 — 一個數字 及其誤差
交易日誌

附誤差線的期望值:交易紀錄能讓你有多肯定

一份紀錄顯示每筆交易 +0.25R。問題是真實數字可能離它有多遠。如何為期望值加上標準誤和置信區間,以及要多少筆交易,才能把優勢與零區分開來。

9 分鐘閱讀
InnoMP Research 封面插圖 — 每種狀態 都有答案
紀律

交易決策表:讓市場的每一種狀態都有答案

書面的交易設置仍然留有漏洞:有些市場狀態,文字從未提及。如何把規則排成一張決策表——條件列在左側,每條規則佔一個直欄——並先把漏洞與矛盾找出來。

9 分鐘閱讀