見出し画像

祝!! 予測精度向上 \(^ ^)/ 恐怖指数(VIX)を使った学習データを標準化したら回帰の予測精度が向上しました


今回は恐怖指数(VIX)を使った学習データを標準化して回帰を行うとどうなるかを検証します

前回行った、説明変数に恐怖指数(VIX)を使用した回帰に対する検証では、予測精度がこれまでと同レベルであることを確認しました。

詳細は、下記の記事を参照ください。

ただし、一つ気になったのが、説明変数の数値の差です。

例えば、日経平均株価が20000とか30000とかに対して、恐怖指数(VIX)は15とか25とかで、データの標準化が必要ではないかと考えました。

そこで、今回は、前回行った検証に対して、学習データの標準化を行った場合にどうなるかを確認することにします。

ちなみに、その他の条件については、前回の検証と全く同じです。

学習データの標準化に対するルール

今回行う学習データの標準化ルールは、下記となります。

  • 学習データの標準化ルール

    • 説明変数として、5日分の日経平均株価と恐怖指数(VIX)を使用する(前回と同じ)

    • 目的変数として、1日分の日経平均株価を使用する(前回と同じ)

    • 標準化は、日経平均株価と恐怖指数(VIX)に分けて行う(前回と同じ)

    • 日経平均株価は、説明変数と目的変数をまとめて標準化を行う(今回のポイント)

学習データの標準化を行った場合の検証結果

前回使用した4層Affine構造のAIモデルに対して、標準化を行った学習データを入力し、学習させた場合の結果を以下に示します。

始めに、学習曲線です。

学習曲線 4層Affine構造 5日分 日経平均株価 恐怖指数(VIX) 標準化
学習曲線(標準化)

学習曲線の縦軸は、ログスケールで表示されています。

学習データを標準化しているため、COSTおよび各ERRORは非常に小さい値となっています。

続いて、AIモデルの評価結果に対する実際の日経平均株価と予測値の比較を行います。

下記は、標準化された実際の日経平均株価の終値(y__3)とAIモデルの終値に対する予測値(y'__3)を比較したグラフです。

終値 実際の値 予測値 比較 4層Affine構造 5日分 日経平均株価 恐怖指数(VIX) 標準化
標準化された終値に対する実際の値と予測値の比較(標準化)

グラフの縦軸は標準化された日経平均株価を、横軸は評価期間における営業日の日数を表しています。

上記のグラフを見て、これまでとは少し異なると感じました。

これまでの結果は、実際の日経平均株価の終値(y__3)に対して、きれいにAIモデルの終値に対する予測値(y'__3)が右方向に1営業日分だけズレていました。

しかし、上記のグラフは、確かに同じズレが確認できる箇所もありますが、そうでない箇所もあるように見えます。

ちなみに、標準化された実際の終値(y__3)と終値に対する予測値(y'__3)のRMSE(Root Mean Squared Error, 二乗平均平方根誤差)を算出すると、4.21*10^(-2)となりました。

次に、標準化された実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌])を比較します。

終値 実際の値 翌営業日 予測値 比較 4層Affine構造 5日分 日経平均株価 恐怖指数(VIX) 標準化
標準化された終値に対する実際の値と予測値(翌営業日)の比較(標準化)

上記のグラフを見ると、所々にズレている箇所が確認できます。

これまでの結果は、ピタッと合っていましたので、やはり違いを感じます。

ちなみに、標準化された実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌])のRMSEを算出すると、2.19*10^(-2)となりました。

