一直以來對於寫這種文章我是有疑慮的
預測證券市場走勢是一項非常有誘惑力的事情,但是一旦稍有不慎或是過度相信程式,很有可能在黑天鵝事件來臨時,粉身碎骨。
我個人認為,與其努力的在每日獲利上能夠跑贏大盤,不如好好享受在運用程式預測的練習中,學習資料視覺化,程式設計,模型訓練這些領域,說不定在這個領域所學應用在工作上提升的收入,會比投資炒股多很多XD
本篇文章會讓大家簡單地做出像下方的股價預測圖,及預測未來的股價
========================================
本次環境使用anaconda裡面的jupyter
不會操作的請先參考這篇
https://hn28082251.blogspot.com/2019/02/python-mac-os-anaconda.html
我們先來建立個過去股價的資料
這裡用的方法是用google試算表抓資料
詳細方法請參考以下教學
https://hn28082251.blogspot.com/2019/04/google-spreadsheets-stock.html
https://hn28082251.blogspot.com/2018/12/google-k.html
我們在這裡用我在台股的唯一持股玉山金為例
程式碼先幫大家寫好
可以直接複製
={ArrayFormula(text({"Date";int(query(query(googlefinance("2884","ALL","1/1/2016",TODAY(),"daily" ) ,"Select Col1",1),"offset 1",0))},"YYYY-MM-DD")),query(googlefinance("2884","ALL","1/1/2016",TODAY(),"daily" ) ,"Select Col4,Col2,Col5,Col3",1)}
以上是從2016年開始抓
然後因為我們只要收盤價,所以就複製那兩欄
剪下後,然後開一個新的試算表貼上去
記得要選擇僅貼上值,然後把最上面兩格,一個改成date,一個改成price
然後把試算表檔案用csv的格式下載下來
再來說說我們要用的stocker套件
大家去把它下載下來,Stocker是一款用於探索股票情況的Python工具。一旦我們安裝了所需的package,我們可以在的同一資料夾中啟動一個Jupyter Notebook
下面的圖片因為我把資料夾單獨複製出來取名,所以可能會跟操作者看到的不太一樣
然後把我們剛剛抓下來的股價csv檔名改成price2884放進同一個資料夾中
然後開jupyter後進到那個Data-Analysis 資料夾
接下來就在同一個資料夾裡用jupyter建立一個ipynb的檔案
導入Stocker:
from stocker import Stocker
如果以上執行成功代表我們有抓到package了
再來把股價資料讀取進來
import pandas as pd
### 讀入series
df = pd.read_csv('price2884.csv', index_col='date', parse_dates=['date'])
price = df.squeeze()
price.head()
確定資料格式沒有問題
再來讀取價格資料放進一個變數中
from stocker import Stocker
esun = Stocker(price)
確定時間沒問題後,就可以開始預測了
預測的程式如下
model, model_data = esun.create_prophet_model(days=10)
#days代表要預測幾天後的股價
由此可見這裡預測的十天後(4/26)玉山金的股價為24.43元
是不是很簡單呢?
預測結果的綠線包含了相對應的信賴區間,這代表在模型預測的不確定性。在這種情況下,如果將信賴區間寬度設置為80%,這意味著我們預計這個範圍將包含實際值的可能性為80%。信賴區間將隨著時間推移會越來越大,這是因為隨著預測時間距離現有數據的時間越來越遠,預測值將面臨更多的不確定性,就像預測天氣一樣。
以上就是使用stocker套件進行股價預測的簡單教學,接下來會講解運用一些方式來檢驗預測的結果。
本文章並沒有推薦任何投資標的,單純是個人的一些觀察與見解,為作者自行查看相關資料後整理而成,資料之正確性以各官方公告為主,任何人觀看本文之後,而有投資該股票基金或ETF之行為,自行對所有後果負責。
歡迎分享轉載文章,願每一個人都能夠衣食無虞。
我將思想傳授他人,他人之所得,亦無損於我之所有;猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。湯瑪斯‧傑弗遜(Thomas Jefferson)