VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
研究文章 / 回測

回測裡的交易成本:手續費、滑價與平均每筆交易

很多回測看起來不錯的策略,每筆交易的優勢其實比進出一次的成本還小。從第一次回測就把成本放進去,再拿來和平均每筆交易比較。

AlphaPrime 團隊 ·

多數回測都低估的成本

沒有計入成本的回測,量到的只是策略抓到的價格波動。真實帳戶的每一次進場、出場都要付錢。這個差距每筆不大,一年下來就很可觀,而且交易次數越多,差距越大。

常見的結果是:交易越頻繁的策略,扣成本前看起來最好,扣完反而最差。因為這類策略每筆賺的幅度最小,交易次數又最多。

要計入哪些成本

  • 手續費與交易所費用,按口數或股數計算,進場和出場都要收。期貨除了券商手續費,還要加上交易所、結算和主管機關的規費。
  • 滑價,也就是回測假設的價格和實際成交價之間的差距。市價單和停損單的成交價通常比觸發價差,尤其在消息公布前後和開盤時。
  • 買賣價差,如果你的資料用的是中價或最新成交價,但實際交易要用買價或賣價成交。
  • 融資或轉倉(展期)成本,適用於跨交易時段持有的部位,視情況計入。

成本要以來回一趟(進場加出場)計算,單位也要和回測結果一致,這樣才能直接比較。

平均每筆交易檢驗

最簡單又實用的檢查:拿扣成本前的平均每筆交易,和來回一趟的成本比一比。

舉個假設的例子。某個微型指數期貨策略,10,000 筆交易的成本前損益是 $16,000,等於每筆 $1.60。如果來回一趟的手續費和規費是 $1.00,平均滑價是每邊一跳、一跳價值 $0.50,來回成本就是 $2.00。扣掉成本後,這個策略每筆大約虧 $0.40,即使扣成本前的回測看起來很漂亮。

每筆10,000 筆
成本前損益$1.60$16,000
手續費與規費−$1.00−$10,000
滑價(每邊一跳)−$1.00−$10,000
淨損益−$0.40−$4,000
瀑布圖:每筆成本前損益 1.60 美元,扣掉手續費與規費 1.00、滑價 1.00,剩下每筆 −0.40 美元$0+$1.60成本前損益−$1.00手續費與規費−$1.00滑價−$0.40淨損益每筆交易,假設範例
上面的假設範例,以每筆計算:原本為正的成本前優勢,計入來回成本後就變成負的。

常見的經驗法則是,扣成本前的平均每筆交易,應該是來回成本的好幾倍,這樣滑價稍微變大時,優勢才不會被吃光。至於要幾倍,得看你對成本估計有多大把握,要自己判斷。

老實估計滑價

  • 如果有實單紀錄,就用自己的成交價。把成交價和回測會用的訊號價格拿來比較。
  • 沒有實單紀錄時,流動性好的期貨用市價單或停損單,至少先抓每邊一跳;流動性較差的合約,或在波動大的時段進場,要抓更多。
  • 壓力測試:把滑價加倍再跑一次回測。如果策略就此失效,表示它靠的是便宜的成交成本。
  • 限價單可以減少滑價,但不一定會成交。假設價格一碰到、限價單就全部成交的回測,結果是偏樂觀的。

成交假設也很重要

成本不只是各種費用。如果回測在K 棒收盤時做決定,又用同一根K 棒的收盤價成交,用的就是一個實際上買賣不到的價格。對於在K 棒收盤時做決定的策略,改在下一根K 棒執行(有時稱為 N+1 執行)比較貼近實際。

搜尋時就計入成本,不要事後才加

如果策略生成器在排名候選策略時不計成本,就會偏好交易次數多、每筆賺很少的策略,因為這類策略的曲線看起來最平滑。等到最後才加上成本,入圍的策略大多會被刷掉,前面搜尋的時間等於白費。從第一次執行就把合理的成本放進搜尋設定,排名才會反映你真正能交易的結果。這樣也能減少過度最佳化,因為成本最先刷掉的,正是那些由雜訊造成的高頻型態。

AlphaPrime 在這裡能幫上什麼

AlphaPrime 的GPU 回測涵蓋手續費與滑價、N+1 執行和交易時段,讓成本和成交時間點從一開始就是搜尋的一部分,而不是事後才補。績效報表會顯示權益曲線、回撤和每一筆交易。

看方案與價格