ウルサー指数(Ulcer Index)を責任ある形でバックテストするには?

データコストのバイアス検証を含めて、ウルサー指数(Ulcer Index)を責任ある形でバックテストする方法を学びます。

ウルサー指数(Ulcer Index)を責任ある形でバックテストするには?

テストする前にウルサー指数(Ulcer Index)を定義する

ウルサー指数(Ulcer Index)はドローダウンに基づく統計量です。概念的には、価格系列が直近の高値(ピーク)を下回っている「どれだけ深く、どれだけの期間」続くかを要約します。バックテストにおいて重要なのはラベルではなく、あなたが実装する正確な定義です。つまり、どの「ピーク」を参照するのか、どの頻度でデータをサンプリングするのか、どのウィンドウ(窓)や期間を使うのか、そしてドローダウン系列が最終的な数値にどう変換されるのか、という点です。

責任あるアプローチは、再現する計算手順を書き出すことから始まります。手順全体を正確に説明できないなら、信頼できるテストはできません。指標を、入力から値を算出する「計測ツール」として扱い、単独の売買シグナルとして扱わないでください。

指標の安定した仕組みと、変動する条件を分ける

バックテストの精度は、指標の仕組みと、市場や執行(execution)条件の変化を混ぜてしまうと失敗しがちです。

これらの懸念は分けて考えてください:

  • 指標の入力(inputs): ドローダウンを計算するために使う価格系列、リサンプリング頻度、ウルサー指数(Ulcer Index)のウィンドウ。
  • バックテスト環境: 値が「いつ分かるのか」(タイミング)、注文がどう約定するのか、そしてどの摩擦(フリクション)が適用されるのかに関する前提。
  • 意思決定ルール(ある場合): 指標の出力を、評価指標(evaluation metric)へどう変換するか。

たとえ売買ルールを作っていなくても、目的(objective)を定義する必要があります。たとえば、ウルサー指数(Ulcer Index)が高い期間が、基となる系列におけるより大きなドローダウンと一致しているかどうかを評価するかもしれません。これは予測ではなく、関係性の確認です。

データとコストの前提を明示する

責任あるバックテストでは前提を文書化します。よくある前提カテゴリは次のとおりです:

1) データ範囲と連続性

  • 一つの、整合した(単一の)歴史データ系列を使う。
  • 欠損データや、企業・構造上の変更の前後で何が起きるかを決める(FXでは主に、データの連続性と、系列がどのように構築されているかがポイントになります)。

2) サンプリングとタイミング

  • ウルサー指数(Ulcer Index)を、バー終値で計算するのか、イントラバーで計算するのか、あるいは別の慣例で計算するのかを定義する。
  • 「意思決定の時点(decision time)」が、その時点以降に得られる情報を使えないことを確認する。

3) コストと摩擦(フリクション) 評価に指標から何らかの行動が含まれるなら、評価指標(evaluation metric)に現実的な摩擦を含めてください。典型的に重要な摩擦は、スプレッド、手数料、スリッページです。教育目的であってパフォーマンス重視ではない場合でも、コストを無視した結果だけが強く見えるのを防ぐために、コストを含めることが役立ちます。

明示的な失敗チェックでバイアスを制御する

バイアスは、指標のバックテストにおける大きな失敗要因です。テストを壊そうとする(破綻させようとする)チェックを含めてください。

先読みバイアス(Look-ahead bias) 時刻 t で使うウルサー指数(Ulcer Index)の値が、時刻 t までに利用可能だったデータだけから計算されていることを確認してください。よくある誤りは、意思決定がバー終値でしか可能でないのに、バー全体の価格パスを使って計算してしまうことです。

過学習(複数テスト)バイアス(Overfitting / multiple testing) 多くのパラメータ設定(ウィンドウ長、しきい値、ルール)を試すと、ノイズに合うセットアップを選んでしまうことがあります。探索範囲を制限するか、パラメータ選定と最終評価を分けてください。

選択バイアス(Selection bias) 「うまくいった」期間だけを評価しないでください。事前に定義した評価期間を使うか、ウォークフォワード手順を用いてください。

責任ある形で実務的に行う方法として、何がうまくいかない可能性があるか(タイミングの誤り、パラメータのリーク、コストの省略)をチェックリスト化し、結果を解釈する前にそれぞれを検証することが挙げられます。

ローアウト・オブ・サンプル(out-of-sample)で頑健性を確認する

過去の関係性は将来の結果を保証しません。発見が特定の期間の偶然の産物である可能性を減らすために、パラメータ選定に使わなかったデータで評価してください。

よくある不変(evergreen)な構造は次のとおりです:

  • 学習/検証/テスト分割(Train/validation/test splits): 学習でパラメータを選び、検証でのみ確認し、その後テストで確定する。
  • ウォークフォワード(ローリング)評価: 以前のデータだけでパラメータを繰り返し再推定し、その後の期間で評価する。

評価のための単一のパフォーマンス指標(performance metric)を定義してください。たとえば、ドローダウンだけを研究しているなら、実現したドローダウンの深さをウルサー指数(Ulcer Index)の水準と比較するかもしれません。指標は、実験間で安定させてください。

少なくとも1つの重要な制限を知る

明確な制限は、ウルサー指数(Ulcer Index)がドローダウン情報を1つの数値に圧縮してしまうことです。これにより分布の詳細が隠れてしまう可能性があります。同じようなウルサー指数(Ulcer Index)値を共有していても、リバウンドの速さ、ピーク周辺でのボラティリティ、極端な値動きのクラスタリングが異なる2つの期間があり得ます。

また、指標の挙動は市場レジームによって変わることがあります。バックテストに1つのレジームしか含まれていない場合(たとえば、主に落ち着いた条件だけ)、条件が変わると関係性が成り立たないかもしれません。

外国為替およびCFD取引には大きなリスクがあります。FoxiForexの情報は教育目的であり、個別の金融助言ではありません。スポンサー掲載は明確に表示されます。