閱讀約 9 分鐘· 發布於 July 19, 2026

回測過度擬合:當漂亮的結果是個陷阱

曲線擬合、倖存者偏差、前視偏誤,再加上一個新的:記住了測試期間的 LLM。如何辨識被膨脹的結果,並驗證出能在實盤存活的策略。

作者 Florent Poux
審稿 Benjamin Sultan
回測過度擬合:當漂亮的結果是個陷阱

一份回測能做的最危險的事,就是成功。回測過度擬合,是當一個策略學到的是某一段特定歷史切片的雜訊、而不是任何關於市場的真實道理時所發生的事,它會產出一條華麗的權益曲線,卻什麼都預測不了。量化界為此奮戰了數十年。智能體時代又添了一個新花樣:可能早已讀過你正拿來測試它的那段歷史的語言模型。這篇文章會談經典的機制、至今仍在坑人的舊偏差、新的 LLM 記憶失敗模式,以及那些把可信結果和討喜結果區分開來的防線。

回測過度擬合為什麼會發生:自由度

策略裡每一個可調整的選擇都是一個自由度,而自由度就是雜訊被擬合進去的途徑。看著它是怎麼複利式累積的。一個移動平均交叉從兩個參數起步:快線與慢線的長度。加一個 RSI 過濾條件,你就有四個:週期加門檻。再加一個時段窗口、一個停損距離、一個獲利目標,你就到了七、八個。每個參數測試十個看似合理的值,這個空間就容納了數千萬種組合。在那裡頭的某處,必有一組配置純屬巧合地完美貼合你的測試期間。一個優化器會替你找到它。

這種直覺就是擲硬幣比賽。把一萬個人放進一個房間裡擲硬幣,十輪之後大約有十個人每一次都擲出正面。他們看起來像天才。他們是樂透中獎者。參數搜尋用策略變體當參賽者跑同一場比賽,而一場夠大的搜尋,其贏家幾乎注定是僥倖。隨之而來的是一條令人不安的規則:你試過的配置越多,那個最好的配置其績效就越沒有意義。從試三個點子得到的 Sharpe 比率 2.0,很有意思。同一個數字若來自一次五萬組的掃描,多半只是在量測那次掃描有多大。

經典偏差:倖存者偏差與前視偏誤

有兩宗較古老的罪,不需要任何優化器介入就能膨脹回測。

倖存者偏差指的是在今天的贏家身上做測試。把一個策略跑過某個股票指數當前的成分股,你就悄悄地排除了一路上被下市、被折價併購、或破產的每一家公司;你的策略本來會持有的那些輸家,從資料裡消失了。加密貨幣更糟:數以千計的死亡代幣,就這麼從多數資料集裡蒸發,所以一份建立在倖存幣種上的「買進市值前 50 大」回測,測試的是一個沒有人事先知道該持有的投資組合。修正之道是使用反映每個日期實際可交易情況的時點資料(point-in-time),並在這類資料不可得時保持懷疑。

前視偏誤指的是根據尚未存在的資訊行動。最露骨的版本:用某根 K 棒的收盤價去交易那根 K 棒。更微妙的版本則到處潛入:使用事後修正而非首次公布的經濟資料、以全樣本窗口計算的指標、或以會計期間日期而非後來公布日期戳記的基本面資料。這其中任何一項,都把明天的報紙洩漏進了今天的決策,而回測獎勵這種洩漏。

回測過度擬合:當漂亮的結果是個陷阱

新的失敗模式:你的 LLM 早已讀過答案

智能體策略引入了一種資料衛生檢查清單抓不到的前視版本,因為洩漏在模型內部。一個以截至比方說 2024 年的資料訓練出來的大型語言模型,已經吞下了涵蓋其截止日之前每一次戲劇性市場波動的財經新聞、價格評論與事後檢討。要它去「決定」2020 年 3 月該交易什麼,它不是在預測。它是在回憶。

這裡的研究說得很直白。「Can LLM-based Financial Investing Strategies Outperform the Market?」(arXiv:2505.07078, 2025)顯示,LLM 策略的回測被記憶與前視所膨脹:訓練資料與測試窗口重疊的模型能回想起股票代號、日期與價格波動,而其績效一旦評估移到樣本外,往往就會惡化。後續一個記憶受控的基準測試(arXiv:2605.28359, 2026)從另一個方向得出同樣的結論,發現與模型知識截止日重疊的長回測,讓被記住的市場歷史洩漏進它的「預測」裡,而控制掉記憶後,表面上的技能會急遽下降。一個在 2020–2023 年看起來出色的智能體,可能只是一個非常昂貴的、關於 2020–2023 年發生了什麼的索引。

實務後果說起來很簡單。如果你的迴圈裡任何地方有 LLM 做決策,就把那個模型訓練截止日之前的任何回測窗口都當成受污染的,並偏重截止日之後的證據。更好的做法是把 LLM 完全排除在預測路徑之外:用它把你的意圖翻譯成明確的規則,然後拿那些確定性規則去對歷史重播,那裡沒有任何東西可供記憶去碰觸。語言模型與確定性引擎之間更廣的分工,LLM 在交易中的角色有說明。

