回測是把策略規則套到歷史資料上跑一遍。問題是只要願意調,任何策略都能在歷史上印鈔票,而那通常只是在玩統計。
我們用美股三十三年的資料做了四個實驗,結果很難看:調參數調出來的「最佳」,樣本內排名第一、樣本外掉到第 35;而純亂猜一千次挑出來的冠軍,成績比精心調出來的還漂亮。
這篇拆解四個把回測變成幻覺的陷阱:過度最佳化、資料窺探、濾網、滑價,每一個都用實測數字說明,最後附一份回測可信度檢查表。
先說結論。你該問的不是「我的回測好不好看」,而是「這東西能不能在真實市場的雜訊裡活下來」。這兩個問題的答案,經常是相反的。
陷阱一:調出來的最佳參數,對未來沒有預測力
最常見的做法是這樣:寫一個雙均線交叉策略,然後把快線與慢線的參數掃一遍,找出歷史上表現最好的那組。
我們照做。用美股大盤 SPY 的資料,掃 49 組參數組合,把 1993 到 2009 年當作樣本內(拿來挑參數),2010 到 2026 年當作樣本外(假裝是未來,拿來驗證)。

結果:
- 樣本內最佳是 50/200 均線,夏普 0.806,49 組裡排名第一。看起來像個好發現。
- 同一組參數放到樣本外,夏普掉到 0.611,排名第 35。也就是說,你精挑細選的那組參數,在後面十六年的表現落在後段班。
- 樣本內夏普與樣本外夏普的相關係數只有 0.119。這是整個實驗最關鍵的數字:你在歷史上調出來的好壞排序,跟未來的好壞排序幾乎沒有關係。
更刺眼的是對照組:同期買進持有的年化報酬,樣本內 7.59%、樣本外 13.99%。你花了大把力氣調參數,成果連躺著不動都比不上。這跟我們在200 日均線 26 年實測看到的是同一件事。
陷阱二:測夠多次,亂猜也能挖到寶
上一個實驗還算客氣,畢竟均線交叉多少有點邏輯。這個實驗更狠:我們生成一千個完全隨機的策略,進出場訊號用亂數決定,沒有任何邏輯可言。
然後在同一段樣本內資料上,挑出表現最好的那個。

| 策略 | 樣本內夏普 |
|---|---|
| 買進持有 | 0.382 |
| 精心調參數的「最佳」均線 | 0.806 |
| 純亂猜一千次的冠軍 | 0.816 |
亂猜出來的冠軍,成績比你辛苦調參數的結果還好一點點。它的年化報酬 12.28%、最大跌幅 −27.8%,攤開來看像模像樣,但它百分之百是運氣,因為訊號是亂數產生的,裡面沒有半點邏輯。
這就是資料窺探(Data Snooping):只要你在同一份資料上試夠多次,總會有幾次看起來很棒。而回測軟體讓「試很多次」變得非常廉價,一個下午就能試上千次。
陷阱三:每加一層濾網,可信度就少一半
第三個陷阱最隱蔽,因為它每一步看起來都很合理:策略跑得不夠好,那就加個條件過濾掉不好的訊號。
我們拿最單純的「站上 200 日均線就持有」當基礎,然後準備 15 個候選濾網(波動門檻、動能方向、RSI 高低、避開某個月份、避開某個星期幾),每一輪都挑樣本內表現最好的那個加上去,連加三層。這正是很多人優化策略的實際過程。

| 樣本內夏普 | 樣本外夏普 | 交易次數 | |
|---|---|---|---|
| 基礎策略(站上 200 日均線) | 0.596 | 0.800 | 107 |
| + 60 日動能為正 | 0.691 | 0.780 | 162 |
| + 避開週一 | 0.792 | 0.730 | 1,139 |
| + 波動低於第 70 百分位 | 0.837 | 0.658 | 923 |
樣本內夏普從 0.596 一路爬到 0.837,進步 40%。同一時間,樣本外從 0.800 掉到 0.658,退步 18%。
特別注意第二層被選中的濾網:「避開週一」。這條規則沒有任何經濟意義,純粹是那段歷史裡的雜訊,但它讓樣本內數字變好看,所以貪婪演算法就選了它。而且它讓交易次數從 162 暴增到 1,139,這在下一節會要命。
陷阱四:滑價與成本,回測裡最常被省略的那一項
滑價(Slippage)的定義很簡單:你預期的成交價,跟實際成交價之間的差。回測裡通常假設你用收盤價買到,實務上你買到的是掛單簿上真正有人賣的價格,中間永遠有落差。
這一項最容易被忽略,因為在低換手的策略上它幾乎不痛。但換手率一高,它會直接把策略殺死:

