An automated portfolio optimization system using Modern Portfolio Theory (Markowitz Mean-Variance Optimization) to find the optimal asset allocation that maximizes risk-adjusted returns.
This project implements quantitative portfolio optimization techniques to:
- Calculate optimal portfolio weights using Maximum Sharpe Ratio
- Generate the Efficient Frontier showing optimal risk-return combinations
- Provide discrete allocation recommendations for a $10,000 portfolio
- Automatically rebalance weekly using GitHub Actions
- Mean-Variance Optimization: Implements Markowitz's Modern Portfolio Theory
- Maximum Sharpe Ratio: Finds the portfolio with best risk-adjusted returns
- Efficient Frontier Visualization: Charts optimal risk-return tradeoffs
- Discrete Allocation: Converts theoretical weights to actual share quantities
- Automated Rebalancing: Weekly portfolio optimization via GitHub Actions
- Diversified Portfolio: 10 stocks across multiple sectors (Tech, Finance, Healthcare, Consumer)
- Optimal portfolio weights
- Expected return / volatility / Sharpe ratio
- $10,000 stock allocation (integer shares)
- Efficient frontier chart (
efficient_frontier.png) - CSV export of portfolio weights
Developed by Harry Markowitz (1952), MPT demonstrates that by combining assets with different expected returns and volatilities, investors can construct portfolios that maximize returns for a given level of risk.
- Expected Return: Mean historical return of the portfolio
- Volatility: Standard deviation of returns (risk measure)
- Sharpe Ratio: (Portfolio Return - Risk-Free Rate) / Portfolio Volatility
- Calculate expected returns using mean historical returns
- Estimate covariance matrix using sample covariance
- Optimize weights to maximize Sharpe Ratio
- Generate efficient frontier for visualization
The optimized portfolio includes 10 diversified stocks:
- Technology: AAPL, MSFT, GOOGL, AMZN
- Financial: JPM, V
- Healthcare: JNJ, UNH
- Consumer: PG, HD
- Python 3.7 or higher
- pip package manager
- Clone this repository:
git clone https://github.com/YOUR_USERNAME/portfolio-optimization.git
cd portfolio-optimization
pip install -r requirements.txt