在之前介紹均線系統的時候,我說了均線系統的日線的置信區(qū)間在5-36這個范圍,也就是說,如果要以單均線來作為開平倉模塊的話,應該這個參數選擇在5-36之間。 這個區(qū)間是怎么得到的呢,主要是靠兩個方面,一是經驗,二是回測。經驗需要大量的交易去試錯,而回測則可以通過電腦技術來縮短這個時間周期,但回測需要花點功夫來學習編程,你要得到有價值的信息,必然通過這兩個途徑,其本質都是通過歷史數據來尋找有價值的線索,并且都需要付出努力和事件,努力的過程將貫穿著整個交易生涯,無論是主觀交易還是量化交易均無捷徑。 在選擇具體的參數上,我不會去選擇一個單品種的最優(yōu)化參數來作為這個品種的參數,因為歷史數據并不能代表未來,如果通過數據挖掘的方法,必然會有一個參數會實現最佳業(yè)績,哪怕是一個本身并不賺錢的策略,也可以通過這種挖掘方式找到一個參數來實現盈利,那么這個盈利能否保持下去,就是一個非常值得懷疑的問題。 在單一參數的選擇上,我會選擇一個多品種組合最適合的參數,假設我選擇20日均線,在40個品種的5年歷史回測中,有35個品種能夠獲利,并且過去5年中,每年也能夠實現比較平均的獲利,那么20這個參數,就是一個非常值得信任的參數。 除了盈利的多少外,還有一個比較值得關注的值,就是最大回撤,基本上這兩個信息需要綜合來考慮,并不能簡單的認為盈利最大的策略就是最優(yōu)的策略,如果策略A最終收益是100萬,最大回撤是50萬;而另外一個策略B的最終收益是80萬,最大回撤僅10萬。無疑后者將是一個比前者更加優(yōu)秀的策略,我會毫不猶豫的選擇策略B,然后把杠桿增加5倍,就可以承受和策略A一樣的50萬的風險(回撤)的基礎上,實現400萬的最終收益。所以一個策略一定要結合風險來看收益,很多盈利因子、夏普比率、MAR等風險參考指標無非也是基于收益和風險的關系來設計和計算的,所以與其去簡單的對比夏普比率,不如更多的了解其內在的機制,直接從風險和收益的整體角度來考慮問題。 每個人確定參數的方法是不同的,我的方法則很簡單。我將所有參數都測試一遍,得到所有參數下多品種組合的收益/風險數據,我將收益/風險得到一個值,假設用5這個參數的均線交易系統5年的收益是2000%,最大回撤是10%,那么這個值就是2000%/10%=200,這個值沒有任何價值也不代表任何東西,僅僅是代表在某個參數下風險和收益之間的關系,它僅僅用于各參數之間的橫向比較參數。 那么我會把這個值輸入到Excel表格中,生成一個數據集,然后來尋找在不同的參數下,可信度比較高的幾個值。 這些回測數據本身就是通過多品種得到的,未來是充滿未知性的,所以這也是能夠通過歷史數據得到最有可能接近未來最優(yōu)參數的唯一方法了。由這張圖片可以看到,在5這個參數和17這個參數附近是一個持續(xù)的高點,并且它們附近的參數都普遍比較高,5和17這兩個參數并非一個孤例,所以我認為5和17這兩個參數的置信度是最高的,我很有可能將這兩個參數分別用于實盤交易。而29這個參數,是一個突然變高的數值,這個值周圍均無可支撐的數據,這就是一個孤例,29這個參數,它的置信度就沒有5和17那么高。 關于雙參數,其選擇的本質和單參數是一樣的,就是通過多參數的組合來選擇一個可信的參數組合。常規(guī)的做法就是把所有的參數結果都輸入進去,然后生成一張三維柱狀圖,來篩選其中的高點。 這個方法的優(yōu)點是比較直觀,但缺點也是顯而易見的,那就是比較繁瑣,還需要一些數學軟件的支持,并且還有一個致命的缺陷就是當有第三組甚至第四組參數的時候,基本上就不能采取這種方法了。 我介紹一種更簡單高效的辦法,那就是不做組合參數的優(yōu)化,只做單參數的優(yōu)化。 比如我做一個三均線的參數優(yōu)化,有a,b,c三個參數,這個系統是a上穿b做多,反之做空,參數c作為過濾參數,b在c之上,只開多,反之只開空。這個系統該如何優(yōu)化參數呢? 三個參數構建的系統,其穩(wěn)定性本來就不如單參數或雙參數,如果再通過尋找3個最佳參數來擬合交易系統的話,就非常容易的就產生過量優(yōu)化。那么如何解決這個問題呢?首先我會考慮,這個系統的核心參數是b,因為a實際上是為了過濾收盤價穿過B頻繁發(fā)出信號而設計的,當a穿過b之后會開多或開空,b才是決定趨勢的關鍵因素,所以最關鍵的一點就是要優(yōu)化好參數b。 這個道理和邏輯顯而易見,因為我這套系統就是以參數b的均線來定義是否出現趨勢行情的,所以我率先只優(yōu)化參數b,這里的唯一邏輯是,如果這個交易系統能夠獲利,那么最關鍵的是看短期價格和b均線之間的位置能否對后續(xù)行情產生概率上的預測。如果收盤價和b之間的關系不能盈利,那么優(yōu)化a參數和c參數就沒有任何邏輯支撐,策略整體上就可能就會出現問題,所以我最開始僅尋找收盤價和b之間的關系。假設b的參數優(yōu)化好之后得到的最佳值是17,那么我就會將參數b看作是一個常量17,這個值就不再變了。 然后基于這個17,我再去優(yōu)化參數a,因為參數a和參數c都要以參數b為參照,a和b的位置決定了買賣方向,b和c的位置決定了主要的方向過濾,但本質上a和c沒有什么關系,所以,在處理a和b的關系的時候,可以先不管c?;谶@個關系,確定了b的值之后,再去優(yōu)化參數a,假設得到a的值為5,那么到目前為止,就是5日均線上穿17日均線做多的一個系統。 繼續(xù)后面的工作,把這兩個參數(a為5,b為17)確定之后,再去尋找過濾系統c的參數,值得一提的是,如果參數c有兩個值可供選擇,一個是20,一個是200,那么就要從邏輯上來判斷這兩個值的意義了,因為參數c的存在是為了過濾長期趨勢,所以很明顯20的值并不符合過濾長期趨勢的初衷,即便是20的值有非常優(yōu)秀的表現,那也是一個不值得信任的值,所以我最終會選擇200這個參數來構建這個系統。 確定好所有的參數之后,這個系統的買賣模塊我們就算基本完成了。 通過這種參數優(yōu)化的方式,我們將一個原本需要三次項的復雜計算,轉變?yōu)榱艘粋€簡單的乘法運算,在大大的節(jié)省了效率的同時,還增加了穩(wěn)定性,這個方面是做量化交易最難以把握的方面,也是計算機不能實現的地方,需要人腦智慧去判斷和執(zhí)行,這也是為什么很多人做量化交易,但也僅有少數人能實現盈利的關鍵,這點其實和主觀交易是高度一致的,考察的是一個人能否尋找一件事情的本質的能力。 說一句題外話,通過測試,所有加入c參數的過濾的均線系統,均不如單均線和雙均線的表現優(yōu)秀。所以,與其去增加一些額外的參數來過濾,不如就直接用最簡單的系統。得到這個結論,需要從大量的參數最優(yōu)化的工作中得到,你既可以簡單的相信我,也可以自己做測試尋找答案,交易是一個由簡到繁再化繁為簡的輪回。 還有一種參數最佳化的算法,叫做自適應算法,這種算法是把上一個周期的參數用于下一個周期,這種算法看似更加智能,也更加復雜,但是這種代碼真的更加有效嗎? 從邏輯上看,這種方法是有效的,因為某一個品種走勢的背后是同一批人,這一批人往往有著同樣的操作風格,那么交易品種的風格就具備某種特性。另外,因為市場的推進的,時間會改變參與者的結構,絕大部分自以為是的人會被淘汰,剩余的人都在使用一種方式后,方式的有效性會逐漸趨于無效,之前的老手也會被淘汰出局,堅持到底的人會取得最終的勝利,市場始終在循環(huán),周而復始。 這種理念僅從邏輯層面來講是可行的,但是我們需要靠回測來反饋結果,有兩種測試的方法備選: 方法一:測試2010.1-2013.1黃金的數據,最優(yōu)參數為(15,7)。而黃金的走勢在2013年之后分化為兩段行情,首先是2013.1-2013.8,這段時間內有顯著的趨勢行情,而2013.8-2015.11期間,呈現無規(guī)律的震蕩行情,為了表述這兩段行情的具體表現,按照遺傳推進的規(guī)則,模擬以上一個時間段的最優(yōu)參數運用到下一個階段的表現性。 方法二:因為在之前無法得知每年的最優(yōu)參數和市場概況,對下個時間階段到底是趨勢行情還是震蕩行情的判斷是毫無根據和意義的,所以在推進中以年為時間周期,上年最佳參數數據,是沒有加入任何感情判斷完全是根據軟件優(yōu)化的結果照抄上去的,所以避免了過度擬合的嫌疑。 經過權衡,我認為方法二更加接近現實,因為方法一有使用未來函數的嫌疑,所以我運用逐年推進的測試方法,試分析到底應不應該采用自適應參數。 另外,如果出現某個別數據凸起產生的不正常收益表現,這組數據是剔除了的。例如,當參數15作為一個比較好的參數,同時13,14,16,17可以互相印證參數15,那么15被選為某個置信參數,假設參數24超過15的表現,但是其周圍,22,23,25,26均出現明顯低收益,那么24這個參數就叫做凸起參數,這個參數是一個孤例,不具備顯著的優(yōu)勢,更大可能是因為過度擬合的產物,為了更加結合現實,我會剔除這個參數。 我們將數據分為兩段,2012年12月以前的3組數據作為測試數據,2013年1月之后作為推進測試,將2013年1月作為分水嶺沒有什么特別的意義,僅是隨機取中而已。 可以看出,運用上年的最優(yōu)參數作為下年的參數,從2013年1月至今收益為負,虧損額度為87370元,;而采?。?5,7)的參數從一而終的進行交易,有231760元利潤,說明過度擬合和追逐數據而戰(zhàn)勝市場的方法是徒勞的,更進一步說明了一致性的重要性。雖然進一步測試2013年1月到2015年11月的最佳參數組合是(9,5),但是用(9,5)這組數據和之前追逐數據的的做法并無本質的區(qū)別,不知不覺差點走了陷阱。 從情感上講,得出一個明顯的結果,卻不能用于操作,在現實中很難讓人接受,但是如果用原始參數(20,10),將發(fā)生虧損,那么從概率上考慮,應該得出一個結論:那就是E(9,5)>E(20,10),我希望你能適應我的這種表達方式,大于號的意思是優(yōu)于,前面的E是期望值,期望值你可以理解為風險和收益的綜合表現而不僅僅是收益。 那么至少現在應該了解到,如果用這個策略來操作黃金,應該避免(20,10)這組參數,而相信(15,7)和(9,5)兩組參數其中之一,答案靠回測是不能告訴你的,因為測試的結果肯定是(9,5)更好,因為(9,5)本身就是最優(yōu)化出來的參數。 如何取舍? 我是這么考慮的:首先,回測告訴我的是(9,5)參數,但這組參數通過推進的方法在明年的表現會輸給一個其他參數,這種參數的回歸屬性是普遍存在的。然后從測試結果得知,黃金這個品種遵循了一個特點:小參數比大參數更加可靠,這點是很顯然的。 以上信息通過簡單的分析就不難得到,但是如果不去重視,而完全依賴回測數據,這無疑是種本末倒置的錯誤做法?;販y永遠只是你的一個工具,工具的背后是一個交易者對交易的理解,如果僅能靠計算機技術就可以戰(zhàn)勝市場的話,那么每個程序員都將成為交易高手。如果你在這個問題上犯錯誤的話,說明你僅僅算是一個成功的程序員,而非成功的交易者。 通過測試的結果已經很清楚的展現了,我只需要知道,海龜交易法則用于黃金這個品種,基本參數運用要比原版的參數小,僅得出這個結論足以說明這次測試具備意義。知道得到了這個結論后,用任意一組比原版參數更小的參數都應該是相等的預期,為了平衡,我索性用(20,10)、(15,7)、(9,5)的中間參數(15,7)。反過來看測試的表格,我也驚奇的發(fā)現,15,7這組參數是整個按年測試中出現最多的數字,從另個角度證明了該參數的有效性,我將追蹤這一測試結果,在2016年底來驗證是否正確,如果不正確,也不要緊,因為這僅僅是探討一種理念,并且我很樂于犯錯。 補充:以上寫于2015年12月初,目前是2016年12月31日,就目前看來,最適合黃金的參數是(15,7)。 具體如下:測試時間為2016年1月1日到2016年12月24日。 參數(9,5),凈利潤:68140,優(yōu)勢1.20,最大回撤23.78% 參數(15,7),凈利潤:159330,優(yōu)勢1.60,最大回撤24.41% 參數(20,10),凈利潤:79250,優(yōu)勢1.29,最大回撤22.41% 點擊閱讀: 《量化交易之門》連載4:普世價值觀阻礙了人們對交易世界的探索 《量化交易之門》連載6:為什么普通人“期望的曲線”是向下的? 《量化交易之門》連載12:大部分新手虧損的原因——善于操底摸頂 《量化交易之門》連載15:交易系統構建的兩種方式:自上而下VS自下而上 《量化交易之門》連載16:選擇一種方法來構建交易系統的買賣模塊 《量化交易之門》連載20:參數最佳化的三大陷阱——前視偏差、過度優(yōu)化、曲線擬合 責任編輯:韓奕舒 |
【免責聲明】本文僅代表作者本人觀點,與本網站無關。本網站對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。
本網站凡是注明“來源:七禾網”的文章均為七禾網 yfjjl6v.cn版權所有,相關網站或媒體若要轉載須經七禾網同意0571-88212938,并注明出處。若本網站相關內容涉及到其他媒體或公司的版權,請聯系0571-88212938,我們將及時調整或刪除。
七禾研究中心負責人:翁建平
電話:0571-88212938
Email:57124514@qq.com
七禾科技中心負責人:相升澳
電話:15068166275
Email:1573338006@qq.com
七禾產業(yè)中心負責人:洪周璐
電話:15179330356
七禾財富管理中心
電話:13732204374(微信同號)
電話:18657157586(微信同號)
七禾網 | 沈良宏觀 | 七禾調研 | 價值投資君 | 七禾網APP安卓&鴻蒙 | 七禾網APP蘋果 | 七禾網投顧平臺 | 傅海棠自媒體 | 沈良自媒體 |
? 七禾網 浙ICP備09012462號-1 浙公網安備 33010802010119號 增值電信業(yè)務經營許可證[浙B2-20110481] 廣播電視節(jié)目制作經營許可證[浙字第05637號]