MACD戦略はどのように責任ある形でバックテストできますか?
「責任ある」MACDバックテストとはどういう意味か
責任あるバックテストとは、ルールベースのMACD戦略を、他者があなたの正確な計算、前提、評価手法を再現できる形で、過去の価格データに対してテストするプロセスです。さらに、その結果を不確実なものとして扱います。つまり、過去の実績は将来の結果を保証せず、異なる市場、執行条件、またはパラメーターの選択によって結果が変わり得ます。
そのために、変わらないメカニクスと変動する条件を分けます。変わらないメカニクスとは、インジケーターの計算と、あなたが書く戦略ルールです(たとえば、MACDクロスオーバーが「true」とみなされるタイミングなど)。変動する条件には、市場レジーム、流動性、ビッド・アスクスプレッド、注文執行の遅延、そして追加コストなどが含まれます。
メカニズム:入力、前提、そして何を測るのか
MACDインジケーターは通常、価格の2つの移動平均と、派生した「差分」系列を使い、必要に応じてシグナルラインやヒストグラムを伴います。一般的な式を知っていても、責任あるバックテストは、あなたが使った正確な選択を明示することから始まります。
これらの項目を明確に定義してください:
- データ:時間軸(例:分足か日足か)と、ミッドポイント/終値/アスク/ビッドのどれを使うか。OHLCバーしか手元にない場合は、約定(フィル)がどのように近似されるのかを述べる必要があります。
- インジケーターのパラメーター:移動平均の種類、参照期間(ファスト/スロー)、シグナルの平滑化長、そして任意のスケーリング。
- 戦略ルール:エントリー/エグジットの正確なロジック。たとえば、MACDがシグナルラインと等しいとき(同値の扱い)どうするか、またバーの終値で行動するのか、イントラバーで行動するのか。
- ポジションモデル:完全に投資しているかどうか、ポジションサイズの決め方、そしてリバーサル(反転)への対応。
- コスト:スプレッドや手数料など、含める取引コストと摩擦。スプレッドを直接モデル化できない場合は、使う代理(たとえば、1回の取引あたりの固定コスト)と、その前提に対する結果の感度を説明する必要があります。
測定すべき内容は目的に一致しているべきです。一般的な指標には、総リターン、ドローダウン、勝率、平均取引期間などがあります。責任あるアプローチでは、取引回数や市場にいる時間といった運用指標も記録します。これらはコストと強く相互作用するためです。
エビデンスまたは例:バイアス制御付きのアウト・オブ・サンプル構造
誤解を招く結果を減らす実践的な方法は、リアルタイムで意思決定していたであろう状況を模倣する評価設計を使うことです。
- 最終テスト期間を確保し、パラメーター選定の間は一切触れない。
- パラメーター調整は別のトレーニング/バリデーション期間でのみ行う(またはウォークフォワードの分割を使う)。固定された手順で実施する。
- すべての分割で同じ意思決定ルールとコスト前提を使う。
- 分割ごとに結果を報告し、見出しとなる1つの数値だけにしない。
バイアス制御が重要なのは、バックテストはしばしば偶然によって「改善」してしまうからです:
- 先読みバイアス:執行時点では知り得なかったはずの同じバーの情報を使うこと。
- サバイバーシップ・バイアスおよび選択バイアス:たまたまうまくいった市場や期間に限定すること。
- 過学習:トレーニングセットのノイズに合わせてパラメーターを選ぶこと。
これらを制御するには、次のようにすべきです:
- 複数の分割をテストする前に、インジケーター計算と意思決定ロジックを固定(フリーズ)する。
- パラメーター探索の範囲を限定し、文書化する。
- 適切な場合は、複雑さが過学習を隠し得るため、より単純なルール解釈を優先する。
コスト・フィーチャー確認(簡単なストレステスト)
ベースラインの結果を計算した後、コストのストレステストを実行します。たとえば、より高い想定スプレッド/手数料と、わずかに遅延した執行を用いて再評価します。これは「戦略が失敗する」ことを証明するものではありませんが、見かけの優位性が非現実的に有利な条件に依存していないかを特定するのに役立ちます。
限界とリスク:少なくとも1つの重大な失敗モード
慎重に作業しても、MACDバックテストは基本的な結果表では見えない理由で失敗することがあります。重大な失敗モードの1つは レジームシフト です。モメンタムとクロスオーバーの挙動は、特定のボラティリティやトレンド条件では機能する一方で、市場の力学が変わると劣化する可能性があります。
その他の重要な限界:
- 執行の現実性:バーに基づくバックテストでは、特に急激な値動きや流動性が低い局面で、実現不可能な価格で約定したと仮定してしまうことがあります。
- ミクロ構造の省略:スプレッドやスリッページは一定ではありません。固定としてモデル化すると、パフォーマンスを過大評価する恐れがあります。
- パラメーターの不安定性:MACDの長さを少し変えるだけでシグナルが大きく変わり得るため、結果が一般化しない可能性があります。
- 非定常性:インジケーターの挙動と結果の間の歴史的な関係は、時間とともに変化し得ます。
これらの不確実性があるため、バックテストの出力は将来のパフォーマンスの証明ではなく、あなたの前提とモデルに関するエビデンスとして扱うべきです。