Skip to content

MEDRV (Median Realized Variance)

Intuição

O MedRV é um estimador robusto a jumps baseado na mediana de retornos adjacentes em magnitude.

Definição

A fórmula original usa |r_{t+1}|, o que pode introduzir lookahead em contextos rolling. Nesta biblioteca a versão é backward-only, usando a mediana de uma janela de 3 observações passada:

MedRV_t = c * median(|r_{t-2}|, |r_{t-1}|, |r_t|)^2

onde c = π / (6 - 4√3 + π).

Uso

from quantmaster.features.volatility import medrv

df["medrv"] = medrv(df)

API

Source code in src/quantmaster/features/volatility.py
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
def medrv(
    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()
    med3 = abs_r.rolling(3).median()
    const = np.pi / (6.0 - 4.0 * np.sqrt(3.0) + np.pi)
    out = const * med3.pow(2)
    out.name = "medrv"
    return out