Updating Markowitz Portfolio Weights After Rank-One Covariance Changes
Summary
The document asks whether Markowitz portfolio weights can be updated efficiently when each new price observation changes the covariance estimate through a rank-one update. It also asks whether using the previous time step’s weights as the optimizer’s initial guess could reduce computation in a high-frequency setting.
The response points to updating the inverse covariance matrix with the Sherman–Morrison formula for a rank-one change, or the Sherman–Morrison–Woodbury formula for low-rank changes. This can make the matrix-inversion component more efficient and may support faster downstream optimization. The exchange does not provide a full portfolio algorithm, benchmark, or timing results, and it cautions that computational feasibility alone does not establish that frequent optimization is practically appropriate. It leaves the warm-start question unanswered.
Key ideas
- A rank-one covariance update may allow an efficient inverse update using the Sherman–Morrison formula.
- The Sherman–Morrison–Woodbury formula extends this approach to low-rank changes.
- Efficiently updating the inverse can help reduce the computational burden of repeated portfolio optimization.
- The response does not establish whether reusing previous weights as an initial guess speeds a particular optimizer.
- Practical suitability of frequent optimization remains a separate concern.
Tags
Full text
# Faster Portfolio Optimization under rank 1 updates
# Faster Portfolio Optimization under rank 1 updates
I was studying Markowitz portfolio optimization and had a question on the practicality of this in the setting of high frequency trading. Optimization seems like a cumbersome process. But at each tick the covariance matrix is updated only by a rank 1 update
$$\Sigma_{T+1} = \frac{p_{now} \cdot p^T_{now} + T \cdot \Sigma_T}{T+1} $$
Are there faster optimization techniques that utilize this rank 1 update structure and produce the optimal weights at $T+1$ by utilizing the optimal weights at $T$?
Also, along these lines, if I pass the earlier weights as an initial guess for the next time stamp, is the optimizer likely to perform faster?
Couldn't find anything in literature regarding this topic.
## Answer by krkeane (score 1)
https://quant.stackexchange.com/a/75374
Optimization requires $\Sigma^{-1}$. Updating inverse matrix $\Sigma^{-1}$ due to a rank-one (or low rank) update to $\Sigma$ is efficient with the Sherman-Morrison formula (rank-one update) or more generally the Sherman-Morrison-Woodbury formula (low-rank update).
Just because you can do something, doesn't mean you should. I fully agree with the hesitancy expressed in the first @bob-jansen comment below your question.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.