Copulas and Monte Carlo ... a continuation of Part III

Now that we can generate random returns with prescribed Mean, Volatility and Correlation, it'd be neat to see how the correlation affects, say ...

>Monte Carlo!
You took the words right outta my mouth. In fact, what I'd like to do is that Safe Withdrawal Rate stuff and ...

>Not again!!
Pay attention!
Here's what we'll do for a 2-asset portfolio (like stocks and bonds):

  • We'll assign to each asset some Mean and Volatility and a Correlation between assets.
  • We'll generate two 30-year sequences of random annual returns for our (annually rebalanced) portfolio.
  • We'll withdraw some fixed percentage of the original portfolio each year (say the notorious 4%), increasing with inflation.
  • We'll repeat the above steps a jillion times (with different random sequences, of course) and determine the percentage of portfolios that survive the 30 years.
>Why 4%? Why not 5.678% and why not ...?
When we're finished there'll (hopefully) be a spreadsheet. You can stick in any numbers you like.
But our goal is to vary the Correlation to see how the Survival Rate changes with the Correlation and ...

>Our goal? It's not my ...
We'll do this using Frank's Copula whereby:
the two assets are assumed to have Mean and Volatility (or Standard Deviation) of m1, s1 and m2, s2
and the Correlation is prescribed
and for each year, we:

  1. Choose two random numbers u and w with 0 ≤ u,w ≤ 1.
  2. Generate v = (-1/d) log[ 1 - (1-e-d) / { 1 + e-du (w-1-1). } ] with some fixed d-value (determined by our prescribed Correlation).
  3. From u and v we generate x = NORMINV(u, m1, s1) and y = NORMINV(v, m2, s2) as our (normally distributed) annual returns.
  4. We apply these returns to our portfolio and withdraw the prescribed dollar amount.
  5. We then repeat steps 1 to 4 thirty times (meaning 30 years) and note whether the portfolio has survived.
  6. Then repeat steps 1 to 5 a jillion times, starting with the same original portfolio ... and note the percentage of surviving portfolios.
  7. Then we change the Correlation (meaning we change d) and repeat steps 1 to 6.
>zzzZZZ
This'll be interesting. Just wait till we get the results. Maybe we'll learn something! I've never seen this done before. Have you?
>zzzZZZ
Then we'll have to think of some other neat way to test our newly acquired copula-correlation skills, eh?
>zzzZZZ

Okay, here's what we got:


Click on the picture to download the spreadsheet.

We type in the various parameters, press F9 and get a set of thirty randomly selected annual returns and a chart of a possible portfolio.
Neat, eh?
>zzz ... Huh? That's it?
No, it's just interesting. Each time you press F9 you get a possible 30-year portfolio. Sometimes it drops dead, sometimes it survives and you also get the actual Means, SDs and Correlation for the set of random returns and ...
>But they're not the same!
Well, nobuddy's perfect. Remember, we're doing just 30 returns, not a jillion.
>Yeah, so what's the survival rate?
Aah, I'm glad you asked.
See the button called Monte Carlo? If you press that, you get 1000 30-year portfolios and a survival rate.
>And the number of iterations is chosen ... uh, just below the button?
You got it!
>And what if I want to see the correspondence between the specified Correlation and the Survival Rate?
Aah, I'm glad you asked. It's over on the right and it looks like so:

>I'd suggest using more than 1000 MC simulations, because ...
That's up to you. Just type in 10,000 if you like ... but it had better be a LARGE cup of coffee.
I almost forgot. When you specify the Correlation, the spreadsheet calculates d = ATANH(Correlation) / 0.145 since that's ...
>Huh?
Don't you remember? That's the approximation we found in copula math.
>But it's just an approximation!
Yes, as are all financial predictions. However, you can always resort to this.
>Yeah, very funny, but atanh? Isn't that ... uh ... a little, uh ...
If r is the Correlation, then it's the same as putting d = (1/0.29) log{ (1+r)/ (1-r) }
>Yeah. Much better.

for part V

P.S. There's a neat software package you can download here, from the Delft Institute of Applied Mathematics