pythonで株価分析⑥【Facebookが開発したライブラリで株価を予測する】
皆様、こんにちは。
今回は、誰もが知りたい、未来の株価を予測する手法を紹介していきます(^_-)-☆
何と❕今回は、あのFacebookが開発したツールを使用して、株価を予測します( ゚Д゚)
では、早速行ってみましょう。
❶予測した株価をグラフにて可視化
今回の株価予測の対象は下記の通りです。
銘柄:インテル【INTC】
「言わずと知れた、アメリカ合衆国に本社を置く半導体素子メーカー」
予測期間:2021年1月9日~2022年1月8日までの1年間(未来)
訓練データ期間:1998年1月8日~2021年1月8日までの23年間
では、まず、結果から見てみましょう(・ω・)ノ
ハイ。ドン❕
この様に、緑色の四角で囲った部分が実際の株価データとなっています。
そして、赤色の四角で囲った部分が今後1年間の株価の予測値です。
黒い点が実際の株価です。
青い線が株価の予測値です。
薄い水色のバンドが株価の信頼区間です。
結論から言うと、株価は強気相場が継続して、上昇する予測が出ています。
現在(2021/1/10時点)の株価が51.65ドルなのに対して、65ドル付近まで上昇する予測ですね(・ω・)ノ
ホンマけ~~?❓
❷「predict」「forecast」の違い
ではここで、これから記載するpythonコードに出てくる、英単語の意味を少し解説します。
predictの意味
予言する
予報する
予測する
forecastの意味
予言する
予報する
予測する
一緒やん!(-"-)と、私も思ったのですが、Pythonコードにどちらの単語も出てくるため、違いを把握する為に調べました。※興味がない方は、読み飛ばして❸コードの解説に進んでください。
では、その違いです。
predict は、一般人。forecastは、専門家。
predict は、信頼性が低い。forecastは、信頼性が高い。
predict は、信頼性があるとは限らない予想。forecastは、データに基づいた信頼性のある予想というイメージです。
ま、何となく違いが知りたかったので、調べました。
❸コードの解説
※ここで、ちょっと言語の説明を入れます。
機械学習には3つのデータを用いるのが基本です。
訓練データ…モデル構築(学習)に使うデータ
検証データ…学習の結果を評価するのに使うデータ(過学習を避けることが目的)
テストデータ…学習にも検証にも使用していないテストデータを使用して、モデルの最終的な予測結果を評価する。
て感じです。
では、順を追ってコードを見てみましょう。
あ、➎で一括コードを載せますので、必要な方はそれをコピペして下さい。
まず、下図の様に、予測したい銘柄と学習する期間を入力します。👇
では、次に行きます。
データフレームに調整後終値を代入していきます。👇
次に、空データフレームを作成して、任意の期間を入れます。
ここでは、1年後までの株価を予測したいため、365日を指定。
最後に、冒頭で表示した予測値のプロットです。👇
如何でしたでしょうか?
この様に、未来の株価を予測するツールの作成は、実に面白いものです(*´▽`*)
ここで、「じゃあ、このツールの中身はどうなっているの❓」
という疑問が起きます。
次節ではその疑問を解決していきます。
❹Facebookが開発したprophetの紹介
Prophetとは、預言者という意味で、Facebookが開発したライブラリの名前でもあります。
具体的には、時系列データを用意して、時系列予測を可能にするライブラリです。
統計知識が不要で、予測モデルを構築できるため、汎用性が高いライブラリとなっています。
デフォルトでは、線形モデルにて予測を立てます。
パラメータ設定により、非線形のモデル作成も可能です。
数式や他の活用方法が知りたい方は、
下記リンクをご参照ください。
Ⅰ.時系列予測ツールFacebook Prophetを使いPythonで様々なデータから予測をする
Ⅱ.Prophet入門【Python編】Facebookの時系列予測ツール
https://www.slideshare.net/hoxo_m/prophet-facebook-76285278
Yahoo!のデータサイエンティストさんが作成したスライドで、とても分かり易く説明されています(*´▽`*)
➎一括コード
コピペで行けるはずです(*^-^*)
!pip install matplotlib fbprophet pandas-datareader
#@title Prophet(Facebookが開発)で時系列株価予測
stock = "intc" #@param {type:"string"}
start = "1998-1-08" #@param {type:"string"}
end = "2021-1-08" #@param {type:"string"}
import pandas as pd
from fbprophet import Prophet
import pandas_datareader as pdr
import matplotlib.pyplot as plt
#ここにフォームで選択した銘柄と期間が来る
df = pdr.get_data_yahoo(stock, start, end)
#x軸(ds)に時系列日付を。y軸に調整後終値を。
df = pd.DataFrame({"ds": df.index.values, "y": df["Adj Close"].values})
model = Prophet()
model.fit(df)
#空のデータフレームを用意。(periods=に何日先まで空データを作るか?入力。frepは頻度。ここではday)
future = model.make_future_dataframe(periods=365, freq="d")
#土日を除外する
future = future[future["ds"].dt.weekday < 5]
forecast = model.predict(future)
model.plot(forecast)
plt.savefig("pred.png")
以上が、今回のテーマ
【Facebookが開発したライブラリで株価を予測する】
でした。
皆様のポートフォリオ構築の上で、何かしら役に立てたら幸いです。
では、ばいちゃ(・ω・)ノ
e^iπ + 1 = 0