程式交易的最後一哩路-過度最佳化(一)

為什麼艾比把”去除過度對佳化”這件事情稱作為程式交易的最後一哩路呢?

因為當你整個EA都開發完成之後,跑出一份美美的回測報表,然後你就打算開始使用
結果最常發生的就是死在過度最佳化上面…
你會發現實盤跑出來的結果遠遠的不如你美美的回測報表
更恐怖的是,可能已經跑了幾個月實倉了,才發現被過度最佳化給黑了

非常的另人沮喪啊~

 

其實從一開始的策略開發,就要開始避免落入過度最佳化的陷阱
艾比認為要去除過度最佳化的三個部分照順序分別為:
1) 交易策略
2) 優化時的挑選參數
3) 使用testing data

今天就來先針對第一個部分聊一下

不知道大家知不知道世面上有一套幫你自動生策略出來的軟體,叫做SQ
他的用法就是給他一段歷史價格,然後你可以選擇要餵什麼樣的指標或條件進去
然後SQ就自動幫你生成一個在這段歷史價格中回測報表非常美的EA給你

(在此沒有要抨擊SQ的意思喔)

大家可能就會覺得,這東西怎麼那麼神奇好用,我完全不用去思考要用什麼策略開發EA
自動就幫我找到策略了耶

稍微有點功力的交易程序員打開SQ生出的代碼一看
會發現,它總是能給你一個你想都想不到的下單條件
(亂舉例)例如RSI36的值大於MACD訊號線5的值,進場作單

嗯嗯,有看出問題在哪了嗎?

就是SQ會用類似暴力破解的方式,把各種指標條件排列組合的去搭配,然後就莫名其妙可以賺錢了…
那他找出的條件,可能是根本不符合世界上實質邏輯的交易策略
為什麼賺錢、為什麼賠錢 你根本就搞不清楚,這樣就有點危險了啊

不過SQ他是有使用insample與outsample來做驗證,所以比起單獨把所有歷史價格都只丟進training data(insample)來的好
但我個人是覺得SQ給出的策略要去研究一下他的下單邏輯,你自己覺得有邏輯在去做使用比較好
(還是要說一下SQ的好話 XD)

cf88610b131cec341775c2301fc88538.png

好,回歸到我們自己的策略開發來說
我們一樣要去避免跟上述提到SQ一樣的問題,就是要避免用了”沒有邏輯”的交易策略

這個部分會比較考驗每個人對盤勢的觀察度跟敏銳度,觀察出能夠量化的交易策略
簡單來說
就是盤勢在做走向時,通常伴隨著什麼特性的產生
基本例如:突破策略、順勢拉回策略、動能策略(動能變強或變弱)、背離策略等等…

艾比常常會聽到很多人說他想不出策略來,可是艾比常常覺得還有很多策略我都還沒空去測試
哈哈…

有這方面煩惱的建議可以去多看點交易的書籍

或是像艾比練功的地方是回測時的圖表,因為在跑一支EA的回測,你必須要專注的去看他進出場的點位有沒有在你原本預想那樣策略的進出場
在回測K線圖圖表上,你就可以專注的看出一些端倪
你會知道,我現在的策略會在哪些狀況進出場,那如果不滿意,我應該去怎麼調整

例如艾比常看到一些多空對翻的策略常常會出場的不好
那我可能會把出場條件改成背離,
背離是一個清楚的策略,也是一個較符合人性的策略,這種出場方式可以讓你吃到比較大段
心裡比較出舒服

你要調整的是進出場的點位策略,而不是矇著眼去調整他賺多少錢的數字

點位有對應上策略,你才能知道在未來發生同樣的情況他也會進出單

 

所以上面所說的意思就是,進出場點位要有所本,跟你心中預想的策略要對的上

而不要根本不了解你的EA為什麼會賺錢或賠錢,如果總是對策略很模糊,你就會非常容易落入最佳化的陷阱當中

 

最後關於策略開發的就是,盡量“單純”

進量一次就是用一種策略去做開發,頂多加個濾網,你才能知道這個策略的實際表現狀況如何
而不要用好幾種策略加在一起,又加入好幾種的濾網
你去看他回測下單的點位時,你根本無法一眼看出他為什麼在這下單 為什麼在這結單
這樣生出來的怪物有非常非常大的機率就是過度最佳化

 

總結是你對EA的策略要足夠了解
當你今天不了解時,實盤發生了問題、績效不如預期
你才能知道問題可能出在哪、該怎麼去解決

今天講了在策略開發上如何去避免落入過度最佳化的圈套
下次有空再來分享另外兩個部分喔

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *