ストキャスティクス戦略はどのように計算されるか
直接の答え
ストキャスティクス戦略(しばしば「ストキャスティクス・オシレーター」アプローチとして議論されます)は、直近の価格のローリング・レンジ(高値〜安値の範囲)の中で最新の価格がどこに位置するかを見つけることで計算されます。一般的な出力はパーセントで表される値で、%K は参照期間(lookback window)における最も低い安値と最も高い高値の間で価格がどこにあるかを測り、%D は通常、移動平均を使って %K を平滑化したものです。
異なるプラットフォームでは平滑化や価格の選び方の厳密なルールが異なるため、計算は指標の設定に合わせて検証するのが最適です。つまり、参照期間の長さと、%K と %D がどのように平滑化されるかを一致させます。
メカニズムと定義
1) 入力価格を選ぶ
多くのストキャスティクス風の式では、「レンジの中に位置させる」価格を選ぶ必要があります。よくある選択肢は次のとおりです。
- 終値(最も典型的)
- 高値/安値の組み合わせ(簡略化された説明ではあまり一般的ではありません)
計算を再現可能にするためには、使う入力を正確に明記する必要があります(たとえば「分子には終値を使います」など)。
2) ローリング・レンジ(参照期間)を定義する
参照期間の長さを選びます。これはしばしば %K の長さ、または period と呼ばれます。各タイムステップ(バー)ごとに次を計算します。
- LowestLow = 過去 N 本のバーにおける最小の安値
- HighestHigh = 過去 N 本のバーにおける最大の高値
HighestHigh が LowestLow と等しい場合、レンジ幅は 0 になります。この場合、オシレーター値は純粋な式では未定義です。実装では通常、デフォルト値(たとえば 0 や「利用不可」値)を出すか、レンジが非ゼロになるまでスキップします。
3) %K(レンジ内での位置)を計算する
標準的なストキャスティクス風 %K の式は次のとおりです。
%K = 100 × (Price − LowestLow) / (HighestHigh − LowestLow)
ここで:
- Price は、現在のバーにおける選択した入力価格
- LowestLow と HighestHigh は、ローリング N バーのウィンドウから得られる
これにより、価格がローリングの極値の範囲内にある限り、通常 0 から 100 の間に収まる値が得られます。
4) %D(平滑化された %K)を計算する
多くの「ストキャスティクス戦略」の説明には、%K を平滑化して作る 2 本目の線として %D が含まれます。典型的な形は次のとおりです。
%D = M 期間にわたる %K の移動平均
移動平均は単純移動平均(SMA)である場合もあれば、プラットフォームに応じて別の平滑化手法である場合もあります。同じ %D を再現するには、平滑化タイプと M の期間を一致させる必要があります。
5) 任意の「スローイング」パラメータ(実装上の詳細)
一部のバージョンでは、%D を計算する前に %K に対して追加の平滑化ステップが含まれます。これはしばしば「スローイング」または生の %K の追加平均として説明されます。これにより、参照期間 N が同じでも応答性が変わり、結果としてカーブも変わります。
再現できる証拠または例
以下は標準的な構造を使った数値例です。日足の OHLC データがあると仮定し、次を定義します。
- 参照期間 N = 5 本
- 価格 = Close
- 簡単のため、%K のみ計算します(%D は脇に置きます)
現在の日において、直近 5 日が次のようになっているとします。
- LowestLow = 1.1000
- HighestHigh = 1.1200
- 現在の Close(Price)= 1.1100
すると:
- HighestHigh − LowestLow = 1.1200 − 1.1000 = 0.0200
- Price − LowestLow = 1.1100 − 1.1000 = 0.0100
%K = 100 × (0.0100 / 0.0200) = 50
実際に検証するには:
- プラットフォームの正確な N 設定を使います。
- 同じタイムバーについて、その N バーのウィンドウから定義に従って HighestHigh と LowestLow を計算します(「high」「low」の定義をそのまま使う)。
- プラットフォームで選択された Price 入力を使って %K の式を適用します。
- プラットフォームが %D を表示する場合は、同じ平滑化ルール(SMA か別の方法か、そして M の長さ)で繰り返します。
値が一致しない場合、その不一致の原因はほぼ確実に次のいずれかです。価格入力、ウィンドウ長、平滑化タイプ、またはプラットフォームがゼロレンジのエッジケースをどう扱うか、です。
制限とリスク(何が壊れ得るか)
-
参照期間長への感度 小さい参照期間 N は新しい高値や安値に素早く反応し、大きい N はレンジ挙動を滑らかにします。N を変えると、基となる価格が同じでも %K は変わります。
-
ノイズとミクロ構造への感度 この手法はローリングの最大値と最小値に依存するため、短期のスパイクや下落に対して鋭く反応することがあります。ノイズ特性が異なる 2 つの市場(または 2 つのデータセット)では、オシレーターの経路が大きく異なる可能性があります。
-
データ品質と定義の不一致 結果を再現するには、OHLC の定義とバーの作り方を一貫させる必要があります。たとえば、異なるタイムスタンプを使う、バーが欠ける、調整済みデータと未調整データを使うと、高値・安値が変わり、その結果ローリング・レンジも変わります。
-
ゼロレンジのエッジケース(ゼロ除算) 参照期間の間で HighestHigh が LowestLow と等しい場合、式の分母が 0 になります。実装によって、出力がどうなるか、またはレンジが非ゼロになるまで値を空欄にするかが異なります。
-
予測的な意味を保証しない 計算が正しくても、得られたオシレーター値が未来の結果を本質的に保証するわけではありません。過去の関係は将来の結果を示すものではなく、パフォーマンスは執行、コスト、特定のデータサンプリングなど多くの外部要因に依存します。
検証と次の質問
「ストキャスティクス戦略」の計算を独立に検証するには:
- プラットフォームのパラメータを記録します:%K の参照期間長、%D の平滑化期間(および平滑化タイプ)、そして選択した価格入力。
- ローリングの HighestHigh/LowestLow と式 %K = 100 × (Price − LowestLow) / (HighestHigh − LowestLow) を使って %K を再計算します。
- %D が表示される場合は、プラットフォームの平滑化メソッドと期間で再計算します。
必要なら、プラットフォーム上で見えるパラメータ名(たとえば %K と %D の長さ、平滑化が SMA か EMA か、または別の方法か)を共有してください。そうすれば、計算手順をそれらの設定に正確に合わせられます。
DOCUMENT END