量化交易回測怎麼做:讓回測不騙人的流程與四大偏差
你剛跑完人生第一次量化交易回測。資金曲線像用尺畫的一樣上揚,夏普比率 3.1,那個晚上你覺得自己是天才。有一行字應該貼在這門生意每一塊螢幕的上方:回測是策略實際表現的理想化上界。機器裡的錯誤幾乎總是在抬高結果,從不是壓低它。這篇講的就是怎麼讓回測少騙你一點:流程、把曲線吹起來的四大偏差、以及一張通過的回測單到底證明了什麼。
回測是什麼,不是什麼
回測是用你的規則重放歷史:演算法走過一段過去的市場資料流,產生訊號,每個來回的交易記一筆盈虧,全部加起來就是那條資金曲線。這一切的目的不是預測未來——是在你可控的約束下盡量逼近實盤。路上順便做四件事:
- 過濾——便宜地篩掉不達標的策略,趕在市場收學費之前
- 建模——在模擬裡安全地測試成本、流動性、延遲這些市場機制
- 最佳化——小心地調參,同時清楚這個動作本身就是偏差來源
- 驗證——把你複刻的策略和原作者公布的夏普、回撤對一對,檢查實作沒錯
量化交易的策略比主觀策略更配得上回測,理由很直白:規則寫下來了,歷史才能對著它重放。但有個陷阱——交易頻率越高,市場微觀結構越難建模,整個回測越不值得信。
量化交易回測的流程:四步,一步不省
- 資料。 價格、成交量、你的規則要吃的一切。資料品質封頂下游全部——垃圾進,幻想出。
- 規則。 策略要精確到電腦能執行。寫不成程式的還不是策略,是一種情緒。
- 執行模擬。 按時間順序走資料、逐筆成交、記錄每個部位。成本從第一天就進模型——每筆成交都算佣金和滑價。一加上租金就死掉的「優勢」,從來就不是優勢。
- 評估。 報酬率、夏普比率、最大回撤、勝率,從完整紀錄裡取——不從最好看的那段窗口裡取。
把量化交易回測曲線吹起來的四大偏差
一、過擬合(殺死策略最多的那個)
把進場閾值、回看窗口、停損位一路調到回測發光——這就是過擬合,也叫曲線擬合、資料窺探。它從這些門進來:訓練資料太少、雜訊太多、或模型太複雜把歷史擠壓過頭——策略背下了歷史的偶然,像學生背去年考卷的答案,然後撞上一張新卷子。檢測法:做敏感性分析。把每個參數微微挪動,畫出「表現曲面」。真實的效應給出平滑的曲面;曲面跳來跳去,說明你的參數在擬合雜訊而不是現象。補救枯燥但有效:參數越少越好、資料越多越好、留一段你從不拿去調參的樣本外資料。
二、未來函數(實盤跑輸回測的頭號原因)
模擬走到 N 時刻時,你的程式必須對 N+1 之後一無所知。洩漏點尷尬地隱蔽:陣列索引差了一位;迴歸係數用全資料集(含未來)擬合、再倒回去應用;用當根 K 棒的最高最低價決定這根 K 棒內的交易——可高低點要到 K 棒結束才確認(必須滯後一期使用)。模擬裡光芒四射、實盤裡一瘸一拐的策略,未來函數是教科書級解釋。實盤和回測對不上時,先來這裡搜查。
三、幸存者偏差(由贏家書寫的歷史)
拿今天的成分去測試,你測到的只是活下來的資產。2001 年網路泡沫破裂是教科書案例:在熬過崩盤的科技股上篩策略,表現亮眼——破產的那些被悄悄從資料集裡刪掉了。散戶的資料源在這件事上並不無辜:免費行情入口的歷史股票池普遍不含下市股。不花機構級預算的兩條出路:用更近期的資料(消失的名字更少);或者從今天開始記錄你自己的股票池讓它變老——三四年之後,你就有一份乾淨的資料了。
四、心理承受偏差(沒人寫程式防的那個)
一個動量策略回撤 25%、持續四個月,在紙面上毫不起眼。在曲線上它是你劃過去不看的一個坑;在真金白銀裡它是一個冬天。從沒演練過「熬過它」的交易者會在回撤中途拔電源,把一個本會通過的策略變成一個跑輸的策略。規矩是:回測裡出現過多深、多久的回撤,就把你的心理預期排到實盤再經歷一次——因為它一定回來。
一張通過的回測單,到底買到了什麼
量化交易回測通過,是實盤的入場券,不是獲利的承諾。它說明規則可實作、風險曾一次可活、成本沒殺死它——對下一個市場狀態什麼都沒說。之後的職業循環是:模擬盤、小部位、實盤成交對照模擬成交、迭代。六階段路線圖擺好了整個序列;候選策略死在這裡的時候,策略家族表是下一個想法的來處。
台灣的落地路徑不複雜:券商下單軟體與量化平台普遍自帶回測功能,把策略建好就能對歷史資料跑;練手對象還是那檔雙均線 ETF——流程閉環了,再談別的。
常見問題
回測需要多長的歷史資料?
要長到跨過幾種市場狀態——日線策略至少幾年,能拿到更長更好;但也別長到市場的規則已和今天面目全非。情境的廣度勝過原始長度。
為什麼實盤跑不贏回測?
按可能性排序:成本算得太客氣、原回測裡有未來函數、過擬合、以及歷史裡根本不包含的新狀態。上面四大偏差就是檢查清單。
回測能證明策略賺錢嗎?
不能。它只能便宜地「未能證偽」。證明發生在實盤,慢慢地、小部位地——這也是為什麼Python 工具鏈那篇排在紀律之後。
量化交易的回測是一個過濾器,不是先知。誠實地建它——成本進、洩漏出、參數少——它會免費替你殺死幾十個壞主意。這就是它的本職,而且它幹得很好。剩下的流程,專集首頁一直留著。