Simulating Correlated Random Walks from Correlated Returns
Summary
The document explains how to simulate several random walks whose returns have a chosen correlation structure, for example to illustrate portfolio diversification. It distinguishes correlation between return innovations from cointegration-like relationships between price series. A proposed construction that mixes one common series with separate noise does not directly provide a theoretical calibration of return correlations.
The recommended approach is to specify a covariance matrix for the innovations, such as unit variances on the diagonal and a common correlation value off the diagonal. Draw multivariate Gaussian innovations with that covariance, then cumulatively sum each series to form arithmetic random walks. The answer mentions using a multivariate normal sampler or transforming independent Gaussian draws with a Cholesky factor. This produces the intended correlation structure in the simulated innovations under the specified covariance model; the document does not cover non-Gaussian returns, time-varying correlations, or constraints needed for arbitrary covariance matrices to be valid.
Key ideas
- Correlated price paths should be generated by correlating their return innovations.
- A covariance matrix encodes the desired variances and cross-asset correlations.
- Multivariate Gaussian draws or Cholesky-transformed independent draws can generate innovations.
- Cumulative sums of correlated innovations form arithmetic random walks.
- The construction assumes a fixed covariance structure and Gaussian innovations.
Tags
Full text
# How to simulate correlated assets for illustrating portfolio diversification? # How to simulate correlated assets for illustrating portfolio diversification? I have seen multiple instances where people try to explain the diversification effects of having assets with a certain level of correlation, especially in the "most diversified portfolio" literature. A nice example is in the NewEdge's "Superstars vs. Teamwork": How can I simulate multiple random walk series that have a calibrated level of correlation to each other in order to demonstrate this? My thought is to have a random walk series $x$ and to add varied different levels of noise $n$. $$r_i = \lambda x + (1 - \lambda) n_i$$ where $$0 \le \lambda \le 1$$ So less noise (large values of $\lambda$) will generate series with high correlation vs. more noise. But is there are more theoretical way to calibrate a certain level of correlation? I'm simulating this in R, so any R functions would be additionally helpful! ## Answer by Vincent Zoonekynd (score 9, accepted) https://quant.stackexchange.com/a/2895 Your formula looks like cointegration (between the price time series) rather than correlation (between the returns). To simulate "correlated random walks", i.e., random walks built from correlated innovations, you can just build the desired covariance matrix (for instance, put ones on the diagonal and $\rho$ everywhere else), take multivariate gaussian samples with this covariance matrix (in R, you can use the `mvtnorm` package, or take independent gaussian variables and multiply them by the Choleski matrix), and take the cumulated sum to have an arithmetic random walk. ``` k <- 10 rho <- .9 sigma <- matrix(rho, nc=k, nr=k) diag(sigma) <- 1 n <- 100 library(mvtnorm) x <- rmvnorm(n, rep(0,k), sigma) x <- apply(x, 2, cumsum) matplot(x, type="l", lty=1) ```
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.