This project explores numerical methods for solving the Markowitz portfolio optimization problem under budget and no short-selling constraints.
The focus is on implementing and comparing three algorithms: Frank-Wolfe, Pairwise Frank-Wolfe, and Projected Gradient.
We consider the classical Markowitz mean-variance optimization problem:
where:
-
$x \in \mathbb{R}^n$ represents the portfolio weights, -
$\Sigma$ is the covariance matrix of asset returns, -
$r$ is the vector of expected returns, -
$\gamma > 0$ is the risk-aversion parameter, -
$\Delta_n = { x \geq 0, ; e^T x = 1 }$ is the probability simplex (budget and no short-selling constraints).
-
Frank-Wolfe Algorithm
First-order method with linear minimization oracle. Implemented with multiple step-size strategies (exact line search, Armijo rule, diminishing step size). -
Pairwise Frank-Wolfe Algorithm
A variant of Frank-Wolfe designed to improve convergence on boundary solutions by combining a toward and away step. -
Projected Gradient Method
Gradient descent adapted to constrained domains by projecting iterates onto the simplex at each step.
The algorithms were tested on weekly return data from:
- S&P 500
- NASDAQ 100
- Dow Jones
Each dataset contains individual stock returns adjusted for dividends and stock splits.
- Training window: 52 weeks
- Testing window: 12 weeks
- Rolling-window approach for rebalancing
- Comparison of convergence speed, number of iterations, and computational time across algorithms.