程式買賣:恆指對沖策略分析與設計實例(4)

AMA原始策略是來自日線的規模,我們把它拿來使用在當沖,這些參數勢必要經過一些動作來讓我們了解是否適用於當沖,甚至可能找出更合用的參數值。

AMAF很簡單只有兩個參數,一個是天數Period、另一個是計算標準差過濾帶的Pcnt。我們已經寫好的SS_AMAstd指標,可以來幫我們先看看改變這些參數會發生怎樣的訊號改變?

parksondow925
圖9-25

 

這一張我們改變的是天數參數,三個指標依序為10天、20天與5天。Period在程式中改變的是Signal與Noise…

Signal = AbsValue(Close – Close[Period]);
Noise = Summation(Diff, Period);

如所料的將天數縮小則交易訊號將變多,拉長天數則降低訊號產生。

parksondow926
圖9-26

 

記得勾選最佳化選項(Optimize),然後我們設定測試最小值給1(Start)、最大值為30(Stop)然後每次進位1(Inc)。

parksondow927
圖9-27

 

最佳化後以淨盈虧排列,得到答案最好的天數為9,但是我們決定不採用,為什麼?大家可以看看9之後的一排數字,幾乎都集中20以上的數字。這與我們剛才用指標比較得到的結果是一致的!對一個存在過多交易雜訊的策略,當降低交易次數後應該績效是會好轉的,指標中可看到天數增加將會降低交易次數。

這個9天的參數跟原用的10天只差一天,但整個績效卻能拉高一倍。再觀察其他10天以下的參數,幾乎都落在後端並集中。所以9天是非常突兀的單獨出現在列表,這就是我們談的「孤島參數」。所以在這個最佳化結果中,我們只證實了天數增加將降低交易次數,透過雜訊減少將有助盈餘的拉升。

parksondow928
圖9-28

 

上圖則試圖改變Pcnt的數據值,讓我們來看看產生了什麼效果?分別由上而下使用了0.15、0.5與0.05。觀察發現訊號之間的差別不是很大,難道這個Pcnt沒能對系統造成實質的改變?這個答案在我們執行最佳化Pcnt後就得到了解惑。

parksondow929
圖9-29

 

先用0.01至0.3步進0.01,發現最佳值就是設定的最高值0.3。遇到結果是最大或最小設定值時,就代表設定的區間有必要再放大,此例來說就是我們要往0.3之外繼續增加測驗值。
parksondow930
圖9-30 這次使用0.01至3步進0.01的大範圍再做一次,顯示前30名

 

parksondow931
圖9-31 顯示後30名,幾乎都是大於2的部份

 

我們拿0.01到3,步進值增加0.01。其結果發現最佳數據落在0.6,這個數字我們可以接受的。因為你可以看到0.4至0.8集中在前幾個位置,不似前一個的9天數是孤單的。然後約2以上的增量都集中到了後端,所以這個數據往多的方向移動對整體並沒有幫助。

最後我們看看整體的交易次數起伏並沒有大,就是總交易次數沒有很大的波動,這點跟我們觀察指標的結果是一致的。那改變的東西是什麼呢?分析最佳化結果我認為…提升績效的部份應該是改進了進場的效率,就是得到更好的提早進場價格。但當Pcnt一直變小時,則會進入雜訊變高的結果。

不過、這兩個結果並對我們推估最終的使用參數選擇,好像並沒有提供明確的方向。於是我們再決定做一次兩個參數一起比對的最佳化方式。
parksondow932
圖9-32 天數選擇1到30天步進1,Pcnt選擇由0.01到2步進0.01

 

parksondow933
圖9-33 乖乖、一共要測試6000個組合?慢慢等結果吧

 

parksondow934
圖9-34

 

等待之後的結果可以看到18天的參數,應該號無疑問就是Period的首選。而Pcnt也跟之前的最佳化結果趨近,貼切的來說0.5到0.6間的數據都是不錯的選擇。不要太在意正或負的最終盈虧結果,31,750或(-27,500),其實意義是差不多的。到目前、我們已經努力的把一個原始虧損20多萬港元的系統,「拉」到了便成正值,貼切的說應該算盈虧兩平吧。而交易次數也從877次拉低到剩532次,當然、如果獲利合我們的意,交易次數拉到一萬次我也不在乎的。

這裡算是結局了嗎?等兩年多只得個盈虧兩平?那還不如放棄它把前存銀行還免擔心受怕,策略開發尚未成功,同志仍需努力!

以上提供資訊僅供參考,不應視為任何投資之建議或邀請,投資涉及風險,應先考慮個人因素,如有疑問請諮詢專業意見。
%d bloggers like this: