<株進捗>8/18 データ学習方法の改良
目次
- リファクタリング作業内容の整理
- データ学習方法の改良
- その他
1.リファクタリング作業内容の整理
コメダにこもって考えました。
2.データ学習方法の改良
今日は以下の赤文字部分の改良をしました。
- [学習フェーズ]以下を指定し、AIに株の値動きを学習させる。
- 翌営業日の株価を予想するために取り込むデータ数(例:100日分を取り込み次の1日の株価を予想)
- 各種パラメータ(隠れ層の数(2次元)、学習率、分類器、学習回数)
- 学習対象データの絞り込み(例:指定した銘柄の値動きと相関が高いものだけを学習データとする)
- [学習フェーズ]学習済モデル(いわゆるAI)ができる
- [売買フェーズ]以下を指定する
- [売買フェーズ]売買プログラムを走らせる
- [売買フェーズ]以下のような結果が出力される
- 売買履歴
- 最終的な利益
- (売買履歴をグラフ化したもの)…余裕があれば作りたいです。
学習の仕方は現在1つで。「過去100日分を取り込み、次の1日の株価を予想。」
指定した過去100日分の株価だけで予想できるほど単純ではないと思っています。
また、学習モデルに30日先を予想しようとすれば
①1日〜100日 → 101日目の株価を予想
②2日〜100日+予想した101日 → 102日目の株価を予想
③3日〜100日+予想した101〜102日 → 103日目の株価を予想
・
・
・
㉚30日〜100日+予想した101〜129日 → 130日目の株価を予想
上記のようになり、日が進めば進むほど、「取込データのうち学習モデルが予想したデータ」の割合が高くなり、先になればなるほど精度が悪くなるのは目に見えていました。
ということで、どうすればよいか考察しました。
まずは、成果目標の見直し。
目標:年利10%
そのうえで、2つの仮説を立てました。
目標達成の仮説1:学習データを「100銘柄の100日分」とする。
(※100日分、100銘柄の各値は要チューニング)
これまでは学習データとして1銘柄の100日分を用意していましたが、これではデータ不足であると思っています。ということで、学習に使うデータをもっと増やして、精度が高くなるか確かめます。
参考:
qiita.com
この記事では、28つの為替レートを学習データとして、1つの為替レートを予想しています。
※RNNではなく、ベーシックなNNを使っています。
目標達成の仮説2:過去100日のデータから、未来30日分の株価の「最大値」「最小値」を予想する→予想した最大値が、現在価格より10%以上であれば売り注文を出す。
(※100日、未来30日、10%は各値は要チューニング)
次に…そもそも、成果目標は「株価を予想すること」ではなく、年利10%を実現することです。
ですので、キレイに未来のチャートの形を予想することは絶対ではないです。
値動きの幅さえわかれば売買は可能でしょう。
この2つを実装する(+将来的に他の仮説を検証する)ためには、1.で挙げたソースのリファクタリング(機能単位に分割)が必須です。今のソースだとかなりテストがし辛いです。
3.その他
・ソースコードは以下で公開しています。
github.com
・またDeepLearningのところに戻ってこれて、テンションあがってきました。
・Qiitaとかに書き込みしている人は、どれくらいの時間で完成させているのか気になります。1記事でキレイにまとめあげているので…