這個問題肯定是見仁見智的,沒有什么定論。我這里給出兩個分享和討論,一個是自己的一點思考,另一個是MATLAB技術(shù)論壇會員fosu_cdm(論壇ID)陳道民(Chandeman)以前就我的這幾個問題發(fā)過的一個文章。兩個分享供大家參考,見仁見智,沒有定論,歡迎斧正、討論、交流。大家互相學(xué)習(xí)。 1. 參數(shù)優(yōu)化、過擬合問題芻議(by李洋faruto) 在量化投資中,定量投資模型的設(shè)計好壞無疑是成功的關(guān)鍵,單純從數(shù)學(xué)角度來看,一個交易系統(tǒng)(交易模型)僅僅是一個從行情序列到資金曲線的映射: f(ts, para) = E其中f是一個交易系統(tǒng),ts是某一個投資標(biāo)的(股票、期貨、期權(quán)、外匯等等)的行情時間序列,para是交易系統(tǒng)的參數(shù)組,E是資金曲線。 任何一個模型幾乎都會有參數(shù)(包括所謂的自適應(yīng)模型)。有參數(shù)的話,那么就會碰到參數(shù)尋優(yōu)、過擬合等問題。參數(shù)優(yōu)化基于歷史數(shù)據(jù)進(jìn)行的策略優(yōu)化。而歷史并不能完全重演。歷史中表現(xiàn)優(yōu)秀的參數(shù),在未來交易中未必會表現(xiàn)很好。 先來看下幾種常見的參數(shù)優(yōu)化的方法: (1)InSample-Out Sample 法 分割回測分析區(qū)間,將In Sample 區(qū)間的優(yōu)化參數(shù)應(yīng)用于Out Sample區(qū)間,分析收益、風(fēng)險是否穩(wěn)定的回測分析法。具體形式見下圖: 這種來源于數(shù)據(jù)挖掘中的方法,看起來很美,但在量化投資中應(yīng)用會碰到一堆的實際問題:In Sample和Out Sample樣本大小的確定,合理有效地確定,針對不同的模型,日內(nèi)、隔夜模型;長、中、段線模型。 (2)ForwardTest 前進(jìn)分析法Walk Forward Analysis (WFA) 具體形式見下圖: WFA與DataMining中的CV過程本質(zhì)是一樣,但DM中CV方法很有效,可以在一定程度上避免over fitting問題,但是DM中的數(shù)據(jù)形式算是比較固定化的,CV折數(shù)的確定也可以進(jìn)行可列的嘗試。 但在量化中,情形卻大不通,策略類型的多樣化(主要是長、中、短周期的不通導(dǎo)致不通模型的平倉持倉周期不通),那么問題就來了,在使用WFA的過程中,無法有效的給出針對不同類型的模型的一個合理的滑動窗口的確定方案,所以WFA僅僅是看上去很美。 到具體測試環(huán)節(jié),以前針對一些常見的模型(ORB,均線等等),我系統(tǒng)性的詳細(xì)做過一些WFA的測試,結(jié)果也不盡人意,由于金融市場中的行情都是人交易出來的,所以量化交易系統(tǒng)要比DM中的模型復(fù)雜很多,參數(shù)的分布區(qū)域也是隨時間變化的一個函數(shù),WFA并不能非常有效的避免過擬合 和選出合理參數(shù)區(qū)間。 anyway,WFA作為參數(shù)魯棒性的輔助測試方法工具還是可以使用。 在最后交易層面,在最終確定實際交易參數(shù)(組)時,可能可能好多團隊或Quant會選擇那些所謂的“參數(shù)平原”,來避免“參數(shù)孤島”。比如下面的參數(shù)分布的某些區(qū)域。 但實際上這種方式也是有指的商榷和思考的地方,我做過相關(guān)測試,如果把時間參數(shù)看出自變量,把參數(shù)的穩(wěn)定區(qū)域看出因變量,你會發(fā)現(xiàn):不同模型的參數(shù)穩(wěn)定區(qū)域會隨著時間的變化發(fā)生遷移,即那些我們曾篤信的參數(shù)穩(wěn)定區(qū)域會隨著市場節(jié)奏和市場參與主體的變化而變化,那些在過往測試中穩(wěn)定的區(qū)域,未來也非常有可能變得極其不穩(wěn)定。 或者換句話說,如果你的目標(biāo)函數(shù)不是個穩(wěn)態(tài)函數(shù),你找到的參數(shù)分布區(qū)域也不一定是穩(wěn)態(tài)的,那么什么樣的目標(biāo)函數(shù)是穩(wěn)態(tài)函數(shù)呢?理論層面可以根據(jù)泛函分析進(jìn)行相關(guān)的分析和驗證,但在實戰(zhàn)層面這個沒有定論,哪怕是看起來很好的sharpe ratio指標(biāo)。 那么到最后在實戰(zhàn)層面,參數(shù)的選擇有可行且有效的解決方案嗎?這個我也仍然在思考,我當(dāng)下能給大家分享的解決方案是: 參數(shù)分散化、在盤子足夠大的情況下盡量將參數(shù)打散,不要單純篤信那些所謂的歷史參數(shù)穩(wěn)定區(qū)域。 2.關(guān)于參數(shù)優(yōu)化的一些膚淺認(rèn)識(by陳道民Chandeman) 一,關(guān)于參數(shù)問題 參數(shù)問題可以描述為:f(M,S,P)=Output ,即對于M(或者是品種及品種組合),使用S交易策略(或組合),采用P參數(shù)(或組合),得到output輸出(包括收益、勝率、盈利因子等等)。由于M是歷史數(shù)據(jù),S是你所使用的交易策略,那么在給定的M和S下,output就依賴于P的輸入。在此基礎(chǔ)上,那么過度擬合就表現(xiàn)為,f(Mi,S,P)=f(Mj,S,P)+e ,即在給定的策略S和最優(yōu)化參數(shù)P下,不同的M(對于同一個市場或同一個品種,Mi 和Mj 我們也可以理解為訓(xùn)練集合測試集。 )有不同的output,并且其誤差 e 趨于正無窮或超過我們可接受的范圍。 二,關(guān)于模式問題 討論參數(shù)優(yōu)化問題,其實可以在一定程度上理解為希望在給定的S和P下,在不同的M下測試得到的output具有一致性,即把M給常數(shù)化。我們的解決方法是把M給抽象掉,引進(jìn)模式識別,從而跳出M的視野,找到不同M的共性,然后從pattern的角度來考量參數(shù)優(yōu)化的問題,即f(S,P;pattern(i))=output 。這樣一個好的策略S或者參數(shù)P在不同的pattern中所得到的output應(yīng)該是相對穩(wěn)定的(或者至少在有利的pattern中表現(xiàn)出色,在不利的pattern其風(fēng)險(最大資金回撤深度和長度)應(yīng)該是在我們的控制范圍之內(nèi)的,并且基于歷史統(tǒng)計的有利pattern發(fā)生的概率要顯著大于不利的pattern發(fā)生的概率),我們可以用標(biāo)準(zhǔn)差std(output(i)) (實際中,我們往往只需要output中的某些信息而已,例如收益、盈利因子或者最大資金回撤等等)來描述其穩(wěn)定性程度。因此,參數(shù)的尋優(yōu)就表示為在參數(shù)Pj下,Min(std(output(i,j))) 。 我們在實際中往往需要對原始樣本進(jìn)行隨機化處理,然后進(jìn)行大量的模擬和比較。 這時我們還需要關(guān)注ei,sum(ei)應(yīng)該落在我們可接受的范圍之內(nèi),并且奇異的ei越少越好。 當(dāng)然在實際操作當(dāng)中,有很多細(xì)節(jié)需要處理: (1)如何定義pattern,這個依賴于各自的交易理念、規(guī)則和交易級別等等; (2)如何識別你定義的pattern,大家需要去看看神經(jīng)網(wǎng)絡(luò)算法和模式識別方面的東西,強烈建議看看faruto在MATLAB論壇錄的一個關(guān)于SVM神經(jīng)網(wǎng)絡(luò)的視頻(好像是09年錄的,當(dāng)時我還在念高中啊...); (3)行情的隨機化處理,可以參考一下錢德的超越技術(shù)分析一書當(dāng)中介紹的幾種方法;三,一些問題的初步回答 1.有沒有最完美的參數(shù)尋優(yōu)方式?有沒有最完美的參數(shù)選擇方式? 我們使用的參數(shù)尋優(yōu)和選擇的方式,是基于pattern比較下的尋優(yōu)和選擇方式,當(dāng)然這種方法也不盡完善,還有很多問題,就當(dāng)作是一種交流吧。 2.參數(shù)尋優(yōu)時對于不同的時間周期,多長的回測數(shù)據(jù)具有說服力? 我們并不關(guān)心回測樣本的大小,而更關(guān)心樣本所包含的pattern的數(shù)量,一個能夠在更多的pattern中存活的參數(shù)或者策略,我們更放心去使用它,因為它可以適應(yīng)未來行情的變異,即pattern的轉(zhuǎn)換。 3.對于整體樣本,是否有必要區(qū)分樣本內(nèi)和樣本外,若有必要,那么樣本內(nèi)和樣本外的長度分別是多少合適? 我們一般并不直接從整體樣本中劃分訓(xùn)練集和測試集,而直接把原樣本作為訓(xùn)練集,并將其隨機化處理后的數(shù)據(jù)作為測試集,我們可以隨機構(gòu)造巨量的行情數(shù)據(jù)。 4.如何避免過度優(yōu)化? 這個問題我覺得要先對過度優(yōu)化進(jìn)行定義噢,一般情況下把訓(xùn)練集的測試結(jié)果和測試集的測試結(jié)果不一致認(rèn)為是一種過度優(yōu)化的結(jié)果。但我們的作法是在pattern條件下考慮兩者是否一致。舉個例子說,如果某個策略S對某一類的行情有很好的表現(xiàn),但也有它的軟肋時,那么當(dāng)樣本內(nèi)和樣本外的pattern不一致時,很可能它的最優(yōu)參數(shù)的差異可能很大。這時的結(jié)果不一定是過度擬合的結(jié)果,只不過是遇上不利的行情而已,當(dāng)然這個問題不僅僅是個參數(shù)優(yōu)化的問題,還是個策略設(shè)計的問題。 5.給出不同參數(shù)下的資金曲線,選取什么目標(biāo)函數(shù)來進(jìn)行參數(shù)選擇?為什么選擇該種目標(biāo)函數(shù),是否有更加有效的目標(biāo)函數(shù)? 這應(yīng)該是個參數(shù)優(yōu)化目標(biāo)的選擇問題,我們一般用的主要評價指標(biāo)是Min(MaxDrowDownDuration),當(dāng)然也可以給定一定限制條件,例如盈利因子大于2,等等。 6.給定目標(biāo)函數(shù)的情況下,如何選取最穩(wěn)定的參數(shù)(參數(shù)區(qū)間),選定參數(shù)的過程能否量化? 我們往往是直接選擇最優(yōu)的那一個,當(dāng)然這個與我們的事前的參數(shù)控制工作有關(guān)。 7.外推時,參數(shù)表現(xiàn)不好怎么辦?再重新改進(jìn)參數(shù)、調(diào)整策略? (1)不改變參數(shù)下,重新校驗前面的pattern的識別 (2)在(1)校驗后如果效果仍然不行,則對參數(shù)重新調(diào)整 (3)前面工作仍然無法奏效時,需要對策略進(jìn)行修改 (4)來論壇拋磚引玉,學(xué)習(xí)別人的思想和方法 8.有沒有不依靠參數(shù)的策略?或參數(shù)自適應(yīng)的策略?可否實戰(zhàn)?靠譜否? 其實不依賴參數(shù)的策略不一定好吧,一個策略的生命和靈活性就體現(xiàn)在參數(shù)的調(diào)整過程中,當(dāng)然這也涉及策略類型的相互轉(zhuǎn)換問題,一下子講不清楚,建議看一下Browm的Technical Analysis For the Trading Professional一書,好像有中文版的。 責(zé)任編輯:張文慧 |
【免責(zé)聲明】本文僅代表作者本人觀點,與本網(wǎng)站無關(guān)。本網(wǎng)站對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。
本網(wǎng)站凡是注明“來源:七禾網(wǎng)”的文章均為七禾網(wǎng) m.yfjjl6v.cn版權(quán)所有,相關(guān)網(wǎng)站或媒體若要轉(zhuǎn)載須經(jīng)七禾網(wǎng)同意0571-88212938,并注明出處。若本網(wǎng)站相關(guān)內(nèi)容涉及到其他媒體或公司的版權(quán),請聯(lián)系0571-88212938,我們將及時調(diào)整或刪除。
七禾研究中心負(fù)責(zé)人:劉健偉/翁建平
電話:0571-88212938
Email:57124514@qq.com
七禾科技中心負(fù)責(zé)人:李賀/相升澳
電話:15068166275
Email:1573338006@qq.com
七禾產(chǎn)業(yè)中心負(fù)責(zé)人:果圓/王婷
電話:18258198313
七禾研究員:唐正璐/李燁
電話:0571-88212938
Email:7hcn@163.com
七禾財富管理中心
電話:13732204374(微信同號)
電話:18657157586(微信同號)
七禾網(wǎng) | 沈良宏觀 | 七禾調(diào)研 | 價值投資君 | 七禾網(wǎng)APP安卓&鴻蒙 | 七禾網(wǎng)APP蘋果 | 七禾網(wǎng)投顧平臺 | 傅海棠自媒體 | 沈良自媒體 |
? 七禾網(wǎng) 浙ICP備09012462號-1 浙公網(wǎng)安備 33010802010119號 增值電信業(yè)務(wù)經(jīng)營許可證[浙B2-20110481] 廣播電視節(jié)目制作經(jīng)營許可證[浙字第05637號]
技術(shù)支持 本網(wǎng)法律顧問 曲峰律師 余楓梧律師 廣告合作 關(guān)于我們 鄭重聲明 業(yè)務(wù)公告
中期協(xié)“期媒投教聯(lián)盟”成員 、 中期協(xié)“金融科技委員會”委員單位