今回もファイナンス機械学習に関しての記事になります。範囲は第2章の後半~第3章となります。
CUSUMフィルター
特徴量のサンプリングにCUSUMフィルターという検出方法があります。簡単に説明すると、平均(期待値)からの乖離の累積値がある一定の閾値を超えるたびにサンプリングをするというものです。詳細は書籍をご確認ください。
2000年1月1日~2020年12月31日のドル円(日足)に対してCUSUMフィルターによりデータをサンプリングした結果は以下の通りです。

5458個のデータから246個のデータが抽出されました。データ数がかなり削減され、機械学習モデルに利用できる程度のデータ数が確保できない可能性もありそうです。閾値の値でデータ数は増減するので、最適なハイパーパラメータの特定も必要になります。
上図を見ると、節々でちゃんとサンプリングは出来ていそうです。CUSUMフィルターを利用することで、データのノイズを除去できるのかもしれません。
次に、リターンの分布の変化を見てみます。

左が全データ、右がCUSUMフィルター後のデータのリターン分布になります。分布の形状を見ると、正規分布に近づいているように見えます。歪度は負から正になり0からは遠ざかったものの、尖度に基づくとかなり正規分布に近づいていることがわかります。
機械学習モデルは正規分布を前提としていることが多いので、CUSUMフィルターを利用してダウンサンプリングすることは有効な手段になるかもしれません。
ラベリング
ラベリングと言えば、タイムバーにしたがって固定された閾値で観測値をラベリングする方法が一般的だと思います。そのような方法を本書では、固定時間ホライズン法と呼んでおりました。ただ、タイムバーはよい統計的性質を示さない、観測されたボラティリティに関係なく同じ閾値を適用するのはよくないとして他のラベリング方法が紹介されておりました。
そこで今回はローリング指数加重標準偏差とトリプルバリア法に基づくラベリングを利用してみます。これらのラベリングは、ベット(買う/売る)のサイドを決定する為に利用します。
一方で、ベットサイズ(どれだけ金額を投入するか)に関するラベリングを本書ではメタラベリングと呼んでおりました。
今回はこれらを用いてランダムフォレストによりモデルを構築し、簡単な取引戦略の構築と検証をしてみたいと思います。
ローリング指数加重偏差
以下から、1994年1月1日~2020年12月31日のユーロ円の日足データを利用します。データ取得にはMT5を利用しております。
ローリング指数加重偏差を閾値として、CUSUMフィルターによりサンプリングをした結果が以下の通りです。(赤点)

431個のデータが抽出されました。
トリプルバリア法
次に、上でサンプリングされたデータにトリプルバリア法を用いてラベルを付与してきます。
トリプルバリア法では、垂直バリア1つと水平バリア2つの計3つのバリアに基づきラベリングを行います。簡潔に言うと、垂直バリアは投資期限、水平バリアは利確ライン、損切ラインを表しており、一定期間内(投資期限内)に水平バリアに触れた場合は、最初の接触ポイントにおけるリターンの符号でラベリングをします。垂直バリアまで水平バリアに触れない場合は、垂直バリアでのリターンの符号もしくは0としてラベルを付与します。
今回は垂直バリアを10日間、水平バリア(上側)を2σ, 水平バリア(下側)を1σとしてみます。垂直バリアに触れた場合は0とし、3クラス分類とします。
ラベリングをした結果、各ラベルの分布は以下の通りです。

ラベル”0″が他のラベルに比べ少ないですが、ラベル”-1″トラベル”+1”はほぼ同数でまずまずのラベリングができているように見えます。
取引戦略
以上までの結果を用いて、簡単な取引戦略の構築してみます。流れは以下の通りです。
- 移動平均線のゴールデンクロスに基づくトレンドフォロー戦略の構築
- メタラベリング(3値分類のラベル)とランダムフォレストによる別途サイズ予測モデルの構築
- 1と2を掛け合わせ、最終的な投資判断を決定
トレンドフォロー戦略(ゴールデンクロスを利用)
5日移動平均線と25日移動平均線を利用します。売買判断はシンプルで、5日移動平均値が25日移動平均値の上にあれば”1″(Buy)、下にあれば”-1″(Sell)とします。
上記に基づくトータルリターンの推移(手数料は考慮していない)は以下の通りです。

最終的にリターンはプラスであるものの、2000年~2008年のパフォーマンスがかなり悪いことがわかります。
メタラベリング
モデルはランダムフォレストを利用します。データセットは8割を学習に利用し、残り2割をテスト用とします。
特徴量には、1.のゴールデンクロスに基づくポジションとボラティリティを利用します。ラベルには、トリプルバリア法で算出したもの{-1, 0, +1}を利用します。ただし、メタラベリングでは投資の有無だけに利用するため、ラベルを{0, 1}の2値に変換しておきます。
トレンドフォロー戦略×メタラベリング
1のスコア{-1, 1}と2のスコア{0, 1}を掛け合わせたものを最終スコアとします。最終スコアに基づき投資判断をしたときのトータルリターンの推移は以下の通りです。

左はトレンドフォロー戦略のみ、右側が最終スコアに基づくものとなっております。期間はテスト期間だけを抽出したものを掲載しております。
2つを比較してみると、メタラベリングを適用した右側はパフォーマンスがかなり改善されていることがわかります。
トレンドフォロー戦略では2014~2016年はパフォーマンスがマイナス基調にありましたが、メタラベリングによりパフォーマンスがプラス基調に転換していることがわかります。つまり、メタラベリングにより、一部のマイナスとなる取引を除外することができました。
手数料を考慮しておりませんが、リターンはプラスになり、まずまずのモデルができたのではないでしょうか。
まとめ
今回は、CUSUMフィルターとラベリングについてまとめました。そして、これらを利用した簡単な取引戦略を構築してみました。結果、リターンはプラスとなりまずまずのモデルを構築できました。
今回の取引戦略はゴールデンクロスをベースとした非常なシンプルなものであり、メタラベリングの特徴量も2変数(ゴールデンクロスのポジションとボラティリティ)とかなり限定的なものとなっております。なので、改善の余地は大いにあると思います。個人的には、メタラベリングはかなり使えそうな気がしたので、今後のシストレ開発には積極的に組み込んでいきたいと思います。(そもそも常識?)
以上
参考
今回の記事を作成するにあたり使用したプログラム等は以下に掲載しております。
- CUSUM_Filter.ipynb:CUSUMフィルターに関するノートブック
- Labeling.ipynb:ラベリング、取引戦略に関するノートブック