INNER CODE UNIT · Python
run_backtest
initial-d/ml-quant-trading · src/mlquant/backtest/engine.py:65
def run_backtest(
weights: np.ndarray,
returns: np.ndarray,
*,
costs_bps: float = 5.0,
benchmark: Optional[np.ndarray] = None,
) -> BacktestResult:
"""Run a long-only / long-short vector backtest."""
if weights.shape != returns.shape:
raise ValueError(f"shape mismatch: weights {weights.shape} returns {returns.shape}")
T, _ = weights.shape
# Lagged weights: weights[t-1] is what's earned over t-1 -> t.
w_lag = np.zeros_like(weights)
w_lag[1:] = weights[:-1]
gross = (w_lag * returns).sum(axis=1)