はじめに
前回、KDDIの株価をLSTMで予想した。
しかし、データが1年分と少なかった。そこで、2018〜2020年の3年分のデータまで拡張する。
そのデータでLSTMで株価を予想する。
動作環境
- Mac OS 10.11.6
- Python 3.6.8
- Keras 2.2.4
- tensorflow 1.8.0
データ
生成方法
以下の方法で3年分のデータをスクレイピングする。
以下の方法で3年分のデータを直結させる。
完成したデータ
Unnamed: 0 | 日付 | 始値 | 高値 | 安値 | 終値 | 出来高 | 終値調整 |
0 | 2018-01-04 | 2,839 | 2,844.5 | 2,823.5 | 2,844.5 | 9,037,800 | 2,844.5 |
1 | 2018-01-05 | 2,840 | 2,850.5 | 2,826 | 2,841.5 | 8,401,800 | 2,841.5 |
2 | 2018-01-09 | 2,855 | 2,855.5 | 2,830 | 2,830.5 | 7,508,000 | 2,830.5 |
LSTMの実装方法
以下の方法でLSTMを実装する。
ただし、以下のパラメータを変更する。
データ数が増えたので、テストデータの割合を減らすため。
全データの30%がテストデータであったが、10%まで低下させる。
変更前
test_size = 0.3
変更後
test_size = 0.1
出力結果
学習は順調に進んだ。
縦軸が株価で、横軸が日付です。
input:実際の株価
predict:LSTMによる予測値
考察
inputに対してpredictは、右にシフトしたようなグラフとなった。
つまり、実際の株価データから同じような株価を予測していると考えられます。
株価には、「ランダムウォーク理論」「予測の不可能性」を説明する理論がある。ある程度の不確実性の要素を入れて、LSTMの回帰モデルを組んだ方が良いかもしれない。
株価の不確実性の要素の一つに、情勢があると推察する。
そこで、ニュースや検索数を株価に考慮するモデルを今後作成する。
結論
LSTMでは、ある程度株価を予想することは可能である。
しかし、過去のデータからほぼ同じような値を予想するため、実際のより遅れたデータとなる問題がある。
コメント