最後に、標準化された実際の終値(y__3)と終値に対する予測値(y'__3)の差分と、実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌])の差分を比較しました。

終値 差分 比較 4層Affine構造 5日分 日経平均株価 恐怖指数(VIX) 標準化
標準化された終値に対する差分の比較(標準化)

グラフの縦軸は、標準化された各終値の差分を、横軸は評価期間における営業日の日数を表しています。

やはり、標準化された各終値の差分でも、これまでのような差がないことが確認できました。

結果に対する考察

今回の結果から、説明変数に恐怖指数(VIX)を使用し、かつ、学習データの標準化を行うことで、これまでに行った回帰とは異なる結果になることが確認できました。

具体的には、下記の通りです。

  • これまでの結果

    • 実際の終値に対してAIモデルの予測値が1営業日分遅れる

    • 圧倒的に当日の予測精度よりは翌営業日の予測精度の方が高い

  • 今回の結果

    • AIモデルの予測値において、当日と翌営業日の予測精度には差があるものの、これまでの結果ほどではない

    • ただし、当日の予測精度よりは翌営業日の予測精度の方が高くなっている

改めて、今回の回帰に対するポイントを整理すると、次の2つです。

  • 今回の回帰に対するポイント

    1. 説明変数に恐怖指数(VIX)を使用している

    2. 学習データを標準化している

そこで、学習データの標準化による効果の確認をしたいと思います。

具体的には、過去に行った、学習データを標準化した場合の結果と今回の結果を比較します。

上記の記事で行った回帰と今回の回帰の差分は、以下の通りです。

  • 過去に行った回帰と今回の回帰との差分

    • 過去の回帰: 説明変数に5日分の日経平均株価を使用

    • 今回の回帰: 説明変数に5日分の日経平均株価 + 恐怖指数(VIX)を使用

先ずは、終値に対するRMSEを比較します。

  • 過去の回帰の終値に対するRMSE

    • 実際の終値(y__3)と終値に対する予測値(y'__3): 4.95*10^(-2)

    • 実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌]): 9.77*10^(-3)

  • 今回の回帰の終値に対するRMSE

    • 実際の終値(y__3)と終値に対する予測値(y'__3): 4.21*10^(-2)

    • 実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌]): 2.19*10^(-2)

上記の結果から、標準化された実際の終値(y__3)と終値に対する予測値(y'__3)に対するRMSEは、今回の方が若干良い結果となっています。

しかし、標準化された実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌])に対するRMSEは、前回の方が断然良い結果です。

これは、AIモデルの予測値が1営業日分遅れていることを意味しています。

次に、標準化された実際の終値(y__3)と終値に対する予測値(y'__3)の差分に対して、過去と今回の結果を比較してみます。

標準化 終値 予測値 差分 前回 今回 比較
標準化された終値と予測値の差分に対する前回と今回の比較

こうして見ると、確かに、今回の結果の方が予測精度が若干高い(つまり、差分が少ない)ことが確認できました。

さらに、今回の結果に対して、標準化とは逆の計算を行い、実際の終値(y__3)と終値に対する予測値(y'__3)のRMSEを算出したところ、282.44円でした。

過去の回帰の結果は、実際の終値(y__3)と終値に対する予測値(y'__3)のRMSEが320円前後でした。

結論

以上の結果より、説明変数に恐怖指数(VIX)を使用し、かつ、学習データを標準化することで、回帰における予測精度の向上を図ることができました。

これまでの回帰に対する検証では、全くと言って良いほど予測精度を向上させることができませんでした。

このため、RMSEでわずか40円程度の予測精度の向上であっても、大きな一歩であると私は感じています。
\(^ ^)/

今後の課題

ただし、今のままでは、未来の日経平均株価を予測し続ける回帰として使用することはできません。

その理由は、前回の記事でも紹介しましたが、説明変数に恐怖指数(VIX)を使用しているため、回帰をし続けるためには、未来の恐怖指数(VIX)も予測する必要があるからです。

さて、現状の回帰に対する問題点は2つあります。

  • 現状の回帰に対する問題点

    1. まだまだ予測精度が低い

    2. 説明変数の構成を回帰が可能な形にする必要がある

私としては、予測精度をある程度向上させてから、説明変数の構成を回帰が可能な形に見直していく方法が良いと感じています。

このため、次回は、様々なパラメータを説明変数に使用した場合に、予測精度がどうなるのかを確認したいと思います。

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