This repository implements Modern Portfolio Theory (MPT), Monte Carlo simulation, and advanced risk analytics for quantitative portfolio management and risk measurement.
- Overview
- Notebooks
- Portfolio Optimization using Monte Carlo Methods
- Portfolio Optimization - PyPortfolioOpt
- Portfolio Risk Analytics - VaR & ES
Notebook: 01_portfolio_optimization_monte_carlo.ipynb
Documentation ~ Github Notebook ~ Kaggle Notebook
Traditional portfolio optimization using SciPy SLSQP algorithm with Monte Carlo simulation to map the efficient frontier.
- 50,000 Monte Carlo simulations for efficient frontier mapping
- SLSQP optimization maximizing Sharpe Ratio
- Logarithmic returns analysis
- Correlation analysis for diversification insights
- Comprehensive visualizations: efficient frontier, allocation charts, weight distributions
- Objective: Maximize Sharpe Ratio
- Algorithm: Sequential Least Squares Programming (SLSQP)
- Constraints:
- Weights sum to 100%
- No short selling (0 ≤ w_i ≤ 1)
- Risk-Free Rate: 3.6% (1-year US Treasury yield)
Notebook: 02_portfolio_optimization_pyportfolioopt.ipynb
Documentation ~ Github Notebook ~ Kaggle Notebook
Advanced portfolio optimization using PyPortfolioOpt library with dual optimization approach and discrete allocation functionality.
- Dual optimization methods: SciPy SLSQP + PyPortfolioOpt
- Multiple optimization strategies: Max Sharpe, Min Volatility, Efficient Risk
- Discrete allocation: Convert continuous weights to integer shares
- Side-by-side comparison: Traditional vs. advanced methods
- Practical implementation: Real-world portfolio construction with $100,000 capital
-
Maximum Sharpe Ratio
- Optimal risk-adjusted returns
- Best performance per unit of risk
-
Minimum Volatility
- Conservative risk minimization
- Lowest portfolio variance
-
Efficient Risk
- Target volatility approach
- Customizable risk tolerance
Notebook: 03_portfolio_risk_analytics_var_and_es.ipynb
Documentation ~ Github Notebook ~ Kaggle Notebook
Comprehensive risk measurement framework implementing ~17 VaR and Expected Shortfall methodologies with rigorous backtesting.
- 17 VaR/ES methods: Parametric, non-parametric, and advanced historical
- Kupiec POF backtesting: Statistical validation of all methods
- Rolling window analysis: 250-day estimation windows
- Advanced methods: Bootstrapped, age-weighted, volatility-weighted, correlation-weighted
- Comprehensive visualizations: Heatmaps, comparison charts, temporal analysis
Parametric Methods (6)
- Normal Distribution VaR/ES
- Student-t Distribution VaR/ES
- EWMA VaR (λ = 0.94)
- Cornish-Fisher VaR
Non-Parametric Methods (4)
- Historical Simulation VaR/ES
- Kernel Density Estimation (KDE) VaR/ES
Advanced Historical Simulation (10)
- Bootstrapped Historical Simulation (BHS) - 1,000 samples
- Age-Weighted Historical Simulation (AWHS) - λ = 0.98
- Volatility-Weighted Historical Simulation (VWHS)
- Correlation-Weighted Historical Simulation (CWHS)
- Filtered Historical Simulation (FHS) - Optional GARCH
- Kupiec Proportion of Failures (POF) Test
- Likelihood Ratio Statistic: LR ~ χ²(1)
- Decision Rule: p-value < 0.05 → Reject model
- Metrics: Breach rate, LR statistic, p-value, adequacy assessment
- Dual Optimization Approach: Compare traditional (SciPy) vs. modern (PyPortfolioOpt) methods
- Monte Carlo Simulation: 50,000 random portfolios mapping efficient frontier
- Discrete Allocation: Convert theoretical weights to actual share quantities
- Multiple Strategies: Max Sharpe, Min Volatility, Efficient Risk
- Comprehensive Analysis: Returns, volatility, correlations, Sharpe ratios
- 17 VaR/ES Methods: Complete methodology comparison
- Statistical Validation: Kupiec POF backtesting
- Advanced Techniques: Bootstrap, KDE, age-weighted, volatility-weighted
- Rich Visualizations: Heatmaps, comparison charts, temporal analysis
- Rolling Windows: Dynamic 250-day estimation