見出し画像

二値分類で効果のあった恐怖指数(VIX)を回帰でも試してみました


説明変数に恐怖指数(VIX)を使用して回帰を検証します

これまで、AIによる日経平均株価を未来永劫予測する回帰について、アレコレやってきました。

しかし、その予測精度は、実際の株価に対しておよそ±800円の範囲でバラつく結果でした。

全く使い物にならないレベルです。
(T _ T)

なんとか予測精度を向上させたいと考え、今回は、説明変数に日経平均株価と恐怖指数(VIX)を組み合わせた場合にどうなるかを検証したいと思います。

恐怖指数(VIX)を説明変数に使用する理由ですが、過去に行った二値分類で予測精度向上の要因となったのが恐怖指数(VIX)だったからです。

恐怖指数(VIX)を説明変数に使用した二値分類に関する記事は、下記を参照ください。

これまで説明変数に恐怖指数(VIX)を使用しなかった理由

回帰の予測精度が上がらない状況が続く中で、私は、恐怖指数(VIX)を説明変数に使用すれば、回帰の予測精度が向上するかもしれないと感じていました。

しかし、これまで、恐怖指数(VIX)を説明変数に使用することを避けてきました。

その理由は、恐怖指数(VIX)を回帰の説明変数に使用すると、回帰ができなくなってしまうからです。

そもそも、回帰とは、実在するデータ(説明変数)を使用して一つ先の未来(目的変数)を予測し、予測した一つ先のデータを使用(目的変数を説明変数とする)して、さらにその先の未来(新たな目的変数)を予測し続けるものです。

回帰の説明変数に恐怖指数(VIX)を使用するということは、一つ先の未来の日経平均株価を予測するために、一つ先の未来の恐怖指数(VIX)も予測する必要があるのです。

そもそも、恐怖指数(VIX)が正確に予測できるのであれば、日経平均株価も正確に予測できるはずです。

こうした理由から、私はこれまで、説明変数として日経平均株価と日経平均株価から算出可能な情報(移動平均やボリンジャーバンド、等)に限定して使用してきました。

しかし、その状況で全く予測精度が上がらず、状況を打開する良いアイデアも浮かばず、となりました。

そこで、わずかな期待と興味で説明変数に恐怖指数(VIX)を使用したらどうなるかを検証することにしました。

予測精度が上がるのであれば、それは一つの結果として次の判断材料になりますし、これまでの結果と同じであるのならそれも良しです。

説明変数と目的変数の構成

今回使用する説明変数と目的変数の構成は、下記の通りです。

  • 説明変数と目的変数の構成

    • 説明変数の構成

      • 5日分の日経平均株価(始値、高値、安値、終値)と恐怖指数(始値、高値、安値、終値)

      • 並びは、1日目の日経平均株価 → 1日目の恐怖指数 → 2日目の日経平均株価 → 2日目の恐怖指数 → … → 5日目の日経平均株価 → 5日目の恐怖指数

    • 目的変数の構成

      • 1日分の日経平均株価(始値、高値、安値、終値)

      • 説明変数の最後がn日目の場合は(n+1)日目の日経平均株価

使用するAIモデルの構成

検証に使用するAIモデルの構成は4層Affine構造とします。

4層Affine構造 AIモデル
4層Affine構造のAIモデル

説明変数に恐怖指数(VIX)を使用した場合の検証結果

4層Affine構造のAIモデルに対して、説明変数として5日分の日経平均株価および恐怖指数(VIX)を入力し、学習させた場合の結果を次に示します。

始めに、学習曲線です。

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

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

VALIDATION ERRORの最小値は65000弱でしたので、これまでの結果とほぼ同じでした。

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

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

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

グラフの縦軸は日経平均株価([円])を、横軸は評価期間における営業日の日数を表しています。

これまでの結果と同じく、AIモデルの終値に対する予測値(y'__3)が実際の日経平均株価の終値(y__3)に対して、右方向にズレているように見えます。

実際の終値(y__3)と終値に対する予測値(y'__3)のRMSE(Root Mean Squared Error, 二乗平均平方根誤差)を算出すると、322.81円となりました。

終値に対するRMSEもこれまでの結果とほぼ同じでした。

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

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

実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌])を比較すると、ほぼ一致していることが確認できます。

実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌])のRMSEを算出すると、52.79円となりました。

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

終値 差分 比較 4層Affine構造 5日分 日経平均株価 恐怖指数(VIX)
終値に対する差分の比較(4層Affine構造、5日分の日経平均株価 + VIX)

グラフの縦軸は、各終値の差分([円])を、横軸は評価期間における営業日の日数を表しています。

上記のグラフから、実際の終値(y__3)と翌営業日の終値に対する予測値(y'__3[翌])が、ほぼ一致していることが確認できます。

結果に対する考察

単純に、説明変数に恐怖指数(VIX)を加えただけではダメでした。

ふと気になったのは、データの標準化(Standardization)です。

  • 標準化(Standardization)とは

    • 平均を0, 分散を1とするスケーリング手法

というのも、日経平均株価が20000とか30000とかに対して、恐怖指数(VIX)は15とか25とかです。

今回のように、説明変数の数値に大きな差がある場合は、データの標準化が必要なのかもしれません。

前回行った説明変数の標準化に対する検証では、標準化する/しないに対する差分は確認できませんでした。

しかし、二値分類で恐怖指数(VIX)を説明変数に使用したことで予測精度が向上した時は、標準化を行っていました。

念のため、次回は説明変数に恐怖指数(VIX)を加え、かつ、標準化を行ったらどうなるかを検証したいと思います。

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