什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲跌。(3)Finlab回測

2023/12/25閱讀時間約 4 分鐘
  • 文內如有投資理財相關經驗、知識、資訊等內容,皆為創作者個人分享行為。
  • 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。
  • 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。
  • 方格子希望您能從這些分享內容汲取投資養份,養成獨立思考的能力、判斷、行動,成就最適合您的投資理財模式。
raw-image



前言

這篇會拿Finlab上的策略與機器學習預測線圖的因子進行結合。由於模型是透過2007-2011年的線圖作為訓練資料,回測的時候會從2012年開始以示公平。

還沒看過前面兩篇的可以點下面連結,會比較看得懂接下來的內容。

第一篇: 什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲跌。(1)論文解析

第二篇: 什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲跌。(2)台股實測


回測設定

回測區間: 2012年~2023年

回測日期: 2023/12/25

使用模型: I5/R5,有就是拿五日線圖預測五日後漲跌。總共依照四種線圖(參考下圖)對應的四種模型進行回測。

raw-image

為了方便表示,由左到右的線圖對應到的模型分別為I5/R5、I5/R5-m、I5/R5-v、I5/R5-mv。



模型預測因子導入Finlab

要讓模型預測2012~2023年的所有資料需要耗費很大的計算量及時間,所以這裡會把預測好的結果存在dataframe裡並存成.csv檔以便之後利用。之後就只需要更新最近一天的資料並存回.csv檔即可。

導入方法如下圖所示。

# 從csv檔案讀取
file_path = "cnn_5_5.csv"
cnn_factor_df = pd.read_csv(file_path, index_col="date")
# 轉換成FinlabDataFrame
finlab_cnn_factor = Finlab​DataFrame(cnn_factor_df)
# 設定columns及index
finlab_cnn_factor.columns = finlab_cnn_factor.columns.remane("symbol")
finlab_cnn_factor.index = pd.to_datetime(finlab_cnn_factor)


使用方法就和一般Finlab的資料相同,假設我想要"大於0.5"的條件,則可以這樣寫:

# 模型預測因子>0.5
cond1 = finlab_cnn_factor > 0.5



策略優化

接下來會從Finlab平台上選三個策略進行優化,這三個策略都是以週為單位進行轉倉的策略,剛好與模型預測五日漲跌相符合。實驗結果會將原始策略以及四個模型的報酬率、Sharpe Ratio、MDD、勝率進行比較。

這篇文章不會包含完整程式碼,因為有些是Finlab的VIP策略,故無法公開。

策略一: 超級績效台股版 VIP

修改方式: 將原先的rank乘上finlab_cnn_factor後進行排序,其餘程式碼都不變。

結果如下:

raw-image


可以看到除了I5/R5這個模型的表現比原始策略差之外,其他模型都表現得不錯。不管是在報酬、sharpe ratio、還是MDD上都較原始策略更優。

I5/R5-m這個模型甚至多了8.41%的年化報酬,且同時sharpe ratio更高MDD也更低。也可以發現,四個模型的結果都成功優化MDD,使MDD較原始策略提升3~8%不等。

策略二: 三頻率RSI策略

這個策略本身沒有限制持有檔數,所以我使用買進10及20檔做實驗,並且使用模型預測因子作為排序選擇前10/20檔作為買進標的。實驗結果如下。


買進前10檔

買進前10檔

買進前10檔的情況下,所有的模型都表現得比原始策略來的更好。

最好的模型是I5/R5-v,年化報酬提升了11%左右,同時Sharpe Ratio也提升了不少,不過MDD卻都變大了許多。

買進前20檔

買進前20檔

買進前20檔的情況下,除了I5/R5這個模型以外,其他的模型都表現得比原始策略來的好。這裡雖然報酬提升較少,但MDD整體都較原始策略下降且勝率、sharpe ratio提升。

策略三: 二次創高股票

原始策略一樣沒有限定檔數,這裡設定買進前20檔,並使用模型預測因子進行排序。

實驗結果如下。

買進前20檔

買進前20檔

從結果可以看到,使用模型預測的因子進行排序不管在報酬、Sharpe、MDD還是勝率上都有所提升。

而不同模型也有不同的優勢,例如I5/R5-v年化報酬最高,但MDD最大。I5/R5報酬相對較低,但MDD反而較小。I5/R5-m則是較I5/R5-v犧牲了一點報酬,但換來更高的sharpe ratio、更低的MDD以及更高的勝率。



總結

上面實測了一些策略都有很不錯的效果,然而這個因子不是萬能的,實測下來有時候不但沒有提升策略結果反而還讓策略表現的更差了。

整體來說,這個因子還是十分有淺力的,這次也只實測了I5/R5系列的模型。依據論文實驗所述,不同模型學習到的結果是不一樣的,I20/R20學習到的可能會比較適合月轉倉的策略,I60/R60學到的可能會很適合季轉倉的策略。有興趣的可以自行去實驗看看~。


如果對這篇的實驗有興趣,贊助500以上可以找我拿這四個csv檔(不包含模型及日後的資料)。

23會員
10內容數
這個專題會分享有關投資、量化、因子以及機器學習相關的內容。主要會以我有興趣的內容進行分享,希望能透過實際回測及實驗做為佐證,找尋股票市場中的ALPHA。
留言0
查看全部
發表第一個留言支持創作者!