機械学習の株式投資で10億円を目指す!

機械学習によるデイトレ株式投資(シストレ、システムトレード)で10億円の資産形成を企んでいます。機械学習、データサイエンス、AI(人工知能)のアルゴリズムを駆使したら株式市場(マーケット)に勝つことは出来るのか?

機械学習による株価予測1日目(2021年2月22日)

皆さん、こんにちわ。

今回が当ブログの初投稿となります。
ブログタイトル通り「機械学習株式投資で10億円を目指す!」ことを
目標にデイトレを開始しました。

10億円なんて現実的じゃないだろ!分かっています。
1億円でも良いかなとは思ったのですが、夢は大きくです。
自己資本による100万円が元手資金です。
株式投資歴は5年ほどですが、デイトレシストレは初めての初心者です。
某企業で機械学習エンジニア、AI担当、データ分析等を行っておりますが、
スキルは大したことない自信があります。
皆さんで100万円の元手資金が減っていく様をご覧頂けたらと思います。

株価予測1日目(2021年2月22日)

[本日使用した機械学習モデル]

Lasso, ラッソ回帰
(らっそかいき、least absolute shrinkage and selection operator, Lasso, LASSO)
他にもLightGBMも試したのですが、なんとなくLassoの方が当てはまり具合が
良さそうだったので、まずはLassoで挑戦。
Lasso回帰もLightGBMもscikit-learnを使用し実装。
他考えたこととしてはLSTM(ニューラルネットワーク)や時系列(タイムシリーズ)を
うまく扱うためにFacebookデータサイエンスチームによるアルゴリズムである
Prophetなども検討しましたが、どうも合わない気がしたので一旦不採用。

[本日使用した主な説明変数と目的変数]

株価予測での時系列処理

株価予測で重要な要素としてはやはり時系列なのではないか?ということは
なんとなく分かってはいたものもそれをどうやって機械学習モデルが分かる
ようにデータに表すか?
一旦、大して深く考えず1日前の値を1行(同レコード)に組み込むことにしました。

主な説明変数

上記で書いたように前日の高値、安値、終値、当日の高値、安値、終値
あと日本株全体が上がったらそりゃ大半は上がるよねってことで日経225
も説明変数に取り入れ。あとは7日移動平均、25日移動平均、75日移動平均
今後、増やした方が良いかなと思うのは、世界の主要株価指数や為替データ。

[本日の対象銘柄]

起きている時間にトレードしたいので日本株のみで板の厚さを考えTOPIX500
から抽出を実行。もし機械学習モデルが安定して収益を出せそうだったら
TOPIX500から拡大しトレード機会を増やそうと思います。

[機械学習が示した買いフラグ銘柄]

基本戦略

株の基本としては安値で買って高値で売る。
ということで予測安値で買って予測高値で売ることが理想になります。
んで、前日(前営業日)までの株価データで予測してみましたが、
予測安値が安く出過ぎる、予測高値が高く出過ぎるとなるんですね。
これでは買えないし、売れません。
なので、これを調整するために予測安値と予測高値に係数を掛けると
いう方法で買えるようにしましたが、この係数は適当に決めたので
本当は統計的かシミュレーション結果で算出するようにしないとです。

機械学習が示した買いフラグ銘柄

Lasso機械学習モデルが予測した翌日の株価は以下となりました。
_adjが付いているのは上記で書いた調整済みの価格となります。
機械学習モデルは以下を示したのですが、100単元で考えると元手資金100万円では
全部を買うことは不可能なので、スコア(機械学習モデルの当てはまり具合)が高い順
に並べて100万円で買える順番に買っています。緑の背景となっているものです。

code prd_翌日終値 prd_翌日高値 prd_翌日高値_adj prd_翌日安値 prd_翌日安値_adj
6753.T 2089 2137 2094 2020 2051
9201.T 2253 2316 2269 2207 2240
6920.T 14259 14658 14365 13953 14163
4612.T 8600 8802 8626 8437 8564
9202.T 2388 2451 2402 2346 2381
6383.T 11431 11677 11444 11249 11418
6976.T 5835 5963 5844 5709 5795
5631.T 2734 2791 2735 2684 2724
7747.T 3382 3439 3371 3307 3357
3092.T 3694 3764 3689 3622 3677
7735.T 9090 9280 9094 8933 9067
2492.T 1025 1051 1030 1001 1016
7313.T 3021 3091 3029 2967 3012
7936.T 1770 1804 1768 1731 1757
8136.T 1663 1706 1672 1634 1659
6028.T 8079 8245 8080 7948 8067
9007.T 3216 3291 3226 3158 3206
9706.T 4942 5117 5015 4875 4948

6753.T シャープ
9201.T 日本航空
9202.T ANAホールディングス

を100単元ずつ購入。売買代金は買いが成立した場合、667,200円。
楽天証券で前日のうちに売りをセットで売買予約。楽天証券、便利ですね。

[本日の結果と反省]

 

まだ前場が終わったところでまたあとで更新しようと思うのですが、
今のところの結果としましては買いが成立せず。
原因としましては日経平均自体が先週の金曜からの反発で300円以上の高騰。
特に日本航空ANAなどの空運は5%以上の上昇。ニュースでも注目銘柄として
取り上げられていました。
買いは成立しませんでしたが、このような注目銘柄を当てているということを
考えれば機械学習モデルが何かしらのサインを拾っている可能性があります。
たらればですが、成行で始値買い、成行で終値売りが成立すれば儲かっていた
ことにはなります。
シャープはまだ買えるか分かりませんが、この日経全体の上がりから考えると
難しそうです。またあとで結果を更新することにします。

→本日は結局買うことが出来ず。いくつかバグを見つけたので明日の祝日(天皇誕生日)を使って修正して次営業日の2月24日で再挑戦です。

収支

[前日(2021年02月21日)]
¥1,000,000-

[本日(2021年02月22日)]
¥1,000,000-
±0-

  • 買いタイミングに改善ポイントがありそう。
  • そもそもモデルの精度をもっとあげる必要がある。