iT邦幫忙

2021 iThome 鐵人賽

DAY 6
1

在開始今天最佳化的主題之前,先對ma訊號的部分做個修正,把裡面dropna的部分註解掉,今天發現後面在比較>0的時候Nan會直接變成False,所以不用擔心無效值的問題,而且這樣做買賣訊號的長度和開盤價series的長度一致,在回測的時候比較好處理,本來的寫法感覺回測結果有些問題,訊號代表第30~40天套用到第1~10天開盤價之類的。
https://ithelp.ithome.com.tw/upload/images/20210906/20141238OFG3W0P9pL.png

然後是回測的時候把最後面的print('failat...)註解掉換成pass,不然會印一堆東西,這東西本來是在實作回測的時候用來確認有沒有正常運作的,理論上除了最後一天以外都不會印東西,但在這邊留著就會印一堆東西有點多餘。除此之外額外回傳了retseries,這樣後面要分析的時候才有資料可以分析
https://ithelp.ithome.com.tw/upload/images/20210907/20141238a5Ta0b6T50.png

接著開始今天的正題,最佳化,今天新增一個optimizeMA函數,它可以對設定範圍內的長均線和短均線週期做遍歷,對每一組參數做回測,找到最好的參數組合來對均線交叉策略做最佳化。最底下的部分則是呼叫optimizeMA跟印出他的輸出結果。值得一提的是在前面有加上錯誤檢查,如果碰到短均週期>=長均周期就會跳掉,測試下一組參數。
https://ithelp.ithome.com.tw/upload/images/20210906/20141238QBFLsAzWvm.png

以下是最佳化的結果,報酬最高的是長均55,短均48這組參數,報酬率是87%
https://ithelp.ithome.com.tw/upload/images/20210906/20141238ZJXx743kTo.png

看起來還是沒有打贏買進並長期持有,但好處是他在2020年股災的時候大概3月4號就出場了,5月才進場,賠得會比買進並持有少一點,以程式交易界的說法就是最大回落(MDD)比較小。
https://ithelp.ithome.com.tw/upload/images/20210906/20141238EYB1Xb7AL2.png

為了要更進一步比較0050買進持有跟這邊的均線交叉,接下來會做報酬率繪圖跟計算MDD的部分。除此之外可能會有些過擬合的問題,之後再搭配yahoo的api抓更長的歷史資料來處理。


上一篇
[Day5] 策略買賣訊號回測
下一篇
[Day7] 報酬率繪圖與MDD試算
系列文
從零開始使用python打造簡易投資工具43
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言