這一波台股/台指期大多頭,我跟很多人一樣,都想過「是不是可以叫 AI 幫我寫程式,找出一套能穩定賺錢的台指期交易方式」。花了不少時間,把想得到的策略一個一個拿去做很嚴謹的回測跟驗證——結果大部分都被自己親手否決掉了,包括這篇要講的這個。
想貼出來,一方面是紀錄這個過程,一方面也好奇:是不是也有人手上有一個回測很漂亮的策略,自己也說不上來哪裡怪。如果有,看完這篇歡迎留言或站內信聊聊,我會挑一些人幫忙看看你的策略站不站得住腳。
先講這次要拆的策略。它不是我自創的,是很常見的「開盤區間突破」(ORB):開盤後畫一個高低區間,突破上緣做多、跌破下緣做空,停損停利設好,收盤前平倉。書上、課程裡到處找得到。
拿台灣期貨市場的資料回測,數字長這樣:某檔個股期貨,樣本外(沒調過參數的資料)勝率88%,獲利因子(PF) 3.31。
PF 3.31 是什麼概念?大概就是賺的錢是虧的錢的3倍多,一般人看到這種回測應該都會想上線試試看。
問題出在哪?
回測裡,每一筆進場都假設你剛好用當時的價格成交。但這個策略是「突破就衝進去」的市價單,真實世界裡你買到的價格,一定比你看到訊號那一刻的價格差一點——這個差距叫「滑價」。
把滑價很保守地加回去(每筆多算一點點成本),同一個策略同一批資料,PF 從3.31直接掉到 0.42。統計檢定做下去,這個負數不是運氣不好,是打從根本上期望值就是負的。
為了確認「滑價」這個假設會不會太誇張,我又去抓了真實的逐筆成交資料重新驗算——結果滑價比我假設的還要差一點,不是我算得太嚴苛。
最後拿一個模擬帳戶,照真實規則跑了一個月,19筆交易,PF 0.62。跟前面滑價修正後的預測差不多。也就是說,如果你一開始只看回測的3.31,虧錢會覺得是運氣差;但如果你先做過這層檢查,你會知道這是這個策略「正常」的樣子。
一句話講死因:這個策略設定的獲利目標,跟你進場要付出的成本(也就是滑價)根本是同一個量級的東西。賺的錢還沒超過你要付出的交易成本,回測再漂亮都沒有用。
給也在跑策略的你,五個可以自己檢查的問題:
回測裡你的每一筆成交價,是「訊號出現那一刻的價格」還是「你真的能買到的價格」?如果是前者,你的獲利可能有一部分是幻覺。
你設定的停利,換算成最小跳動點位是幾倍?如果差不多10倍以內,風險很高,你在跟成本賽跑。
勝率特別高(像89%這種),反而要小心,不是安心——通常代表每筆賺很少、偶爾一筆賠很多,成本會把小賺侵蝕光。
樣本外測試PF大於1就想上線?有沒有做過統計上「這是不是雜訊」的檢定?很多樣本外的獲利,統計上根本不能排除是運氣。
真的虧錢的時候,你會說「運氣不好」還是「這個策略本來就有問題」?如果你的回測沒把真實成本算進去,你根本沒辦法分辨這兩者。
這套檢查流程(用真實逐筆成交資料重放、算真實滑價、做統計檢定)我平常拿來驗自己的策略,順帶一提,也淘汰了我自己不少喜歡的策略。整理了一些細節在部落格:如果你自己有寫程式或用軟體(MultiCharts之類)跑過台指期的日內策略,回測很漂亮但總覺得哪裡怪,看完這篇想讓我幫忙看看的話,留言或到方格子跟我聊聊——不用給我策略邏輯,只要交易清單(進出場時間、方向、口數),有現成範本可以填。我會從中挑一些人來協助分析。