Skip to content

HAR-RV (Heterogeneous AutoRegressive - Realized Variance)

Intuição

O modelo HAR-RV é uma forma simples e muito usada para descrever/predizer a dinâmica da volatilidade realizada usando múltiplas escalas de tempo (curta, média e longa). A ideia é capturar a persistência da volatilidade com médias móveis de diferentes janelas.

Nesta implementação, construímos as seguintes séries derivadas de uma proxy de variância realizada (RV) baseada em retornos:

  • har_rv_d: RV diária (instantânea)
  • har_rv_w: média móvel da RV em janela semanal (padrão 5)
  • har_rv_m: média móvel da RV em janela mensal (padrão 22)

Essas colunas são frequentemente usadas como regressoras em modelos do tipo HAR para prever volatilidade futura.

Uso

from quantmaster.features.volatility import har_rv

df = df.join(har_rv(df, weekly_window=5, monthly_window=22))

API

Source code in src/quantmaster/features/volatility.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def har_rv(
    data: pd.DataFrame | pd.Series,
    *,
    price_col: str = "close",
    weekly_window: int = 5,
    monthly_window: int = 22,
    prefix: str = "har_rv",
) -> pd.DataFrame:
    weekly_window = validate_positive_int(weekly_window, name="weekly_window")
    monthly_window = validate_positive_int(monthly_window, name="monthly_window")

    rv = realized_variance(data, price_col=price_col)

    out = pd.DataFrame(index=rv.index)
    out[f"{prefix}_d"] = rv
    out[f"{prefix}_w"] = rv.rolling(weekly_window).mean()
    out[f"{prefix}_m"] = rv.rolling(monthly_window).mean()
    return out
Source code in src/quantmaster/features/volatility.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def realized_variance(
    data: pd.DataFrame | pd.Series,
    *,
    price_col: str = "close",
    log_returns: bool = True,
) -> pd.Series:
    price = get_price_series(data, price_col=price_col).astype(float)

    if log_returns:
        rets = np.log(price).diff()
    else:
        rets = price.pct_change()

    rv = rets.pow(2)
    rv.name = "rv"
    return rv