iT邦幫忙

2021 iThome 鐵人賽

DAY 8
3

今天開始處理訓練集和驗證集的問題

開始前先安裝yahoo finance的package

pip install yfinance

以前有安裝過的也可以先更新一下,我這邊的用法參考最新的版本,我也不知道新舊版會有甚麼差別
https://ithelp.ithome.com.tw/upload/images/20210908/201412385ZK0Ho1nJO.png

在進入正題之前先講講要做這邊要什麼,前一天用來做最佳化跟回測績效的時間範圍如下圖所示,兩者時間範圍是重疊的,這樣說這一套策略可以使用是欠缺說服力的,就像現在的我也拿不到未來的資料作最佳化一樣的意思。
https://ithelp.ithome.com.tw/upload/images/20210908/20141238Is4Eb0DwYR.png
在驗證這套流程預測未來能力的階段,使用的最佳化時間範圍和回測績效的時間範圍應該如下圖所示,前者時間在前,後者時間在後,而且不要重疊。所以這邊會拿更長時間的資料減去之前抓到的資料來做最佳化,而回測績效的部分用之前那個就行了。
https://ithelp.ithome.com.tw/upload/images/20210908/20141238vvELPOGBQe.png

進入程式碼的部分,先把途中的部分註解或移除掉,這邊用不到,跑起來也滿花時間的
https://ithelp.ithome.com.tw/upload/images/20210908/20141238G290u0UdFt.png

再來就是正題,一開始是使用今天新加入的yfinance抓取0050的部分,這個工具包他是可以爬全球股票的日K,所以0050後面要加個.tw。再來就是把這個新抓的0050股價時間和之前文章抓的0050股價時間重疊的部份去掉,避免作弊的問題。後面就是一些資料處理,因為yfinance的價格裡面有一些是0,在最佳化的時候會出錯。後面的部分都和之前做得差不多,不過我把最佳化的range從(x,y,1)改成(x,y,2),應該可以快一點。
https://ithelp.ithome.com.tw/upload/images/20210908/20141238tRGnI5HcWl.png

以下是跑出來的結果,其實不是很理想,再來看看報酬率曲線圖看看發生了什麼事
https://ithelp.ithome.com.tw/upload/images/20210908/20141238kZtzHMUFKP.png

以下是報酬率曲線,可以看到不作弊使用2019~現在資料的情況下,在一開始的時候效果還是可以的,就只有吃到2019四月的下跌(看dayopen.index[80]的數值可以知道報酬率曲線開始動的時候是四月十九),2019後面的下跌看起來對報酬率曲線沒甚麼影響。但是到2020就沒甚麼用了。從這邊看起來,這個均線交叉訊號再搭配最佳化的手法,雖然可以用,其實並不能一勞永逸的解決問題,他最佳化的參數是有個賞味期的,大概每隔三個月到一年就要再做一次最佳化比較好。
https://ithelp.ithome.com.tw/upload/images/20210908/201412382qMBpocjHx.png

有均線交叉搭配最佳化的範例,要改用RSI或MACD之類的也不是難事,所以這部份我可能想不到要做甚麼的時候再用來發文。接下來我會先試著做跨市交易,讓手上的部位在0051和0050之間做切換之類的,一樣使用均線。


上一篇
[Day7] 報酬率繪圖與MDD試算
下一篇
[Day9] 均線跨市交易實作
系列文
從零開始使用python打造簡易投資工具43
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言