Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

First off, apologies for the cross-post from mathematics, but I found this site later and think it would be a better fit for the question (besides, there has been no comments/answers on mathematics for a day)

I am trying to generate a series of correlated random numbers that represent currency exchange rates for a Monte-Carlo simulation. I am attempting to do this via a Cholesky decomposition of the correlation matrix, but the results I get at the end seem to be skewed and I'd like to check whether I was doing anything wrong.

My sample data is:

1.6154  1.2013
1.6152  1.2
1.6149  1.1972
1.6048  1.2025
1.6202  1.231
1.629   1.2003

I calculate the Standard Deviation of the two series as 0.007903 and 0.012673 and the correlation between the two series as 0.178

I therefore get the correlation matrix of

USD  1     0.178
EUR  0.178 1

Perfoming the Cholesky decomposition on this gives me:

USD  1     0
EUR  0.178 0.984

Which I should be able to multiply by some random numbers to give me my correlated data.

I have some gaussian random numbers using the standard deviations calculated previously and USD mean = 1.623, EUR mean = 1.184:

Scenario  USD       EUR
 1        1.63032   1.19041
 2        1.61846   1.15589
 3        1.61724   1.18784
 4        1.61679   1.17281

However multiplying the two together gives me:

Scenario    USD     EUR
1           1.842   1.171
2           1.824   1.137
3           1.829   1.169
4           1.826   1.154

The EUR values look OK, but all the USD values seem to be out by around 0.2. The input uncorrelated numbers look OK so have I done something wrong?

share|improve this question
You need to apply the matrix to Gaussians with mean zero. – Mlazhinka Shung Gronzalez LeWy Jul 14 '14 at 23:20
And then add the expectations you want to the correlated Gaussians you obtain. – Mlazhinka Shung Gronzalez LeWy Jul 14 '14 at 23:23
Think about it. You want to replace the gaussians $x_1,x_2$ by $y_1=x_1$ and $y_2=rx_1+sqrt{1-r^2}x_2$. This is what the matrix multiplication is doing. The expectation $E(y_1)=E(x_1)$ is fine, but $E(y_2)=rE(x_1)+\sqrt{1-r^2}E(x_2)$, which is not necessarily the expectation $E(x_1)$ that you are giving to $x_1$. On the other hand, if $E(x_1)=E(x_2)=0$ then $E(y_1)=E(y_2)=0$. Afterwards you can add to $y_1$ and $y_2$ the expectations that you want. By this addition the covariance matrix of $y_1,y_2$ doesn't change. – Mlazhinka Shung Gronzalez LeWy Jul 14 '14 at 23:29
OK, so the key is mean must = 0, which knocks out my Mean = todays value assumption. This gives me the option of calculating the difference from todays rate and adding todays data to the end (problem: if a rate is at a peak or nadir, then the mean of the dataset won't really be 0) or calculating day to day % change and hoping that these average out to near 0 (probably OK for rates, ignoring the Zimbabwean dollar, but not so much equities and similar with an expected return?). My gut is that the % daily change is the correct metric but can anyone confirm? – Matt Allwood Jul 15 '14 at 15:51
I guess there's also auto-correlation nasties that come into play with some of these, but think that's a whole other can of worms – Matt Allwood Jul 15 '14 at 15:52

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.