Skip to content

This repository implements Modern Portfolio Theory (MPT), Monte Carlo simulation, and advanced risk analytics for quantitative portfolio management and risk measurement.

License

Notifications You must be signed in to change notification settings

xxxxyyyy80008/Quantitative-Portfolio-Optimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portfolio Optimization and Analysis

Python License Status

This repository implements Modern Portfolio Theory (MPT), Monte Carlo simulation, and advanced risk analytics for quantitative portfolio management and risk measurement.


Table of Contents


Notebooks

1. Portfolio Optimization - Monte Carlo

Notebook: 01_portfolio_optimization_monte_carlo.ipynb

Documentation ~ Github Notebook ~ Kaggle Notebook

Overview

Traditional portfolio optimization using SciPy SLSQP algorithm with Monte Carlo simulation to map the efficient frontier.

Key Features

  • 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

Methodology

  • 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)

Mathematical Framework

$$\mu_P = \sum_{i=1}^{n} w_i \mu_i \times 252$$

$$\sigma_P = \sqrt{w^T \Sigma w \times 252}$$

$$SR = \frac{\mu_P - r_f}{\sigma_P}$$


2. Portfolio Optimization - PyPortfolioOpt

Notebook: 02_portfolio_optimization_pyportfolioopt.ipynb

Documentation ~ Github Notebook ~ Kaggle Notebook

Overview

Advanced portfolio optimization using PyPortfolioOpt library with dual optimization approach and discrete allocation functionality.

Key Features

  • 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

Optimization Strategies

  1. Maximum Sharpe Ratio

    • Optimal risk-adjusted returns
    • Best performance per unit of risk
  2. Minimum Volatility

    • Conservative risk minimization
    • Lowest portfolio variance
  3. Efficient Risk

    • Target volatility approach
    • Customizable risk tolerance

3. Portfolio Risk Analytics - VaR & ES

Notebook: 03_portfolio_risk_analytics_var_and_es.ipynb

Documentation ~ Github Notebook ~ Kaggle Notebook

Overview

Comprehensive risk measurement framework implementing ~17 VaR and Expected Shortfall methodologies with rigorous backtesting.

Key Features

  • 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

VaR/ES Methods Implemented

Parametric Methods (6)

  1. Normal Distribution VaR/ES
  2. Student-t Distribution VaR/ES
  3. EWMA VaR (λ = 0.94)
  4. Cornish-Fisher VaR

Non-Parametric Methods (4)

  1. Historical Simulation VaR/ES
  2. Kernel Density Estimation (KDE) VaR/ES

Advanced Historical Simulation (10)

  1. Bootstrapped Historical Simulation (BHS) - 1,000 samples
  2. Age-Weighted Historical Simulation (AWHS) - λ = 0.98
  3. Volatility-Weighted Historical Simulation (VWHS)
  4. Correlation-Weighted Historical Simulation (CWHS)
  5. Filtered Historical Simulation (FHS) - Optional GARCH

Backtesting Framework

  • 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

Features

Portfolio Optimization

  • 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

Risk Analytics

  • 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

About

This repository implements Modern Portfolio Theory (MPT), Monte Carlo simulation, and advanced risk analytics for quantitative portfolio management and risk measurement.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published