Williams %Rはどのように責任ある形でバックテストできますか?
バックテストの前にWilliams %Rを定義する
Williams %R(多くの場合「Williams R」と表記されます)は、モメンタム型のインジケーターで、現在の終値を、選択したローキングウィンドウにおける最高値と最安値と比較します。このコアとなる考え方は、価格が直近の取引レンジのどこに位置しているかを正規化することであり、異なる価格水準間でも値が解釈しやすくなるようにします。
バックテストの前に、使用する計算の選択肢を正確に書き出してください。というのも、小さな違いが結果を変えてしまうからです:
- ローキング長(最高値と最安値を見つけるのに使うバー数)。
- 「現在」ポイントに使う価格(通常はそのバーの終値)。
- 最高値/最安値の定義(現在のバーを含めるか除外するかは、あなたの方法に従って決めます)。
明示しておくべき仮定:バックテストデータと、その後の検証の両方で、同じバー頻度と同じ「高値」「安値」の定義を使っていることです。
意図した現実に一致するバックテスト用データセットを作る
責任あるバックテストは、擁護できるデータ仮定から始まります。
次のデータ関連の項目を考えてください:
- バーの構築:固定時間バー(例:1時間足のローソク足)を使うのか、あるいは別のスケジュールを使うのかを決めます。バーの種類を変えると、インジケーター値は変わります。
- 企業・銘柄の影響:データセットに、過去の連続性がきれいでない銘柄が含まれている場合、結果が歪むことがあります。FXのように(契約がロールする)系列でも、説明できる形で不連続性を考慮すべきです。
- 取引ユニバースの一貫性:複数の銘柄をテストするなら、時間を通じてユニバースを一貫させるか、新規上場の扱いをどうするかを正当化する必要があります。
不確実性に関する注記:過去の関係は将来の結果を保証しません。「正しい」計算であっても、市場の振る舞いが変わるために失敗することがあります。
インジケーター検証の一部としてコストと執行タイミングをモデル化する
バックテストは、摩擦を無視するために、本来より良く見えることがよくあります。Williams %Rについては、インジケーターを「取引が無料でできる」かのように扱うことはできません。
モデル化すべきコストと執行の選択肢(明示的な仮定付き):
- スプレッド/取引コスト:完了した各取引からコストを差し引くための一貫した方法を使います。
- スリッページ:理想的な約定に対して不利な執行をどう近似するかを決めます。
- 注文のタイミング:インジケーター値を生み出した終値で取引できると仮定するのか、それとも次のバーで取引するのかを指定します。これは、偶発的な「先読み(look-ahead)」の主要な原因です。
明示的な仮定の例:「シグナルはバー終値の値から計算され、取引は次のバーの始値でエントリーされる。」これを行わない場合、利用可能ではなかった情報を意図せずに前提としてしまう可能性があります。
パラメータ規律とアウト・オブ・サンプル確認でバイアスを抑える
Williams %Rのバックテストは、1つの過去期間に合わせるようにパラメータを調整すると、脆くなることがあります。責任ある実務では、その「過学習」リスクを減らすことに焦点を当てます。
主要なコントロール:
- 学習期間とテスト期間を分ける:1つの区間(学習)でパラメータセットを選び、その後別の区間(テスト)で評価します。
- ウォークフォワード検証:ローリングウィンドウで繰り返し学習し、次のウィンドウでテストします。これは、ルールを時間とともに更新していたであろう状況を模倣するのに役立ちます。
- 調整するノブの数を制限する:ローキング長、閾値、追加フィルターを多数テストすると、偶然うまくいく設定が見つかる確率が高まります。
重大な失敗パターン:戦略がイン・サンプルでは強い成績を示しても、再現可能な効果ではなくノイズを学習してしまったために、アウト・オブ・サンプルではうまくいかないことがあります。
「シグナル」が何を意味するかを定義する—単独の予測力を主張せずに
インジケーターの値だけでは、取引ルールではありません。責任あるバックテストでは、インジケーターの挙動を意思決定へ変換するルールを定義する必要があります。これには以下が含まれます:
- エントリー/エグジットのロジック(たとえば、Williams %Rの条件が成立したときにポジション変更を行う)。
- ポジションサイジングの仮定(固定サイズ、固定リスク、または別のルール)。
- 保有と再エントリーのルール(エグジット後にどう振る舞うか)。
認めるべき制限:あるデータセットで意味があるように見えるインジケーターの閾値は、別のデータセットへは移転しないかもしれません。検出された関係は、仮説として扱ってください。
バックテスト・エンジンとは独立した検証を使う
最後に、検証は、結果が特定の実装のアーティファクトではないことを確認するのに役立ちます。
実施できる独立したチェック:
- インジケーター値を独立に再計算する:小さなサンプルでWilliams %Rの計算を検証し、式やインデックスのミスを見つけます。 - 分布を健全性チェックする:直近の高値と安値に対して%R値が期待どおりに振る舞うことを確認します(例: