2011年10月15日 星期六

如果過度最佳化是很難避免的?


程式交易小學堂─期貨投機事業的王道
量化交易策略開發過程中,歷史回測的最大價值在於,歷史回測提供了準備用來交易的策略在過去的可行性與未來可能表現的模擬測試。

在這些年的交易經驗中,我們一直在避免讓所開發的策略陷入歷史資料的過度適配,不管你要稱這個現象為 Curve over fitting、過度最佳化、看著答案寫考卷...都行,指的都是同一件事情。當我們掌握了自行編寫程式以實現策略規則的能力之後,隨之而來很難對抗的誘惑:研發出一個不論什麼盤勢都能賺錢的策略、一個利潤很高但風險很低的策略、一個勝率超高且很能賺的策略,慾望是人前進的動力,不論對自己或是我們的投資人。

在策略開發的工作累積中,漸漸發展出一些模式與檢查的方式去避免交易策略對歷史行情過度最佳化。但是,不論如何總是會有很難避免的情況。至於判斷策略是否有過度最佳化的嫌疑恐怕只能問自己,而很難有什麼一致性的標準。

以個人來說,我比較極端的把開發策略(包含發想)的過程,都當成歷史最佳化是無所不在的。那不僅僅是選用任何指標參數或是均線長短而已,根本上的從規則制定、濾網設計,其實都有歷史最佳化的成份與影子。想一想,有人是從來沒有看過線圖就發展策略架構的嗎?沒有吧~那麼我們策略架構所謂的"發想",是不是已經是去 Match 腦海裡的資料印象了?

因為這樣,我對於所謂策略的歷史最佳化這件事情,採取這是一個不可避免的事實去接納它。雖然接納這個事實的存在,不表示我就覺得這是 OK 的,策略的上線可是要拿真金白銀去輸贏,不能開玩笑。如果發生了虧損還執拗的認為這個策略一定會有績效創新高的一天 - 在不可知的未來。我想:長期來講,我們都已經死了。

換一個角度,如果判斷交易策略對歷史最佳化是否達到"過度"是如此的困難,那麼我可不可以一律把它們都當做都有可能是過度最佳化?當我的態度是所有的策略都極有可能是過度最佳化的產物時,對策略本身設下停損就一件必然的選擇。過去,我接觸到的論述,多半是在策略必然長期會有效的前提下,如何做適當的資金控管以承受或是支撐自己度過策略績效虧損的時期,但是... 如果前提不存在呢?

我認為:透過統計上的觀念,也許直接在策略上線之前,就設下當策略發生多大虧損程度時,就表示該策略對市場的有效性已經非常非常低的判斷方式,可以為這個難解的 "交易策略是否對歷史行情過度最佳化" 的問題,提供很好的解方。

只要我在讓策略上線之前先設好策略本身的停損,那麼不管這個策略是否對有過度最佳化的問題,都可以得到控制。通常,在我眼中認為有過度最佳化問題的交易策略,MaxDrawDown 幾乎都很小(小到不合理,小到不可思議,比如回測 10年的波段策略 MaxDrawDown 竟然 500個 tick 都不到),對策略的交易明細做多次隨機抽取排列後計算取得 MaxDrawDown 的標準差也會很小,因為它的回測報告就已經是很少會虧損。這樣計算出來的策略停損本身就會很小,對我們自身來說,策略停損很小就是實際帳戶傷害也會很小。

交易是一場在金融市場的冒險,損失的發生是必然的,在股票上發生的不斷攤平的慘烈景況一樣會在策略有效性的執著上發生。

簡單架構、參數少這類比較少最佳化空間的策略通常 DrawDown 就會大,反之架構複雜、進出場訊號組數多、參數超多的策略,DrawDown 通常就小。我本身主要是仰賴這個去分別是否"過度"最佳化的。而 DrawDown 小的策略所設定策略停損就小, DrawDown 大的策略所設定的策略停損就會大。

結論:採用回測報告去統計而得的策略停損,可以讓本來有過度最佳化疑慮的策略也有上場表現卻不會有過大損失的機會,並且不需要一直在策略是否最佳化這件事上做困難的決定。當然,我們在實際的交易經營上,看到另外一現象:停損設得小,就會勝率低:常常在停損。停損什麼?停掉那個策略有效可能性非常低的策略。

在這些策略停損經驗過後,或許會讓你回頭在策略開發的階段,就盡量採取一些有效減少過度最佳化產品的作業流程。

熱門文章