真正有效的防線

這些防線沒有一項是奇技淫巧。它們的威力,在於在你愛上某個結果之前就先套用。

**保留一段資料,並尊重這段保留資料。**把歷史切開,只在較早的部分做調校,讓較近的那一段在設計凍結之前都保持原封不動。每個策略只看保留資料一次。反覆偷看、每次都調整,這段保留資料就悄悄變成了訓練資料。

**前推測試(walk-forward)。**不是用一個靜態的切分,而是在一個窗口上優化、在下一個切片上測試、往前滾動、如此重複。把一段段拼接起來的樣本外片段,顯示出策略在它必須持續運作於從未見過的資料時的行為,而那正是這份工作真正的職務說明。

**週期覆蓋。**一個測試窗口是一項論證,而一個狹窄的窗口是站不住腳的。橫跨 2018 年的加密空頭、2020 年 3 月的崩盤、2021 年的緩漲噴出、以及 2022 年的磨人下跌,你就會學到這份優勢是市場的性質,還是一件週期的戲服。一份關於 LLM 交易智能體的綜述(arXiv:2408.06361, 2024)標記出測試窗口太短、標的宇宙太小是這個領域普遍的弱點,而散戶的回測鮮少更好。

**要高原,不要尖峰。**在你選定的值周圍變動每一個參數,看看會怎樣。假設一個 RSI 進場門檻 30 回測出 Sharpe 1.4,但 25 給出 0.3、35 給出 0.4:那根針一般細的尖峰,是被擬合雜訊的簽名,因為真實的市場效應沒有那麼精確。如果從 25 到 40 的每一個值都落在 0.9 到 1.2 之間,你就站在一片高原上,而高原比尖峰更常能一路走到實盤交易。寧取一片寬闊高原的中央,也別選一根尖峰的頂端,即使那根尖峰的數字更漂亮。

這也是工具要嘛幫上忙、要嘛悄悄害人的地方,所以要挑選讓誠實變得方便的回測軟體。在 Obside,一份回測能在幾分鐘內重播多年歷史,滑價假設也已內建,這讓那個便宜而有紀律的動作——在信任任何東西之前,帶著切合實際的成本跨週期測試——成為阻力最小的路徑,而不是一件苦差事。針對智能體的工作流程,如何回測 AI 交易智能體裡走過一遍。

回測過度擬合:當漂亮的結果是個陷阱

把簡潔當成先驗,把紙上交易當成期末考

當兩個策略回測結果相近時,偏好活動零件較少的那一個,而且要在看到任何結果之前就抱持這個偏好。每加一條規則或一個參數,都必須靠在樣本外存活來繳房租,而不僅僅是靠改善樣本內曲線——後者幾乎總是增加複雜度就能免費得到的。一個兩條規則、在四種週期上 Sharpe 0.9 的策略,比一個九參數、在單一多頭波段上顯示 1.8 的建構更值得信任。複雜不等於高明。在回測裡,它多半只是提供給雜訊抓握的表面積。

接著來到那個沒有任何東西能污染的測試:未來。紙上交易拿你那個確切的智能體去對實盤市場運行,沒有資金風險,用的是你設計策略時還不存在的資料。沒有優化器看過它,也沒有語言模型記住它。關於這次畢業,最重要的一件事是:智能體在過渡途中不會有任何改變。在 Obside,那個被回測過的同一份智能體定義,原封不動地移到紙上模式,條件與風險控制完全相同,所以紙上運行測試的是你驗證過的那個策略,而不是它一個手工複製的近似品。三四週與回測互相呼應的紙上結果,是散戶驗證所能產出最強的證據。

接下來往哪走

把每一份漂亮的回測都當成一項需要敵意審查的主張,並按這個順序稽核:搜尋了多少種配置、資料是否無倖存者偏差且為時點資料、迴圈裡任何 LLM 是否可能記住了那個窗口、結果是站在高原還是尖峰上、以及它是否在你保留的資料上存活。然後讓紙上交易給出裁決。如果你想要這套紀律內建在工作流程裡、而不是外掛上去,Obside 會跑完整道階梯:內建滑價、橫跨週期的回測,接著紙上,接著實盤,全部在同一份未經更動的智能體定義上。

僅供教育參考,不構成投資建議。交易存在風險,可能導致本金損失。

FAQ

就是一個策略被調校——不管是刻意還是不小心——調到貼合某一段歷史期間的隨機雜訊,而不是一種可重複的市場行為。回測看起來很優秀,因為這個策略實際上已經記住了那段歷史切片。實盤市場產生新的雜訊,被記住的模式無法重複,績效便崩潰。最明顯的症狀是:一個策略在測試中看起來,遠比任何樸素的經濟邏輯所能證成的還要好。

相關文章

用 Obside 試試你的投資組合

連接你的券商,用一句話打造你的投資組合。

立即開始