VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 回測與檢驗

什麼是回測?期貨回測的意義、步驟與限制

回測是把固定的交易規則套用在歷史價格上,看它們過去會如何交易。期貨回測要使用乾淨的資料、貼近現實的成本、正確的交易時段與下一根 K 棒成交,再用策略從未見過的資料檢驗結果。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 回測是什麼意思?
  2. 如何一步步回測期貨策略?
  3. 回測績效報表中哪些數字最重要?
  4. 為什麼好的回測在實單交易中仍可能失敗?
  5. 回測看起來不錯之後,還應該檢查什麼?
  6. 常見問題
  7. 參考資料

回測是什麼意思?

回測是把一組固定的交易規則套用在歷史價格資料上,看它們過去會如何交易。對期貨而言,有用的回測需要乾淨的連續月資料、貼近現實的成本、正確的交易時段,以及下一根 K 棒成交。回測結果只描述過去。當策略在從未見過的資料上也站得住腳之後,才值得多信任一些。

這個中文詞很直白。回是「往回」,測是「測試」,所以回測就是沿著時間往回跑的一次測試。回測是一種模擬,把固定的交易規則逐根 K 棒套用在過去的價格上,並記錄規則會做出的每一筆交易。最後它會給出交易明細、權益曲線,以及淨損益和回撤等摘要數字。

回測就像一台飛行模擬器,重播真實過去航班的天氣。它顯示你的規則如何應付已經發生過的狀況,卻不會告訴你明天的天氣。儘管如此它仍然很有用,因為在過去資料上就失敗的規則很少值得投入真錢,而模擬器墜毀也不用花一毛錢。

如何一步步回測期貨策略?

期貨回測是否貼近現實,取決於五項設定:資料、規則、成本、交易時段與成交時點。第一次執行之前,依下列順序把五項都設定好。

  1. 準備資料。期貨合約會到期,所以橫跨數年的測試需要一條把一個月份接到下一個月份的連續月序列。要檢查轉倉是如何處理的、時間戳記是否使用交易所的時區,以及是否有跳空或異常跳動點。選擇適合策略的 K 棒週期。如果停損和停利可能在同一根很長的 K 棒內都被觸及,那根 K 棒就無法告訴你哪一個先發生。
  2. 把規則寫完整。每一次進場、出場、停損和部位大小,都必須是電腦不需任何判斷就能執行的規則。「趨勢看起來很強時買進」不是規則。「收盤價高於 50 根 K 棒移動平均線時買進」才是。
  3. 加入交易成本。包含手續費、交易所費用、適用時的稅,以及滑價。滑價是回測所假設的價格與你實際會成交的價格之間的差距。成本要以一買一賣(來回)(進場加出場)為單位建模。回測中的交易成本:手續費、滑價與平均每筆損益這篇指南說明如何估算。
  4. 設定交易時段。決定策略在哪些時間交易、可以使用哪些 K 棒。同一個合約上,只用日盤的 K 棒和全時段的 K 棒會得出不同的結果。
  5. 使用下一根 K 棒成交。下一根 K 棒成交的意思是,回測在下一根 K 棒對訊號採取動作,而不是在產生訊號的那根 K 棒收盤時成交。依某根 K 棒收盤價下決定的規則,在實際交易中不可能同時以同一個收盤價成交。
期貨回測的五項設定(資料、規則、成本、交易時段與下一根K棒成交)全都匯入同一份回測報表,因此每一項都會改變結果 五項輸入決定報表 每個箭頭都匯入同一結果 1 資料 2 規則 3 成本 4 交易時段 5 下一根K棒成交 報表 每項設定都會改變報表。 所以:執行前先設定好這五項。
期貨回測的五項設定。每一項都會改變報表,所以第一次執行之前要全部設定好。

