# What's the correct choice for modeling correlated stock prices?

Let's assume we're happy with simulating $n$ stocks as geometric Brownian motion (GBM). But say we also want the prices to be correlated.

When I searched around for how to construct correlated paths, the typical strategy was to generate paths of Brownian motion with specified correlations, and then use those paths to construct GBM.

However, my calculations (and simulations) show that the correlation of the GBM is not the same as the correlation of the underlying Brownian motion, and the GBM correlations go to zero as time goes to infinity. This doesn't make much sense to me from a modeling perspective.

So in summary, is it even reasonable to use correlated Brownian motion to construct GBM, or would it make more sense in terms of modeling to somehow construct GBM paths with a constant and specified correlation coefficient?

Or did I just mess up with the analysis?

Please let me know if something isn't clear. Thanks.

EDIT: I understand how to create correlated paths of Brownian motion, specifically using the Cholesky decomposition. Here's what I know:

Say $\Sigma$ is a correlation matrix, and $LL^T$ is its Cholesky decomposition. Let $B(t)$ be $d$-dimensional Brownian motion. Then $L B(t)$ is also $d$-dimensional Brownian motion, and Corr$(B_i(t),B_j(t)) = \rho_{ij}$, where $\rho_{ij}$ is the $(i,j)$ element of the correlation matrix $\Sigma$.

Let $$X_i(t) = \mu_iX_i(t)dt + \sigma_i X_i(t)[LB(t)]_i$$ where $[LB(t)]_i$ is the $i^\text{th}$ element of $LB(t)$. Since we know that $[LB(t)]_i$ is Brownian motion, we know that $X_i(t)$ is geometric Brownian motion.

Here's the issue: Let's look at Corr$(X_i(t),X_j(t))$. We can use the result here to get Cov$(X_i(t),X_j(t))$. It says that $$\text{Cov}(X_i(t),X_j(t)) = X_i(0)X_j(0)e^{(\mu_1+\mu_2)t}\left(e^{\rho_{ij} \sigma_i\sigma_j}-1\right)$$

To get the correlation of the GBM paths, use the above fact and that $$\text{Var}(X_i(t))=X_i(0)^2 e^{2\mu_i t}\left(e^{\sigma_i^2 t}-1\right)$$

Thus we have $$\text{Corr}(X_i(t),X_j(t)) = \frac{e^{\rho_{ij}\sigma_i\sigma_j t}-1}{\sqrt{\left(e^{\sigma_i^2t}-1\right)\left(e^{\sigma_j^2t}-1\right)}}$$

Then (I am pretty sure this is always true) $$\lim_{t\to\infty}\text{Corr}(X_i(t),X_j(t)) = \begin{cases} 1, i=j\\ 0, i\neq j \end{cases}$$

To me at least, this isn't what we want. We would rather have the correlation be constant.

Let's instead try to get correlated GBM by using $$L X_t$$ where $X_t$ is $d$-dimensional GBM, and the 1D components are independent. There issue here is that I don't think $L X_t$ is GBM. In other words, the sum of independent GBM's is not GBM. We could try taking the product of correlated GBM's, but I haven't gone down that road yet. And before I do, I wanted to post this question.

• When people say they want the two stocks to be correlated, they mean they want the LOGARITHMIC RETURNS at time t to be correlated, and the Cholesky technique does this. What you have calculated is the correlation between PRICE LEVELS $X_i,X_j$ which is an entirely different kettle of fish. (You are right that in the long run stocks with correlated return will diverge in price. If you want the two stock prices to stay together in the long run, then perhaps co-integration is the concept you are looking for). Dec 5, 2016 at 23:28
• Hi, I can see that you have a mistake in your analysis which definitely affects your final result. The first term in the last parentheses of your Cov definition is missing a t variable in the exponent! Dec 6, 2016 at 15:15
• @millovanovic Thanks I'll add the $t$. Just forgot to add it when typing up the question.
– Kurt
Dec 6, 2016 at 20:44
• @AlexC it is really a pitty you always answer as comments. I can't believe how many times I've been writing this... Your answers are great and usually are the exact solution, so please do post them correctly.
– SRKX
Dec 7, 2016 at 7:01
• There's another mistake too - the decomposition shoudl eb on the correlation matrix, not covariance. What you have done is going to drastically reduce the vol. Additionally, your last paragraph is exactly wrong, they just need to be independent (see here).
– will
Dec 7, 2016 at 8:33

The standard approach for simulating correlated random numbers would be via a Cholesky decomposition (see e.g. Wikipedia on Cholesky decomposition).

• Here's the issue I see. I understand how to use the Cholesky decomposition to created correlated paths of Brownian motion. However, as far as I can tell, the same trick doesn't work with geometric Brownian motion. I'll add some detail to the original post to explain what I mean.
– Kurt
Dec 5, 2016 at 17:25

Using correlated Brownian motions (Wiener processes) to construct GBMs should result in those GBMs having the same correlation structure as the used Brownian motions.

There are answers on how to construct correlated Brownian motions here, and, if you prefer to see more analysis, here.

Update: As for the analysis I can see a mistake where $t$ is dropped in your covariance definition. It should be $$\text{Cov}(X_i(t),X_j(t)) = X_i(0)X_j(0)e^{(\mu_1+\mu_2)t}(e^{\rho_{ij}\sigma_i\sigma_j{\color{red}t}}-1),$$ where the missing term is marked in red.

• I added some more detail to my question. I'd appreciate it if you could take a look.
– Kurt
Dec 5, 2016 at 17:58
• @Kurt I have also updated my answer. Dec 6, 2016 at 16:58

As CFW noted, one popular way of simulating stocks with GBM returns is Cholesky decomposition. If you have a covariance matrix, you can use it. Else you can use past prices to construct one. You can find example R code here.

But if I understand your question correctly you use one distribution to derive correlations and use another to simulate a correlated stock mechanism. That might not be ideal. Harder to explain and justify. Yet if its predictions fit consistently and sustainably, that's all you need.