機械学習による株価予測3日目(2021年2月26日)
こんにちわ。
昨日(2021年2月25日)は株を買いませんでした。
機械学習による株価予測を諦めたわけではないのですが、前日のマイナス13,900円を受けて
そもそもモデルがまだまだ予想できていないことに改めて気付き諸々修正を行いました。
そうすると昨日は日経平均全体的に上昇、予測せずとも買ってれば当たったではないかと。
まぁ、株なんて大体そんなもんですよね。
昨日行った主な修正点
- アメリカ株の指数に連動して翌日の日本株が上がる、または下がるので教師データに
アメリカ株指数を取り入れ - 上記のついでに前回採用しなかった円ドル為替を説明変数に取り入れ
- アメリカ株を入れるとなると早朝に戻ってくるので予測処理→買い予約(手動)が間に
合わなくなるため、処理を細分化、効率化、マルチプロセス化
まずアメリカ株の指数取り入れですが、S&P500やNASDAQなどの米株指数を取得し
説明変数に取り入れました。これら米株指数と日経225の相関係数を見てみたのですが、
0.88とかでかなり高い相関を示していました。米ドル為替の相関係数は-0.44程度で
まぁ弱い相関というところでしょうか。
機械学習でもデータ分析でもまずは相関を見てみる。基本ですね。
上記の処理を株式市場の始まりに合わせるには午前9時までに予測から買い予約まで
終わらせないといけません。ここは正確な時間が分かっていないのですが、おそらく
前日の米株指数を取得できるのが午前5時以降なので、午前5時から米株指数を取得
して、それからデータ前処理を終わらせ教師データを生成し予測を行い、かつ手動で
買い予約まで終わらせないといけません。今のままでは到底処理が間に合わなかった
ので処理を細分化し、かつpythonによるマルチプロセス化。pythonでマルチプロセス
初めて使ったのですが、随分簡単でした。
と、書いていて気付いたのですが、そもそも学習処理には当日データは入れなくても
良いかなと思えてきました。運用が回らなくなってきたら前々日までのデータで学習
を行い、予測には当日分のみ利用する。そうするとデータ前処理は前日までに終わら
せておくことが出来そうです。
今日、実際に株式を購入するかは迷ったのですが、なんとなく今日も上がりそうな
気がするので投資しておきたいので(全く理論的ではない理由)、昨日までの理論で
買いフラグの株式銘柄を抽出、購買までやっていこうと思います。
株価予測3日目(2021年2月26日[金])
[本日使用した機械学習モデル]
Lasso, ラッソ回帰
引き続きLassoによる回帰を使用します。
[本日使用した主な説明変数と目的変数]
主な説明変数と目的変数
冒頭にも書きましたが、説明変数にアメリカ株価指数と円ドル為替を取り入れ。
あと今まで予測していなかった始値も新たに予測するようにしました。
[本日の対象銘柄]
本日も前回と変わらずTOPIX 500を対象としこの中から買うべき銘柄を抽出します。
[機械学習が示した買いフラグ銘柄]
基本戦略
「安値で買って高値で売る」今までこの戦略を取ろうとしてきたのですが、
仮に予測安値が当たって、予測高値が当たったとしてもそこに時系列の概念がないと
儲けは発生しないため、「始値で買って高値で売る」とした方が良いかなと思えて
きました。本当はここもしっかりとシミュレーションして見極めないといけないの
ですが、今日はとりあえず予測した始値で指値予約し高値でセット売り予約します。
機械学習が示した買いフラグ銘柄
Lasso機械学習モデルが予測した本日の買い銘柄と株価は以下となりました。
code | prd_翌日始値 | prd_翌日高値 | prd_翌日高値_adj | prd_翌日安値 | prd_翌日安値_adj | prd_翌日終値 | スコア | 買いフラグ | 前日終値 |
---|---|---|---|---|---|---|---|---|---|
2413.T | 8603 | 8795 | 8707 | 8481 | 8566 | 8643 | 0.9988084925 | 1 | 8539 |
2801.T | 7340 | 7454 | 7380 | 7229 | 7301 | 7344 | 0.9936502846 | 1 | 7330 |
3092.T | 3510 | 3583 | 3547 | 3462 | 3497 | 3532 | 0.9914969294 | 1 | 3475 |
3659.T | 3527 | 3578 | 3543 | 3466 | 3501 | 3513 | 0.9941339245 | 1 | 3500 |
3769.T | 14769 | 15100 | 14949 | 14537 | 14683 | 14826 | 0.9973454072 | 1 | 14760 |
4552.T | 3535 | 3629 | 3592 | 3472 | 3506 | 3530 | 0.9969356525 | 1 | 3520 |
4911.T | 8193 | 8289 | 8206 | 8066 | 8146 | 8165 | 0.9936740813 | 1 | 8148 |
4919.T | 6176 | 6293 | 6230 | 6109 | 6171 | 6211 | 0.9931499227 | 1 | 6160 |
5947.T | 10949 | 11110 | 10999 | 10786 | 10894 | 10960 | 0.9933422163 | 1 | 10940 |
6586.T | 4621 | 4705 | 4658 | 4561 | 4606 | 4622 | 0.98754208 | 1 | 4615 |
6753.T | 2052 | 2103 | 2082 | 2016 | 2036 | 2066 | 0.9980328907 | 1 | 2040 |
6758.T | 11615 | 11788 | 11670 | 11463 | 11577 | 11667 | 0.9963296356 | 1 | 11570 |
6963.T | 10976 | 11143 | 11032 | 10796 | 10904 | 10957 | 0.9877731912 | 1 | 10890 |
6976.T | 5601 | 5736 | 5679 | 5513 | 5568 | 5653 | 0.995890461 | 1 | 5590 |
7476.T | 13954 | 14182 | 14040 | 13665 | 13802 | 13904 | 0.9976833565 | 1 | 13900 |
7518.T | 3372 | 3442 | 3408 | 3321 | 3354 | 3390 | 0.9958921737 | 1 | 3340 |
7735.T | 8881 | 9090 | 8999 | 8780 | 8867 | 8926 | 0.9909551891 | 1 | 8880 |
7741.T | 12682 | 12870 | 12742 | 12484 | 12609 | 12685 | 0.9974340419 | 1 | 12680 |
7780.T | 6486 | 6615 | 6549 | 6380 | 6444 | 6485 | 0.9977977062 | 1 | 6480 |
7974.T | 68766 | 69666 | 68970 | 67696 | 68373 | 68668 | 0.9953884667 | 1 | 68360 |
8369.T | 6662 | 6763 | 6696 | 6584 | 6650 | 6677 | 0.9910501734 | 1 | 6640 |
9021.T | 6713 | 6800 | 6732 | 6594 | 6660 | 6676 | 0.9944441185 | 1 | 6667 |
9062.T | 8103 | 8204 | 8121 | 7998 | 8078 | 8087 | 0.9859276201 | 1 | 8080 |
今回は1株あたりの上昇が大きい順で30万円以内、元手資金残り¥985,000-以内で買って
いくこととします。[prd_翌日始値]で指値予約し[prd_翌日高値_adj]売り予約です。
code | prd_翌日始値 | prd_翌日高値 | prd_翌日高値_adj | prd_翌日安値 | prd_翌日安値_adj | prd_翌日終値 | スコア | 買いフラグ | 前日終値 | prof | 買値 | 売値 | 想定損益 | 会社名 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4552.T | 3535 | 3629 | 3592 | 3472 | 3506 | 3530 | 0.9969356525 | 1 | 3520 | 57 | 353500 | 359200 | 5700 | JCRファーマ |
3092.T | 3510 | 3583 | 3547 | 3462 | 3497 | 3532 | 0.9914969294 | 1 | 3475 | 37 | 351000 | 354700 | 3700 | ZOZO |
6753.T | 2052 | 2103 | 2082 | 2016 | 2036 | 2066 | 0.9980328907 | 1 | 2040 | 30 | 205200 | 208200 | 3000 | シャープ |
こんなやり方では勝てないでしょうね。分かっています。
デイトレを始めたほとんどの人はこうやって資産を溶かしていくのが分かります。
もっと統計的に検証しシミュレーションを行い、答え合わせを行って新たにモデルに
組み込むというサイクルを回していく必要があります。
ただ同時に実際に買ってみるというのも大事なのかなと。シミュレーションだけとは
緊張感が違いますw
[本日の結果と反省]
実際に開場前に予約までしたのですが、以下のニュースを見て取り消し。
今日は乗らずに粛々とモデルを調整しつつ来週に備えるとします。
【米長期金利一時1.61% 株価大幅安、各国で警戒広がる】