投資Tips #1:信頼性の高いバックテストを丁寧に行う。
今回はデュアルモメンタム番外編として、どのようなルールベースの投資スタイルにおいても基本となる信頼性の高いバックテストについて書きます。
番外編では端的に記載します。デュアルモメンタムは投資の道具であり、打ち出の小づちではありません。道具を正しく利用することを学ぶ必要があります。
信頼性の高いバックテストを行うメリット8つ
信頼性の高いバックテストを行うことのメリットは多岐にわたります。
戦略の有効性の確認: バックテストを通じて、投資戦略や取引アルゴリズムの有効性をデータを基に評価することができます。
オーバーフィッティング(過学習)の検出: 信頼性の高いバックテストは、モデルが過去のデータに過度に適合している(過学習している)場合にそれを識別するのに役立ちます。
リスクの評価: 戦略のリスク、ドローダウン、ボラティリティなどの重要なリスク指標を評価することができます。
資金管理の改善: データに基づいて過去の最大ドローダウンやリスクを評価することは資金管理に役立ちます。
戦略の調整と最適化: バックテストの結果を基に、戦略のパラメーターを調整して最適化することができます。
レジームチェンジに対する戦略の頑健性: 異なる市場環境や経済的変動の中で戦略がどのように機能したかを評価することで、戦略の頑健性を確認することができます。
コストと収益の予測: バックテストを使用して、取引コストや税金、その他の関連コストを考慮した実際の収益を予測できます。
感情的な要因の排除: バックテストによるルールベースの取引は、主観的判断や感情的な要因を排除して、戦略を客観的に評価することを可能にします。
信頼性できるのは複数期間のバックテスト
一般的に目にする単期間のバックテストは信頼性に欠けます。たとえ長期間であろうとも特定の期間を切り取って判断するのは避けます。
単期間でのバックテスト
特徴:
一つの連続した期間のデータセットを使用して、投資戦略のパフォーマンスをテストします。
過去の特定の期間(例: 2000年から2010年)を選び、その期間のデータに基づいてバックテストを行います。
代表的なテスト方法:
過去データバックテスト: ある特定の期間の過去のデータを使用して、戦略のパフォーマンスを評価します。
複数期間でのバックテスト
特徴:
複数の異なる期間のデータセットを使用して、投資戦略のパフォーマンスをテストします。
これにより、異なる市場状況や経済環境での戦略の有効性や頑健性を評価することができます。
代表的なテスト方法:
ウォークフォワードアナリシス: これは、データを複数のセグメントに分け、各セグメントでバックテストとフォワードテストを繰り返す方法です。これにより、様々な期間と状況での戦略の有効性を確認することができます。
単期間と複数期間の違い
評価対象: 単期間のバックテストは限定された特定の市場状況や経済環境でのパフォーマンスを評価するのに適しています。比べて複数期間のバックテストはさまざまな市場環境での戦略の頑健性を評価するのに適しています。
信頼性: 複数期間でのバックテストの方が、戦略が異なる市場環境でどのように動作するかのより良い指標となり信頼性が高いことが多いです。
代表的なバックテスト6つの信頼度と難易度
バックテストにはいくつかの方法がありますが、ここで主要な方法とその特徴を挙げてみます。
過去データバックテスト(単期間)
信頼度: ★★★☆☆
実行難易度: ★★☆☆☆
概要: 過去のデータに基づいて戦略をテストします。
フォワードテスト:
信頼度: ★★★★☆
実行難易度: ★★★☆☆
概要: 未使用の過去のデータセットで戦略をテストします。
リアルタイムフォワードテスト:
信頼度: ★★★★★
実行難易度: ★★★★☆
概要: 現在の市場データで戦略をリアルタイムでテストします。
モンテカルロシミュレーション:
信頼度: ★★★☆☆
実行難易度: ★★★★☆
概要: ランダム性や確率を使用して多数のシナリオを生成し、それを基に戦略のパフォーマンスをテストします。
ウォークフォワードテスト:
信頼度: ★★★★☆
実行難易度: ★★★★★
概要: 一連のバックテストとフォワードテストを組み合わせて、戦略のパラメータを最適化しながらそのパフォーマンスをテストします。
アウトオブサンプルテスト:
信頼度: ★★★★☆
実行難易度: ★★★☆☆
概要: 特定の期間のデータを使用してモデルや戦略を訓練(インサンプルデータ)した後、その後の未使用の期間のデータ(アウトオブサンプルデータ)でモデルのパフォーマンスをテストします。
実際のバックテストのルーチン例
好みはありますが、ここでは私がルーチンで行っているやり方を記載します。
アイデアと仮説構築
ルール構築
長期単期間バックテスト
モンテカルロシミュレーション
アウトオブサンプルテスト
ウォークフォワードテスト
リアルタイムフォワードテスト
定期的な検証
相対的優位性の判定
サイズ調整
7-11をループ
*4のモンテカルロシミュレーションはskipすることも多いです。
*5のアウトオブサンプルテストはレジームチェンジの前後のみ確認し、6のウォークフォワードテストを行うことが多いです。
オーバーフィッティングの危険性
オーバーフィッティング、過剰最適化、過学習などで表現されます。
バックテストで優秀なパフォーマンスだったのに、リアルでは全くうまくいかないことは良くあります。
オーバーフィッティングによってモデルが過去のデータに過剰に適合すると新しいデータや未見の状況での予測が不正確になるリスクが高まります。
対処法としてデータ分割、モデルの簡素化、正則化、クロスバリデーションなど多種多様な対策が考えられていますが、このnoteでは次項で現実的な2つの対策をお勧めするにとどめます。
オーバーフィッティングの危険性
リアルでの性能低下: オーバーフィッティングされたモデルはバックテスト時のパフォーマンスよりも実際の取引環境でのパフォーマンスが低下する可能性が高いです。
誤った期待値: バックテストの結果が過度に最適化されている場合、実際の取引で期待されるリターンやリスクが実現しない可能性が高いです。そのため資金管理が困難となります。
戦略の非頑健性: オーバーフィッティングは、市場の微小な変動やノイズに過度に反応するモデルを生成する可能性があり、市場環境が変わると戦略が失敗するリスクが高いです。
オーバーフィッティングのリスクを最小限に抑えることは、投資戦略のリアルな性能を適切に評価し信頼性を確保するために極めて重要です。
現実的なオーバーフィッティング対策
ローリングリターンを利用する
ローリングリターンは複数の単期間バックテストの集合です。時系列データの連続的セグメントを評価するといった点においてはウォークフォワードテストに近い要素があります。中長期的な過去のパフォーマンスを調べるには簡便で悪くありません。3年ローリングリターンであればPortfolio Visualizerを使ってスマホ一つでいつでもどこでも確認できます。
パラメータをシンプルにする
複雑なモデルはオーバーフィッティングのリスクが高まるため、最低限必要な特徴やパラメータのみを使用してモデルをシンプルに保つことが望ましいです。デュアルモメンタム#6の記事の有料部分に私がどのように考えて実際のモデルの改善をしているかの一例を書いておりますので興味がありましたらご一読ください。
バックテストに必要なサンプル数
基本的に生データは多ければ多いほどよいです。
またデーター自体の質も重要となりますが、ここでは参考として最低ラインの例を挙げてみます。
1. 月次取引の最低ライン
5年以上のデータ。少なくとも60のデータポイント(5年 x 12ヶ月)が得られます。これ以下ではかなり信頼性が落ちる印象です。
おすすめ:
10年以上のデータ
2. 日次取引の最低ライン
2年以上のデータ。少なくとも500のデータポイント(約250取引日 x 2年)を持つことになります。
おすすめ:
5年以上のデータ
まとめ
今回はデュアルモメンタムに特化した内容にこだわらず番外編として執筆しました。
デュアルモメンタムの記事をまとめたマガジンも作りましたので応援よろしくお願いします!
ローリングリターンをみる、これだけでも視野が広がるはずです。