預測證券市場走勢是一項非常有誘惑力的事情,但是一旦稍有不慎或是過度相信程式,很有可能在黑天鵝事件來臨時,粉身碎骨。
我個人認為,與其努力的在每日獲利上能夠跑贏大盤,不如好好享受在運用程式預測的練習中,學習資料視覺化,程式設計,模型訓練這些領域,說不定在這個領域所學應用在工作上提升的收入,會比投資炒股多很多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的格式下載下來
去github上面把檔案抓下來
建議抓整包
下面的圖片因為我把資料夾單獨複製出來取名,所以可能會跟操作者看到的不太一樣
然後把我們剛剛抓下來的股價csv檔名改成price2884放進同一個資料夾中
然後開jupyter後進到那個Data-Analysis 資料夾
再進入裡面的 stocker 資料夾
導入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代表要預測幾天後的股價
是不是很簡單呢?
預測結果的綠線包含了相對應的信賴區間,這代表在模型預測的不確定性。在這種情況下,如果將信賴區間寬度設置為80%,這意味著我們預計這個範圍將包含實際值的可能性為80%。信賴區間將隨著時間推移會越來越大,這是因為隨著預測時間距離現有數據的時間越來越遠,預測值將面臨更多的不確定性,就像預測天氣一樣。
以上就是使用stocker套件進行股價預測的簡單教學,接下來會講解運用一些方式來檢驗預測的結果。
本文章並沒有推薦任何投資標的,單純是個人的一些觀察與見解,為作者自行查看相關資料後整理而成,資料之正確性以各官方公告為主,任何人觀看本文之後,而有投資該股票基金或ETF之行為,自行對所有後果負責。
歡迎分享轉載文章,願每一個人都能夠衣食無虞。
我將思想傳授他人,他人之所得,亦無損於我之所有;猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。湯瑪斯‧傑弗遜(Thomas Jefferson)
請教一下
回覆刪除為何我抓不到package
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
in
----> 1 from stocker import Stocker
~\Desktop\Data-Analysis-master\stocker\stocker.py in
1 # Quandl for financial analysis, pandas and numpy for data manipulation
2 # fbprophet for additive models, #pytrends for Google trend data
----> 3 import quandl
4 import pandas as pd
5 import numpy as np
ModuleNotFoundError: No module named 'quandl'
去開始功能表anaconda裡找Anaconda prompt
刪除打開後然後輸入下面這個指令
pip install quandl
請教一下
回覆刪除esun = Stocker(price)
再來讀取價格資料放進一個變數中 , 是甚麼變數 感謝
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
in
1 from stocker import Stocker
2
----> 3 esun = Stocker(price)
~\Desktop\Data-Analysis-master\stocker\stocker.py in __init__(self, ticker, exchange)
21
22 # Enforce capitalization
---> 23 ticker = ticker.upper()
24
25 # Symbol is used for labeling plots
~\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
5065 if self._info_axis._can_hold_identifiers_and_holds_name(name):
5066 return self[name]
-> 5067 return object.__getattribute__(self, name)
5068
5069 def __setattr__(self, name, value):
AttributeError: 'Series' object has no attribute 'upper'
esun就是我們的變數
刪除然後你這個錯誤
刪除解決方法應該是要去終端機下
pip install -v pandas==0.22.0
這個指令
不好意思
刪除想請問一下
我也遇到同樣問題
但是已經有裝pandas了
問題還是一樣
想請問還有什麼可能原因嗎?
---------------------------------------------------------------------------
回覆刪除ModuleNotFoundError Traceback (most recent call last)
in
----> 1 from stocker import Stocker
~\Desktop\stocker\stocker.py in
4 import pandas as pd
5 import numpy as np
----> 6 import fbprophet
7 import pytrends
8 from pytrends.request import TrendReq
ModuleNotFoundError: No module named 'fbprophet'
請問這個問題如何解決?
開啟Anaconda Prompt
刪除下 pip install fbprophet
請問版主 打完pip install fbprophet 跑完後出現紅字:
刪除Command "C:\Users\Chanyan\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\Chanyan\\AppData\\Local\\Temp\\pip-install-oth3146q\\pystan\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\Chanyan\AppData\Local\Temp\pip-record-d2fi5mj4\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\Chanyan\AppData\Local\Temp\pip-install-oth3146q\pystan\
請問該如何解決
我也是出現紅字
刪除缺少pystan
刪除變成要先
pip install pystan
請問輸入完後跑出紅字 : failed building wheel pystan
刪除是甚麼樣子的問題
你可能還缺了一個編譯器
刪除去下
pip install libpython m2w64-toolchain -c msys2
這是接下來出現的 Could not open requirements file: [Errno 2] No such file or directory: 'msys2'
刪除這是接下來出現的 Could not open requirements file: [Errno 2] No such file or directory: 'msys2'
回覆刪除把下載下來的stocker檔案
刪除用下面這個連結下載的覆蓋掉看看
https://drive.google.com/open?id=14zQ_JAZYei8yCaNP4N3CYsU3DOuHLFzj
我也跟你一樣出現這樣的結果欸
回覆刪除請問後來怎麼解決呢~
樓上兩位可以把下載下來的stocker檔案
刪除用下面這個連結下載的覆蓋掉看看
https://drive.google.com/open?id=14zQ_JAZYei8yCaNP4N3CYsU3DOuHLFzj
ImportError Traceback (most recent call last)
回覆刪除in
----> 1 from stocker import Stocker
~\Desktop\Data-Analysis-master\stocker\stocker.py in
1 # Quandl for financial analysis, pandas and numpy for data manipulation
2 # fbprophet for additive models, #pytrends for Google trend data
----> 3 import quandl
4 import pandas as pd
5 import numpy as np
D:\Anaconda3\lib\site-packages\quandl\__init__.py in
5 from .errors.quandl_error import *
6
----> 7 from .model.database import Database
8 from .model.dataset import Dataset
9 from .model.datatable import Datatable
D:\Anaconda3\lib\site-packages\quandl\model\database.py in
3 from six.moves.urllib.parse import urlencode, urlparse
4
----> 5 import quandl.model.dataset
6 from quandl.api_config import ApiConfig
7 from quandl.connection import Connection
D:\Anaconda3\lib\site-packages\quandl\model\dataset.py in
3 from quandl.util import Util
4 from .model_base import ModelBase
----> 5 from .data import Data
6 from .data_list import DataList
7 import quandl.model.database
D:\Anaconda3\lib\site-packages\quandl\model\data.py in
----> 1 from quandl.operations.data_list import DataListOperation
2 from quandl.util import Util
3 from .model_base import ModelBase
4 from .data_mixin import DataMixin
5
D:\Anaconda3\lib\site-packages\quandl\operations\data_list.py in
----> 1 from quandl.model.data_list import DataList
2 from .list import ListOperation
3 from quandl.errors.quandl_error import (InvalidDataError, ColumnNotFound)
4 from quandl.message import Message
5
D:\Anaconda3\lib\site-packages\quandl\model\data_list.py in
1 from .model_list import ModelList
----> 2 from .data_mixin import DataMixin
3
4
5 class DataList(DataMixin, ModelList):
D:\Anaconda3\lib\site-packages\quandl\model\data_mixin.py in
----> 1 import pandas as pd
2 from quandl.errors.quandl_error import ColumnNotFound
3
4
5 class DataMixin(object):
D:\Anaconda3\lib\site-packages\pandas\__init__.py in
49 from pandas.io.api import *
50 from pandas.util._tester import test
---> 51 import pandas.testing
52 import pandas.arrays
53
D:\Anaconda3\lib\site-packages\pandas\testing.py in
5 """
6
----> 7 from pandas.util.testing import (
8 assert_frame_equal, assert_index_equal, assert_series_equal)
D:\Anaconda3\lib\site-packages\pandas\util\testing.py in
18 from numpy.random import rand, randn
19
---> 20 from pandas._libs import testing as _testing
21 import pandas.compat as compat
22 from pandas.compat import (
pandas/_libs/testing.pyx in init pandas._libs.testing()
ImportError: cannot import name compat
請問版大這個錯誤怎麼解決QQ 我爬文爬不到相關的辦法
沒有裝quandl
刪除裝好之後依序出現跟上面兩位同樣的問題,覆蓋完雲端下載stocker.py狀況依舊
刪除我找到解法了!
刪除1.pip install quandl
2.conda install pystan
3.conda install -c conda-forge fbprophet
這樣就可以成功安裝並且正確執行
恭喜,大部分第一次使用的人都是因為缺少這些套件
刪除
回覆刪除ERROR:fbprophet:Importing plotly failed. Interactive plots will not work.
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
in
----> 1 from stocker import Stocker
~\Desktop\Stocker-master\stocker\stocker.py in
5 import numpy as np
6 import fbprophet
----> 7 import pytrends
8 from pytrends.request import TrendReq
9 from matplotlib import pyplot as plt
ModuleNotFoundError: No module named 'pytrends'
pytrends我有安裝
1.pip install quandl
刪除2.conda install pystan
3.conda install -c conda-forge fbprophet
作者您好~ 想請教這個套件執行預測時根據的方法,感恩
回覆刪除詳細的理論可參考本篇論文
刪除https://peerj.com/preprints/3190/
ModuleNotFoundError Traceback (most recent call last)
回覆刪除in
----> 1 from stocker import Stocker
2
3
4 esun = Stocker(price)
~\Desktop\Data-Analysis-master\Data-Analysis-master\stocker\stocker.py in
6 import fbprophet
7 import pytrends
----> 8 from pytrends.request import TrendReq
9
10 # matplotlib pyplot for plotting
C:\ProgramData\Anaconda3\lib\site-packages\pytrends\request.py in
9 import requests
10
---> 11 from pandas.io.json._normalize import nested_to_record
12 from requests.adapters import HTTPAdapter
13 from requests.packages.urllib3.util.retry import Retry
ModuleNotFoundError: No module named 'pandas.io.json._normalize'
stocker檔案有放在同一個資料夾嗎
刪除您好!如何在VS code 上安裝 stocker 模組呢?
回覆刪除pip install stocker 是無法安裝的...
作者已經移除這則留言。
回覆刪除---------------------------------------------------------------------------
回覆刪除AttributeError Traceback (most recent call last)
in
1 from stocker import Stocker
----> 2 esun = Stocker(price)
~/Desktop/Stocker-master/stocker.py in __init__(self, price)
44
45 # The starting price (starting with the opening price)
---> 46 self.starting_price = float(self.stock.ix[0, 'Adj. Open'])
47
48 # The most recent price
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in __getattr__(self, name)
5272 if self._info_axis._can_hold_identifiers_and_holds_name(name):
5273 return self[name]
-> 5274 return object.__getattribute__(self, name)
5275
5276 def __setattr__(self, name: str, value) -> None:
AttributeError: 'DataFrame' object has no attribute 'ix'
請問版大這個錯誤怎麼解決><
我也一樣的bug,嘗試把stocker.py裡面的ix都直接替換成iloc,也無法排除這個error。
刪除請問能把預測出來的資料再轉回excecl嗎?
回覆刪除可以啊
刪除寫入excel就好了
我試過了很多變數,這是其中一個,可是都一直失敗esun.evaluate_prediction.to_excel('prediction.xlsx')
刪除會跑出這些error
AttributeError Traceback (most recent call last)
in
----> 1 esun.evaluate_prediction.to_excel('prediction.xlsx')
AttributeError: 'function' object has no attribute 'to_excel'
請問該輸出哪個變數才能成功?
謝謝您的回覆
我不知道該怎麼寫入,對不起...
刪除你好,我目前遇到下面這個問題,版本為3.6,目前能裝的套件都已經安裝,請問是什麼原因?
回覆刪除ModuleNotFoundError: No module named 'ephem._libastro'
你好 會出現下列錯誤
回覆刪除"TrendReq" is not defined
{
刪除"resource": "/d:/training/Stocker-master/stocker.py",
"owner": "_generated_diagnostic_collection_name_#0",
"code": {
"value": "reportUndefinedVariable",
"target": {
"$mid": 1,
"external": "https://github.com/microsoft/pylance-release/blob/main/DIAGNOSTIC_SEVERITY_RULES.md#diagnostic-severity-rules",
"path": "/microsoft/pylance-release/blob/main/DIAGNOSTIC_SEVERITY_RULES.md",
"scheme": "https",
"authority": "github.com",
"fragment": "diagnostic-severity-rules"
}
},
"severity": 4,
"message": "\"TrendReq\" is not defined",
"source": "Pylance",
"startLineNumber": 660,
"startColumn": 20,
"endLineNumber": 660,
"endColumn": 28
}