フォレックスにおけるカウフマン効率比(KER)の仕組み
定義:カウフマン効率比(KER)が測っているもの
カウフマン効率比(しばしばKERと略されます)は、直近の時間窓において価格がどれだけ直接的に動いたかを説明するためのテクニカル指標です。平たく言えば、その窓の開始から終了までの間の値動きが、比較的少ない往復で進んだのか、それとも価格があちこちに彷徨ったのかを問うものです。
KERは一般に「効率(efficiency)」の指標として捉えられます:
- 価格がある水準から別の水準へ、ほとんど逆行する動きなしに移動する場合、その動きはより「効率的」と見なされます。
- 価格が大きく振れ、まだ開始時点付近の近くで終わっているにもかかわらず、方向転換を頻繁に繰り返す場合、その動きはより「効率的ではない」と見なされます。
価格系列と選択したルックバック期間に基づいているため、KERはその系列の過去部分を表します。これはそれ自体では、将来の挙動を保証するものではありません。
中核となるモデル:入力と計算の流れ
実装はプラットフォームによってわずかに異なりますが、仕組みは同じ構造です。つまり、窓の中での「純粋な(ネット)動き」と「総動き」を比較します。
よくある定式化では、ルックバック長Nと価格系列(たとえば終値、あるいは提供元によってはミッドポイントなど別のフィールド)を用います。
手順1:ルックバック窓とデータを選ぶ
KERを計算する前に、明示的に決めておく必要がある前提があります:
- 価格入力:どの系列を使うか(例:終値から終値)。
- ルックバック長(N):何本のバー/ローソク足を含めるか。
- バーの整合(アラインメント):Nが開始バーと終了バーを一貫して数えるかどうか。
これらの選択を変えると、同じチャートでもKERの値は変わります。
手順2:窓の中でのネットの動きを計算する
ネットの動きは、窓の最初と最後の価格の間の絶対変化です。
概念的には:
- Pstart を窓の開始時点の価格とする。
- Pend を窓の終了時点の価格とする。
- ネットの動きは abs(Pend − Pstart)。
この項は、価格がどこからどこへ移動したかの「距離」を捉えます。
手順3:窓の中での総動きを計算する
総動きは、同じ窓の間における絶対のステップ変化を合計したものです。
概念的には:
- Nバーの窓で、連続する価格を考えます:P1→P2、P2→P3、…
- 各ステップについて abs(Pi − P(i−1)) を計算します。
- それらの絶対のステップ変化を合計して総動きを求めます。
この項は、リバーサル(反転)が絶対値を通じて正の寄与をするため、往復の動きの大きさを捉えます。
手順4:比率を作る(効率)
KERは次のように計算されます:
- 効率比(Efficiency Ratio)=ネットの動き ÷ 総動き
比率の解釈は数学から導かれます:
- 同じ区間で、総動きが絶対のステップ変化から計算される場合、ネットの動きは総動きより大きくなることはありません。
- したがって、標準的な実装では比率はしばしば0から1の範囲に収まります。
手順5:例外(エッジケース)を扱う
重要な制限は ゼロ除算のリスク です。
- 総動きがゼロ(たとえば、選択した窓の中で連続するすべての価格が同一)なら、ネットの動きも通常はゼロとなり、比率は定義できません。
- プラットフォームによって扱いは異なります(例:ゼロを返す、NaNを返す、または直前の値を保持する)。
あなたの側でKERを検証するには、あなたのプラットフォームがこの状況をどう扱うかを知る必要があります。
実例による検証(明示的な前提つき)
以下は、結果を予測するためではなく、仕組みを示すために設計された例です。
前提
- 価格入力:終値。
- ルックバック窓 N = 4本のバー。
- 連続する5つの終値があります(連続するバーの間にステップが存在するため):
- P0 = 1.2000
- P1 = 1.2010
- P2 = 1.1990
- P3 = 1.2020
- P4 = 1.2030
手順A:ネットの動き
- Pstart = P0 = 1.2000
- Pend = P4 = 1.2030
- ネットの動き = abs(1.2030 − 1.2000) = 0.0030
手順B:総動き
絶対のステップ移動を合計します:
- abs(P1 − P0) = abs(1.2010 − 1.2000) = 0.0010
- abs(P2 − P1) = abs(1.1990 − 1.2010) = 0.0020
- abs(P3 − P2) = abs(1.2020 − 1.1990) = 0.0030
- abs(P4 − P3) = abs(1.2030 − 1.2020) = 0.0010
総動き = 0.0010 + 0.0020 + 0.0030 + 0.0010 = 0.0070
手順C:比率
- KER = 0.0030 ÷ 0.0070 ≈ 0.4286
機械的に言うと、これは次を示します:
- 価格は開始よりも高いところで終わっていますが、その途中には目立つリバーサルがありました(より大きい総動きとして捉えられます)。したがって、効率比は1に近いというより中程度です。
重要な制限と失敗パターン
KERは記述的な指標として有用ですが、独立検証の観点で重要な制限があります。
1) 選択したルックバック長(N)への感度
ネットの動きも総動きもN本のバーで計算されるため、Nを変えると比率が変わります。条件によっては、短い窓ではリバーサルが蓄積する時間が少ないため、たまたま「効率的」な動きに見えることがあります。逆に長い窓では反対の結果になることがあります。
2) 価格系列とバーの構築への依存
異なるプラットフォームでは、KERを計算する際に異なる価格フィールドを使う場合があります(例:終値、典型価格、または別の変換)。また、バーの集計(タイムフレームの変更)によって観測されるステップ移動が変わります。
つまり、基となる入力系列と窓の定義が一致していることを確認しない限り、プロバイダー間でKERの値を比較できません。
3) レンジ相場やノイズの多い市場は誤解を招く解釈を生むことがある
レンジ相場では、価格がある水準の周りで揺れ動きつつ、窓の間ではわずかにドリフトすることがあります。総動きは、繰り返されるリバーサルによって素早く増えるため、ネットの変化が小さい場合でもKERは低いままになり得ます。
逆に、安定してトレンドが続く局面では、絶対のステップ移動が概ねネットの方向に沿うため、KERは高くなりやすくなります。
要点は:KERは、その窓の中で「どれだけ直接的に」動いたかを反映するものであり、将来のどのアクションの収益性を示すものではない、ということです。
4) 総動きがゼロのときの未定義または不安定な値
前述の通り、ルックバック窓で総動きがゼロなら比率は未定義になります。プラットフォームがフォールバック値を提供していても、その挙動が検証に影響します。
5) 市場構造とコストは含まれない
KERは、過去の価格ステップだけから計算されます。取引コスト、ビッド/アスクのスプレッド、スリッページ、執行上の制約は含まれません。したがって、価格移動の機械的な「効率」が、そのまま実装可能な結果に自動的につながるわけではありません。
あなたの側でKERを検証する方法
KERは式ベースなので、あなたのチャートが使っている同じバーに対して再計算することで、独立して検証できます。
DOCUMENT END