您現在的位置:程序化交易>> 期貨公式>> 文華財經>> 文華財經公式>>正文內容

文華模型回測之參數優化讓模型達到最優[文華財經公式]

? 交易過程中有時會發現在一段時間內表現很好的模型,過了一段時間就好像失效了一樣,這種情況是由于模型參數不再適應當前行情引起的,我們需要盡快尋找新的最優參數,而在海量的歷史數據中僅憑人工去尋找如大海撈針,費時費力,機會渺茫。 "參數優化",可在指定的參數范圍內讓計算機很快篩選出最適合當前行情的參數。 ?
(一)案例:利用參數優化,讓止損參數順勢而為
? ? ?
下圖是一個帶有追蹤止損策略的滬膠品種5分鐘策略模型,結束了小半年的單邊下跌行情后,市場開始調整形態,從下圖白色資金曲線可清楚的看到,資金曲線在近六個月不再保持穩定上升形態,證明原來的止損價差參數已經不能適應現在的市場,模型已經失效。
?

?
? 下圖是利用參數優化對模型的參數進行枚舉和遺傳后的結果,在使用新參數后,白色資金曲線更平滑穩定,新的參數更能適應市場行情。
?
?
? ?
? ? ?
(二)進行參數優化的操作步驟
? ? ?
?

1、如下圖所示是如何進行枚舉:
來源 程序化久久 www.myblss.tw

?
?
?
?
? 設置參數關系如何減少參數優化時間:

有些模型各個參數間有嚴格的邏輯管理,以下面的模型為例:

MA5:MA(C,N1);

MA10:MA(C,N2);

CROSSUP(MA5,MA10),BPK;

CROSSDOWN(MA5,MA10),SPK;

AUTOFILTER;

模型中的兩個變量必然遵循一大一小規則,這樣的模型我們可以首先為他們設置參數關系,如N1<N2,這樣在優化時,所有比N2大的N1值都不用參加計算,運算量可以減少1/2.這樣每配置一個參數關系,計算次數就減少一半;配置4個,就減少到原來的1/16,以此類推,有效減少了參數優化時間。

如下圖所示,軟件正在進行枚舉參數優化,為您篩選最優參數配置。

?
?
?
?
? 2、參數優化計算完會以排序的方式顯示優化出來參數組(如下圖所示),按照下圖步驟完成參數組的保存后,點擊“關閉”按鈕即可。
?
?
?
?
?
? 3、結束枚舉后,點擊保存好的“優化參數組1/2/3/4”,準備進行遺傳(如下圖所示)。例如,剛才我們將枚舉優化的結果保存到了“優化參數組1”中,現在,我們就切換到“優化參數組1”,在點擊【遺傳】按鈕,對上次枚舉的結果進行遺傳。
?
?
?
?
?
? 4、如下圖所示設置好優化的精調范圍,參考標準的比重后,點擊“確定”按鈕,開始進行精調。 ?
?
?
?
?

5、按照和枚舉同樣的方法來保存精調后的結果,以便進行回測(如下圖所示)。
?

?
?
?
?
?

6、如下圖,選擇保存好的“優化參數組1/2/3/4”,點擊【用新參數重新測算】,新的參數組計算的結果就會顯示在“分析報告”中了。
?

?
? ?
? ? ?
(三)相關常見問題解答
? ? ?
? 1、為什么有“枚舉”和“遺傳”兩種參數優化方式,原理是什么?
答:枚舉是在每個參數最小值與最大值之間抽選幾個效果最好的參數值,遺傳是在枚舉好的參數值基礎上進行微調,讓參數達到最優。
原理:假設有兩個參數N1,1,10,缺省值是1
N2,3,20,缺省值是5
枚舉:除去最小值和最大值,根據設置的"步長"挑選出所有滿足條件的參數,進行全排列。?
1)、如果缺省值不在挑選出的參數內,則總次數為:全排列次數+缺省值的計算次數?
2)、如果缺省值在挑選出的參數范圍內,則總次數為:全排列次數
以上面的參數為例:
如果步長設置為2?
則根據步長為2,篩選出的N1的值為:3(1+2)5(3+2)7(5+2)9(7+2);篩選出的N2的值為5 7 9 11 13 15 17 19 ,每個參數的最大最小值不取。
總次數的計算:
C1=N1參數與N2參數的全排列=4*8=32?
N1的缺省值為1,不在篩選出的參數范圍內,所以需要計算對該參數進行組合計算:8次(與N2篩選出的8個參數進行組合計算)?
N2的缺省值為5,已經在篩選出的參數范圍內,所以不需要再計算該參數?
所以枚舉的計算總次數為:4*8+8=40
遺傳
計算次數不定,步長默認為1,按照參考標準所占比重比較各組參數計算結果。
假設枚舉后我們存入的參數組為N1=5,N2=10

默認參數組為(5,10
固定參數N2=10,參數N1先向大的方向查找?
(6,10)>(5,10),繼續向大的方向查找?
(7,10)< (6,10),再向大的方向查找,確認是否停止?
(8,10)< (6,10),確認停止?
大的方向停止,向小的方向查找?
(4,10)>(6,10),繼續向小的方向查找?
(3,10)< (4,10),再向小的方向查找,確認是否停止?
(2,10)< (4,10),確認停止?
確定參數N1=4,為最優參數,參數N2像大的方向查找?
(4,11)<(4,10),再向大的方向查找,確認是否停止
(4,12)>(4,10),找到了更大盈利率的參數,繼續向大的方向查找
(4,13)< (4,12),再向大的方向查找,確認是否停止
(4,14)< (4,12),確認停止
大的方向停止,向小的方向查找
(4,9)< (4,12),再向小的方向查找,確認是否停止
(4,8)< (4,12),確認停止?

新的參數組確認為(4,12
重復上述步驟,固定參數N2=12,參數N1向大的方向查找?
(5,12)>(4,12) ,繼續向大的方向查找?
(6,12)< (5,12),再向大的方向查找,確認是否停止?
(7,12)< (5,12),確認停止?
大的方向停止,向小的方向查找?
(3,12)< (5,12),再向小的方向查找,確認是否停止?
(2,12)< (5,12),確認停止?
確定參數N1=5,為最優參數,參數N2像大的方向查找?
(5,13)<(5,12),再向大的方向查找,確認是否停止?
(5,14)< (5,12),確認停止?
大的方向停止,向小的方向查找?
(5,11)< (5,12),再向小的方向查找,確認是否停止?
(5,10)< (5,12),確認停止?

得到新的參數組(5,12
重復上述步驟,固定參數N2=12,參數N1向大的方向查找?
(6,12)< (5,12),再向大的方向查找,確認是否停止?
(7,12)< (5,12),確認停止?
大的方向停止,向小的方向查找?
(4,12)< (5,12),再向小的方向查找,確認是否停止?
(3,12)< (5,12),確認停止?
確定參數N1=5,為最優參數,參數N2像大的方向查找?
(5,13)<(5,12),再向大的方向查找,確認是否停止?
(5,14)< (5,12),確認停止?
大的方向停止,向小的方向查找?
(5,11)< (5,12),再向小的方向查找,確認是否停止?
(5,10)< (5,12),確認停止?

確定最優參數組為(5,12

?

2、參數寫在模型源碼中和寫在參數列表中有什么區別。

答:兩者對模型的運行沒有區別,但參數列表中的參數可進行參數優化,寫在源碼中的參數則不能。

?

?

?

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 1145508240  點擊這里給我發消息進行 有償 編寫!不貴!點擊查看價格!

 


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
  新疆18选7基本走势带坐标