Skip to content
All library documents

Expected Cross-Sectional Dispersion from Returns and Covariance

Article Quant Q&A · Author: Ram Ahluwalia

Summary

The document asks how to derive expected cross-sectional variation in returns from a mean vector and covariance matrix, rather than estimating it from noisy historical observations. For a multivariate normal model, it expresses the returns as a mean vector plus a Cholesky-transformed standard Gaussian draw. It then gives the expected sum of squared deviations from the cross-sectional mean in terms of the mean vector and covariance matrix. Dividing by the number of observations or by one less than that number, then taking a square root, yields related dispersion measures, though the square root of the expected squared dispersion is not generally the expected standard deviation.

The answer proposes a simulation as a check and gives a matrix-based computation. Another response argues that the mean vector cancels when deviations from the cross-sectional mean are used, and suggests an equally weighted portfolio analogy. That response is less rigorous: the cross-sectional standard deviation is not generally the same as portfolio return volatility. The supplied closed-form expression is useful for expected squared dispersion, while the document does not derive an exact expected standard deviation.

Key ideas

  • For multivariate normal returns, expected squared cross-sectional dispersion can be calculated from the mean vector and covariance matrix.
  • The calculation can be framed as the trace of the second-moment matrix after removing the cross-sectional mean component.
  • Normalization by the number of assets or one less than that number gives population-style or sample-style variance measures.
  • Taking the square root of expected squared dispersion does not generally produce expected standard deviation.
  • The equally weighted portfolio analogy in the second answer is not an exact general identity for cross-sectional dispersion.

Tags

Full text
# Analytical relationship between a covariance matrix and cross-sectional dispersion


# Analytical relationship between a covariance matrix and cross-sectional dispersion












Given an expected returns vector and a covariance matrix, one can perform a joint draw and measure the average cross-sectional variation as the standard deviation across returns for a particular joint draw.

Demonstrating the same idea using empirical/historical data, the cross-sectional variation is simply the standard deviation across returns at a point in time. For some intuition, here's a chart plotting cross-sectional dispersion vs. the VIX from a paper by Gorman, Sapra, and Weigand:

Since many shops have a well-designed covariance matrix, rather than looking at the empirical metric to measure dispersion which is noisy and time-varying, I'd rather produce the dispersion metric from an already existing covariance matrix.

What is the analytical relationship between a given covariance matrix and expected returns vector (e.g., a multivariate normal distribution) and the expectation of the cross-sectional dispersion?

## Answer by Vincent Zoonekynd (score 9, accepted)

https://quant.stackexchange.com/a/3436

If $X \sim N(\mu, V)$ is multivariate gaussian, you can write $X = \mu + C Y$ where $ Y \sim N(0,1) $ is a standard Gaussian and $C$ is the lower-triangular Choleski matrix of $V$. You can then express $ v = \sum_{i=1}^n (X_i - S/n)^2 $, where $ S = \sum_{i=1}^n X_i $, in terms of $Y$ and $C$.

(I do not reproduce the computations: they are straightforward.) If we just want the expectation, we get: $$ E[v] = \sum_i \mu_i^2 - \dfrac1n \sum_{ij} \mu_i \mu_j + \sum_i C_i C_i' - \dfrac1n \sum_{ij} C_i' C_j $$ where $C_i$ is the $i$th row of the Choleski matrix.

This can be simplified: $$ E[r] = \text{trace}( \mu \mu' + V ) + \dfrac1n \mathbf{1}' (\mu\mu' + V) \mathbf{1} $$

Here is some R code to check the result. (You may want to divide the result by $n$ or $n-1$, and take the square root of this expectation.)

```
# Simulations
library(mvtnorm)
f1 <- function(V,mu, R=1000) {
  n <- length(mu)
  apply( rmvnorm(R, mu, V), 1, function(u) sum((u - mean(u))^2) )
}

# Computations
f2 <- function(V,mu) {
  n <- length(mu)
  #var(mu)*(n-1) + sum(diag(V)) - sum(V)/n
  v <- mu %*% t(mu) + V
  sum(diag(v)) - sum(v)/n
}

# Sample data
n <- 10
V <- matrix(rnorm(n*n),n,n)
V <- t(V) %*% V
mu <- rnorm(n)

# Check that the value is the same
f2(V,mu) / mean(f1(V,mu,R=1e5))
```

## Answer by John (score 4)

https://quant.stackexchange.com/a/3408

For the stationary multivariate normal case, the expected returns vector does not matter. This is because the cross-sectional mean is subtracted out before calculating the standard deviation. The cross-sectional mean can be more conveniently thought of as like the return on an equally weighted portfolio.

Similarly, I would argue that the expected cross-sectional standard deviation will equal the standard deviation of an equally weighted portfolio. In order to calculate the actual cross-sectional standard deviation, you can basically do the same thing and assume an equally weighted portfolio, so they should be analytically the same thing. I ran some tests for five variables and simulated 10,000 times and the numbers came close. They were not perfect, but I suspect that if I took the number of variables and simulations to infinity, then it would work.

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.