- Eldad Uzman
- Tom Ron
- Liron Zarhay
This project implements advanced portfolio optimization techniques using numerical optimization methods in Python. The focus is on Conditional Value-at-Risk (CVaR) optimization and Mean-Variance optimization for financial portfolio management, with additional features for risk attribution and walk-forward analysis.
- CVaR Optimization: Implements Rockafellar & Uryasev's linear CVaR minimization approach
- Mean-Variance Optimization: Traditional Markowitz portfolio optimization
- Risk Attribution: Sharpe-style risk contribution analysis for portfolio components
- Walk-Forward Analysis: Time-series backtesting with rolling optimization windows
- Top-N Momentum Strategy: Simple momentum-based portfolio strategy for comparison
- Interactive Visualizations: Plotly-based charts for risk attribution and performance analysis
- Performance Profiling: Built-in profiling tools for optimization performance analysis
The project implements Rockafellar & Uryasev's linear formulation for CVaR minimization:
def optimise_cvar(R, beta=0.95, target_return=None, short_cap=None):
"""
Rockafellar-&-Uryasev linear CVaR minimisation.
Parameters:
- R: Returns DataFrame
- beta: Confidence level (0, 1)
- target_return: Optional return constraint
- short_cap: Optional short selling constraint
"""
Traditional Markowitz portfolio optimization:
def optimize_mean_variance(R, target_return=None, short_cap=None):
"""
Mean-variance optimisation with optional constraints.
"""
Sharpe-style risk contribution analysis:
def cvar_risk_contributions(R, weights, beta=0.95):
"""Sharpe-equivalent attribution for portfolio CVaR."""
def variance_risk_contributions(cov, weights):
"""Sharpe (Euler) attribution for portfolio variance."""
The project expects stock price data in CSV format with:
- Date column (automatically detected)
- Price data in wide format (one column per stock)
- Or long format with columns: date, company, price
Example data structure:
date,MSFT,GOOGL,AAPL,...
2015-02-01,40.12,520.45,120.34,...
2015-02-02,40.89,525.12,121.67,...
...
This project is based on academic research in portfolio optimization, particularly:
- Rockafellar & Uryasev (1999): CVaR optimization
- Markowitz (1952): Mean-variance optimization
- Sharpe value theory for risk attribution