Evaluating Covariance Estimates for Portfolio Risk Forecasts
Summary
The document asks how to judge whether an estimated covariance matrix predicts future portfolio risk. It considers comparing a training-period estimate with a later sample covariance using the Frobenius norm, then suggests evaluating whether a mean-variance portfolio built from the estimate achieves lower out-of-sample variance than an equal-weight portfolio. The example uses simulated data and a Ledoit-Wolf shrinkage estimator, but its setup draws the training data from the same covariance used as the target, so it does not establish genuine predictive performance.
The discussion distinguishes matrix-level error from practical portfolio outcomes. A useful evaluation would need chronologically separated data and should account for estimation uncertainty and the choice of portfolio weights or benchmark. The document raises these approaches but does not resolve which metric is best, provide empirical results, or discuss implementation details such as transaction costs and constraints.
Key ideas
- The Frobenius norm measures aggregate elementwise distance between two covariance matrices.
- A covariance estimate should be evaluated on data from a later period than the data used to fit it.
- Portfolio variance tests can assess whether an estimate helps produce useful portfolio weights.
- The example's training sample is generated from the target covariance, so it does not represent a realistic out-of-sample test.
Tags
Full text
# Evaluating estimate of covariance matrix # Evaluating estimate of covariance matrix I am testing out different methods / shrinkages to estimate a covariance matrix and I am wondering what is the best method of comparing the estimated covariance matrix to the true covariance matrix (out of sample)? In other words, how can I assess the predictive power of the estimate? For example, say I make a covariance matrix with data from the year 2022, and then I want to compare it with the actual covariance matrix for the first quarter of 2023, would Frobenius norm be appropriate? The goal of my test is to make a covariance matrix that can be used to forecast future volatility of a portfolio of assets. Here is the code I am using (with just random data filled in), I used a LedoitWolf shrinkage estimator as an example: ``` import numpy as np from sklearn.covariance import LedoitWolf mu = 0.01 stdev = 0.003 actualdata = np.random.normal(loc = mu, scale = stdev, size=(10,13)) actualcov = np.cov(actualdata) traindata = np.random.multivariate_normal(mean=mu*np.ones(10), cov = actualcov, size= 52) traincov = LedoitWolf().fit(traindata).covariance_ error = np.linalg.norm(traincov - actualcov, "fro") ``` This error will be small of course because the train data is made from the real covariance matrix. My other idea was to create a backtest that tests whether using the covariance matrix in an mean variance portfolio is able to create a portfolio with lower variance out of sample than an equal weighted portfolio, ie. the covariance matrix must be effective to achieve that.
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.