Skip to content

Kaufman Efficiency Ratio

Intuição

O Kaufman Efficiency Ratio (ER) mede quão “eficiente” foi o movimento do preço dentro de uma janela.

  • Perto de 1: o preço se moveu de forma direcional (pouco vai-e-vem)
  • Perto de 0: muito ruído / chop (muito vai-e-vem para pouco deslocamento líquido)

Definição

Para preço P_t e janela n:

  • Change = |P_t - P_{t-n}|
  • Volatility = sum_{i=t-n+1..t} |P_i - P_{i-1}|
  • ER = Change / Volatility

Uso

from quantmaster.features.trend import kaufman_efficiency_ratio

df["ker_10"] = kaufman_efficiency_ratio(df, window=10)

API

Source code in src/quantmaster/features/trend.py
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def kaufman_efficiency_ratio(
    data: pd.DataFrame | pd.Series,
    *,
    window: int = 10,
    price_col: str = "close",
) -> pd.Series:
    window = validate_positive_int(window, name="window")

    price = get_price_series(data, price_col=price_col).astype(float)

    change = (price - price.shift(window)).abs()
    volatility = price.diff().abs().rolling(window).sum()

    out = change / volatility.where(volatility > 0)
    out.name = f"kaufman_efficiency_ratio_{window}"
    return out