Skip to content

Trend Strength Autocorrelation

Intuição

A Trend Strength Autocorrelation mede a autocorrelação rolling dos retornos (normalmente lag 1). Pode ser usada para diferenciar regimes de momentum (autocorrelação positiva) vs mean-reversion (autocorrelação negativa).

Definição

Em janela n e defasagem lag:

AC_t = corr(r_t, r_{t-lag}) (calculado rolling)

Uso

from quantmaster.features.trend import trend_strength_autocorr

df["ac_60_1"] = trend_strength_autocorr(df, window=60, lag=1)

API

Source code in src/quantmaster/features/trend.py
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
def trend_strength_autocorr(
    data: pd.DataFrame | pd.Series,
    *,
    window: int = 60,
    lag: int = 1,
    price_col: str = "close",
) -> pd.Series:
    window = validate_positive_int(window, name="window")
    lag = validate_positive_int(lag, name="lag")

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

    out = rets.rolling(window).corr(rets.shift(lag))
    out.name = f"trend_strength_autocorr_{window}_{lag}"
    return out