スーパートレンドはどのように責任ある形でバックテストできますか?
まず、バックテストしているものを正確に定義する
スーパートレンドは、価格と平均ボラティリティの指標を使ってラインを構築し、そのラインに対する市場方向を分類するトレンドフォロー型のインジケーターです。バックテストでは、インジケーターの計算と意思決定ロジックを別の要素として扱うべきです。
- インジケーターの計算: OHLCデータとボラティリティ推定値から、バンド/ラインがどのように作られるか。
- 意思決定ロジック: 価格がラインより上か下かで、何をするか(たとえば、条件が満たされたときにエントリーし、反転したときにエグジットする)。
この2つを混ぜると、スーパートレンドではなく「移動する目標(moving goalpost)」をバックテストしてしまうことがあります。
仮定を明示する
計算を再現するために必要な最小限の仮定を、次のように明確にします。たとえば:
- どの価格入力を使うか(open/high/low/close)。
- バーのタイムフレーム。
- 完成したバー(バー終値)を使うのか、それとも近似(たとえば、より早い情報を使う)を使うのか。
- テストするスーパートレンドのパラメーター値の正確な内容。
ここで多くの無責任なバックテストが失敗します。データのタイミングと意思決定のタイミングを定義していないため、結果が検証可能になりません。
安定したメカニクスと変動要因を分ける
責任あるバックテストでは、2つのカテゴリを分けて扱います。
安定したメカニクス(あなたがコントロールできるもの)
テスト前に固定できる選択肢です:
- インジケーター設定と計算ルール。
- シグナルとトレードの対応付け(エントリー/エグジットルール)。
- バックテストエンジンのルール(ポジションサイジングモデル、1回の時点で1つのポジションしか保有できるか、リバーサルの扱い)。
変動要因(インジケーターが同じでも結果が変わり得るもの)
インジケーターが同じでも、パフォーマンスに影響します:
- 市場レジーム: トレンドとレンジでは、方向転換の頻度が変わり得ます。
- コストと執行: スプレッド、スリッページ、シグナルから約定までの遅延。
- データ品質: 欠けたバー、不正確なタイムスタンプ、調整済みと未調整の価格系列。
バックテストには、これらを事後の説明ではなく、仮定または感度テストとして含めるべきです。
コストと執行のタイミングを追加して、結果が過大にならないようにする
多くのバックテストは、取引が理想的な価格で約定することを暗黙に仮定しています。代わりに、検証可能で一貫した執行モデルを指定してください。
記録すべき一般的なコスト仮定
- スプレッドモデル: 固定スプレッドの仮定を使うか、利用できるなら時間変動型のものを使います。
- スリッページモデル: すべての約定に適用するスリッページ量(または分布)を仮定します。
- 手数料/費用: モデル化する場合は、料率と課金タイミングを指定します。
バーのタイミングは重要
OHLCバーで計算されるインジケーターの場合、取引が実行できるタイミングを定義します:
- 次のバーのオープンで、シグナルの後に実行するのか、または
- 同じバーのクローズで実行するのか(これは一般にライブ執行としては現実的でない)。
バックテストが、バー終値が起きる前にそれを知っていたかのように「終値情報」を使って取引しているなら、結果は過大評価され得ます。
厳密なデータ分割と限定的な再チューニングでバイアスを抑える
「責任ある」バックテストとは、主に情報漏えいを防ぐことです。
アウト・オブ・サンプル評価を使う
典型的な手順:
- 学習/選択フェーズ: パラメータセットを試し、最終的な設定を決める。
- 評価フェーズ: 最後まで触れず、最後に一度だけ結果を測定する。
ノイズに過適合するため、全データでチューニングするのは避けてください。
ウォークフォワード(ローリング)チェックを適用する
ウォークフォワード評価は、誤って特定の過去期間に適合してしまう可能性を下げます。たとえば、繰り返し:
- ウィンドウでフィット/パラメータを選ぶ、
- 次のウィンドウで評価する、
- 前進させてロールし、繰り返す。
その後、複数回の分割にまたがってパフォーマンスが一貫しているかを確認すべきです。
単一の要約数値以上の証拠を使う
メカニクスを正しく守っていても、1つのパフォーマンス指標が誤解を招くことがあります。
複数のアウトカム次元を追跡する
次のような測定を検討してください:
- ドローダウンと最悪期の損失、
- シグナルの反転頻度(コストへのチャーン感度の代理指標)、
- 異なる市場条件にまたがるリターンの分布。
制御された感度で頑健性をテストする
無限に探索するのではなく、計画した感度チェックを行います。たとえば次を変える:
- スーパートレンドのパラメータを小さく、事前に定義した範囲内で変化させる、
- バーのタイムフレーム、
- 執行の前提(例:より大きいスリッページ)。
小さく妥当な変更で結果が崩れるなら、それは重要な制限です。
少なくとも1つの重大な失敗モードを認識する
責任ある書き方では、スーパートレンドがどこで破綻し得るかを明記します。
含めるべき失敗モードの例
- もみ合い/レンジのレジーム: 方向転換がチャーンを増やし、コストが支配的になる。
- パラメータ感度: 設定を少し変えるだけで、バンドの挙動やトレード頻度が変わり得る。
- タイミングの不一致: 現実的でない約定タイミングを使うと、脆いアイデアが一見安定しているように見えてしまう。