株価予測【4】バックテストによるモデルの評価

金融データ解析

株価予測のシリーズ、少しご無沙汰してしまいました。さて、今日は以下の記事の続きとなります。

前回までで、モデルのトレーニングと評価は完了しましたが、今日は実際にモデルを用いてテスト期間において仮想的な運用シミュレーションを行い、どれほどのリターンが得られるかを調べていきます。このテストはバックテストと呼ばれています。

バックテストでは実際に運用シミュレーションを行うため、どのタイミングで売り買いをするかの意思決定ルールを策定する必要があります。今回はあくまでベースラインとしての数値を得るのが目標ですので、一般的によく使われる手法を用いたいと思います。

バックテストにおける売買アルゴリズム

前提条件

  • 資金は十分にあると仮定する(トレード回数に制限を設けない)
  • トレードにかかる手数料等は考慮しない
  • バックテスト期間は2017-06-14〜2019-06-14の2年間とする
  • モデルのトレーニング期間は2011-08-17~2017-06-13とする
  • 尚バックテスト期間においても、テスト対象日以前のデータであればトレーニングに使用可能だが、今回はバックテスト期間はモデルの再トレーニング等は行わない
  • バックテスト期間終了日において、保有しているTOPIX(買ったが売れていない)については終了日で時価計算する

買い時のルール

  • 【ベースライン】3日連続でTOPIXが上昇した場合、買い。
  • 【提案手法】予測期間の異なるモデルそれぞれで予測。例えば、1日後を予測するモデル3種、2日後を予測するモデル3種・・・でそれぞれ、値動きを予測。
    上昇すると予測したモデルの割合が特定の閾値より高い場合、買い。要するに多数決方式

売り時のルール

  • 当日価格が、購入時価格を5%下回ったとき、損切りのため売り
  • 当日価格が、購入時価格を5%上回り、かつ購入日価格以降の最高値から少しでも下回った段階で、利益確定売り
  • 購入時価格±5%の範囲内にある際、ホールド(何もしない)

バックテスト結果

テスト期間のTOPIXの値動きは以下のようになっています。

上げ相場と下げ相場が混在しているので、バックテスト期間としては面白そうな値動きです。

ベースライン手法

まずは、ベースライン手法として「三日連続でTOPIXが上昇したときに買い」としたときの結果は以下のようになりました。

上のグラフの見方ですが、十字マーク一つが、1回の売買トレードを意味しています。十字マークのx軸の値は購入した日付を表しており、y軸の値(右側)はReturnの割合を示します。上に行くほどリターンが高く青が濃く、下に行くほどリターンがマイナスで赤色になるようにしています。
サマリーは以下のようになりました。

今回はデイトレではなく、ある程度の日数保有することを前提としているため、翌日の上げ下げ予想に加えてトレードの勝率を評価項目として加えました。これは、買値より高い値で売れたトレードの割合を示しています。またトレード回数の多さはリスクの低減に繋がるため、トレード回数が多い方が良いことになります。

さて、今回平均リターンはマイナスとなるため、この運用ルールで投資を行なった場合、資金がみるみる溶けていくことが見て取れます。。

それでは、上をベースラインとして、今回のメインの手法での成績を見ていきましょう。

1日後を予測するモデル

まずは1つ目のモデルです。
このモデルでは、1日後を予測するモデル3つを用いて予測した結果となります。

一見、翌日予想精度もトレード勝率も非常に高いのですが、グラフを見てわかる通り、トレードがたったの8回しか行われていないことがわかります。これではリスクが大きすぎるため、実用性がないことが明らかです。

1日後・2日後を予測するモデル

次は1日後だけではなく、2日後を予測したモデルも加えて見ます。

全体的にかなり数値が落ちてしまいましたが、トレード回数は大幅に上がりました。
ただグラフを見てみると、下げ相場でもかなりの投資を行なっており、結果的にリターンを押し下げてしまっていることが見て取れます。

様々な日数を予測するモデル

トレード勝率を落とすことなく、トレード回数を大きく増やすことができました。

今日は、この辺にて。次回は今回の結果を元に、さらに勝率や平均リターンを上げて行けないか考えて見ます。

コメント

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