Max Sharpe (Wishart SV)

Sharpe maximization with a time-varying Wishart covariance forecast

Overview

This method maximizes the portfolio Sharpe ratio while modeling the covariance matrix as a mean-reverting Wishart process. Instead of assuming a fixed covariance, we forecast the next-period covariance and plug it into the classic max-Sharpe optimizer.

In practice, we estimate a long-run covariance Θ\Theta from historical returns, compute a recent covariance estimate Σt\Sigma_t on a rolling window, and apply the Wishart conditional mean.

Wishart Covariance Forecast

For a mean-reverting Wishart process, the conditional expectation follows:

E[Σt+Δ]=Θ+eKΔ(ΣtΘ)eKΔ\mathbb{E}[\Sigma_{t+\Delta}] = \Theta + e^{-K\Delta}(\Sigma_t - \Theta)e^{-K^\top \Delta}

Using a scalar mean-reversion speed κ\kappa (so K=κIK=\kappa I):

E[Σt+Δ]=Θ+e2κΔ(ΣtΘ)\mathbb{E}[\Sigma_{t+\Delta}] = \Theta + e^{-2\kappa\Delta}(\Sigma_t - \Theta)

The optimizer then uses this forecasted covariance in the max-Sharpe objective:

w=argmaxwwμrfwΣww^* = \arg\max_w \frac{w^\top \mu - r_f}{\sqrt{w^\top \Sigma w}}

Implementation Notes

In this app, the Wishart covariance is computed as:

- Θ\Theta: Ledoit-Wolf shrinkage covariance on the full return history.

- Σt\Sigma_t: rolling sample covariance over the most recent trading window.

- κ\kappa: fixed mean-reversion speed (configurable in code).

This aligns with the Wishart stochastic volatility framework described in:

Wishart Stochastic Volatility: Asymptotic Smile and Numerical Framework (Benabid, Bensusan, El Karoui).