ウィリアムズ %R(ウィリアムズR)の高度な考慮点
ウィリアムズ %Rが何を測り、なぜ重要なのか
ウィリアムズ %R(しばしばウィリアムズRと表記されます)はモメンタム・オシレーターです。これは、選択したルックバック期間における最高値と最安値に対して、現在の終値がどこに位置するかを表します。
高度な考慮点は、まず「指標が機械的にできること」と「できないこと」を分けることから始まります。機械的には、ウィリアムズ %Rは直近の高値–安値のレンジと現在の価格位置を、境界のある数値に変換します。指標単体では、それ自体が方向性を予測したり、正確性を保証したり、市場の不確実性を取り除いたりはできません。
重要な解釈の細部として、最も一般的なオシレーターの慣例では、ウィリアムズ %Rの値は負で、式がルックバック・ウィンドウの最高値と最安値を使う場合、通常は -100 から 0 の範囲になります。片方の極端に近い値は、将来の価格が固定の道筋をたどることを意味するのではなく、そのルックバック・レンジのもう一方の極端に近いことを意味します。
メカニクス:入力、式の形、スケーリング
基本定義(レンジ内の位置)
ウィリアムズ %Rを計算するには、各タイムスタンプごとに次の3つの要素が必要です:
- ルックバック・ウィンドウ内の最高値(HighestHigh)
- ルックバック・ウィンドウ内の最安値(LowestLow)
- 現在の終値(CurrentClose)
典型的な定式化は次のとおりです:
Williams %R = -100 × (HighestHigh - CurrentClose) / (HighestHigh - LowestLow)
これは、CurrentCloseがHighestHighからどれだけ離れているかを、ルックバック・ウィンドウ全体の高値–安値のスプレッドで正規化して表します。
実装時に必ず明示すべき前提
どの実装でも、少なくとも次の点について一貫性が必要です:
- 使う価格:終値か、別の価格(始値、高値、安値)か。異なるプラットフォームではデフォルトが異なる場合があります。
- ルックバック・ウィンドウ:HighestHighとLowestLowに含めるバー/期間の数。
- バーの整列:現在のバーが、想定どおりにウィンドウへ含まれるか(特にライブ計算)。
これらの前提が、あなたの考えと異なる場合、オシレーターの値が十分にずれて、解釈が変わってしまう可能性があります。
エッジケース:フラットなレンジと未定義の除算
重大な制限は、ルックバック・ウィンドウにおいてHighestHighがLowestLowと等しい場合に現れます。この場合、分母(HighestHigh - LowestLow)が0になるため、計算は未定義になります。
高度な取り扱いの選択肢は、指標の真実ではなく実装上の選択です:
- 多くのシステムでは、そのウィンドウで欠損/NaN値を出します。
- あるシステムでは、過去の値を引き継いだり、結果をクランプしたりする場合があります。
ツール間でシグナルやバックテストを比較するなら、未定義ウィンドウの扱いの違いが、純粋に技術的な理由で見かけ上のパフォーマンス差を生むことがあります。
スケーリングの一貫性と符号の慣例
ウィリアムズ %Rは通常負の値です。いくつかのチャートツールでは、反転表示したり、再スケールしたりします。たとえば「上限または下限に近い」と解釈するためにしきい値を使う場合、そのプラットフォームの表示が式の符号の慣例と一致していることを確認する必要があります。
高度な要点:正しい理解は、基礎となる数学的定義だけでなく、表示される変換(符号、軸スケーリング)にも同じくらい依存します。
証拠または例:単純な数値モデルで挙動を確認する
ライブデータを前提にできないため、小さく自己完結したデータセットで検証するのが有用です。
明示的な前提の例
次のように仮定します:
- ルックバック・ウィンドウの極値:HighestHigh = 1.2000、LowestLow = 1.1800。
- CurrentClose = 1.1950。
すると、高値–安値のスプレッドは:
- HighestHigh - LowestLow = 1.2000 - 1.1800 = 0.0200。
分子を計算します:
- HighestHigh - CurrentClose = 1.2000 - 1.1950 = 0.0050。
したがって:
- Williams %R = -100 × 0.0050 / 0.0200 = -25。
メカニクスだけからの解釈:-25は、CurrentCloseが、そのウィンドウ内でLowestLowよりもHighestHighに相対的に近いことを意味します(この定式化では、-100はCurrentCloseがHighestHighにあることに対応し、0はCurrentCloseがLowestLowにあることに対応するため)。
価格がレンジ内で動くと何が変わるか
CurrentCloseがHighestHighに向かって上昇し、HighestHighとLowestLowが変わらないなら、分子は縮み、値は-100に近づきます。CurrentCloseがLowestLowに向かって下がるなら、分子は大きくなり、値は0に近づきます。
これは内部整合性のチェックです:チャートが逆方向の動きを示している場合、そのチャートは別の式バリアントを使っている可能性が高く、別の符号の慣例、または別の価格入力を使っている可能性があります。
制限とリスク:期待をよく裏切る高度な考慮点
1) 時間足とルックバック選択が意味を変える
ウィリアムズ %Rは選択したルックバック・ウィンドウに依存します。ルックバック長を変えるとHighestHighとLowestLowが変わり、正規化の基準が変わります。その結果、同じ価格パスでも、設定によってオシレーター値が大きく異なる形にマッピングされ得ます。
式が正しくても、時間足をまたいだ不変性を前提にすると、解釈が破綻することがあります。
2) ボラティリティと「レンジ幅」の影響
ルックバック範囲が広いと、CurrentCloseは「中間」に見え、オシレーターが極端から離れたままになることがあります。レンジが狭い(ただしゼロではない)場合、小さな価格変動でもオシレーターが素早く極端へ向かう可能性があります。
これは、耐久的な方向性の期待がなくても、きつく束縛されたレンジや低レンジの条件で、極端な読みが頻繁に出るパターンを生み得ます。
3) フラット、またはほぼフラットな市場は未定義または不安定な挙動を作る
厳密な未定義ケースはHighestHigh = LowestLowです。分母が非常に小さい近いケースもあります。その場合、CurrentCloseのわずかな違いが、正規化のためにウィリアムズ %Rの大きな振れを生みます。
つまり、バックテストで「反応が良い」ように見える実装は、モメンタムの意味のある変化というより、レンジの希少性を反映しているだけかもしれません。
4) コスト、執行、データ品質は指標の外側にある
ウィリアムズ %Rは過去のバー・データから計算され、取引コスト、ビッド–アスク・スプレッド、スリッページ、または注文執行の影響を組み込みません。実際の取引環境では、これらの要因が結果を支配し得ます。
これは指標の欠陥ではなく検証要件です。パフォーマンス評価は、現実的な前提と一貫したデータ取り扱いを使う必要があります。
5) 歴史的な関係は将来の結果を保証しない
ウィリアムズ %Rのようなオシレーターは、しばしば遡及的な観察(たとえば、特定の出来事の前後で値がどう振る舞ったか)とともに語られます。しかし、歴史的な関係は将来の挙動を保証しません。特に、市場構造、ボラティリティのレジーム、または取引条件が変わる場合はなおさらです。
見かけ上の優位性(エッジ)を仮説として扱い、厳密で反復可能な方法で検証してください。
検証と次の質問:事実を独立に確認する方法
計算をエンドツーエンドで検証する
ウィリアムズ %Rを正しく使っていることを独立に検証するには:
- チャートツールが使っている正確な式バリアントと符号の慣例を確認する。
- 知っている小さなデータセットを使い、いくつかのタイムスタンプについて手計算で値を算出する。
- HighestHighがLowestLowと等しいときに、そのツールがエッジケースをどう扱うか(欠損値、引き継ぎ、または別のルール)を確認する。
DOCUMENT END