台積電股票時間序列預測-使用ARIMA模型、Prophet模型預測收盤價

根據時間序列的歷史資料來預測未來,進行預測的前提為序列資料是定態的,即序列的基本特徵不會發生大的改變,以下使用ARIMA模型、Prophet模型預測台積電股票的收盤價。

目前取得歷史資料的API集成已有多個函式庫可以使用,本文使用yfinance(Yahoo Finance)作為資料來源。

載入歷史資料

使用Yahoo Finance可以很輕鬆的取得歷史資料,由下圖可以看見拿到了從2000年至2022年8月的歷史資料,共有5655筆數據,包含了當日的開盤價、最高價、最低價、收盤價、交易量、股息以及是否有股票分割(拆股)等資料,接下來就要進行資料處理。


Figure 1. 台積電歷史股價資料欄位


Figure 2. 台積電歷史股價資料(前)


Figure 3. 台積電歷史股價資料(後)

台積電歷史收盤價圖表

將收盤價用matplotlib繪製圖表,可以看見歷史價格的變化,可以觀察出近二年台積電真的漲翻天,接下來究竟會如何呢?

Figure 4. 台積電歷史收盤價圖表

計算簡單移動平均與標準差指標

時間序列常使用移動平均作為預測的依據,因為短期內平均可以觀測出趨勢,標準差則能判斷出波動性,所以使用價格分別計算了簡單移動平均SMA3、SMA7、SMA30以及標準差STD3、STD7、STD30作為模型的輸入。此外還將月份、星期、週數也做為訊號之一,在時間序列的模型中也能看出是不是特定的時間點會有特定的變化?

Figure 5. 計算移動平均與標準差指標

切割訓練資料與測試資料

我們需要將資料分為二等分,一份作爲模型的參考的數據,並以這些數據找出相對的模型結果,再將測試資料丟入訓練好的模型中進行預測。

本文將訓練集設定成2000年–2019年,測試集為2020年至2022年–08月,讓我來看看模型預測的結果如何?

ARIMA模型


Figure 6. 使用ARIMA模型預測台積電收盤價

1
2
RMSE of ARIMA: 9.542232073400012
MAE of ARIMA: 6.83280169777028

Prophet模型


Figure 7. 使用Prophet模型預測台積電股價趨勢

Figure 8. 使用Prophet模型預測台積電股價趨勢

1
2
RMSE of Prophet:	 16.372098002143794
MAE of Prophet: 12.26518461707087

總結


Figure 9. ARIMA模型與Prophet模型預測結果圖

由圖表與誤差可見ARIMA模型預測結果較好,那麼這樣的模型能帶給量化交易者什麼樣的訊息呢?神經網路LSTM預測的結果又如何?下節待續。

很開心你有看到最後,如果你認為這篇文章有幫助到你,請幫我拍手!

對於量化交易有興趣的朋友歡迎訂閱與分享。

原始碼底加:P