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 from historical returns, compute a recent covariance estimate on a rolling window, and apply the Wishart conditional mean.
For a mean-reverting Wishart process, the conditional expectation follows:
Using a scalar mean-reversion speed (so ):
The optimizer then uses this forecasted covariance in the max-Sharpe objective:
In this app, the Wishart covariance is computed as:
- : Ledoit-Wolf shrinkage covariance on the full return history.
- : rolling sample covariance over the most recent trading window.
- : fixed mean-reversion speed (configurable in code).
This aligns with the Wishart stochastic volatility framework described in: