Facebook Prophet 預測台股走勢

在資料科學研究中很常需要解決 Time Series Analysis 時序分析的問題,透過觀察過去一段時間的資料來建立出可以預測未來走勢的模型,預測股價在未來時間的走勢自然就是想透過時序分析的模型來解決的問題之一。

在機器學習的模型中,RNN 或是其衍伸模型 LSTM 是比較常見的方法,但是這篇文章想要介紹另外一種模型來嘗試預測未來時間的股價變化,讓我們先 Prophet 先知 般的預測未來發生的事件,Facebook Prophet 就是一個可以幫助我們進行時序分析的一種 Additive Model 加法模型,這篇文章會使用 Prophet 來嘗試預測一下 2020 年底至 2021 年的 0050 台灣五十股價走勢。

▍股價時序資料的特性

時序資料其實是一種 離散類型 的資料,其特性會隨著我們取樣的時間尺度會有所有不同,對於要觀察的資料,我們會一個月一次,一週一次,或者是一天一次來取樣我們觀察的資料,通常時序資料的預測就是嘗試透過對這些不同週期的尺度建立模型並且預測未來可能的走向。

通常進行時序的預測模型會嘗試去尋找某一個時間尺度上是否會有穩定的週期,例如我們可以知道秋冬的時候溫度會逐漸降低,春夏的時候溫度會逐漸升高這種季節的週期,並且可能再更大的時間尺度,例如以年來看的時候,遇到聖嬰現象或是反聖嬰現象,溫度的變化會有所不同。如果時序的變化有穩定的週期,在建立出來的模型就比較容易找出較為準確的預測結果。可惜的是,股價不具備穩定趨勢 的特性,傳統的回歸模型就比較難找出預測的價值。

Facebook Prophet 是 Facebook 資料科學團隊設計出來的一個開源套件,可以嘗試同時捕捉日、月、年跟假日趨勢的一種加法模型,可以用來預測非線性的時序資料,並且對於有 missing data 或者是一些 outlier (離群值) 的資料也會有較好的預測結果,所以可以正好拿來嘗試預測股價的時序資料,也許我們可以找到一些可以預測的趨勢!

▍Facebook Prophet 的運作方式

根據 Prophet 的文件,我們可以知道這個 Additive regression model 會考慮以下四種情況:

y(t) = g(t) + s(t) + h(t) + e(t)

g(t) 代表趨勢,直接透過線性模型來回歸出大致上的趨勢

s(t) 代表週期的變化,日週期,週週期,年週期等

h(t)代表假日的變化,假日週期可能會影響到持有股價的意願。

e(t)包含了模型沒有涵蓋的錯誤或者是變化

簡單透過這個套件,我們可以很簡單的在資料很少的情況下嘗試去預測週期性的結果,也能夠避免少數的outlier 資料點影響到整個趨勢的預測。你可以點 連結 去看看 2017 年的論文 Facebook資料團隊是如何設計這個模型的。

▍預測結果

Prophet 對 0050.TW 的預測結果

上面的圖會告訴你,黑色的部分是真實的股價資料點,筆者寫文章的當下是 2020–10–31 提供模型 2008/01/01 — 2020/10/30 號的資料點進行模型建立,藍色線的部分是預測的結果,淺藍色的範圍是模型預測的信心區間。你可以看到 2020–10–31 的股價已經離預測的距離非常的遙遠了!

我們可以看到這樣的預測模型有一些地方值得思考:

  1. 在預測的趨勢上,其實即使是非線性的回歸模型也無法預測極端事件出現的時間,例如 2020 年初的 Covid-19。
  2. 偏離預測距離過遠的時候,甚至是遠超過預測的信心區間的時候,似乎是不錯的出場離場點。
  3. 股價的預測其實非常的複雜,即使是使用先進的工具進行趨勢預測其實也未必能精準預測,更何況是更加單純的技術指標呢?

▍結論

如果你想自己玩這個模型,甚至想拿來預測別隻股票的結果,例如台積電 2330 的股票,你可以到 CAGR.RUN ,點右邊的功能區選擇 Stock Prophet 這個工具,輸入股票代號,跟你想要的訓練的時間範圍,並且輸入希望Prophet 幫你預測的天數,就能跑出接下來的預測結果,來試試接下來台股會不會回到模型預測的區間裡吧!

在這裡預告一下,下一篇會結合回測來試試看如果直接透過 FB Prophet 進行預測來做股票買賣的判斷,是不是能夠獲利呢?

謝謝您的閱讀!如果有任何回饋或有興趣的主題,歡迎留言給 CAGR.RUN !如果單純想給我一點鼓勵,請給我 1–10 個拍手
如果覺得文章對你有點幫助,請給我 11-30 個拍手
如果想看更多資料科學或是投資的秘密,請盡情長按拍手(max 50)讓我們知道 👏🏻
想要持續追蹤 CAGR.RUN 的最新文章,請記得訂閱,雖然沒有小鈴鐺。
我們每個週末都會認真更新文章,持續設計程式小工具或是提供新的知識!
所有設計的工具可以到 https://www.cagr.run/ 來尋寶喔!

--

--

Ming Cheng Ho a.k.a Memorysaver
CAGR.RUN

iCHEF Co-founder. Love to code and figure out tech stuff. I am recently interested in Quantitative Investing.