A systematic multi-strategy research project that combines three market-neutral long/short strategies and allocates capital using inverse-volatility and risk-parity-style weighting, including transaction cost modeling.
-
Cross-Sectional Momentum (Long/Short)
- Ranks assets by risk-adjusted trailing return (return / volatility)
- Long top quantile, short bottom quantile (market-neutral)
-
Cross-Sectional Mean Reversion (Long/Short)
- Short-horizon reversal: long recent losers, short recent winners
- Quantile-based market-neutral construction
-
Breakout Channel (Long/Short)
- Uses a rolling price channel to score strength/weakness
- Quantile-based market-neutral construction
The strategy return streams are combined using one of:
inverse_vol: weights ∝ 1 / rolling volatilityrisk_parity: rolling covariance-based risk parity (iterative equal risk contribution)*_sharpe_filter: optionally down-weights strategies with negative rolling Sharpe
Strategy weights are applied with a 1-day lag to avoid look-ahead bias.
Transaction costs are modeled as:
- commission + slippage (bps)
- applied proportional to turnover at rebalances (strategy level and portfolio level)
multi-strategy-portfolio/
├── requirements.txt
├── config.py
├── data.py
├── costs.py
├── metrics.py
├── portfolio.py
├── backtest.py
├── run.py
└── strategies
├── init.py
├── momentum.py
├── mean_reversion.py
└── breakout.py