各家產品的回測報告多多少少都會有一些跟實單略有出入的地方,單一項來看或許差距有現,但積少成多之後,整個回測報告失真的情況就相當嚴重了,XQ也無可避免存在這樣的問題。在對回測報告的數據生成規則不熟的情況下,往往看到績效曲線、累積報酬率不錯的報告,就會誤以為策略可以實戰。
接下來舉幾個常見的例子:
(以下內容僅針對"當沖策略"且"不開逐筆洗價"的情形)
由於XQ回測受限於歷史資料的關係,只能計算1分K的OHLC或OLHC四個價格,即使勾選「觸發即判斷成交」,往往還是會遇到實單價格與回測有tick差的情況,一進一出各差了一點,長期下來實單就會顯著偏離回測。
另外像是自家網路延遲、券商Server延遲、XQ Server延遲等原因導致實單送出&實際將委託下到證交所Server的時間延遲,也會造成實單成交的價格並非當根K棒收K時的OHLC。
或是打從一開始收到報價的時間點就有可能是連續價格(趨勢發動中),因此無法成交到當根K棒的開盤價。
但這個問題還算是好處理的,如果不打算額外整理回測報告,最簡單的做法就是調高每次回測的單邊手續費成本。例如折讓在2-3折之間,可以試試將手續費調到0.35%或0.4%,進出場價格會比較貼近實單,損益自然也會更接近一點。
單邊交易成本改成0.4%後看上去這個策略就不那麼好了
回測沒有辦法分辨緩搓,而實務上遇到緩搓時,自動交易策略送出委託時,會直接拋出異常並自動停止,在台股近期緩搓頻率越來越高的趨勢之下,遇到這類形況導致沒有進場成功的頻率會越來越高。
回測也不會考慮成交量,勾選「觸發即判斷成交」時會用洗價當前的K棒判斷量價,而不是用下一根K有沒有量去看,導致會發生成交在成交量為0的K棒上。這點是勾選「觸發即判斷成交」需要承擔的風險,為了更貼近實單,建議還是要勾選。
回測也不考慮漲跌停排隊的問題,市價委託都保證能補在漲停或賣在跌停,實務上晚個幾毫秒,很可能今天到收盤都不會成交到你的單,進一步還需要借券來改帳留倉或被迫做券差交易。
這些實單不會成交的交易對回測報酬的影響有多劇烈,回測報告通通不會告訴你,除非你的券商夠大&營業員夠有力,保證你每次都借得到券來改帳,不然這種事只要遇到一次就能讓我們吐掉N次交易的獲利。
來看看幾個被鎖漲停的常見情境,看看被迫做券差交易和能正常停損在漲停的差異:
假設這是平均交易獲利只有1-2%的策略,券差交易1次大概會抵銷掉最少5次的獲利
回測有觸發的交易實單不一定會觸發,反之實單有觸發的交易回測也不一定會有。除了程式沒寫好,也可能因為緩搓或是盤中XQ Server傳來的數據與回測不同造成這個問題。
雖然回測交易次數越多,這些交易次數影響越小,但如果這些交易泰半剛好都是賺錢甚至大賺的交易,整個策略穩定度就會受到考驗。
上述各種情況都屬於實單限定,放策略跑模擬單也是觀察不到的。看到這些問題,還能有把握自己的策略能賺錢嗎?