過度優化:量化交易策略的隱形殺手與防範

把一支策略的回測 Sharpe 從 1.2 調到 2.9,你得到的多半不是更強的策略,是更貴的幻覺。

把一支策略的回測 Sharpe 從 1.2 調到 2.9,你得到的多半不是更強的策略,是更貴的幻覺。

這句話違反直覺,卻是過度優化(over-optimization)的數學本質。你大概也有過那種經驗:調一個參數、加一條濾網,回測曲線立刻變漂亮,成就感很真實。問題在於,那條越來越漂亮的曲線,有很大一部分是策略越來越貼合歷史雜訊的結果,而雜訊不會在未來重演。

過度優化被叫做量化交易的隱形殺手,原因很具體:整個過程沒有任何一步感覺像犯錯。每次調整都有理由,每次回測都更好看,直到實盤把帳單寄來。

這篇文章拆四件事:優化器實際在做什麼、為什麼過程中完全無感、哪些警訊可以在燒錢之前抓到它,以及一套把自由度當預算管理的防範框架。讀完你不會得到不能優化的結論,但你會知道優化在什麼條件下是研究,什麼條件下是自欺。

優化器在優化什麼:它分不出訊號和雜訊

先把機制說清楚。任何一段歷史報酬序列,都可以拆成兩個成分:市場結構帶來的訊號,和純粹的隨機雜訊。優化器的目標函數只看總和,它不知道、也不在乎自己推高的績效來自哪一邊。

優化初期,參數從離譜調到合理,吃到的主要是訊號,這一段是正當工序。但訊號是有限的,雜訊的組合是無限的。調整持續下去,邊際增量裡雜訊的占比會越來越高,最後你在做的事情只剩一件:替歷史上的隨機波動找一組剛好對上的座標。兩個階段之間沒有告示牌,回測報告上長得一模一樣。

名詞先分乾淨。過擬合(overfitting)是狀態,指策略記住了雜訊;過度優化是動作,是把雜訊記進去的過程;曲線擬合(curve fitting)是同一件事的老派說法。而每一次調參數、換指標、加濾網,在統計上都是一次新的嘗試,嘗試次數怎麼把假陽性機率灌大,選擇偏誤與多重測試那篇拆過完整機制,這裡不重複。本文聚焦在動作本身:為什麼一個理性的研究者,會一步一步把自己推進去,而且全程覺得自己在做研究。

為什麼毫無感覺:三個讓過度優化隱形的機制

每一步在局部都合理

回測曲線在 2022 年 6 月有一段深回撤,你加了一條波動率濾網把它擋掉。單看這個動作,它叫風控改良。放回流程裡看,它是把答案抄進考卷:你已經知道那段歷史哪裡虧損,新規則是為那段虧損量身訂做的。市場下一次的極端走法,不會照抄 2022 年 6 月。

過度優化幾乎從來不是一次大錯,是二十次「看了結果之後的小改良」。每一步都能講出研究語言,連起來看,做的是同一件事:記憶歷史。

回饋不對稱:讚美即時,帳單延遲

樣本內績效每調一次立刻變好,這個回饋是即時的。真實的代價,也就是樣本外績效的衰退,要等到實盤才收得到帳單,中間隔著數週到數月。行為結構上這就是吃角子老虎機:按下去馬上有獎勵訊號,懲罰遠在天邊。人腦對這種回饋結構的抵抗力很差,和智商無關。

阿哲的例子可以說明整個路徑。他在 2025 年初開始做一支 BTC 四小時突破策略,起點很乾淨:三個參數,回測 Sharpe 1.1。接下來九個月:加 ADX 趨勢濾網,1.6;加交易時段過濾,2.0;停損從固定改成 ATR 倍數再細調,2.4;最後全參數細網格掃描,2.8。每一步都有研究理由,每一步都寫了筆記。2026 年 1 月上實盤,兩個月虧 11%,同期回測值是正 9%。事後拆解發現,五次改良裡有四次,績效增量集中來自 2024 年第四季的三段行情。策略記住的是那三段行情,不是市場。

搜尋成本歸零,統計成本沒有

一行程式可以掃一萬組參數組合。工具把嘗試的成本降到零,但每一次嘗試都在墊高「純雜訊冠軍」的期望績效。掃 1,000 組,就算全部組合都沒有任何真實優勢,表現最好的那組大概率也漂亮到足以說服你自己。Bailey 等人在 The Probability of Backtest Overfitting 給過這件事的正式框架:試的次數越多,最佳組合的樣本內績效與其樣本外期望的落差就越大。

三個機制疊起來,結論很不舒服:過度優化的體感,和認真做研究的體感,是同一種體感。靠感覺防不了,只能靠流程。想看它最後長成什麼樣子,回測過擬合的九種死法整理過完整的屍檢報告,參數過擬合只是其中一種死法。

