回測可以信嗎?上實單前的六項檢查
回測是規則在舊價格上、依所列成本與成交設定交出的紀錄,不是預測。要依序通過六項檢查才可信:沒有前視偏誤或資料錯誤、成本符合實際、樣本外交易筆數足夠、做過推進分析、沒有過度最佳化跡象,以及小額前瞻測試。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
回測可信嗎?通過六項檢查才算
回測可信嗎?必須依固定順序通過六項檢查:沒有前視偏誤或資料錯誤、成本符合實際、樣本外交易筆數足夠、做過推進分析、沒有過度最佳化跡象,以及小額前瞻測試。回測是規則在舊價格上、依所列成本與成交設定交出的紀錄,不是預測。任何一項檢查失敗,策略就回到研究階段。
順序有其道理。第 1 項檢查出現洩漏,之後每個數字都失去意義;第 2 項檢查的成本錯誤,會改變哪些策略能進入第 3 項檢查。期貨回測的定義說明回測這份紀錄本身;回測軟體比較列出工具必須讓你設定的項目,否則六項檢查根本無法執行。
檢查 1:回測有沒有偷看未來,或用了錯誤資料?
多數在實單中崩潰的回測,用了交易者當時不可能拿到的資訊。前視偏誤,是指規則讀到了當時尚不存在的價格:在給出訊號的那根 K 棒上直接成交、會重繪過去數值的指標、連續月中留下的轉倉跳空、觸發停損的異常報價。先做一根 K 棒位移測試:每個訊號改在下一根 K 棒的開盤價成交,而不是訊號 K 棒的收盤價,再比較兩份報表。結果因此崩掉,代表原本有洩漏。常見的洩漏來源,列在回測中的前視偏誤。
檢查 2:結果扣掉手續費與滑價後還成立嗎?
把未扣成本的平均每筆損益,與完整的一買一賣成本相比;優勢若與成本相近,多一個跳動點的滑價就會消失。從第一次執行起,就把手續費、交易所費用與滑價放進搜尋;事後才加,會淘汰大部分入圍者,白白浪費搜尋時間。免費的勝率計算機可算出平均每筆損益還剩多少。
假設性範例
未扣成本的平均每筆損益 $90。一買一賣的手續費與費用 $30。每邊各一個跳動點的滑價,每跳動點價值 $10:$20。平均每筆淨損益 $40。若滑價加倍成 $40,淨額降到 $20,不到未扣成本數字的四分之一。
檢查 3 與 4:樣本外要多少筆交易才夠,為什麼推進分析能給你更多?
用已完成的交易筆數、而不是年數,來衡量歷史中未動過的那一段,因為平均每筆損益的不確定度,只會隨交易筆數的平方根縮小。樣本外(OOS)資料,是從未參與選擇規則或設定的那段歷史。兩年的樣本外資料,月度波段規則只有二十四筆交易,日內規則卻有一千筆;日期相同,證據的分量差距極大。只有一條公式:
平均每筆損益的不確定度 = 單筆交易的離散程度 ÷ √N
單筆交易的離散程度,是單筆結果通常偏離平均多遠;N 是樣本外交易筆數;√N 是它的平方根。樣本外交易有幾百筆是可行的目標;不到約 30 筆只是線索,不是結果。
推進分析是這樣一種測試:在一個區間內最佳化設定,原封不動套用到接下來的區間,往前推進再重複,最後把各測試段接成一條曲線。這條接起來的曲線,是你唯一真正可能交易到的一條;它包含的樣本外交易,比同一段歷史只切一次來得多;也能看出重新選出的設定,在區間往前推進時是否持續有效(Pardo,2008)。在 AlphaPrime(Valynox)中,推進分析是策略檢驗的其中一步;通過門檻在搜尋開始前就已寫定,策略一旦沒過前面的檢查,後面的檢查就停止。
檢查 5:如何看出過度最佳化?
最佳結果出自大規模搜尋,會被搜尋本身美化,所以要先做參數高原測試、以蒙地卡羅重排交易順序,並確認獲利分散在不同時期,才去讀標題數字。下列這次執行測的是 NQ 日 K 棒,期間 2019-01-02 至 2025-06-30,多空皆做,一口,以艾爾德射線的空頭力道(Bears Power)規則作為替代規則,而非主題本身;它是 1,024 次嘗試中,依報酬相對回撤而留下的那一個候選策略;事後挑出留下的那一個會美化它,讀者不能預期得到這些數字。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。
| 項目 | 結果 |
|---|---|
| 淨利(已平倉) | $130,510 |
| 最大回撤 | $86,105 |
| 交易筆數 | 227 |
| 勝率 | 52.86% |
| 獲利因子 | 1.229 |
| 平均每筆 | $574.93 |
| 持有部位時間 | 55.42% |

