Facebookの時系列予測ライブラリ「Prophet」でS&P500の未来を予測する

2019年10月28日月曜日

金融マティックス

t f B! P L
Facebookの時系列予測ツール「Prophet」を使って、S&P500の未来を予測してみました。


Facebookの時系列予測ライブラリ「Prophet」でS&P500の未来を予測する

「Prophet」とは、Facebookが開発した時系列予測のOSSライブラリです。
「時系列データ」とは、時間とともに変化するデータを指します。
今回は、タダケンさんのブログやQiitaなど(参照サイトに掲載)を参考に、アメリカのS&P500のデータ(2000年1月1日から2019年3月31日まで)を基に、未来予測を行います。

S&P500のデータの準備

S&P500のデータのダウンロード

S&P500のデータはWall Street Journalのサイトから期間を指定しダウンロードしました。

Facebookの「Prophet」でS&P500の未来を予測する

CSVファイルの取り込み

Google Colaboratoryを用い、ダウンロードしたS&P500のCSVファイルをColabに取り込みます。

データの整形と確認

Facebookの「Prophet」でS&P500の未来を予測する

Prophetでデータを扱うには、「ds」「y」を指定しておく必要があります。

Facebookの「Prophet」でS&P500の未来を予測する

予測モデルの作成

prophetのインストールとモデルの作成

prophetをインストールし、予測モデルを作成します。

Facebookの「Prophet」でS&P500の未来を予測する

モデルを基にS&P500の未来予測

モデルを使って、未来予測をしましょう。

Facebookの「Prophet」でS&P500の未来を予測する

「yhat」が予測値です。
対数変換しているため、e(約2.6)をyhatの値で乗算すると、実際の値になります。
例えば、2020年3月28日の実際の値は、1934.54(?合ってるのかな?)になりそうです。

Facebookの「Prophet」でS&P500の未来を予測する

トレンドや周期性についての分析結果

分析結果は、model.plot_components()で見ることができます。

Facebookの時系列予測ライブラリ「Prophet」でS&P500の未来を予測する

Facebookの時系列予測ライブラリ「Prophet」でS&P500の未来を予測する

トレンド性、週周期性、年周期性のグラフです。
トレンドから、2009年あたりが底で、そこから上昇トレンドに入っていることが分かります。週周期性では、土日がなぜか上がっているように見えますが、相場は閉まっています。年周期性からは10月あたりが底で、そこから3月まで上昇傾向にあり、3月からは逆に下降傾向にあることが分かります。

予測モデルの精度の検証

検証用データの生成

精度検証をするためには、prophetのdiagnosticsクラスを使用します。

Facebookの時系列予測ライブラリ「Prophet」でS&P500の未来を予測する

cross_validationメソッドを使って(交差検証法)、訓練データとテストデータに分けて、何度か予測値の算出を行います。
yが実績値、yhatが予測値。

MAPE(平均絶対誤差率)

実績値に対して予測値にどれくらい誤差率があるのか、を測ります。

Facebookの時系列予測ライブラリ「Prophet」でS&P500の未来を予測する

MAPE(平均絶対誤差率)では、数値が小さいほど精度が高いことになります。
今回、MAPE(平均絶対誤差率)は0.018なので、それなりの精度になったんじゃないかな、と思います。

参照サイト





このブログを検索

Translate

QooQ