Skip to content

Tick Imbalance Proxy

Intuição

O Tick Imbalance Proxy aproxima desequilíbrio de agressão compradora/vendedora usando apenas o sinal do retorno: média do sinal dos retornos em uma janela.

Definição

Em uma janela n:

  • s_t = sign(r_t)
  • TIP = mean(s_t)

O output fica em [-1, 1].

Uso

from quantmaster.features.volume import tick_imbalance_proxy

df["tip_20"] = tick_imbalance_proxy(df, window=20)

API

Source code in src/quantmaster/features/volume.py
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
def tick_imbalance_proxy(
    data: pd.DataFrame,
    *,
    window: int = 20,
    price_col: str = "close",
    log_returns: bool = True,
) -> pd.Series:
    window = validate_positive_int(window, name="window")
    validate_columns(data, required=[price_col])

    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()

    s = np.sign(rets)
    s = s.where(s != 0.0)
    out = s.rolling(window).mean()
    out = out.clip(lower=-1.0, upper=1.0)
    out.name = f"tick_imbalance_proxy_{window}"
    return out