トレンド・インテンシティ・インデックス(Trend Intensity Index)を責任ある形でバックテストするには?
インジケーターのメカニクスとデータ仮定を定義する
トレンド・インテンシティ・インデックス(Trend Intensity Index)は、価格の挙動を定量化されたトレンド活動(trend-activity)の値に変換する「インジケーター型」の指標です。責任ある形でバックテストするには、まず使用する正確な式を定義し、次を含めます:
- 入力する価格フィールド(たとえば、close のみか、他のフィールドも使うのか)、
- ロックバック(lookback)またはウィンドウ長、
- 値のスケーリング/正規化の方法、
- 欠損バー、日中のギャップ、セッション境界の扱い。
次に、バックテストのデータルールを定義します。ライブ環境で観測するのと同じバー構築を使ってください(バーのタイムフレーム、タイムスタンプの整合、インジケーターがバー終値で計算されるのか、利用可能なインターバー(intrabar)データを使うのか)。生データから別の人が系列を再現できるように、計算例ごとに前提を文書化してください。
安定したメカニクスと、変動する市場/提供者条件を分ける
インジケーターのバックテストでよくある失敗は、過去の出力が、実際に直面するであろう同じ執行環境から得られたかのように扱ってしまうことです。次の2つの考えを分けてください:
- 安定したメカニクス:過去の価格からインジケーター値へ変換すること。
- 変動する条件:市場レジームの変化、流動性の違い、ビッド/アスクのスプレッド挙動、そして注文が実際にどのように約定するか。
取引をシミュレーションしない場合でも、あなたが行動する時点でインジケーター値が何を意味するのかについて、整合したルールが必要です(たとえば、「前のバーまでの情報を用いて計算される」など)。このタイミングルールを固定しないと、結果が先読み(look-ahead)バイアスを反映してしまうことがあります。
モデルのコスト、執行制約、ポジションの扱い
バックテストに、取引に依存するいかなるパフォーマンス指標も含まれる場合は、コストと執行制限を必ず入れてください。というのも、それらは楽観的なインジケーターの発見を打ち消してしまうことが多いからです。責任あるセットアップでは、コストは「後付け」ではなく、実験設計の一部です。
最低限、次の前提を明記してください:
- 取引コスト(コミッション、スプレッド、または保守的な総コスト率)、
- 約定が bid/ask なのか mid なのか、そしてスリッページをどう扱うか、
- リバランスやエントリー/エグジットをどれくらいの頻度で行うか(ルールの頻度は重要です)、
- 部分約定や注文遅延の扱い(単純な上限でも、執行を無視するよりは良い場合があります)。
また、「シグナルの使用(signal use)」が何を意味するのかも決めてください。インジケーターを単独の取引トリガーとして使うのではなく、状態を定義するために使う場合(たとえば、トレンド中/非トレンド)には、その状態ルールを明示的に説明し、時間を通じた分類問題としてテストしてください。
厳格な評価設計でバイアスを制御する
インジケーターのバックテストは、複数のバイアスに対して脆弱です。隠すのではなく、それらを検出するように実験を設計してください:
-
パラメーターの過剰適合:多くのウィンドウ長や閾値を試して、パフォーマンスが良く見えるまで調整すると、ノイズに適合してしまう可能性があります。探索する範囲を限定し、何を探索したかを記録してください。
-
先読みバイアス(look-ahead bias):時刻 t で使うインジケーター値が、意思決定時刻において利用可能な情報だけを使っていることを確認してください。
-
データスヌーピング(Data snooping):多くの仮説をテストして、最良のものだけを残すと、報告されるパフォーマンスが水増しされます。
実務的なバイアス制御の方法は ウォークフォワード検証(walk-forward validation) です(ローリング、またはアウト・オブ・サンプル評価とも呼ばれます)。たとえば、パラメーターを選ぶための学習期間を選び、その後の連続した期間でテストします(再チューニングはしません)。複数のフォールドにわたって繰り返し、単一のピーク結果ではなく安定性を要約してください。
少なくとも1つの重大な制限と失敗モードを含める
少なくとも1つの制限は、オープンにテストされるべきです。トレンド活動(trend-activity)系のインジケーターにありがちな失敗モードは、あるレジーム(滑らかなトレンド)ではうまく機能する一方で、他のレジーム(レンジ相場や急な平均回帰の条件)ではうまくいかないことです。もう一つの失敗モードは、タイムフレームへの感度です。インジケーターは、1分足と日足で挙動が異なる可能性があります。
これを具体化するために、バックテストを異なる市場状態に分割してレジーム・ストレステストを実行してください(たとえば、実現ボラティリティやトレンド強度の代理指標に基づいて)。インジケーターと、あなたが選んだ評価ターゲットとの関係が、単一の期間だけでなく、レジームをまたいで成り立つかどうかを比較してください。
アウト・オブ・サンプルの確認と再現性で検証する
責任あるバックテストは、独立した検証を可能にすべきです。つまり:
- 記述された入力から、コードまたは計算手順が再現可能であること、
- 学習とテストの両方で同じインジケーターのメカニクスが使われていること、
- 分割後に再最適化せずに、アウト・オブ・サンプルの結果が計算されていること、
- 結果が不確実性を意識した考え方で報告されていること(たとえば、単一の最良実行に頼るのではなく、フォールド間で分布を比較する)。
DOCUMENT END