COCO研究院

 找回密碼
 註冊
搜索
查看: 4979|回復: 14

策略參數過度最佳化

[複製鏈接]
發表於 16-11-10 12:27 | 顯示全部樓層 |閱讀模式
小弟剛開始接觸MC大約兩個月時間,雖陸陸續續有些成果
但在最佳化過程中發現經由MC跑出來的最佳化參數未必是最適合後續的盤勢
常常會暴MDD
我想這應該就是人家所謂的"過度最佳化"
想請教,是否可藉由看MC跑出來的報表,進行手動參數微調來解決此問題
還請各位前輩不嗇給小弟指教,謝謝!!



發表於 16-11-10 12:51 | 顯示全部樓層
過度最佳化的避免方法
我個人使用的方式是最佳化的區間不要用全部的歷史資料
以目前來說我都用2004-2013後面的部分可以用來檢測是否過度最佳化了
你也可以看看同樣的策略在不同的時間週期的表現
如果30分K的策略在29分K表現天差地遠那答案就很明顯了
同樣也可以在不同市場測試同樣的策略
還有移動窗格可以使用
發表於 16-11-10 13:28 | 顯示全部樓層
我自己是只用六成歷史數據來設計模型。另外四成中,一半用作cross validation, 另一半用作testing。
即:
60% training set
20% cross validation set
20% testing set

你的模型應該是盡量令training set的error rate降低。然後用於cross validation set:

如果兩者error rate 差太遠,表示你的模型過度優化,解決方法是放進更多sample, 或者減少考慮的factor
如果兩者error rate 相約,但你覺得error rate偏高,那是你的模型不夠優化,解決方法是加入更多factor

最後用餘下的20% testing set來衡量你的模型的error rate吧。這樣應該可以有效避免過度優化的問題
 樓主| 發表於 16-11-10 13:53 | 顯示全部樓層
willy11342002 發表於 16-11-10 12:51
過度最佳化的避免方法
我個人使用的方式是最佳化的區間不要用全部的歷史資料
以目前來說我都用2004-2013後 ...

我目前是用2015年之後的時間來檢視是否過度最佳化
但發現過度最佳化後卻無法參考MC內的報表來進行參數微調
不知道前輩是否可分享參數調整的經驗??
發表於 16-11-10 14:10 | 顯示全部樓層
nickyliu 發表於 16-11-10 13:53
我目前是用2015年之後的時間來檢視是否過度最佳化
但發現過度最佳化後卻無法參考MC內的報表來進行參數微 ...

既然已經知道是"參數"的過度最佳化惹的禍又怎麼會希望透過微調"參數"來改善呢?
唯一的辦法就是減少使用的參數
例如減少使用的模組數量、減少濾網的使用等
當您發現過度最佳化之後就先把策略減肥或是從最原始的進場原則重新檢視吧
真的沒辦法就先放著以後更精進了再回頭看看吧
 樓主| 發表於 16-11-10 15:27 | 顯示全部樓層
chhung3 發表於 16-11-10 13:28
我自己是只用六成歷史數據來設計模型。另外四成中,一半用作cross validation, 另一半用作testing。
即:
6 ...

目前我大約使用9成的歷史數據來設計模型
再跑一年半左右的時間來做測試,確認是否over fitting
想請教前輩所說"放進更多sample"是指什麼意思??
另外,兩者相約error rate大概要低於多少才符合??
發表於 16-11-10 16:08 | 顯示全部樓層
nickyliu 發表於 16-11-10 15:27
目前我大約使用9成的歷史數據來設計模型
再跑一年半左右的時間來做測試,確認是否over fitting
想請教前 ...

1. 九成太多了,用我的分法吧,可以有效避免overfit及underfit。記住用來建模的數據,及用來測試的數據不可以有重疊。例如你用2000至06年的數建模,就只可以用07或以後,或99年前的數據來測試其準確率。否則得出的準確率沒有參考價值。
2. 更多sample就是指更多數據。
3. error rate因人而異,那代表了你的模型的準確率。你覺得60%準確的模型可以用,那60%就叫做好,相反你認為70%準確才可以用,那60%就算不合格,要再考慮加factor了。

另外,樓上說得對,overfit就是過份調整參數,你再調整也沒用,找更多數據,或者減少參數才是正確做法。
 樓主| 發表於 16-11-10 16:30 | 顯示全部樓層
