5分でできる!株価予測

(※5分に環境構築は含めません)

簡単な株価予測を行います。

使っているライブラリは以下の3つなので、これらがあればすぐにやってみることが可能です

  • pandas
  • matplotlib
  • fbprophet



過去の株価データはこういったところから簡単に持って来れます。

kabuoji3.com



日本語が入っているとうまく動作しなかった(正確には分かりませんが消したら上手くいった)

ので、こんな感じにcsvのカラムは編集してあげてください

f:id:inaba00032:20190327123315p:plain
良い例



今回はある企業Rの株価データを使って予測してみます。

コードはこんな感じ

import pandas as pd
import matplotlib.pyplot as plt
from fbprophet import Prophet
from fbprophet.plot import add_changepoints_to_plot

price=pd.read_csv('任意の名前.csv')
model=Prophet(growth='logistic',yearly_seasonality=True,daily_seasonality=False,n_changepoints=8)
#Prophetでは日付カラムをds,予測したいカラムをyとする
price = price.reset_index().rename(columns={'date':'ds', 'start':'y'})
#非線形トレンドを用いる際に上限値を設定しておく
price['cap']=price['y'].max()+2500
model.fit(price)
future = model.make_future_dataframe(periods=60)
#株価は土日のデータが観測されないので...
future = future[future['ds'].dt.weekday < 5]
future['cap']=price['y'].max()+2500
fcst = model.predict(future)
figure = model.plot(fcst)
a=add_changepoints_to_plot(figure.gca(), model, fcst)
plt.show()



プロット図はこんな感じ

横軸日付,縦軸株価,黒い点は過去の株価データ,青い線がProphetの予測線です。

f:id:inaba00032:20190327122717p:plain
赤い点線はトレンド変化点,赤い線は全体のトレンドを示してくれてます



これって上手くいってるんでしょうか?実際の株価と合わせてプロット

(2018年までのデータを使っているので、2019年結果で比較します)

f:id:inaba00032:20190327123448p:plain
青は予測株価,オレンジは実際の株価



もちろん上手くは行っていない...

他の説明変数を加えたり、チューニングしたりも容易にできます

良いアイデアがある方は是非教えて下さい🙇‍♂️