策略要避免過度最佳化 [古期]
- 咨詢內容: 原文來自FuturesNote
程序交易策略的設計有個大難題,不論是新手或老手都會一直感到困擾的問題是: 我的程序是否過度最佳化了?
以我們現在開發程序策略的方式,是將歷史資料作為數據,套用各種不同的邏輯來測試,希望能找到一種通則可以適用在對未來的預測。這樣的方式是利用歸納法找出通則,而通則是表示有一定的概率,也可以當作是我們回測的勝率。
但若將前述各種不同的邏輯條件增加的越來越多,就會越來越像是對數據作細節的描述,可以得到很漂亮的測試,但對未來的預測能力必然不如對過去的好,這很像是考試前把所有的考古題答案背下來,而不是真的了解怎么解答,那當考試時題目稍有改變就不會寫了。
有指標就一定有參數,有參數就一定要作選擇,選擇參數的個數及個別的范圍。還有更大的考量是,要怎么判斷是否也用了太多指標以致于最佳化了? 或許它真的就是這么準,也沒什么不可能。
那怎么辦?
目前并沒有主動正向的建議或準則說明該使用多少參數或指標個數,只有被動的再去測試,常用的方法是forward backtesting,就是把歷史數據切兩部份,一部份用你覺得這歷史區間最好的參數測試,另一部份作為未知數據再測試這參數。假設同一組參數在這兩部份的運作情形差異不大,那很可能表示這組參數是夠穩健的,若在兩部份的差異很大,那你就要小心了..... {來源: www.tumamayizhan.com }
以上,是針對單一策略作forward backtesting來判斷是否過度最佳化,但作了也評估過了,能表示未來績效會和測試時一樣好嗎? 當然,還是不一定的,唯一可以確定的是對這支策略的信心和了解更加提升了,這也是很重要的。
除了forward backtesting之外,避免過度最佳化是從策略組合的角度來設計,簡單的說,就是讓各策略專注。專注在目標上,目標是長波段10%行情、中波段3%行情、當沖策略、極短線策略、震蕩盤策略或是針對只作多空單方向的特殊策略等等。
在設計這些策略時,單一的目標要夠明確,例如想設計一個大行情必吃的策略,那小行情就不予理會,或許能作到避開損失就夠好了,千萬不要想連震蕩小行情也吃的到,因為這樣很可能又會陷入多重邏輯的陷阱。 {來源: www.tumamayizhan.com }
舉個故事來說,動物界舉辦了鐵人三項比賽,項目是飛行、短跑和游泳,老鷹在飛行項目得了第一名,但是短跑和游泳都不行,獵豹在短跑得了第一名,但是另兩項不行,海豚則是游泳第一名,但另外兩項也不行。這項比賽最差的是一只鴨子,三項都會一點,但都不怎樣。
這故事和程序交易策略有什么關系? 假如我們希望設計一個任何狀況都適用的策略,什么行情大小都要吃到,那么就可能會設計出一個什么都吃不好的鴨子,而好的作法應該是建立一個團隊,由老鷹、獵豹和海豚組合的超級戰隊。
這和避免過度最佳化又有什么關系? 當我們專注在特定目標設計策略可以有較簡化的邏輯,同時在組合時又可以有效的截長補短,這個有不有效,主要是指降低整體drawdown,也就是看老鷹、獵豹和海豚彼此合不合,這個戰隊能否發揮綜合效果。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容