| 策略 | 交易次數 | 零成本 | 10 基點 | 50 基點 |
|---|---|---|---|---|
| 站上 200 日均線 | 107 | 8.38% | 7.69% | 4.95% |
| 20/60 均線交叉 | 73 | 6.19% | 5.72% | 3.88% |
| 五日動能翻多 | 840 | 2.48% | −2.53% | −20.3% |
高換手那個策略,在零成本的回測裡年化 2.48%,只要加上 10 基點(0.1%)的成本就變成 −2.53%。而 10 基點在真實世界是很客氣的假設。
四個陷阱疊起來的下場
把前面的東西合起來看。我們拿第三節那個「三層濾網優化版」,加上第四節的滑價,然後看它在樣本外(2010 年之後)的真實表現:
| 每筆成本 | 基礎策略 | 三層濾網優化版 |
|---|---|---|
| 零成本(回測預設) | 9.52% | 5.53% |
| 5 基點 | 9.21% | 2.16% |
| 10 基點 | 8.91% | −1.10% |
| 25 基點 | 8.02% | −10.28% |
而同期買進持有是 +13.99%。
整條路徑是這樣的:你為了讓回測好看,加了三層濾網(樣本內夏普 +40%);濾網讓交易次數暴增;交易次數乘上滑價,把報酬啃光。最後你得到一個在歷史上閃閃發亮、在未來每年虧 1% 的系統,而它的對照組是什麼都不做。
讓回測可信的六個做法
- 先切樣本外,而且切完就不准偷看。把資料分成兩段,只在前段調整策略。等你完全定案,才在後段跑一次。只跑一次是重點:如果你看了後段結果不滿意又回頭改,那後段就變成樣本內了,這個保護就失效了。
- 如實記錄你試了幾個版本。不是記錄最後留下的那個,是記錄你總共試過幾個。試了一百次才找到的漂亮結果,跟第一次就跑出來的漂亮結果,可信度差非常多。
- 先問邏輯,再看數字。每一條規則都要能講出「市場上為什麼會有這個現象」。像「避開週一」這種講不出理由的,就算讓數字變好看也要拿掉。講不出邏輯的規則,本質上就是雜訊。
- 成本假設要抓得比你以為的高。把手續費、買賣價差、滑價都放進去,而且抓保守一點。如果策略在保守成本假設下就不成立,那它在真實世界更不會成立。
- 檢查樣本數夠不夠。一個只交易過 20 次的策略,就算勝率 80% 也證明不了什麼。這跟勝率的迷思那篇談的是同一件事:次數太少時,好成績跟運氣分不開。
- 看它有沒有經歷過壞天氣。只在多頭年份跑過的回測會系統性高估。至少要涵蓋一次像樣的空頭(2000、2008、2020、2022 都算),看它在裡面是怎麼活下來的。
回測可信度檢查表
把你手上那個回測拿出來,逐條勾選。
回測可信度檢查表
常見問題
過度最佳化是什麼?怎麼判斷自己有沒有?
指參數調到剛好貼合歷史資料裡的雜訊,而不是真正的規律。最直接的判斷方法是把資料切成兩段,只在前段調參數,然後在後段驗證一次。實測 49 組均線參數:樣本內夏普與樣本外夏普的相關係數只有 0.119,也就是歷史上的好壞排序對未來幾乎沒有預測力。另一個徵兆是參數稍微動一下績效就崩掉。
為什麼隨機策略也能跑出好成績?
因為同一份歷史資料只有一份,你在上面試越多次,就越可能有幾次剛好對上。實測一千個純隨機策略,最好的那個樣本內夏普 0.816、年化 12.28%,比精心調參數的 0.806 還高,但它百分之百是運氣。這叫資料窺探,防範方法是如實記錄總共試了幾個版本。
加濾網不是可以過濾掉不好的訊號嗎?
理論上是,實務上多半不是。實測用貪婪法逐層挑濾網:樣本內夏普從 0.596 升到 0.837(+40%),樣本外卻從 0.800 掉到 0.658(−18%),而且被選中的其中一條是「避開週一」這種沒有任何經濟意義的規則。有一句好記的經驗法則:濾網會讓可信度減半、跌幅加倍。
滑價要抓多少才合理?
沒有單一答案,取決於標的流動性、單量大小與下單方式,但關鍵不是抓多準,是要抓得夠保守。實測顯示,一個交易 840 次的策略在零成本回測下年化 2.48%,加上 10 基點就變成 −2.53%。實用的判斷法是把年化報酬除以年交易次數,看每筆平均要賺多少,如果接近來回成本,這個策略在真實世界就不成立。
回測要跑多長的期間才夠?
比起長度,更該看兩件事:交易次數與市場環境。次數太少時好成績跟運氣分不開,一般至少要 100 次以上。環境上要涵蓋至少一次像樣的空頭,因為只在多頭年份跑過的回測會系統性高估。一個只在 2010 到 2021 年跑過的策略,等於沒被真正考驗過。
前視偏差是什麼?
指回測用到了在當下還取得不到的資訊。常見的例子有:用當天收盤價決定當天買進、用還沒公布的財報數字選股、用事後修正過的資料。它的殺傷力很大而且很難察覺,因為程式不會報錯,只會給你一份好得不像話的績效。檢查方法是逐條問:這個數字在我下單的那一刻,真的已經知道了嗎?
延伸閱讀
計算設定:全部使用 SPY 1993 年 1 月至 2026 年 7 月的日收盤含息調整價,樣本內為 1993 至 2009 年、樣本外為 2010 至 2026 年。訊號一律隔日執行以避免前視偏差。夏普比率以年化報酬除以年化波動計算,未扣無風險利率。參數實驗掃描快線 5 至 50 日、慢線 60 至 250 日共 49 組有效組合。隨機策略實驗生成 1,000 組獨立亂數訊號,在市比例設為 55%。濾網實驗自 15 個候選濾網中以樣本內夏普貪婪挑選三層。成本以每次進出各扣指定基點計算。交易次數為進出成對計數。歷史數據不代表未來,本文為教學內容,非投資建議,文中標的僅為統計說明,不構成任何買賣推薦。

量化交易是什麼?
勝率高就會賺錢嗎?
三種讓真數字說謊的統計手法


