Appleの株が300ドルを超えて過去最高になったということで、ずっとアップル好きだしどんな感じなのかfacebookが作った「Prophet」(既存のデータから予測が簡単にできるパッケージ)を使って過去、今後について調べてみました.
Apple crosses $300 for the first time, extending record high https://t.co/hvugREWKp6 pic.twitter.com/315Qu26NLx
— Bloomberg Markets (@markets)
January 2, 2020
##実行環境
Python 3.7.6
macOS Mojave 10.14.6
Jupyter Notebook
##知りたいこと
・今までの流れ
・今後のトレンド
・買い時
##Prophetとは?
Facebookが開発した時系列予測ライブラリです。 (時系列データのトレンドを把握できるだけでなく、トレンドの変化点の検出も出来る。 )
しかも、めちゃくちゃ簡単に。
もちろん回帰タスクも可能。
重回帰やSVR等の線形/非線形回帰モデルとは異なり、基本的には説明変数を必要としない。
どちらかというとARIMA(SARIMA)モデルのように、時系列でみたときのデータの変動からトレンド曲線を導出するアルゴリズム。
Prophetでは予測線をスプライン曲線(与えられた任意の点の各点を滑らかに結ぶ曲線)として表現している。モデル式は下記。
g(t)がトレンド成分、 s(t)が季節成分、 h(t)が祝日などのイレギュラーな効果成分、 εが誤差項となる。
(詳細は論文を確認願います。https://facebook.github.io/prophet/)
(上記の説明はこちらから引用させていただきました。https://qiita.com/Kosuke0306Ikko/items/5bf86f8903b74887255d )
##実行
Prophet用のライブラリが未インストールの場合は、ターミナルからpipでインストール。
$ pip install fbprophet
まずはライブラリをインポート。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from fbprophet import Prophet
%matplotlib inline
アップルの株のCSVはYahooファイナンスから落とせます。2015年からのデータを落としてきた)
CSVを読み込み。(AAPL.csv)
data=pd.DataFrame()
file_name='AAPL.csv'
data2=pd.read_csv(file_name,skiprows=1,header=None,names=['ds','Open','High','Low','Close','y','Volume'])
data=data.append(data2)
データの概要を出力してみる。
print(data.describe())
2015年からの平均値が150ドルあたり。今回の300ドルは平均値の2倍を叩き出しているってことね。すげ。
それからモデルを作成。
#モデルの作成。たった2行。すごい。
model=Prophet()
model.fit(data)
ここから未来予測。1000日後まで。
#未来予測。1000日で設定。
future_data = model.make_future_dataframe(periods=1000, freq = 'd')
future_data = future_data[future_data['ds'].dt.weekday < 5]
forecast_data = model.predict(future_data)
fig = model.plot(forecast_data)
model.plot_components(forecast_data)
こんな感じ。
ざっくりいうと夏頃に落ち込んで、年末年始に上がる傾向。
アップル株を買うなら、7月あたりが良いのかも。
##ソースコード
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from fbprophet import Prophet
%matplotlib inline
data=pd.DataFrame()
file_name='AAPL.csv'
data2=pd.read_csv(file_name,skiprows=1,header=None,names=['ds','Open','High','Low','Close','y','Volume'])
data=data.append(data2)
#データの概要を出力してみる
print(data)
print(data.describe())
#モデルの作成。たった2行。すごい。
model=Prophet()
model.fit(data)
#未来予測。1000日で設定。
future_data = model.make_future_dataframe(periods=1000, freq = 'd')
future_data = future_data[future_data['ds'].dt.weekday < 5]
forecast_data = model.predict(future_data)
fig = model.plot(forecast_data)
model.plot_components(forecast_data)
###参考にさせていただいた記事
ありがとうございます!Prophetのすごさと、以下の記事を書かれた方々のセンスに敬意を込めて。
・Python用時系列データ予測ツールprophetを使って株価推移グラフを作る
・Prophetを使って、30分でコウメ太夫の努力の結果をビジュアライズする。