過度最佳化,是把規則調得和某一段歷史貼得太近,以致它描述的是那一段的雜訊。三項測試能讓它現形。第一,跑相鄰的設定:回看期間在 20 有效、在 18 與 22 失效,是尖峰,不是高原。第二,用免費的交易用蒙地卡羅模擬器重排交易順序,讀回撤的範圍,而不是單一數值;若要同時跑多個策略,應以投資組合回測與合併後的回撤為規劃依據。第三,數有幾個季度貢獻了獲利。Bailey 等人(2014)指出,搜尋試的變體越多,最佳者被高估得越多;Bailey 與 López de Prado(2014)則提出依試驗次數對夏普比率打折的方法。更多在信任策略之前先設法打破它的方法,見交易策略的穩健度測試。
檢查 6:為什麼要先小額前瞻測試,再以完整部位交易?
以最小口數做一段短期的實單或模擬運行,把回測中關於成交、滑價與交易時段時點的假設,變成量到的數字。前瞻測試,是把固定下來的規則,放到規則寫成時尚不存在的價格上執行。開始之前先寫好容忍範圍:例如,實單扣除成本後的平均每筆損益,必須維持在回測數字的一定比例之內;量到的滑價不得高於檢查 2 所用的數值。累積到足以判讀的交易筆數後,依這個容忍範圍比較回測與實單結果。在範圍內,就提高到原訂的部位大小;在範圍外,帶著量到的成本回到檢查 2。
下一步:拿出你最信任的策略,把每一次成交從訊號 K 棒的收盤價,改到下一根 K 棒的開盤價,再比較兩份報表。這一根 K 棒的位移就是檢查 1,不花任何成本,只要幾分鐘。
常見問題
回測賺錢,實單就會賺錢嗎?
不會。回測是規則在舊價格上、依所列成本與成交設定交出的紀錄,不是預測。六項檢查靠移除洩漏、正確計入成本、用未動過的資料評分、以小額度量真實成交,來縮小回測與實單結果之間的落差。
回測要有多少筆交易才可靠?
數樣本外交易筆數,不要數年數。平均每筆損益的不確定度隨交易筆數的平方根縮小,所以筆數多四倍,不確定度才減半。樣本外有幾百筆交易是可行的目標,而推進分析能從同一段歷史產生更多筆。
如何分辨過度最佳化與真正的優勢?
跑相鄰的設定:相鄰設定一致的高原,比單一尖峰是更好的跡象。確認獲利分散在各季度,讀蒙地卡羅的回撤範圍而不是單一數值,並依搜尋試過的變體數量,把最醒目的結果打個折扣。
回測到底可靠嗎?
作為規則在過去價格上、依你設定的成本、交易時段與成交規則所做之事的紀錄,回測是可靠的;作為對未來結果的預測,則不可靠。把報表當成有待檢查的證據,讓六項檢查決定它有多大的分量。
參考文獻
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
- Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-Normality. The Journal of Portfolio Management, 40(5), 94–107.
- Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.