在期貨中,交易時段的影響比許多交易人預期的更大。台指期(代碼 TX)的一般交易時段是台灣時間 08:45 到 13:45,盤後交易時段則是 15:00 到隔天 05:00。交易所可能調整交易時段、合約價值與費用,所以測試前請先到交易所的合約頁面確認。免費的期貨交易時間工具會以你自己的時區顯示各交易所與各交易時段的交易時間。

AlphaPrime (Valynox) 的回測已包含費用、滑價、交易時段與下一根 K 棒成交,因此它評估的每一個策略,都是用同樣貼近現實的設定來衡量。

回測績效報表中哪些數字最重要?

單獨來看,淨損益是資訊量最少的數字;交易筆數、平均每筆損益和最大回撤告訴你的多得多。要把它們放在一起看。

輸出它告訴你什麼要看什麼
交易筆數結果建立在多少證據之上筆數少可能只是運氣。幾十筆是偏弱的樣本;幾百筆能說明更多。
平均每筆損益(扣除成本後)每筆交易的優勢它應該是一買一賣(來回)成本的數倍,這樣滑價小幅上升時優勢才不會消失。
最大回撤從高點算起最深的虧損想想你能不能撐著繼續交易,不論是資金還是心理上。
回撤持續時間權益停留在前一個高點之下多久長時間的橫盤期在實單交易中很難熬。
各年度結果結果是否依賴單一時期一個極好的年度加上好幾個持平的年度,是脆弱的。
多單與空單結果是否全由其中一邊撐起要知道是哪一邊創造了結果,以及原因。

最大回撤是權益曲線從某個高點跌到之後低點的最大跌幅。免費的回撤計算器可以從任何權益序列(包括從回測匯出的序列)計算最大回撤與恢復情形。

平均每筆損益來自一個簡單的公式:

平均每筆損益 = 淨損益 ÷ 交易筆數

這裡的「淨損益」是扣除所有成本後的總結果。「交易筆數」把每一筆完成的一買一賣(來回)算一次。結果就是平均每筆交易賺或賠多少,以點數或金額表示。

假設性範例

一組規則在台指期日盤 K 棒上測試五年。報表顯示 250 筆交易,在假設每一買一賣(來回)成本為 3 點之後,淨結果為 2,500 個指數點。平均每筆損益:2,500 ÷ 250 = 10 點。最大回撤:700 點。

壓力測試:把假設成本從 3 點提高到 5 點。淨結果減少 2 × 250 = 500 點,變成 2,000 點,平均每筆損益降為 8 點。這個優勢撐得過較高的成本。

第二組規則顯示 40 筆交易,平均每筆損益為 4 點。多 1 點滑價就會抹去四分之一的優勢,而且 40 筆交易太少,無法分辨是實力還是運氣。第一份報表值得進一步測試;第二份則不值得。

為什麼好的回測在實單交易中仍可能失敗?

最常見的原因是過度最佳化:規則被調得太貼近過去,學到的是雜訊,而不是可重複的規律。過度最佳化指的是規則或參數擬合了歷史資料中隨機的起伏,而這些起伏不會以同樣的方式再發生。

想像一位把去年考題答案背下來的學生。去年那場考試的分數是滿分。今年那場考試的分數,才顯示學生真正學到了什麼。在同一份資料上調整、又用同一份資料報告結果的回測,就是那份背好答案的考卷。

過度最佳化會隨著你嘗試的變化版本數量增加。測試足夠多的規則與參數組合,其中一個光靠運氣就會看起來很出色。針對這個效應的研究顯示,從大量嘗試中挑出的最佳樣本內結果,在新資料上往往表現不佳(Bailey et al., 2014)。研究也顯示,所報告的回測結果應該依其背後的測試次數打折(Harvey & Liu, 2015)。

其他原因比較偏實務面,而且每一個都會留下你可以檢查的跡象:

