回測更擅長淘汰策略,而不是選出策略。當你開始用歷史績效在眾多變體中做選擇,回測就成了實驗的一部分,而表面上的勝出者也開始帶有一項隱藏成本:選擇偏誤。
這聽起來好像說反了。我們做回測,就是想知道哪個策略有效。但每一次根據同一段歷史資料做出的選擇,都會消耗掉部分證據。看過結果後再調整回溯期間、門檻、標的範圍、再平衡日或停損規則,就等於又向資料問了一個問題。問到最後,資料聽過足夠多的問題,就可能碰巧給你一個令人信服的答案。
為什麼測試的策略越多,最佳結果就越不值得信任?
想像一下,你測試了 100 個毫無實際優勢的策略。它們的報酬仍會有所不同。若績效估計值大致相互獨立,且雜訊呈常態分布,那麼即使每個策略的真實 Sharpe 都是 0,其中最佳策略的 Sharpe 仍會是正值。
在 100 個相互獨立的標準常態抽樣值中,最大值的期望值粗略估計約高於平均值 2.5 個標準差。這只能當作說明,不能當成修正值直接貼進報告:真實的策略變體彼此相關,Sharpe 估計值本身也有抽樣誤差,而報酬很少會像理想的常態抽樣那樣乾淨。即使考慮這些限制,實際重點仍然成立:檢視的候選策略越多,最高分越可能只是反映了有利的雜訊。
而且,「候選策略」不只是存下來的回測。它涵蓋所有看過結果後做出的選擇:因為圖表看起來雜亂就擴大標的範圍、刪掉表現不佳的年份,或調整費用假設直到績效曲線回升。即使沒有人替這些決定編上版本號,它們也都算數。
開始測試下一個變體前,先建立研究紀錄
完整記錄搜尋過程,包括淘汰的構想,以及每次修改的原因。這樣能更誠實地呈現結果受到多少篩選,也比較不會讓人只記得那些好看的測試結果。
| 記錄項目 | 範例 | 重要性 |
|---|---|---|
| 假設 | BTC 永續合約出現異常大幅波動後,短期反轉效應會更強 | 將研究構想與最終參數設定區分開來 |
| 變體與時間戳記 | 48 小時訊號,2026-10-09,執行 014 | 計算搜尋次數,並將結果連結至程式碼與資料 |
| 選擇規則 | 依淨 Sharpe 選擇;至少 100 筆交易 | 說明比較前「最佳」的定義 |
| 淘汰的變體 | 12、24、72 小時區間;全部保留 | 避免可見的勝出者抹去其他競爭者的存在 |
研究紀錄無法讓搜尋過程消失,但能讓過程一目了然,這是判斷勝出者值得多少信心的第一步。
保留研究過程無法反覆查看的資料
依時間切分資料,然後保護最後一段資料。用一段期間開發策略,用驗證期間做決策,再以較晚的留出期間對凍結後的策略評估一次。舉例來說,你可以用 2018–2022 年開發、2023 年驗證,再保留 2024–2025 年作為留出資料。這些日期只是示意:資料切分應依市場、策略週期和資料涵蓋範圍決定。
明確寫下「凍結」的定義:訊號、標的範圍、部位大小、執行假設,以及任何缺漏資料處理規則。如果留出資料的結果不理想,而你據此調整策略,該期間就成了驗證資料。下一次誠實的評估需要全新的證據。
小樣本的問題也會在這裡浮現。若策略在留出期間只交易 18 次,就還不足以得出精確結論。除了報酬統計,也要一併報告交易筆數與不確定性;單一平均值可能會讓樣本稀少的結果看起來像是定論。
這是否代表回測不適合用來選擇策略?
不是。批評者指出,嚴格保留留出資料可能造成浪費,這點有道理:市場會變化,歷史資料不長,而且未碰過的期間可能只代表一種特殊市況。精心設計的滾動前推流程,可以呈現策略在可用歷史資料逐步向前推進時的表現。但這不代表反覆調參不需付出代價。若你檢視每個折次並修改策略,那些折次就已影響研究過程。
用回測找出失效情境、比較少數有市場機制依據的構想,並測試結果能否承受合理的手續費、資金費率、價格衝擊與參數變動。做好研究紀錄。保留最終留出資料。接著將有潛力且已凍結的版本投入模擬交易,從中找出實際運作上的落差。
回測最有力的答案,往往是:「這個構想在我們已知的條件下會失效。」當它說「這是最佳策略」時,不妨問問它先前被要求給出多少個其他答案。
← 所有文章


