趨勢策略的回測有一個特別殘酷的性質:它的真實效應很弱,所以任何一點方法瑕疵,都足以把訊噪比從「勉強可交易」推到「看起來很棒」。 一個含前視偏誤、不計成本、在同一份資料上調過 50 次參數的回測,Sharpe 2.0 是常態;同一套規則實盤跑出 0.3 也是常態。這一篇處理如何把回測做到能相信。

一、資料:期貨特有的三個坑

1. 連續合約的接續方式

期貨每隔幾個月換月,價格序列必須人工接起來。三種做法的後果不同:

方式做法問題
不調整直接接上新合約換月當天出現虛假跳空,訊號被誤觸發
差值回溯調整歷史價格整體平移換月價差早期價格可能變成負數,比例類指標(報酬率、ATR%)失真
比例回溯調整歷史價格乘上比例係數遇到負價(2020 年 WTI)會失效

實務共識:訊號用回溯調整序列計算,損益用未調整的實際合約價格計算。 兩者混用是最常見的錯誤來源——用調整後價格算損益,會把換月價差重複計入報酬。

2. 換月的成本與時點

換月本身要付一次買賣價差,一年 4–12 次;若你的市場清單有 30 個,這是一筆真實且可觀的固定支出。回測必須明確模擬換月日與換月成本,而不是假裝合約永遠存在。

3. 已下市市場的存活者偏誤

只用今天還在交易的市場做回測,會系統性排除掉那些流動性枯竭、被交易所下市的合約。對趨勢策略而言影響方向不確定,但它是真實偏誤,至少要在文件中記錄。

二、前視偏誤:三處必檢

✗ 用當日收盤價產生訊號、同時用當日收盤價成交
✓ 收盤產生訊號 → 隔日開盤成交(或收盤前 N 分鐘),並計入隔夜跳空

✗ 用整段樣本估算波動率或相關性
✓ 只用 t 時點之前的資料估 σ_t(事前估計)

✗ 用今天才知道的市場清單、合約規格、保證金
✓ point-in-time 的市場清單與規格

第二項在波動率目標化的系統裡特別致命:用全樣本波動率縮放部位,等於在高波動期間事後降槓桿,回測回撤會漂亮得不真實。

三、成本:把它變成一個數字

成本模型至少要包含三塊:

每次交易成本(以名目金額計) = 買賣價差/2 + 手續費 + 滑點
年化成本拖累 = 年換手率(名目交易額 / 淨值) × 每次交易成本率

流動性最好的期貨(標普 500 迷你、美 10 年期、EUR/USD)單邊成本可壓到名目的 1 個基點以下;冷門商品、新興市場合約可能到 5–15 個基點。以一個中速系統為例:

年換手率 = 6 倍(名目交易額為淨值的 6 倍)
平均單邊成本 = 3 bp
年化成本拖累 = 6 × 0.0003 = 1.8%

在期待報酬只有 5–8% 的策略上,1.8% 是巨大的一塊。這也是為什麼快速訊號在多數市場不可行:把回看期從 12 個月縮到 1 個月,換手率上升 3 倍以上,成本拖累就變成 5% 以上,直接吃掉全部超額報酬。

壓力測試的作法:把成本估計乘以 2 倍與 3 倍再跑一次。若策略在 2 倍成本下就失效,它在實盤上大概率無利可圖,因為真實滑點在你最需要成交的時候(趨勢啟動、波動率跳升)最大。

四、統計顯著性:先算你需要多長的樣本

Sharpe 比率的標準誤近似為

SE(SR) ≈ sqrt( (1 + SR²/2) / T )      # T 為年數

代入趨勢策略的真實水準 SR = 0.5

樣本長度 TSE(SR)t 值結論
5 年0.471.06完全無法區分於 0
10 年0.341.49仍不顯著
20 年0.242.10勉強顯著
40 年0.172.97顯著

要在 95% 信心下確認一個 Sharpe 0.5 的策略真的有效,你需要大約 17–20 年的資料。 這一個計算就解釋了整個領域的三件事:為什麼學術研究要用 1880 年起的資料、為什麼要 pooled 多市場迴歸(用橫斷面換取檢定力)、以及為什麼 Huang 等人(2020) 逐一市場做迴歸時「幾乎找不到證據」——不是效應不存在,而是單一市場的樣本根本不夠。

同樣的算術也適用於你自己:用 3 年實盤績效判斷策略是否失效,在統計上等於擲硬幣。

五、對抗過擬合的具體程序

  1. 記錄每一次試驗。 包含「跑了但沒採用」的參數。若總試驗數為 K,最好那組的 Sharpe 期望值會被多重檢定膨脹;Bailey 與 López de Prado 的 deflated Sharpe ratio 就是把 K 納入校正。憑感覺調 50 次而只回報最好那次,是自欺。
  2. 切三段。 開發期(60%)、驗證期(20%)、鎖起來的樣本外(20%)。最後一段在所有決策定案前不准看,看過就不再是樣本外。
  3. 走動式驗證(walk-forward)。 每 N 年重新選一次參數,只用當時可得的資料,然後在下一段期間評估。這模擬了真實的決策流程。
  4. 跨市場一致性檢查。 一組參數應在多數市場為正。若績效集中在 2–3 個市場,那是那些市場的歷史。
  5. 交易順序的蒙地卡羅。 把單筆損益隨機重排 10,000 次,看最大回撤的分布。你會發現實際回測的最大回撤只是分布中的一個抽樣——真實可能的回撤通常比回測顯示的深 30–50%。這個數字比回測的 max DD 更適合拿來設定風險預算。
  6. 降級預期。 業界慣例是把回測 Sharpe 打對折當作實盤預期,理由是成本低估、滑點低估、以及未記錄的試驗次數。

六、該看哪些指標

指標定義趨勢策略的合理範圍為什麼要看
Sharpe超額報酬 / 波動率0.4–0.8(含成本)基本效率
MAR/Calmar年化報酬 / 最大回撤0.2–0.5資金能否撐住
最大回撤淨值高點到低點20–35%心理與槓桿上限
回撤持續期從高點到收復高點的時間可達 24–40 個月比回撤幅度更能預測放棄
勝率獲利交易占比30–45%校正期待,不是目標
平均賺賠比平均獲利 / 平均虧損> 2期望值的來源
報酬偏態月報酬的三階動差正值確認是趨勢而非賣波動率
與股票相關性滾動 60 日長期 ≈ 0分散化價值

偏態這一項是最好用的「策略體檢」:若你的趨勢系統跑出負偏態,代表某處滲入了賣波動率的行為(例如太緊的獲利了結、逆勢加碼),那不是趨勢策略,風險特性完全不同(對照 網格的回測陷阱)。

回撤持續期則是被嚴重低估的指標。多數人以為自己能忍受 30% 回撤,實際上讓人放棄的是連續 30 個月沒有新高。這一點在 心理面 展開。

驗證通過之後,接下來是把它變成每天真的能執行的東西 → 實戰執行