Skip to content

cauepda/P2-InsperQuantitativeFinance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portfolio Optimization Framework: Markowitz Efficient Frontier Implementation

🎯 Project Overview

Advanced portfolio optimization engine implementing Modern Portfolio Theory (Markowitz, 1952) for long-only equity portfolios. This project demonstrates quantitative finance principles, numerical optimization techniques, and data-driven asset allocation strategies applicable to institutional portfolio management.

Key Achievement: Constructed optimal portfolios achieving 1.313 Sharpe Ratio (33% improvement over minimum variance) through systematic risk-return optimization across 30 random US equities.


📊 Performance Summary

Metric Minimum Volatility Maximum Sharpe Improvement
Annual Return 9.77% 19.64% +101%
Annual Volatility 11.13% 14.96% +34%
Sharpe Ratio 0.878 1.313 +50%
Number of Assets 15 8 -47%
Largest Allocation 22.28% 42.14% -
Top 5 Concentration 62.7% 91.2% -

Data Period: 10 years of monthly returns (2015-2025)


🚀 Key Features

  • Dual Optimization Objectives:

    • Global Minimum Variance Portfolio (GMV)
    • Maximum Sharpe Ratio Portfolio (Tangency)
  • Robust Data Processing:

    • Handles missing data and infinite returns (price anomalies)
    • Annualized covariance matrix estimation from monthly returns
    • Outlier detection and imputation
  • Advanced Visualization:

    • Efficient Frontier with 10,000 Monte Carlo simulations
    • Dual-axis Risk-Return and Sharpe Ratio plots
    • Portfolio composition analysis (pie charts)
    • Comparative performance dashboards
  • Numerical Optimization:

    • Sequential Least Squares Programming (SLSQP)
    • Long-only constraints (w ≥ 0, Σw = 1)
    • Iterative efficient frontier computation

🛠️ Technical Stack

Core Technologies:

  • Python 3.12: Primary language
  • NumPy: Matrix operations and linear algebra
  • Pandas: Time series data manipulation
  • SciPy: Constrained optimization (scipy.optimize.minimize)
  • Matplotlib/Plotly: Data visualization

Mathematical Framework:

  • Quadratic Programming for portfolio variance minimization
  • Mean-Variance Optimization (MVO)
  • Covariance matrix estimation and annualization
  • Sharpe Ratio maximization via negative objective function

📈 Visualizations

Efficient Frontier

Efficient Frontier 10,000 simulated portfolios with optimal portfolios highlighted

Portfolio Compositions

*Asset allocation breakdown for both optimal portfolios*

Performance Dashboard

Final Statistics Comprehensive comparative metrics and top holdings analysis


🧮 Methodology

1. Data Preprocessing

Monthly returns with inf/NaN handling:

returns = prices.pct_change().dropna()
returns = returns.replace([np.inf, -np.inf], np.nan).fillna(returns.median())

2. Covariance Matrix Estimation

Annualized covariance from monthly data:

sigma_annual = returns.cov() * 12

3. Optimization Problem

Minimum Volatility:

Minimize: σ²ₚ = wᵀ Σ w
Subject to: Σwᵢ = 1, wᵢ ≥ 0

Maximum Sharpe:

Maximize: SR = (μₚ − r_f) / σₚ
Subject to: Σwᵢ = 1, wᵢ ≥ 0

Where:

  • w = portfolio weights
  • Σ = covariance matrix
  • μₚ = portfolio expected return
  • r_f = risk-free rate (3% assumed)

🔬 Key Insights

Risk-Return Tradeoff

  • +101% return for only +34% volatility increase (Min Vol → Max Sharpe)
  • Efficient diversification: 15-asset Min Vol vs 8-asset Max Sharpe
  • Concentration trade-off: Higher Sharpe achieved through focused bets (91% top 5)

Optimization Convergence

  • SLSQP algorithm converged in <1s for 30-asset universe
  • Monte Carlo validation: 10,000 portfolios confirm analytical frontier
  • Numerical stability verified via eigenvalue decomposition (PSD matrix)

Practical Implications

  • Min Vol suitable for conservative risk mandates (pension funds)
  • Max Sharpe ideal for performance-focused strategies (hedge funds)
  • Concentration risk management critical above 40% single-asset allocation

📚 Theoretical Foundation

This implementation is based on:

  1. Markowitz, H. (1952). "Portfolio Selection." Journal of Finance 7(1): 77-91.
  2. Sharpe, W.F. (1966). "Mutual Fund Performance." Journal of Business 39(S1): 119-138.
  3. Merton, R.C. (1972). "An Analytic Derivation of the Efficient Portfolio Frontier." Journal of Financial and Quantitative Analysis 7(4): 1851-1872.

📧 Contact

Cauê Pileckas D'Agostinho
Computer Engineering Student @ Insper | Quant Trading Enthusiast 📍 São Paulo, Brazil
🔗 LinkedIn | GitHub

Interests: Algorithmic trading, machine learning in finance, derivatives pricing


This project was developed as part of a comprehensive study in quantitative portfolio management and demonstrates production-ready code suitable for institutional asset management applications.

About

Portfolio optimization using Markowitz Theory | Python + SciPy | Efficient Frontier | Max Sharpe: 1.313 | Long-only constraints | Quant Finance

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors