# Monte carlo portfolio risk simulation

My objective is to show the distribution of a portfolio's expected utilities via random sampling.

The utility function has two random components. The first component is an expected return vector which is shocked by a random Gaussian variable ($ER$). The shock shifts the location parameter of the return distribution.

The second random component is a covariance matrix which is multiplied by a random scalar $S$. The scalar is drawn from a normal random variable, centered on $1$, where the variance of $S$ corresponds to our uncertainty in whether volatility increases or decreases.

My initial plan was to take separate draws of the $S$ and $EV$ and simply calculate the utility. However, clearly these random variables are not conditionally independent. In particular, research suggests that when volatility is increasing (i.e. $S > 1$), the expected returns distribution has a lower overall mean. Or, if volatility is contracting rapidly it is likely that the expected returns distribution has a higher mean.

In other words, I should be sampling from the joint distribution of $EV$ and $S$ as opposed to the marginal distributions of $EV$ and $S$ separately.

What's a good technique to estimate and sample these random variables from their joint distribution? The "correct" approach I can think of involves defining a set of states, estimating the transition probabilities between state pairs, and sampling $EV$ and $S$ conditional on random draws of a third state variable. Seems like overkill!

A crude variation of this would be to build a transition matrix such as [ High Vol to High Vol, Low to Low, Low to High Vol, High to Low Vol ] where the location and scale parameters ($ER$ and $S$) are informed by an "expert" (i.e. casual inspection of the data).

Are there other techniques that I may be missing that provide a solid "80/20 rule" solution for sampling from this joint distribution, or is state-space (markov models and the like) the only way to go? For example, perhaps there is a non-parametric technique to estimate the relationship between these two variables.

-

"research suggests that when volatility is increasing (i.e. 'S' is > 1), the expected returns distribution has a lower overall mean" if you assume a diffusion process of the sort $dS=mSdt+sSdz$ which has a mean of $m-s^2/2$ – strimp099 Nov 3 '11 at 16:22

## 1 Answer

Since both $ER$ and $S$ are gaussian random, why not just assume their dependence is captured by their covariance, and make your draws from the bivariate normal distribution? It is hard to construct any other way of making two marginal gaussians cointegrated.

Even if the variables were not gaussian, you would probably find yourself relating them using a gaussian copula anyway.

-

Right on +1. Question is how to estimate the covariance. Perhaps using a non-parametric bootstapping approach -- or using the mean of rolling historical returns, and the sum of elements of a rolling covariance matrix and estimating the covariance of these pairs? – Quant Guy Nov 4 '11 at 18:16
I think the best way to go about this is to fit a gaussian copula to capture the dependency between the marginal distributions. This is identical to saying the dependence is captured by their covariance. Thanks! – Quant Guy Nov 7 '11 at 16:05
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 19, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 5, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.9301966428756714, "perplexity_flag": "head"}