自由度的算術:你的樣本撐得起幾個參數

過度優化的嚴重程度,可以用一筆很粗但很誠實的帳來估:自由度對有效樣本的比例。

自由度不只是參數數量。每一條進出場規則、每一個指標選擇、每一次「看了結果再改」的決定,都是一個自由度。而有效樣本是交易次數,不是 K 線根數。四小時 K 線跑三年有 6,570 根,聽起來很多,但如果策略只觸發 80 筆交易,你的統計證據就只有 80 個樣本點。

Pardo 在 The Evaluation and Optimization of Trading Strategies 給過實務上的量級感:支撐一個自由度,需要數十筆獨立的交易。用每個參數 30 到 50 筆去抓,80 筆交易大約撐得起兩個參數。阿哲最終版的策略有九個可調自由度,需要的量級是三、四百筆交易,他的樣本差了一個數量級。這筆帳三分鐘就能算完,多數人從來沒算過。

帳算出來超支,不代表策略必死,代表回測數字的可信度要大幅打折,而且折扣不是線性的。自由度超支越多,最佳化結果裡雜訊的期望占比越高,這正是 Bailey 等人在 Pseudo-Mathematics and Financial Charlatanism 裡把無紀律回測稱為偽數學的原因。

過度優化的五個警訊

殺手隱形,但不是無跡可循。下面五個訊號都可以在投入真錢之前檢查。

一、參數孤峰。 把最佳參數的鄰域攤開看:均線週期 21 大賺,19 和 23 賠錢,這不是找到了精準的市場節奏,是優化到了雜訊的座標。真實的市場結構是鈍的,不會精確到某一個整數。鄰域績效驟降,是最直接的警訊。

二、樣本內外的落差。 用 Walk-Forward 做滾動的樣本外測試,樣本外績效低於樣本內的 50% 到 60%,通常代表優化吃進了大量雜訊。判讀門檻和切法在 Walk-Forward Analysis 的完整拆解裡有,這裡只說結論:落差本身就是過度優化的量尺。

三、規則數對交易次數的比例。 就是上一節那筆帳。規則越多、交易越少,超支越嚴重。

四、每加一條規則,績效跳一階。 正常的改良是邊際遞減的:第一條規則貢獻最大,之後越來越小。如果加到第六條規則績效還在跳階式上升,那條規則多半剛好蓋掉了某段特定虧損,你在為歷史客製,不是在改良邏輯。

五、對成本與小數位敏感。 滑價假設加兩個基點就從賺變賠、參數動第三位小數績效還會明顯變動,都代表策略的獲利集中在極薄的邊緣上。那個邊緣在實盤會第一個消失。

五個警訊有一個共同點:它們檢查的都不是績效多漂亮,是績效的形狀穩不穩。這個視角的轉換,是防範過度優化的核心。

防範框架:紀律放在優化之前,不是之後

先說清楚立場:參數優化本身不是罪。完全不優化的策略,只是把自由度藏進「第一次就選定的參數」裡,問題沒有消失,只是沒被記錄。真正的分界線在於,優化是在紀律之內做,還是在紀律之外做。

假設先行。 動任何參數之前,寫下它為什麼存在的經濟理由:這個濾網對應什麼市場行為、為什麼這個行為未來會持續。寫不出來的參數,砍掉。這一步過濾掉的東西,比任何統計檢定都多。

自由度預算。 給策略設規則與參數的上限,想加新的,先刪舊的。預算數字本身不神聖,重點是逼每一個自由度去競爭存在的資格。

先註冊,再掃描。 決定要掃哪些參數、什麼範圍、切多少格,寫下來,然後才跑。跑完不追加。這同時解決了 trial 記帳的問題:你的嘗試次數是事前寫定的,之後折算顯著性時拿得出誠實的 N。

選平原,不選峰。 挑參數時,取參數平原的中心,不取全域最佳點。鄰域平均績效比單點績效誠實,平原上的次佳解,樣本外的期望通常好過孤峰上的最佳解。

Lockbox。 切出最後 20% 到 30% 的資料作為最終的樣本外測試,整個研發過程完全不碰,只在定版後跑一次。結果好就上,不好就回到假設層重來,不回去改參數。碰了第二次,這段資料就變成樣本內了,lockbox 只有一發子彈。

出口關卡。 定版策略過兩關:Walk-Forward 檢查時間軸上的穩定性,Deflated Sharpe Ratio 用註冊的 trial 數折算顯著性。任何一關不過,回到假設,不是回到參數。

講一段我自己的。之前做一支網格策略,觸發間距從 0.8% 調到 0.75%,再調到 0.72%,每次回測都更好。第三次我停下來,因為我發現自己在和小數點第二位談判,而市場的結構從來不會精確到那裡。後來改成在 0.5% 到 1% 之間掃五個點,取表現最平緩區段的中心,回測數字難看了一截,實盤八週下來與回測的落差,反而縮到 3% 以內。難看但誠實的數字,好過漂亮但虛構的數字。

