2019年4月5日 星期五

[狼性哲學]量化交易天敵:過度最佳化



量化交易之所以會失敗,大部份的原因都是跟回測績效表現不同,當策略經過回測(backtesting)後,實際上將錢投放至策略上,發現交易策略在現實中開始虧損,大約99%的量化程式都會遇到這問題,這也是量化交易不被信任的原因,那麼、到底是甚麼問題導致策略在現實中失效呢?


簡單舉個最常見的問題:
1.      過度最佳化
    首先談到過度最佳化(Over Fitting)的問題,其實回測(backtesting)模擬的同時,使用到最佳化參數,進而產生的問題就是策略無適應性,舉例來說:如果設計的策略有三個參數,每個參數跑100個模擬值,就會產生(100*100*100)個排列組合=1000000一百萬個不同的權益曲線樣本,我一定可以在1000000條模擬樣本裡,找到一條很棒的權益曲線圖,但是實際交易一定會虧損,原因是未來商品的變化,不會像你所選的這1/1000000的樣本一模一樣所以直觀一點來看,參數越多,對於交易策略是越不好的,這大概是99%程式交易失敗的原因。
從達爾文的演化論來看,適應力越強的物種,存活在地球的時間越長,如果在策略中寫了過多的參數,無異於期盼未來的發展,可以適應所設定的參數組合,這樣的程式交易設計方式是存在瑕疵的。
以下列出量化交易應該避免的事
1. 過多參數的模型
2.      添加過多濾網
3.      最佳化過多參數
或許有些程式交易者建議大家使用推進分析,就可以避免過度最佳化的問題,推進分析只能部分有效篩檢,不代表一定可以看出有過度最佳化的模型,就好像檢驗疾病60%的準確度可以篩檢出疾病,但也是有檢驗不準確的時候,所以從設計的根本角度出發,才能解決問題。
        寫出績效是45度角的漂亮曲線不難,只要夠多的濾網、夠多的參數都可以做得出來,困難的是如何讓策略適應環境的變化! 坊間與市面上有不少績效很好與maxDD很低的程式策略供大家購買,但是實際上買回家用後,發先策略不僅破maxDD,甚至回測看起來賺錢的策略實際上線,馬上就不斷虧損,大部份的原因都還是,市面上的策略只是用了很多參數與濾網,跑了很多最佳化所以上線後往往不堪一擊。
上班族的科學投資無論在入門策略與進階策略都避免了過度最佳化的問題,當然、策略也有可能隨著時間的公佈而失去其應有的績效表現,但網站上的程式與策略教材絕對可以提供初學者與進階者一個學習的地方。
盡量還是撰寫簡單、參數少的交易策略,使用多樣化來分散風險,才可以維持策略的適應性與避免落入最佳化陷阱裡。