Ernest Chan《Quantitative Trading》:給回測的幾點啟示
Ernest Chan 的《Quantitative Trading》建議獨立交易者從簡單、可解釋的策略開始,誠實地檢驗,並如實計入成本。對期貨交易者而言,這些啟示可以化為一份簡短的回測設定與檢查清單。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
Ernest Chan 的《Quantitative Trading》主張,獨立交易者應從簡單、可解釋的策略開始,誠實地檢驗,並計入實際的成本。書中最核心的回測啟示是:避免前視偏誤、保持少量參數以限制資料窺探、計入所有交易成本,並確認策略在你打算交易的部位大小下依然有效。
量化交易是指每一次進場、出場與部位大小,都來自電腦可以用歷史資料檢驗的規則的交易方式。Chan 的建議在小規模這一端,另一端是 Jim Simons 與文藝復興:統計習慣相近,資源差很多。
Ernest Chan 的《Quantitative Trading》在談什麼?
這本書是寫給想經營小型個人交易事業的人的實用指南,並不是數學教科書。副標題是 How to Build Your Own Algorithmic Trading Business。Wiley 於 2008 年出版第一版,後來又推出第二版。
全書依照交易者實際會走的路徑展開:
- 從論文、書籍與交易部落格等公開來源尋找策略構想。
- 進行回測,並認清回測說謊的常見方式。
- 建立帳戶、資料與執行系統。
- 決定部位大小並管理風險,其中有一章談凱利公式。
- 學習均值回歸、動能、市場狀態轉變與平穩性等專題。
範例使用程式碼與試算表:第一版用 MATLAB 與 Excel,第二版加入 Python 與 R。你不必照抄任何程式碼,也能運用這些啟示。它們是檢驗時的習慣,任何回測工具都可以照著做。
為什麼 Chan 偏好簡單的策略?
參數少的簡單策略,意外擬合過去的方式比較少,所以它的回測更能說明未來。參數是規則中任何你可以更動的數字,例如回看期數、停損距離或進場門檻。在 AlphaPrime(Valynox) 的策略生成裡,回看期數、停損距離或進場門檻都是事先設好上限的參數範圍,自由參數有幾個一目了然。
可以把它想成鑰匙。三個齒的鑰匙能打開許多相似的鎖,三十個齒精準切割的鑰匙卻只能打開一把鎖。參數經過大量調校的策略就是那把三十齒的鑰匙:它只貼合當初切割時所依據的歷史,其他幾乎都不合。
Chan 也要求要有理由。策略應該能解釋為什麼可能有效,例如強制賣壓把價格推得過頭,或市場對消息反應遲緩。由此衍生出三項實務檢查:
- 在執行任何東西之前先數參數。每多一個參數,都應該證明它值得存在。
- 在檢驗前用一句話寫下理由。如果寫不出來,你檢驗的是一個圖形,而不是一個想法。
- 測試相鄰的數值。如果回看 20 有效,但 18 和 22 都失敗,這個結果很可能只是雜訊。
均值回歸還是動能:該測試哪一個?
均值回歸與動能是對同一個價格的相反押注,所以你要測試某個市場與 K 棒週期支持哪一種,並預期兩者的交易特徵截然不同。均值回歸是指價格或價差偏離均值後,傾向回到平均的現象。動能則是指朝某個方向移動的價格,傾向在一段時間內繼續朝同方向前進。動能指標把它衡量為固定 K 棒數內的價格變化。
Chan 把這兩者視為交易策略的兩大家族。重點在於,同一個市場可以兩種行為並存:在短週期的日內 K 棒上可能回歸,在數週的尺度上卻形成趨勢,而且當市場狀態改變時,行為也會跟著改變。每個家族也都有已知的特徵:
| 均值回歸 | 動能 | |
|---|---|---|
| 典型的交易特徵 | 許多小額獲利,偶爾出現大額虧損 | 許多小額虧損,少數大額獲利 |
| 主要風險 | 價格沒有回歸,反而一路走下去 | 在盤整市場中長時間持平或虧損 |
| 回測時要檢查什麼 | 最大單筆虧損,以及停損如何處理它 | 權益沒有創新高的最長期間 |
我們的指南期貨回測中的均值回歸策略提供了第一個家族的可檢驗範例。
前視偏誤如何悄悄混入回測?
前視偏誤會讓回測出現實際上不可能成交的交易,解決方法是只在已收盤的 K 棒上做決定,並在下一根 K 棒成交。前視偏誤是指回測中使用了在做出交易決定時尚未知道的資訊。
Chan 把這列為最常見的回測錯誤之一。在期貨研究中,通常會以下列形式出現:
- 某條規則在盤中價格接近當日低點時買進,但判斷時用了整天的最低價。你要到收盤後才知道當天的最低點。
- 訊號以某根 K 棒的收盤價計算,並且就在同一個收盤價成交。
- 某個門檻(例如平均波動水準)以整份資料計算,再套用到更早的日期。
一個簡單的測試就能抓出大多數情況:把回測改用少一根 K 棒的資料重跑一次。到那個時間點為止的每個訊號都應該維持不變。如果舊訊號改變了,代表規則正在讀取未來。文章前視偏誤與一根 K 棒檢查會逐步說明這個測試。
什麼是資料窺探偏誤,如何限制它?
你每多試一個變體,資料窺探偏誤就會增加,所以要用沒有參與挑選的資料來評斷策略的表現。資料窺探偏誤是指在同一份資料上試過許多規則或設定、只留下最好的一個,因而讓回測結果被灌水。
用日常的例子來比喻:請一百個人各自擲十次硬幣,其中少數人會因為運氣擲出八次或更多的正面,但他們的硬幣並不特別。從數百個變體中挑出最好的那個策略,往往就是那枚幸運的硬幣。
假設性範例
某位交易者在 2015–2022 年的資料上測試了突破規則的 500 個變體。最好的那個變體,扣除成本後平均每筆損益為 $30。在 2023–2025 年的資料上(這段資料完全沒有參與挑選),同一個變體的平均每筆損益只有 $3。那 $30 大部分來自挑選,而不是來自優勢。
研究也支持這一點。White(2000)提出一項檢定,用來判斷把所有試過的規則都納入考量之後,最佳規則是否仍然優於基準。Sullivan、Timmermann 與 White(1999)把它應用在大量的技術交易規則上。Bailey 等人(2014)則說明,隨著嘗試次數增加,回測結果膨脹得有多快。夏普比率是平均報酬除以報酬的波動幅度,用來衡量每單位風險的報酬。Harvey 與 Liu(2015)主張,對於多重檢定,應該調降所報告的夏普比率。我們整理的回測過度最佳化研究用白話解釋了這些結果。
Chan 的解方很簡單:保持少量參數;保留一部分在開發策略期間完全不碰的資料;用真錢交易之前先做模擬交易。推進分析則多了一道檢查:它在過去的資料上重新調整策略,再用接下來的資料檢驗,並在整段歷史上反覆進行。
成本與容量如何改變一個策略?
成本決定回測中的優勢能否存活,容量則決定它在你的交易規模下能否存活。Chan 強調,交易次數很多的策略,一旦計入手續費與滑價,就可能從獲利變成虧損。基本的檢查只需要一個公式:
淨平均每筆損益 = 未扣成本的平均每筆損益 − 一買一賣(來回)成本
這裡的毛平均每筆損益是扣除成本前每筆交易的獲利。一買一賣(來回)成本是進場與出場兩邊的手續費、交易所費用與滑價。滑價是回測所假設的價格與你實際成交價格之間的差距。如果淨平均每筆損益接近零,滑價的小幅變動就會決定結果。如何估算各個部分,請見回測中的交易成本。
容量是一個策略在自己的委託開始推動價格、足以吃掉優勢之前,所能交易的最大資金量。Chan 指出,這正是小型交易者的優勢所在。對大型基金而言太小的策略,對個人來說仍可能值得交易。對散戶來說,容量限制會出現在流動性較薄的合約、較清淡的交易時段,以及放大口數的時候。
假設性範例
某策略的毛平均每筆損益是 4 個跳動點。手續費與規費每一買一賣(來回)相當於 1 個跳動點。交易 1 口時,滑價每邊 1 個跳動點,所以淨平均每筆損益是 4 − 1 − 2 = 1 個跳動點。在較清淡的交易時段交易 10 口時,滑價升到每邊 2 個跳動點,淨值變成 4 − 1 − 4 = −1 個跳動點。規則沒有變,變的是規模。
AlphaPrime在回測中,以手續費、滑價與下一根 K 棒成交來評估每一個候選策略。因此成本從第一次執行起就會影響排名,而不是只在最後才考慮。
散戶期貨交易者如何應用這本書?
把每一項啟示化為一個回測設定與一個通過或不通過的檢查,並且在看到任何結果之前就決定好兩者。下表把書中的主要啟示對應到期貨實務。
| 啟示 | 回測中要設定什麼 | 好的跡象 | 壞的跡象 |
|---|---|---|---|
| 簡單的規則 | 參數少,範圍事先固定 | 相鄰的數值給出相近的結果 | 只有某個確切的數值有效 |
| 均值回歸與動能 | 在相同的資料與成本下測試兩個家族 | 所選家族對這個市場與 K 棒週期有明確的理由 | 結果逐年在兩個家族之間來回翻轉 |
| 前視偏誤 | 在已收盤的 K 棒上決策,在下一根 K 棒成交 | 移除最後一根 K 棒後,訊號維持不變 | 截短資料後,舊訊號改變 |
| 資料窺探 | 完全不碰的樣本外期間、推進分析 | 樣本外保留了相當比例的樣本內結果 | 樣本外接近零或為負 |
| 成本 | 手續費、規費,以及每邊至少一個跳動點的滑價 | 淨平均每筆損益是一買一賣(來回)成本的數倍 | 滑價加倍時,優勢就消失 |
| 容量 | 滑價隨口數與清淡交易時段而上升 | 策略在你計畫的規模下,能承受較高的滑價 | 策略只在一口時有效 |
對期貨而言,再加上書中一般性建議所隱含的三項設定:使用你實際會交易的交易時段,只做日盤或全時段;在連續月資料中一致地處理轉倉;依據你能承受的回撤來決定部位大小。凱利比例是公式根據過去的勝率與賺賠比所建議的下注資金比例,由於它假設過去的數字會持續成立,所以請把它當成上限,而不是目標。
AlphaPrime 的策略檢驗把檢查依耗時分成基礎、標準與完整三組,也提供推進分析與自訂門檻。未通過時選「停止後續檢驗」,較弱的候選策略就不會跑完後面的檢查。
如果你使用 AlphaPrime,這代表:搜尋大量策略變體,正是 Chan 的資料窺探啟示適用的地方,所以請用計入成本的推進分析與樣本外結果來評斷候選策略,而不是看最好的那個回測。保持規則簡單,並把交易時段與滑價設定得與你實際的交易方式一致。
常見問題
Ernest Chan 的《Quantitative Trading》這本書在談什麼?
這是一本經營小型演算法交易事業的實用指南,內容涵蓋尋找策略構想、回測及其陷阱、建立執行系統,以及部位大小與風險管理。後面的章節談到均值回歸、動能、市場狀態轉變與平穩性。
Ernest Chan 還寫過哪些書?
除了《Quantitative Trading》之外,他還寫了《Algorithmic Trading: Winning Strategies and Their Rationale》(Wiley,2013),更深入地探討均值回歸與動能策略。他也寫了《Machine Trading: Deploying Computer Algorithms to Conquer the Markets》(Wiley,2017)。《Machine Trading》針對已經在執行系統化策略的交易者,談到機器學習與風險管理等主題。
書中的啟示適用於期貨交易嗎?
適用。前視偏誤、資料窺探、交易成本與容量,不論在哪個市場都會影響回測。期貨另外有自己的設定:交易時段、連續月資料中的轉倉,以及以每口跳動點衡量的成本。
我需要會寫程式才能運用 Chan 的想法嗎?
不需要。書中的範例使用程式碼與試算表,但這些啟示是檢驗的習慣。任何回測工具都能運用:少量參數、下一根 K 棒成交、實際的成本,以及完全不碰的樣本外期間。
資料窺探偏誤等於過度最佳化嗎?
兩者關係密切。過度最佳化是指策略擬合了建構它時所用資料中的雜訊。資料窺探偏誤則是測試許多變體並只留下最好的那個時,所得到的被灌水的結果,這是過度最佳化發生的主要方式之一。
參考資料
- 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.
- Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
- Sullivan, R., Timmermann, A., & White, H. (1999). Data-Snooping, Technical Trading Rule Performance, and the Bootstrap. The Journal of Finance, 54(5), 1647–1691.
- White, H. (2000). A Reality Check for Data Snooping. Econometrica, 68(5), 1097–1126.

