Skip to content

Trend Intensity

Intuição

A Trend Intensity mede quão direcional é o movimento do preço dentro de uma janela.

  • Perto de 1: retornos na janela estão majoritariamente no mesmo sentido (tendência forte)
  • Perto de 0: retornos alternam sinal com frequência (movimento “choppy”)

Definição

Para retornos (log) r_t e janela n:

TI_t = |sum(r_{t-n+1..t})| / sum(|r_{t-n+1..t}|)

Uso

from quantmaster.features.trend import trend_intensity

df["trend_intensity_20"] = trend_intensity(df, window=20)

API

Source code in src/quantmaster/features/trend.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def trend_intensity(
    data: pd.DataFrame | pd.Series,
    *,
    window: int = 20,
    price_col: str = "close",
) -> pd.Series:
    window = validate_positive_int(window, name="window")

    price = get_price_series(data, price_col=price_col).astype(float)
    price = price.where(price > 0)
    rets = np.log(price).diff()

    num = rets.rolling(window).sum().abs()
    denom = rets.abs().rolling(window).sum()

    out = num / denom.where(denom > 0)
    out.name = f"trend_intensity_{window}"
    return out