<株進捗>8/23 株学習の準備(完了)、シュミレーション起動

目次

  1. 学習させる株データの作成(昨日の続き)
  2. シュミレーション実行!!
  3. 今後やりたいこと
  4. その他

1.学習させる株データの作成(昨日の続き)

昨日の記事(以下)の続きをやりました。

昨日まで以下の2つの仮説を検証すべく、学習フェーズのプログラムの改修を行っていました。

目標達成の仮説1:学習データを「100銘柄の100日分」とする。
目標達成の仮説2:過去100日のデータから、未来30日分の株価の「最大値」「最小値」を予想する→予想した最大値が、現在価格より10%以上であれば売り注文を出す。

これでトレードシュミレーションできる・・・と思いきや。
上記改修により売買フェーズも改修が必要になりました。
そりゃそうですよね。

ということで、赤文字部分の改修を行っています。

  1. [学習フェーズ]以下を指定し、AIに株の値動きを学習させる。
    • 翌営業日の株価を予想するために取り込むデータ数(例:100日分を取り込み次の1日の株価を予想)
    • 各種パラメータ(隠れ層の数(2次元)、学習率、分類器、学習回数)
    • 学習対象データの絞り込み(例:指定した銘柄の値動きと相関が高いものだけを学習データとする)
  2. [学習フェーズ]学習済モデル(いわゆるAI)ができる
  3. [売買フェーズ]以下を指定する
    • [学習フェーズ]でできた学習モデル
    • 適用する売買アルゴリズム(例:予想が10%以上上がっていれば買い)
    • 適用する資産管理ルール(例:総資産の10%は現金として保有する)
    • 売買対象の銘柄
    • 売買開始時期
    • 売買日数
  4. [売買フェーズ]売買プログラムを走らせる
  5. [売買フェーズ]以下のような結果が出力される
    • 売買履歴
    • 最終的な利益
    • (売買履歴をグラフ化したもの)…余裕があれば作りたいです。

結構時間がかかっていますが、今度こそコレが終わればトレードシュミレーションができるはずです。。

ごりごりと200行弱修正しました。
「複数銘柄から1銘柄を予想する」という考え方を受け入れる設計をしていなかったので、大変でした。
きっと試行錯誤するだろうからといろんなワガママを受け入れられるように設計したつもりでも、全然ダメですね。。

2.シュミレーション実行!!!

学習モデルも適当、予想する銘柄も適当ですが、とりあえず1本通ったのが嬉しくて流してしまいました。

  • 学習させたデータ:
    • 時価総額100億以下の銘柄9つ(1408,1770,1418,1768,1776,1400,1420,1724,1711)の2015年〜2016年
  • 取引期間:2016年12月31日から30営業日
  • 初期資金:1000万円
  • トレードアルゴリズム
     ★「先30営業日の値動きの最大値」について…
       現在の10%以上上がると予想 → 買う
       現在の10%以上下がると予想 → 売る    それ以外 → 何もしない
  • 資産管理ルール
    • 総資産の10%は現金で持つ
    • 1銘柄の総額が総資産の10%を超えてはならない
    • 1銘柄を7日間で2度以上買ってはならない

結果…
f:id:kurupical:20170823214141p:plain:w500

12/31に1000万円でスタートし、2/13に1008万円になりました。やったー。
※とりあえず1本流れただけで、この結果が正しいかも検証していません・・・。笑 目標は、年利10%(どのくらいの期間で?などかなり漠然としていますが笑)。

3.今後やりたいこと

  • ログ機能の追加
    取引の根拠など、過程をすべてログファイルに出力させるようにします。
  • パフォーマンスチューニング
    いろいろな学習モデル、トレードアルゴリズム、資産管理ルールでバックテストをします。
    わくわくが止まりません・・・!
  • 有意性の検証
    統計学的に、「どの程度のデータでどの程度の結果がでれば有意性があるのか?」を検証したいです。
    統計学さわりしか知りませんが・・・
  • (将来的に)オンライン処理対応
    毎日勝手に予想してくれるようにしたいです。
  • (将来的に)サイトに予想公開
    オンライン処理対応が終われば。

4.その他

  • 今日のプログラミングは正直やっつけ仕事でした。
    本当は頭で考えてから手を動かすべきなのですが、トライアンドエラーでやってしまいました。
    嫌だなと思っていたところをゴリゴリと推し進めることができたのですが、プログラムの質は全然よくないと思います。
    仕事で残業40H超えるとトライアンドエラー・無思考になっちゃってたなあと思い返しました。
    本当に悪い癖だと思います。
  • トレードアルゴリズム、資産管理ルール、アイデア募集中です!!
  • 以下にソースコード公開しています。(そろそろ説明書作らないと・・・)
    github.com