chhung3 發表於 16-11-10 16:08
1. 九成太多了,用我的分法吧,可以有效避免overfit及underfit。記住用來建模的數據,及用來測試的數據不 ...

再請教前輩一點,你上面所說20% cross validation , 20% testing
這兩個步驟差別在哪呢??
是否能說明一下作法上的差異??
發表於 16-11-11 10:55 | 顯示全部樓層
cross validation是用來判斷你的模型有沒有underfit或overfit的
而testing 是用來判斷你的模型的準確率的。
用途不同,而兩套data set不宜重疊。
發表於 16-11-11 17:27 | 顯示全部樓層
本帖最後由 wldtw2008 於 16-11-11 17:30 編輯

怎麼調整都沒用啦,最後你還是要面臨未來的不確定性,還是會賭在某幾個"值"上。
比較好的方法是從策略的邏輯上著手,如果你自己都看不懂、或說不出為什麼這樣的邏輯有用,那這樣的策略或參數一定會MDD的。

打比方,我曾經開發出一個日本市場的策略,類似這樣:[今天的量比昨天低 && 昨天的量高於前天 && 前天的量又高於大前天的量*1.2,那麼就買進]。可以說我完全是胡亂寫的,測下去效果竟然出其的好,profit factor超過3。滿懷希望擺個幾天準備上線,結果想當然就是GG。
後來想想,自己真的有點瘋狂,竟然會相信這種我自己都說不出邏輯的策略能賺錢。所謂創造,從來都是有意識的意志在背後做支持的,像是猴子般這邊加一點那邊驂一些無智的亂搞,是絕對不能稱做創造的,也絕對不會產生什麼好的結果的。

評分

參與人數 4金錢 +14 收起 理由
TrendRover + 5 很棒的文章,感恩
bacardi + 2 好文章,我推薦
Blake + 2 按一個讚
jinace + 5 感謝分享

查看全部評分

發表於 16-11-11 23:11 | 顯示全部樓層
冒昧請教:
1、是否能知…你設計出的策略,跑的回測期間起訖時間?
2、你說DD超過原本回測,你是回測完後,就假設策略OK,所以放著讓它跑,還是…所以發現會暴MDD?
發表於 16-11-12 10:17 | 顯示全部樓層
一直以來老是看到「過度回測」這個名詞,我自己本身執行策略多沒有這個問題,後來才逐步瞭解何以一般踏入程式交易會有這種疑問。
以下是我提供的參考概念,不表示我一定正確:
程式交易關鍵是邏輯,而邏輯的優與劣在於邏輯本身是否一致性?也就是可以通用於各種行情型態或架構,或者當行情的型態改變時,是否可以穩住其績效?也就是穩定性。
穩定性差,或者交易邏輯無法通盤性考量與適應多數會發生的行情結構,那麼過去的回測就有機會在未來產生DD 弟弟 長大比 哥哥還要快。
對於台指期貨,我回測區間 從2015/4/1開始,因為人民幣大幅貶值扭曲國際行情、2015/6 台指10%幅度,結構也改變了。過去的數據不適合作為回測的參考。
外期也是一樣概念,川普當選後,國際金融結構改變,回測的數據就只用最近2年為測試基底。

評分

參與人數 2金錢 +7 收起 理由
wldtw2008 + 2 按一個讚
jinace + 5 感謝分享

查看全部評分

 樓主| 發表於 16-11-12 22:07 | 顯示全部樓層
無無明 發表於 16-11-12 10:17
一直以來老是看到「過度回測」這個名詞,我自己本身執行策略多沒有這個問題,後來才逐步瞭解何以一般踏入程 ...

感謝前輩的指導,這概念與我當前的作法不同,或許這也可以做為我往後進行參數設定的方法之一
 樓主| 發表於 16-11-13 23:00 | 顯示全部樓層
kasiyya 發表於 16-11-11 23:11
冒昧請教:
1、是否能知…你設計出的策略,跑的回測期間起訖時間?
2、你說DD超過原本回測,你是回測完後, ...

目前我是回測十年數據,之後再放著一段時間,看會不會有暴MDD的狀況
發表於 16-11-14 08:19 | 顯示全部樓層
nickyliu 發表於 16-11-13 23:00
目前我是回測十年數據,之後再放著一段時間,看會不會有暴MDD的狀況

1、是何時往回推10年,今年?去年?
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-5-12 19:44

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 | AI繪圖AI超擬真美女AI beauty AI Stable DiffusionAI正妹AI Lookbook