這套流程的每一步都可以再深挖,我們在 Lab 社群裡會拿實際策略把自由度記帳、參數平原掃描和出口關卡逐步跑一遍,想把自己手上的策略丟進來檢驗的,那裡是合適的地方。

加密市場為什麼是重災區

同樣的優化紀律,在加密市場的重要性再上一級,因為過度優化在這個市場的殺傷力更大,原因有四個。

歷史太短。BTC 有機構級流動性的歷史十餘年,多數山寨幣連一個完整週期都沒走完。可用樣本先天就少,自由度預算比傳統資產更緊。

Regime 切換劇烈。2021 年調出來的動能參數,2022 年整批陣亡。在單一 regime 內優化得越精,跨 regime 的脆弱性越高,而加密市場的 regime 壽命明顯短於股票市場。

高頻資料的錯覺。24/7 交易與分鐘級資料讓樣本看起來很大,但報酬的自相關與 regime 依賴讓有效樣本遠小於表面根數。用一百萬根一分 K 調出來的參數,不等於有一百萬個獨立證據。

費用與微結構。Funding、maker/taker 費率、深度不足的滑價,讓細參數特別容易吃到微結構雜訊。很多回測裡的獲利,實際上是成本假設的誤差,參數調得越細,這種假獲利占比越高。

這套紀律擋不住什麼

防範框架的定位要說誠實:它過濾的是你自己騙自己,不保證優勢存在。

它擋不住 alpha decay。真實的訊號也會被市場套利掉,紀律再好的優化,救不了一個正在消失的 edge。

它擋不住結構轉變。Lockbox 過了、DSR 過了,市場結構隔年變了,策略照樣失效。驗證框架回答的是「過去這段是不是雜訊」,不回答「未來還在不在」。

它更擋不住壞資料。存活者偏誤、時間戳錯位、被污染的價格源,在壞資料上做再嚴謹的優化,得到的還是嚴謹的錯誤結論。資料層的品質要在更上游解決,量化交易數據層的建法講過這一層要怎麼處理。

換句話說,通過防範框架的策略,獲得的不是保證,是資格:值得投入小額真錢、進入下一輪檢驗的資格。

結論:優化的終點是誠實,不是漂亮

把這篇收攏成五句話:

  1. 優化器分不出訊號和雜訊,調整持續越久,績效增量裡雜訊占比越高,而回測報告上兩者長得一樣。
  2. 過度優化隱形,是因為每一步在局部都合理、獎勵即時而帳單延遲、工具讓嘗試免費而統計成本照算。
  3. 自由度對交易次數的比例,是三分鐘能算完、多數人沒算過的一筆帳,每個自由度需要數十筆交易支撐。
  4. 五個警訊全部指向同一件事:別看績效多漂亮,看績效的形狀穩不穩。
  5. 防範靠事前紀律:假設先行、自由度預算、先註冊再掃描、選平原不選峰、lockbox 一發子彈、出口雙關卡。

回測數字被調得越漂亮,離實盤通常越遠。願意接受一個難看但誠實的數字,是量化研究裡最反人性、也最值錢的一個習慣。

我每週會把這類驗證框架與實際市場數據的交叉檢驗寫進電子報,包括流動性、衍生品結構與鏈上籌碼的例行審視。想讓自己的研究流程多一層濾網的,可以訂閱追蹤。


Meta Elements

Meta Title: 過度優化是什麼?量化交易策略的隱形殺手與防範框架
Meta Description: 回測 Sharpe 越調越高,實盤卻賠錢,多半是過度優化。本文拆解優化器怎麼把雜訊調成假績效、過程為何毫無感覺、五個可觀測的警訊,與自由度預算、參數平原的防範紀律。
Primary Keyword: 過度優化
Secondary Keywords: 曲線擬合, 參數優化, 過擬合, 參數平原, 樣本外測試, 量化交易策略, 自由度
URL Slug: /blog/over-optimization
Internal Links: /blog/backtest-overfitting, /blog/selection-bias-multiple-testing, /blog/walk-forward-analysis, /blog/deflated-sharpe-ratio, /blog/quant-trading-data-layer, /#lab-benefits, adtrader.beehiiv.com
External Links: SSRN (Bailey et al., The Probability of Backtest Overfitting), AMS Notices (Pseudo-Mathematics and Financial Charlatanism), Wiley (Pardo, The Evaluation and Optimization of Trading Strategies)
Word Count: 約 3,700 字(中文字元)
個人頭像照片
AD.Trader Lab

AD.Trader Lab 創辦人 | 量化交易員 專注於在充滿雜訊的市場中,尋找數學上的必然性。AD.Trader Lab 實驗室主理人,帶你用數據看透漲跌背後的真相。