要檢查的跡象為何重要
權益曲線非常平滑,但參數很多設定越多,搜尋就有越多方法去擬合雜訊。
參數只移動一格,結果就劇烈變化真正的優勢很少只落在某一個精確的值上。
平均每筆損益小,但交易很多筆實際滑價可能比假設的成本大。
在產生訊號的同一根 K 棒收盤價成交這用了一個你不可能交易到的價格。
轉倉時權益大幅跳動連續月資料可能含有轉倉錯誤。
大部分獲利來自一小段時期那種市場狀況可能不會再出現。
過度最佳化策略的假設權益曲線:在用來挑選規則的樣本內資料上平穩上升,在從未見過的樣本外資料上則持平,僅有小幅起伏 擬合在新資料上失效 假設權益曲線 樣本內 樣本外 調出的擬合並未延續。 所以:用未見過的資料檢驗。
假設性示意:過度最佳化的策略在用來建立它的資料上看起來很平滑,到了它從未見過的資料上就失去優勢。

回測看起來不錯之後,還應該檢查什麼?

在信任結果之前,要用策略從未見過的資料來測試,也要檢驗你建立策略的方式。樣本內資料是用來選擇規則與參數的資料。樣本外資料是在這些選擇中完全沒有參與的資料。

  1. 保留一部分資料。把歷史中最近的一段留在一旁,例如最後 20% 到 30%。用其餘資料建立策略,再把完成的規則在保留的那段上只跑一次,不做任何修改。
  2. 執行推進分析。推進分析是在一個資料窗口上最佳化、在下一個窗口上測試,然後向前推進的重複循環。它顯示你的重新調整流程是否在許多時期都站得住腳,而不是只在一個時期。推進分析:為什麼一次回測不夠這篇指南介紹窗口長度與如何解讀結果。
  3. 對成本做壓力測試。用兩倍的滑價重跑。在這裡失敗的策略,是依賴便宜的成交。
  4. 檢查鄰近的參數。把每個參數移動一到兩格。結果保持相近,表示優勢廣泛;結果崩潰,則表示只是碰巧的值。
  5. 閱讀各年度結果。要看獲利分散在不同年度與不同市場狀況,而不是集中在一處。

通過這些檢查的策略,背後的證據比較強。但它仍然是關於過去的證據,所以第一次實單交易的部位要小,並把實際成交與回測的假設做比較。AlphaPrime 的策略檢驗提供基本、標準與完整檢驗,包含推進分析,門檻由你自己設定。

如果你使用 AlphaPrime,這代表:在研究設定中一次設好資料、成本、交易時段與下一根 K 棒成交,每個候選策略就都以同樣的方式衡量。接著把看起來不錯的策略送去做策略檢驗,再把任何一次回測當作交易的理由。

常見問題

交易中的回測是什麼意思?

回測就是 backtesting 的中文說法。它是把一組固定的交易規則套用在歷史價格資料上,並記錄規則會做出的每一筆交易。結果顯示這些規則過去會有怎樣的表現,如果你有納入成本,則是扣除成本後的表現。

回測有多可靠?

當資料、成本、交易時段與成交時點都貼近現實時,回測作為對過去的衡量是可靠的。它不是預測。它對實單交易的價值,取決於策略在樣本外資料與推進分析中是否也站得住腳。

回測需要多少筆交易?

沒有固定的數字,但交易越多,證據越多。幾十筆交易很容易只是運氣,而橫跨不同市場狀況的幾百筆交易能說明得多。參數很多的策略需要更多筆交易,因為它們有更多方法去擬合雜訊。

回測和模擬交易有什麼差別?

回測在幾秒或幾分鐘內把規則跑過過去的資料,涵蓋數年的歷史。模擬交易則是在不動用真錢的情況下,即時向前執行規則,所以速度慢,但用的是策略從未見過的價格。許多交易人先回測,再用樣本外資料檢驗,然後做模擬交易或以小部位交易,把實際成交與回測做比較。

參考資料

  • 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.

AlphaPrime 在這裡能幫上什麼

AlphaPrime 的回測以費用、滑價、交易時段與下一根 K 棒成交來評估策略,而它的策略檢驗會在策略繼續往下走之前,加入推進分析與你自己設定的門檻。

看方案與價格