![見出し画像](https://assets.st-note.com/production/uploads/images/146036436/rectangle_large_type_2_55dbb7c5e30bf0c159201825e443f430.jpeg?width=1200)
推論の初期値でその後の予測値の推移は変化するの? 回帰に対する疑問を検証してみた編
回帰に対する私の疑問
回帰に対する私の疑問は、回帰を行うための推論の初期値、つまり、始めに与える説明変数によってその後のAIモデルの予測値の推移が変化するのか、というものです。
例えば、2024年2月1日以降の日経平均株価を学習済みAIモデルによる回帰で予測させる場合です。
この場合、2024年1月31日(つまり、2024年2月1日の前営業日)までの日経平均株価、等のデータを用意し、学習済みAIモデルに与えます。
学習済みAIモデルは、2024年1月31日までの日経平均株価、等のデータに基づいて2024年2月1日以降の日経平均株価を次々と予測していきます。
下記のグラフは、5日分の日経平均株価を1つの説明変数として学習させたAIモデルに対して、2024年1月31日までの5日分の日経平均株価に基づいて、2024年2月1日以降の日経平均株価の終値を予測させたものです。
![5日分 日経平均株価 予測 終値 推移](https://assets.st-note.com/img/1719799653551-o5Xv43Nb6B.png)
これまでの検証結果では、回帰を続けていくと、予測される日経平均株価は右肩上がり、あるいは、右肩下がりといった単調増加、単調減少の値動きとなることが確認されています。
私の疑問は、上記の例において、2024年1月31日までのデータ以外を与えた場合でも、予測値が2024年1月31日までのデータを与えた場合と同じ値動きとなるのか、あるいは、また別の値動きとなるのか、というものです。
そこで、実際に学習済みAIモデルを使って確認してみました。
ちなみに、学習済みAIモデルは、断りがない限り4層Affine構造を使用しています。
説明変数が日経平均株価5日分の場合
比較する説明変数は、下記の2種類です。
2種類の説明変数
A: 2024年1月31日までの日経平均株価5日分
B: 2024年3月29日までの日経平均株価5日分
ちなみに、説明変数Bとして2024年3月29日までの日経平均株価を選んだ背景は次の通りです。
説明変数Bとして2024年3月29日までの日経平均株価を選んだ背景
複数のパターンで作成したAIモデルでは、回帰による日経平均株価の予測値の多くが単調増加だった
回帰のために与える説明変数を変えることで、日経平均株価の予測値が単調増加以外に変化することがあるかを知りたい
この場合、説明変数として与えるべきは、実際に日経平均株価が下落している期間が良いのではないか
日経平均株価は2024年3月22日に最高値である41,087円に到達した後、2024年4月19日まで下落している
こうした背景から、2024年3月29日までの日経平均株価を説明変数とした
上記の説明変数に基づき、学習済みAIモデルが予測した日経平均株価の終値を比較したグラフを下記に示します。
![説明変数 5日 終値 予測値](https://assets.st-note.com/img/1719749968968-mOZ9q2Agoy.png)
上記のグラフにおいて、縦軸は日経平均株価の終値([円])を、また、横軸は説明変数から何営業日後かを表しています。
そして、各色のラインは、以下の通りです。
青色: Aの説明変数を与えて回帰を行った終値の予測値
オレンジ色: Bの説明変数を与えて回帰を行った終値の予測値
説明変数の違いにより、学習済みAIモデルの予測値が縦方向にズレるのは、結果として正しいです。
問題は、予測値の推移が変わるかどうかです。
上記のグラフだと分かりずらいので、Bのラインを下方向に4,200円だけシフトしたものを下記に示します。
![説明変数 5日 終値 予測値 シフト](https://assets.st-note.com/img/1719750473320-naDMM1PEwK.png)
回帰による予測が始まった数営業日分に対しては、学習済みAIモデルの予測値の推移に違いが生じていることが確認できます。
始めの10営業日を拡大したグラフが下記となります。
![説明変数 5日 終値 予測値 シフト 10営業日 抜粋](https://assets.st-note.com/img/1719750720521-pyRRlQ59Gj.png)
始めの4営業日までは予測値の推移に違いが生じるものの、それ以降は傾き一定の直線的な推移に移行してしまうようです。
他の条件で学習させたAIモデルに対する予測値の推移も確認します。
説明変数が日経平均株価20日分の場合
比較する説明変数は、下記の2種類です。
2種類の説明変数
A: 2024年1月31日までの日経平均株価20日分
B: 2024年3月29日までの日経平均株価20日分
上記の説明変数に基づき、学習済みAIモデルが予測した日経平均株価の終値を比較したグラフを下記に示します。
![説明変数 20日 終値 予測値 シフト](https://assets.st-note.com/img/1719751475637-M4Bad7X0rq.png)
上記のグラフは、Bのラインを下方向に4,200円だけシフトしています。
この条件では、先の条件と比べ、予測を始める説明変数をズラすことで、予測値の推移に違いが大きく生じることが確認できました。
ただし、予測値全体の傾向は似ています。
説明変数が日経平均株価40日分の場合
比較する説明変数は、下記の2種類です。
2種類の説明変数
A: 2024年1月31日までの日経平均株価40日分
B: 2024年3月29日までの日経平均株価40日分
上記の説明変数に基づき、学習済みAIモデルが予測した日経平均株価の終値を比較したグラフを下記に示します。
![説明変数 40日 終値 予測値 シフト](https://assets.st-note.com/img/1719751997489-K04PhOP8sQ.png)
上記のグラフは、Bのラインを下方向に4,200円だけシフトしています。
この条件でも、予測を始める説明変数をズラすことで、予測値の推移に違いが大きく生じることが確認できました。
しかし、予測値全体の傾向はやっぱり似ています。
説明変数が日経平均株価40日分 + 8層Affineの場合
説明変数は40日としたままで、AIモデルの構造を8層Affineとした場合も予測値の推移を比較しました。
2種類の説明変数
A: 2024年1月31日までの日経平均株価40日分
B: 2024年3月29日までの日経平均株価40日分
![説明変数 40日 終値 予測値 シフト 8層Affine](https://assets.st-note.com/img/1719752965199-NfXstHBbSo.png)
上記のグラフは、Bのラインを下方向に4,200円だけシフトしています。
始めの10営業日を拡大したグラフが下記となります。
![説明変数 5日 終値 予測値 シフト 10営業日 抜粋 8層Affine](https://assets.st-note.com/img/1719753126217-qgadYF41dp.png)
この条件では、予測値の推移に多少の違いは生じますが、右肩上がりの傾向は似ています。
説明変数が日経平均株価 + テクニカル指標5日分の場合
比較する説明変数は、下記の2種類です。
2種類の説明変数
A: 2024年1月31日までの日経平均株価 + テクニカル指標5日分
B: 2024年3月29日までの日経平均株価 + テクニカル指標5日分
説明変数に含まれるテクニカル指標は、以下の通りです。
説明変数の含まれるテクニカル指標
日経平均株価(始値、高値、安値、終値)
移動平均線(5, 25, 75日)
ボリンジャーバンド(20日)
MACD(12, 26, 9日)
RSI(14, 9日)
ストキャスティクス(9, 3, 3日)
上記の説明変数に基づき、学習済みAIモデルが予測した日経平均株価の終値を比較したグラフを下記に示します。
![説明変数 5日 終値 予測値 シフト テクニカル指標](https://assets.st-note.com/img/1719793451244-CtDb2lCK1u.png)
上記のグラフは、Bのラインを下方向に4,200円だけシフトしています。
この条件でも、予測を始める説明変数をズラすことで、予測値の推移に違いが大きく生じることが確認できました。
予測値全体の傾向としても、これまでの結果とは違うと感じます。
終値(Bシフト、予)の方は、かなり長い期間で横ばいの推移をしています。
説明変数が日経平均株価 + テクニカル指標20日分の場合
比較する説明変数は、下記の2種類です。
2種類の説明変数
A: 2024年1月31日までの日経平均株価 + テクニカル指標20日分
B: 2024年3月29日までの日経平均株価 + テクニカル指標20日分
説明変数に含まれるテクニカル指標の種類は、5日分と同じです。
上記の説明変数に基づき、学習済みAIモデルが予測した日経平均株価の終値を比較したグラフを下記に示します。
![説明変数 20日 終値 予測値 シフト テクニカル指標](https://assets.st-note.com/img/1719793858961-5sVO57y7N8.png)
上記のグラフは、Bのラインを下方向に4,200円だけシフトしています。
始めの10営業日を拡大したグラフが下記となります。
![説明変数 20日 終値 予測値 シフト 10営業日 抜粋 テクニカル指標](https://assets.st-note.com/img/1719794016770-Jpe1ZAkF70.png)
この条件では、予測を始める説明変数をズラしても、予測値の推移に対する違いはほとんど確認できませんでした。
結果まとめ
今回の検証では、回帰を行うために最初に与える説明変数により学習済みAIモデルの予測値が変化するか否かを確認しました。
結果をまとめると、次の3通りに分けられると思われます。
全体的に予測値の推移に差が生じた
説明変数が日経平均株価 + テクニカル指標5日分の場合
予測初期の推移に差が生じるものの、全体の傾向は同じ
説明変数が日経平均株価5日分の場合
説明変数が日経平均株価20日分の場合
説明変数が日経平均株価40日分の場合
説明変数が日経平均株価40日分 + 8層Affineの場合
全体的に予測値の推移が同じ
説明変数が日経平均株価 + テクニカル指標20日分の場合
少なくとも、予測の初期の期間に対しては、回帰を行うために最初に与える説明変数により学習済みAIモデルの予測値は変化すると考えて良いと思います。
また、学習済みAIモデルに説明変数Bを与えたのは、日経平均株価の下落の予測を期待したからでした。
こうした観点では、以下のように分けられます。
株価の予測が下落している
説明変数が日経平均株価20日分の場合
説明変数が日経平均株価 + テクニカル指標5日分の場合
株価の予測が下落していない
説明変数が日経平均株価5日分の場合
説明変数が日経平均株価40日分の場合
説明変数が日経平均株価40日分 + 8層Affineの場合
説明変数が日経平均株価 + テクニカル指標20日分の場合
上記において、説明変数が日経平均株価20日分の場合は、説明変数Aを与えた場合も予測値が下落しているため、下落しやすい特徴があるのかもしれません。
説明変数が日経平均株価 + テクニカル指標5日分の場合は、下落とは少し違う気もしますが、上昇傾向が横ばい傾向に変化した点を評価しました。
以上の結果だけを見ると、日経平均株価を回帰により予測させるAIモデルを作成するという観点では、説明変数が日経平均株価 + テクニカル指標5日分の場合が最も良さそうです。
回帰を用いたバックテストの実行方法(案)
回帰を行うために最初に与える説明変数により学習済みAIモデルの予測値が変化するため、これを利用したバックテストの実行方法を考えました。
回帰を用いたバックテストの実行方法(案)
回帰により数営業日分の日経平均株価を予測させる
予測させた日経平均株価に基づいて売買を行う
大引け後に説明変数を更新する
1へ戻る
例えば、回帰により2営業日分の日経平均株価を予測させます。
2営業日分なので、翌営業日と翌々営業日の日経平均株価が予測の対象です。
仮に、翌営業日の終値より翌々営業日の終値が高くなる予測だったとします。
この場合、翌営業日の終値で株を買っておきます。
大引け後に、株を買った営業日の日経平均株価を加えた新たな説明変数を用意します。
その新たな説明変数を使って、そこから2営業日分の日経平均株価を予測させます。
翌営業日の終値は高くなるものの、翌々営業日の終値が低くなる予想だった場合は、購入済みの株を翌営業日の終値で売ります。
新たな説明変数を使った結果、翌営業日の終値が安くなる予測に変わってしまった場合は、やむを得ず、翌営業日の始値で売ります。
ジャストアイデアではありますが、以上が回帰を用いたバックテストの1案です。
この記事が気に入ったらサポートをしてみませんか?