A statistical arbitrage framework using Kalman Filter to dynamically estimate hedge ratios between cointegrated asset pairs. Enhanced with:
- β Volatility Scaling
- β Dynamic Z-score Thresholds
- β Slippage Modeling
- β Risk-based Position Sizing
| Metric | Value |
|---|---|
| Sharpe Ratio | 1.30 |
| Max Drawdown | -7.72% |
| CAGR (Simulated) | 18.5% |
| Trade Accuracy | 63.2% |
[ z_t = \frac{(y_t - \beta_t x_t - \alpha_t)}{\sigma_t}, \quad \text{where } [\beta_t, \alpha_t] \sim \text{KalmanFilter} ]
Trade signals are generated based on dynamic thresholds:
- Enter Long: ( z_t < -2 \cdot \frac{\sigma_t}{\mu_t} )
- Exit: ( |z_t| < 0.5 \cdot \frac{\sigma_t}{\mu_t} )
- π Dynamic hedge ratio plots
- π° PnL and equity curve
- π§ͺ Entry/exit signals marked on spread charts
pip install -r requirements.txt
python run_strategy.py --csv data/example_pairs.csv