This project implements Modern Portfolio Theory (MPT) to construct and evaluate investment portfolios using historical market data.
The application retrieves financial market data directly from Yahoo Finance, calculates portfolio statistics, generates thousands of random portfolios using Monte Carlo simulation, and identifies optimal portfolios based on risk-adjusted performance.
The project demonstrates quantitative finance concepts commonly used in portfolio management, investment analysis, and asset allocation.
- Download historical market data automatically
- Calculate daily and annualized returns
- Compute portfolio volatility
- Perform Monte Carlo portfolio simulation
- Maximize the Sharpe Ratio
- Identify the Minimum Risk Portfolio
- Calculate the Sortino Ratio
- Generate the Efficient Frontier
- Analyse correlation and covariance between assets
Historical market data is retrieved directly from Yahoo Finance using the yfinance Python package.
The project automatically downloads market prices when executed, ensuring that portfolio optimization is performed using up-to-date financial data.
The data/ directory is reserved for optional cached datasets and therefore does not contain stock price CSV files by default.
- Automatic retrieval of historical market data using Yahoo Finance (
yfinance) - Portfolio return calculation
- Portfolio volatility calculation
- Monte Carlo simulation
- Modern Portfolio Theory implementation
- Efficient Frontier visualization
- Maximum Sharpe Ratio portfolio
- Minimum Risk portfolio
- Sortino Ratio calculation
- Correlation matrix
- Covariance matrix
- Portfolio allocation reporting
- Python
- Pandas
- NumPy
- Matplotlib
- yfinance
portfolio-optimization-python/
├── data/
│ └── README.md
├── figures/
├── portfolio.py
├── optimization.py
├── statistics.py
├── visualization.py
├── main.py
├── PROJECT.md
├── RESULTS.md
├── ROADMAP.md
├── CHANGELOG.md
├── README.md
├── requirements.txt
├── LICENSE
- Download historical market prices from Yahoo Finance
- Calculate daily returns
- Compute correlation and covariance matrices
- Generate random portfolios
- Calculate expected return and portfolio risk
- Compute Sharpe Ratio and Sortino Ratio
- Identify optimal portfolios
- Plot the Efficient Frontier
- Display portfolio allocation results
- Modern Portfolio Theory
- Asset Allocation
- Portfolio Optimization
- Diversification
- Expected Return
- Portfolio Volatility
- Sharpe Ratio
- Sortino Ratio
- Efficient Frontier
- Risk Management
This project demonstrates analytical techniques used in:
- Investment Management
- Wealth Management
- Portfolio Construction
- Quantitative Finance
- Asset Management
- Financial Analytics
- CAPM expected returns
- Black-Litterman portfolio optimization
- Value at Risk (VaR)
- Conditional Value at Risk (CVaR)
- Interactive dashboard
- Additional optimization methods
Sahand Mostafaei
Bachelor of Science in Electrical Engineering
Interested in Banking, Investment Management, Quantitative Finance, Financial Risk Management, and Data Analytics.
This project is intended for educational purposes only and should not be considered investment or financial advice.