見出し画像

AIの学習がようやく終わった!! 未来永劫 株価を予測することが可能!? 説明変数にテクニカル指標を加えた編【後編】


今回は説明変数にテクニカル指標を加えたAI作成の検証に対する【後編】です

下記の記事では、回帰を行うAIモデル向けの説明変数にテクニカル指標(移動平均線、等)を加えたらどうなるかを記載しました。

しかし、説明変数に40日分の日経平均株価 + テクニカル指標を使用した場合のAIモデルの学習にメチャクチャ時間がかかり、その結果を記載することができませんでした。

今回は、そのAIモデルの学習がようやく終わったため、その結果を【後編】として記載します。

説明変数に40日分の日経平均株価 + テクニカル指標を使用した場合

この条件で使用したAIモデルは下記となります。

4層 Affine構造 AIモデル 説明変数 40日分
4層Affine構造のAIモデル(説明変数: 40日)

1つの説明変数が760個、各AffineのOutShapeパラメーターが5000と、これまで私が扱ってきたAIモデルの中で最大となっています。

以下に、学習曲線を示します。

学習曲線 説明変数 40日
学習曲線(説明変数: 40日)

AIモデルの学習にかかった合計時間が03:12:17:40となっています。

私の理解が正しければ、3日と12時間17分40秒(= 84時間17分40秒)もAIモデルが学習を続けたことになります。

続いて、始値、高値、安値および終値に対する解値(実際の日経平均株価)とAIモデルの測値を比較した結果を以下に示します。

始値 正解値 予測値 比較結果 説明変数 40日
始値の正解値と予測値の比較結果(説明変数: 40日)
高値 正解値 予測値 比較結果 説明変数 40日
高値の正解値と予測値の比較結果(説明変数: 40日)
安値 正解値 予測値 比較結果 説明変数 40日
安値の正解値と予測値の比較結果(説明変数: 40日)
終値 正解値 予測値 比較結果 説明変数 40日
終値の正解値と予測値の比較結果(説明変数: 40日)

AIモデルの学習に3日以上もかかったのに、この結果とは想定外でした。

もっと複雑な値動きの予測を期待していたのに、残念です。

唯一得たことは、説明変数に40日分の日経平均株価 + テクニカル指標は必要ないということです。

2024年2月の実際の日経平均株価と学習済みAIモデルの予測との比較

2024年2月における実際の日経平均株価の終値と、下記の3パターンによる学習済みAIモデルの終値の予測とを比較しました。

  1. 日経平均株価 + テクニカル指標の5日分を1つの説明変数としたもの

  2. 日経平均株価 + テクニカル指標の20日分を1つの説明変数としたもの

  3. 日経平均株価 + テクニカル指標の40日分を1つの説明変数としたもの

2024年2月 日経平均株価 終値 学習済みAIモデル 予測 比較
2024年2月における実際の日経平均株価と学習済みAIモデルの予測との比較

上記のグラフだけで判断すれば、最も良さそうなのは、日経平均株価 + テクニカル指標の20日分を1つの説明変数としたものです。

推論の初期値による影響の確認

下記に示した記事に倣って、説明変数に40日分の日経平均株価 + テクニカル指標を使用した場合に対する推論の初期値(説明変数)による影響を確認しました。

比較する説明変数は、下記の2種類です。

  • 2種類の説明変数

    • A: 2024年1月31日までの日経平均株価 + テクニカル指標40日分

    • B: 2024年3月29日までの日経平均株価 + テクニカル指標40日分

上記の説明変数に基づき学習済みAIモデルが予測した日経平均株価の終値を比較したグラフを下記に示します。

説明変数 40日 終値 予測値 シフト テクニカル指標
2種類の説明変数に基づく終値の予測値(テクニカル指標、40日、シフト)

上記のグラフは、Bのラインを下方向に12,000円だけシフトしています。

始めの10営業日を拡大したグラフが下記となります。

説明変数 40日 終値 予測値 シフト 10営業日 抜粋 テクニカル指標
2種類の説明変数に基づく終値の予測値(テクニカル指標、40日、シフト、10営業日抜粋)

そもそも、説明変数Aの場合は右肩上がりの値動き、説明変数Bの場合は右肩下がりの値動きを期待しています。

しかし、説明変数に40日分の日経平均株価 + テクニカル指標を使用した場合は、どちらの説明変数でも右肩下がりの値動きとなってしまいました。

理由は分かりませんが、推論の初期値による影響は、ほとんどないと考えて良さそうです。

結果を受けて独り言

今回の結果から、説明変数は多すぎても良くないということを学びました。

もしかしたら、使用するAIモデルの構造との組み合わせで、最適な説明変数の構成が決まるのかもしれません。

一方で、今回のような説明変数とAIモデルのパラメーターのボリュームだと、私のPC環境ではAIモデルの学習にメチャクチャ時間がかかるため、安易に試すことが難しくなってきました。

例えば、今回のAIモデルのパラメーターで8層Affine構造や16層Affine構造を試すのは不可能に近いと感じています。

ところで、AIモデルの学習中にタスクマネージャーのCPUとメモリのパフォーマンスを見ると、CPUは40%程度、メモリは50%程度の使用率でした。

  • 私のPC環境

    • CPU: Intel Core i5-7500 @ 3.40GHz

    • RAM: 8.0GB

全く余裕な感じですが、Neural Network Consoleはこれ以上のリソースを使ってくれないようです。

さて、次回は、LSTM構造のAIモデルを使って回帰の検証を行ってみます。

この場合も、AIモデルの学習時間がメチャクチャ長くなりそうですが、一度は確認しておく価値があると思いますので。

この記事が気に入ったらサポートをしてみませんか?