時系列解析を利用して株価、FXの未来の価格予想 事前準備
自分メモ
勉強がてら時系列解析を行ってみました。
時系列解析を利用して株価、FXの未来の価格予想(準備編)
時系列解析とは?
検索にて"時系列解析 とは"のtopページの引用
時系列解析は、過去のデータから未来を予測するという手法です。
たとえば、一年前に魚が豊漁だったら、今年も豊漁になりやすいとか、そういう関係性があるのかというところを調べて予測に活用します。もちろん、回帰分析 のように別の要因の影響を取りこんで予測モデルを作ることも可能です。
機械学習の一つになります。
FXや株取引でこの時系列解析を利用すると将来の株価やFXの価格が予測出来るんじゃないのかなーって事で今回練習です。
時系列解析といってもモデルは色々ある様です。
ARモデル(自己回帰モデル)
MAモデル(移動平均モデル)
ARMAモデル、ARIMAモデル、SARIMAモデル
ARCHモデル、GARCHモデル
状態空間モデル
どれが株価やFXに向いているのかは完全に把握していませんがARCH、GARCHモデルがいいとか何とか。
詳しい方いませんか?w
今回は勉強といいますか実際ちゃんと出来るかどうかの確認なので細かい事は気にせずとりまやってみるの精神です。
時系列解析用のライブラリをインストール
利用するライブラリは"Prophet"です。facebookが開発したライブラリ。
pip install fbprophet
公式には↑これで出来る様なことを書いていますが私の環境では出来ません。
pystanでエラーになります。
pystanをアンインストールしたりインストールしたりを何度かしてもダメでした。
File "c:\users\hogehoge\appdata\local\programs\python\python37\lib\site-packages\pystan\api.py", line 13, in <module> import pystan._api # stanc wrapper
ここでエラーになる。。。
公式又は他のサイト等を拝見する限りanacondaを利用してインストールしろと案内されています。
※最初anacondaでインストールする事に抵抗があったので何か方法ないのかなーって探しましたがダメでanacondaで入れました。
でcondaであればすんなり入ります。
anacondaのpystanをみるとバージョンが2.17.1.0なのでもしかしてーって事で通常?の方のpystan (2.19.0)を削除して2.17.1でインストール。
pip install pystan==2.17.1.0
この後
pip install fbprophet
これでOKになりました。
pystanの中身を確認していないのでなんともですがfbprophetでつまずく方は一度pystan==2.17.1.0にて様子をみてみるといいかもしれません。
公式チュートリアルでテスト
公式ページ
https://facebook.github.io/prophet/docs/quick_start.html
import pandas as pd from fbprophet import Prophet #ライブラリ読み込み df = pd.read_csv('../examples/example_wp_log_peyton_manning.csv') #データのCSV読み込み df.head() m = Prophet() m.fit(df) future = m.make_future_dataframe(periods=365) #365日後までのデータ生成 future.tail() forecast = m.predict(future) forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
実際書いて動かしてみたコード
表を生成
fig1 = m.plot(forecast) fig2 = m.plot_components(forecast)
これでテスト完了。
感想
なんかそれっぽい結果が出てる気がしますw
■ 注意点
最初powershellで動かしていたのですが表が表示されないんですよねー
Prophetはplotを利用して表を表示しているような感じだったのでmatplotlibを利用してplotするのかなーって事でpyplotを加えてみたりしましたがダメ。
少し色々試したのですがダメでjupyter notebookを利用したらすんなり表示。
結果が違う。
本家の
https://facebook.github.io/prophet/docs/quick_start.html
の方のは
のデータは
3269 2017-01-19 8.170046 7.431801 8.840703
となっているのですが私が作成した結果は
3269 2017-01-19 8.160103 7.482307 8.904917
となります。
本家のデータ
私が作成したデータ
うーん。この差は何だろう。
誰か分かる人教えて欲しいっす。
なんでだろうな。。。