- This project implements a multi-asset portfolio optimization model in Python using historical financial data.
 - It builds an efficient, diversified portfolio by applying mean-variance optimization (Markowitz Portfolio Theory) under practical constraints and analyzes its performance through backtesting and risk metrics.
 
- Download and clean historical data for a diversified set of ETFs and asset classes.
 - Calculate daily and monthly log returns, visualize trends, distributions, and correlations.
 - Optimize portfolio weights to minimize risk for a target return, with constraints:
- Fully invested portfolio
 - No short selling
 - Max 20% allocation per asset
 
 - Generate the efficient frontier to analyze risk-return trade-offs.
 - Backtest the optimized portfolio against:
- An equal-weight portfolio
 - An 
SPYbenchmark (S&P 500) 
 - Calculate performance metrics:
- Annualized Return
 - Annualized Volatility
 - Sharpe Ratio
 - Maximum Drawdown
 
 - Extend with turnover constraints to model practical rebalancing limits.
 
Python:
PandasNumPymatplotlibseabornyfinancecvxpy
VEA-> Developed Markets ex-USVWO-> Emerging MarketsEWJ-> JapanTLT-> 20+ Year Treasury BondsLQD-> Investment Grade Corporate BondsGLD-> GoldVNQ-> REITsDBC-> Commodities Index
- Data Acquisition: Download daily closing prices from 2015-2025 uding 
yfinance. - Data Cleaning and Preprocessing: Handle missing values, calculate daily and monthly log returns.
 - Exploratory Data Analysis: Plot -> Price Trends, Return Distributions, Correlation Heatmap.
 - Mean-Variance Optimization: Formulate the objective, set the constraints, solve using cvxpy quadratic programming.
 - Efficient Frontier: Calculate portfolios for varying target returns, visualize risk-return trade-offs.
 - Backtesting: Optimized portfolio VS equal-weight portfolio VS SPY benchmark
 - Extensions: Turnover constraints to limit drastic rebalancing.
 - Display results: View Reports folder.
 
- Black-Litterman model for incorporating market views
 - Robust optimization under parameter uncertainty
 - Transaction cost modeling
 - Interactive dashboard using Streamlit
 
- Portfolio optimization is a core concept in quantitative finance and asset management.
 - This project demonstrates the ability to:
- Integrate financial mathematics, statistics, and optimization
 - Build a full data pipeline from acquisition to analysis and evaluation
 - Apply convex optimization for real-world problems
 - Analyze risk-reward trade-offs for informed investment decisions
 
 
Areeb Arshad
Sophomore, Data Science, Economics
Virginia Tech
/
├── data/
│   ├── multiasset_benchmark.csv             
│   ├── multiasset_closing_prices.csv            
│   ├── multiasset_cum_returns.csv
|   ├── multiasset_daily_returns.csv
|   ├── multiasset_ewc.csv
|   ├── multiasset_stats.csv
|   ├── README.md                       
├── notebooks/
│   ├── Backtesting/      
│   ├── DataAcquisition_and_Preprocessing/            
│   ├── Extensions_Dashboard/
│   ├── Final_Model/
|   ├── Portfolio_Optimization/
|   ├── README.md     
├── plots/
│   ├── Closing_Prices/               
│   ├── Cumulative_Returns/ 
│   ├── Daily_Return_Distributions/       
│   ├── Efficient_Frontier/                     
│   ├── Optimal_Weights/               
│   ├── Returns_Correlation_Heatmap/
|   ├── README.md           
├── reports/
|   ├── README.md            
└── README.md