株価予測【2】どれくらい過去を見て、先を見るか?

金融データ解析

ども。Makです。今無性にタピオカのみたいです。お前は女子高生か。
さて今日はこの間のTOPIX予測を少しだけ発展させてみます。

パラメータを網羅的に調べる

前回は「ある日のX日後のTOPIXの上昇・下降は、過去Y日の変動パターンから予測可能」という仮定を起き、取り敢えずX=10, Y=1と決め打ちした上で結果を出しました。

今回はこのX, Yのパラメータをもう少し網羅的に調べてみることにします。つまり、どれくらい過去を見て、どれくらい先を予測するのが、最も精度が出るのでしょうか?

ソースコードの修正が必要な部分を下に示しますが、比較的最小限で済みます。

これにより、過去何日分(=window)から、何日後(=lag)を予測するのが筋が良いかを網羅的にざっくりと調べます。使用するモデル部分は前回と特に変更ありません。

上記では、
windows = [2,3,5,10,15,20,30,60,90,120]の10通り
lags = [1,2,3,5,10,15,20,30,60,90,120]の11通り
model = 17通り
を総当たりで調べているので、合計10*11*17=1870通りのモデルを評価しています。
1870通りのモデルを学習&評価するのは結構時間がかかりそうですが、今使用しているモデルはシンプルなモデルばかりなのでそこまで時間はかかりません。5分ちょいくらい。

各モデルは「基準日からlag日後のTOPIXの値動き(基準日より上がるか下がるか)を、過去Window日分の終値から予測する」ようにトレーニングしています(変数は標準化)。Accはテストデータにおいて予測が当たった確率を示しています。

まずは良い方から。以下のようになりました。

精度が60%を超えているのは、少し出来過ぎな気もします。しょうもないプログラミングのミスをしていなければ良いのですが・・・(一応最低限のチェックはしています)

上位にlag=60~90が数多く現れているのは面白い傾向に思えます。翌日の値動きを予測するのはボラティリティの影響が大きい一方で、60日〜90日後では概ね中長期のトレンドが加味されるため、短期でのボラティリティの影響が小さくなり、予測がしやすくなっている可能性は考えられます。しかしlag=120が一つも上位に現れていないところを見ると、単純にlagが大きい方が良いわけでは無さそうなのが面白い所です。

Windowサイズについては概ね2〜5が上位に多く出現しており、過去のデータを多く詰め込めば良いというわけではなさそうで、これは直感と一致します。

モデルについてはElasticNetが多く選ばれるという謎の結果になりました(笑)コメントに困るやつです。ElasticNetはLasso(L1正則化)とRidge(L2正則化)を足して2で割ったような中間的なモデルなので、何らかの正則化が重要そうということしか現地点ではわかりません。。

次に結果のワースト10は以下のようになりました。

ワーストは精度10%ですか。。逆にここまで外せるのもすごい。
このモデルを逆張りで使うという案は如何でしょうか(笑)

結果としては、windowサイズが60〜120と多い点、またガウス過程モデルやLassoLarsモデルのできが悪い傾向が見られました。またlag=90についてはBest10にもWorst10にも多いのがきになるポイントです。ちょっと今の地点では説明がつかないですね。

後日、もう少し詳しく結果を分析していきたいと思います!

今日は以上です。

コメント

タイトルとURLをコピーしました