Skip to content

BIPOWER VARIATION

Intuição

A Bipower Variation (BV) é uma estimativa da variação contínua (difusiva) da volatilidade, sendo mais robusta à presença de jumps do que a variância realizada (RV).

Definição

Para retornos r_t:

BV_t = (π/2) * |r_t| * |r_{t-1}|

Uso

from quantmaster.features.volatility import bipower_variation

df["bv"] = bipower_variation(df)

API

Source code in src/quantmaster/features/volatility.py
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
def bipower_variation(
    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)
    price = price.where(price > 0)

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

    abs_r = rets.abs()
    out = (np.pi / 2.0) * abs_r * abs_r.shift(1)
    out.name = "bv"
    return out