<株進捗>8/16 売買成績の算出

目次

  1. 売買成績の算出
  2. 資産管理クラスの設計+ちょっと作成
  3. コミットログ

1.売買成績の算出(trade_test.py)

今日は以下の赤文字部分を実装しました。

①学習モデルを用意 (完了)
②学習モデルの読み込み (完了)
③現在日付の設定 (完了) →2017/1/1からスタート

 ★④〜⑦を、2017年度分データのすべてが読み込み終わるまで繰り返し
 ④現在日付から過去N日分のデータを基に、M日分の株価を予測 (完了)
 ⑤予測した株価を基に、売買の判定を行う(完了)
 ⑥(売買があった場合、株の購入記録を残す)(完了)
 ⑦現在日付を1日進める。(完了)
⑧売買の成績を算出する

実装して、銘柄1301を2017/1/3から30日間売買テストしました。
売買基準は以下の通り。
・過去100日のデータから、30営業日先までの株価を予想する
・30営業日までに「10%上がる」と予想している場合は翌営業日の初値で買い
(・指値、逆指値を設定していますがこの機能はまだ実装していません)
(持ち金100万円スタート)

30日後、保有している株の一覧は以下の通り
f:id:kurupical:20170817000113p:plain:w300
見にくいですが、「price」が買った値段、「date」が買った日です。
ご覧のとおり、毎日買い判断が出ているので、毎日購入しています。
1日目に「30営業日までに10%上がる」と予想するならば、2日目も状況が大きく変わらない場合は同様の予想をするはず。結果的に毎日「買え!買え!!」と命令され、爆買いします。

そして結果が以下の通り。
f:id:kurupical:20170817000200p:plain:w300
moneyが保有現金、total_profitが利益、total_assetが資産合計になっています。
moneyがマイナスになっています。

上記のように、無限に同じ株を買ってしまう・現金がマイナスになっても買ってしまう…等の問題を防ぐためには、「資産管理」の実装が必要です。

2.資産管理クラスの設計+ちょっと作成(AssetManager.py)

資産管理ルールをいくつか考えています。(一部は僕の投資ルールをそのまま適用しています)
・総資産の10%は現金を保有すること。
・1つの銘柄に総資産の20%以上ぶっこまないこと。
・1つの銘柄を買った場合、そこから7日間は同じ銘柄を買わないこと。
売買判断を行う前に、資産管理の面でこの株を買うのが適正であるかどうかを判定します。
すべての判定をクリアした場合のみ、株が購入できる仕組みにします。

3.コミットログ

今日はこれだけやりました。
f:id:kurupical:20170817001440p:plain:w300

その他

ソースコードは以下で公開しています。超ざっくりのReadmeも作りました。
もしよろしければご覧ください。アドバイス等も大歓迎です。
github.com