Robust Markowitz Portfolio Optimization Techniques
๐ Markowitz Portfolio Optimization Techniques with Regularization, Trading Constraints, and Risk Factors
๐ Read the full PDF
๐ง Summary
This paper done by me and Zhihan, Yueyang explores extensions to the classical Markowitz mean-variance portfolio optimization framework by introducing:
- โ L1 (LASSO), L2 (Ridge), and Elastic Net regularization
- ๐ Volume-based and volatility-aware trading constraints
- ๐งฎ Bi-level optimization for determining asset and cash weight bounds
- ๐ Realistic cost modeling and return forecasting frameworks
- ๐งช Extensive 3-month rolling backtests from 2020โ2025
We show that Ridge regularization combined with practical trading constraints consistently delivers the most robust and high-performing portfolios in both return and risk-adjusted metrics (Sharpe, CVaR, MDD).
๐ฅ TL;DR: Modernizing Markowitz with regularization + constraints = alpha-generating machine!
๐๏ธ Key Contributions
| Technique | Description |
|---|---|
| LASSO / Ridge / Elastic Net | Promote sparsity, reduce overfitting, and balance diversification |
| Trading Constraints | Control for liquidity via volume limits and volatility filters |
| Bi-level Optimization | Tune bounds on portfolio weights and cash to maximize Sharpe ratio |
| Backtesting Framework | Evaluate robustness under 3-month rolling windows |
| Performance & Risk Evaluation | Compare models on net return, cost, drawdown, and more |
๐ Results Snapshot
| Model | Gross Return | Net Return | Sharpe | Max Drawdown |
|---|---|---|---|---|
| Classical | 4.46% | 1.81% | 0.571 | -12.6% |
| LASSO | 4.48% | 2.10% | 0.562 | -11.5% |
| Ridge | 4.62% | 3.08% | 0.622 | -11.0% |
| Elastic Net | 4.40% | 2.55% | 0.564 | -13.9% |
๐ง The Ridge model emerges as the winner with the best return-cost balance and lowest realized volatility.
๐ ๏ธ Code
The code includes:
- ETF data preprocessing with
yfinance - Optimization routines using
cvxpy - Custom constraints: trading volume, price gap, volatility jump
- Portfolio performance metrics: Sharpe, VaR, CVaR, Max Drawdown
- Visualization tools for returns and risk profiles
All implementation details can be found in the
notebooks/andmodels/folders (you can create them and place your Jupyter Notebooks or scripts there).
๐ก Future Work
- Incorporating ML-driven return forecasts (e.g., LSTM, XGBoost)
- Adaptive regularization tuning via Bayesian optimization
- Expansion to multi-asset portfolios or international ETFs
Thanks for checking out our work! If you find this useful, feel free to โญ the repo and drop your thoughts in Issues!