Traditional portfolio optimization techniques (like Mean-Variance Optimization) assume static returns and often fail in real-world dynamic markets. They also ignore practical constraints like transaction costs, rebalancing, and risk management.
This project builds a hybrid portfolio optimization system that combines:
- Quantitative Finance (Markowitz Optimization)
- Machine Learning (Return Prediction)
- Backtesting (Real-world validation)
The goal is to create a portfolio that maximizes risk-adjusted returns while being robust in real market conditions.
- Python
- Pandas, NumPy
- Scikit-learn / XGBoost
- Matplotlib / Plotly
Data Collection → Data Cleaning → Feature Engineering → ML Prediction → Portfolio Optimization → Backtesting
- Mean-Variance Portfolio Optimization
- Risk-adjusted return maximization (Sharpe Ratio)
- Portfolio constraints (weight limits)
- Rolling window backtesting
- Benchmark comparison
- Visualization of performance
The model is evaluated against:
- Equal Weight Portfolio
- Market Index (e.g., NIFTY 50)
- Sharpe Ratio
- CAGR (Compound Annual Growth Rate)
- Volatility
- Maximum Drawdown
- Financial data is highly noisy and non-stationary
- Overfitting is a major risk in return prediction
- Backtesting is critical to validate strategies
- Risk management is as important as return maximization
- Add Black-Litterman Model
- Include transaction costs and slippage
- Deploy using Streamlit dashboard
- Integrate live market data APIs
- Add Reinforcement Learning for dynamic allocation
git clone https://github.com/Shradd7/Portfolio-Optimisation.git
cd Portfolio-Optimisation
pip install -r requirements.txt
python main.py
