2019年5月30日 星期四

"程式教學"簡單入門python預測股價-使用stocker套件(更新版教學下)

上一篇教學簡單介紹了如何讀取資料以及快速建立模型,並使用Changepoint Prior,來進行模型調整
https://hn28082251.blogspot.com/2019/05/python-stocker-new-session1.html

如果沒有看過的一定要先去看看

evaluate_prediction這個函式,目的是來模擬我們跟著程式預測去下單的結果,也就是說我們將使用模型預測給出的策略,與我們在整個期間純粹買進並持有股票的策略進行一個對比。

接下來輸入這行程式碼並且執行
esun.evaluate_prediction(nshares=1000)
nshares=1000代表我們用1000股去做模擬
評估時間為2018-05-28 00:00:00 to 2019-05-28


本函式的原理如下
The strategy from the model states that for a given day, we buy a stock if the model predicts it will increase. If the model predicts a decrease, we do not play the market on that day. Our earnings, if we bought the stock, will be the change in the price of the stock over that day multiplied by the number of shares. Therefore, if we predict the stock will go up and the price does go up, we will make the change in price times the number of shares. If the price goes down, we lose the change in price times the number of shares.

 1、當模型預測股價會上漲的那一天,會買入,並在一天結束時賣出。當模型預測股價下跌時,我們就不買入任何股票;
The strategy from the model states that for a given day, we buy a stock if the model predicts it will increase. If the model predicts a decrease, we do not play the market on that day. 
 2、如果購買股票價格在當天上漲,那麼我們就把股票上漲的幅度乘以我們購買的股票的數量; if we predict the stock will go up and the price does go up, we will make the change in price times the number of shares. 
3、如果購買的股票價格下跌,我們就把下跌的幅度乘以股票的數量,計作我們的損失。If the price goes down, we lose the change in price times the number of shares.





執行後Stocker就會以數字和圖表顯示的方式告訴我們這個策略是如何進行的



從上方的模型預測可看到
The total profit using the Prophet model = $6150.00.
The Buy and Hold strategy profit =         $4850.00.


有點出乎我意料的,在這個資料集,模型的預測竟然跑贏了買進並且持有的狀況,我在測試的時候有用台積電股價做測試,結果買進並且持有的獲利勝過頻繁進出。

不過在台股大家要知道買進賣出光是手續費跟稅就會讓人自己扣血了,這個程式並沒有把這些算進去,如果要直接拿來應用在台股上,我只能說要三思阿XD




最後我們有了一個優化後的模型,然後就可以使用predict_future()函數來對股票未來價格的進行預測。

關於這個函數的詳細說明如下
Makes a prediction for the specified number of days in the future using a prophet model trained on the assigned number of years of data. Printed output is the days on which the stock is expected to increase and the days when it is expected to decrease. A graph also shows these results with confidence intervals for the prediction. ​



然後我們輸入下方這個程式碼
esun.predict_future(days=10)

esun.predict_future(days=100)
分別預測10天後與100天後的股價
輸入之後按下執行

會跑出兩張圖







現在你已經學會用Stocker預測股價了,事實上,如果我們想使用這個模型策略進行交易(我基本上是不建議啦),最好每天都更新資料,然後訓練新的模型,然後預測三天內的價格就好,這套系統的用法有點類似讓電腦去看懂趨勢,並且做預測,總結來說,我覺得這個模型的意義,在於讓大家能夠開心的玩轉python程式,而非拿來賺錢。

這系列文終於更新完了,雖然我們可能沒有辦法用Stocker賺大錢,但是我覺得重點在於coding的過程而不是有沒有賺錢的結果!就算最終失敗,也好過從不嘗試!

You can't connect the dots looking forward; you can only connect them looking backwards.--Steve Jobs

"你無法預先把點點滴滴串連起來;只有在未來回顧時,你才會明白那些點點滴滴是如何串在一起的"--賈伯斯

就像在國中時,我第一次接觸到程式,第一次用c++寫出了一台計算機的時候,我像在沙灘上撿到貝殼的孩子那樣的開心了一整天,我也從來沒想過,過去的那些嘗試與失敗,會讓現在的我走到這麼遠。


我也還在學習的路上,幸運的是身邊有許多大神不吝指導我,距離成功目標的路還很長,但只要開始走就不會遠,祝大家在coding and debug的路上不孤單~


本文章並沒有推薦任何投資標的,單純是個人的一些觀察與見解,為作者自行查看相關資料後整理而成,資料之正確性以各官方公告為主,任何人觀看本文之後,而有投資該股票基金或ETF之行為,自行對所有後果負責。 

歡迎分享轉載文章,願每一個人都能夠衣食無虞。 



我將思想傳授他人,他人之所得,亦無損於我之所有;猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。湯瑪斯‧傑弗遜(Thomas Jefferson)



1 則留言:

經濟日報數位訂閱懶人包

  去年寫過一篇介紹文,經濟日報推出了數位訂閱產品,如果你是價值投資者,或是對產業研究及經濟數據有興趣的朋友,包含深耕國內外財經深度內容、圖像式產業資料庫、早安經濟日報聽新聞等等。   目前有「彭博新聞獨家聯名、七大外媒授權合作、專家解析深度專欄」三大內容,豐富你的關鍵投...