Skip to content

Realized Skewness

Intuição

A Realized Skewness é uma medida de assimetria baseada em retornos realizados dentro de uma janela. Ela captura se, dentro da janela, a distribuição de retornos tende a ter cauda mais pesada para cima ou para baixo.

Definição

Para retornos r_t em uma janela n:

  • M2 = sum(r^2)
  • M3 = sum(r^3)
  • RSkew = sqrt(n) * M3 / (M2^(3/2))

Uso

from quantmaster.features.statistical import realized_skewness

df["rskew_20"] = realized_skewness(df, window=20)

API

Source code in src/quantmaster/features/statistical.py
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
def realized_skewness(
    data: pd.DataFrame | pd.Series,
    *,
    window: int = 20,
    price_col: str = "close",
    log_returns: bool = True,
) -> 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)

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

    m2 = r.pow(2).rolling(window).sum()
    m3 = r.pow(3).rolling(window).sum()

    denom = m2.pow(1.5)
    out = np.sqrt(float(window)) * m3 / denom.where(denom > 0)
    out.name = f"realized_skewness_{window}"
    return out