# Creating a set of histories that satisfies certain statistics

I'm looking at a download of BlackRock's capital market assumptions, which gives a bunch of statistics, such as expected and quartiles for asset classes' returns for different timeframes, volatilities and very partial correlations. (But no correlation matrix for example, nor any other specifications of distributions.)

I would like to create a set of - say - 100,000 histories, that together fit those statistics.

I'm thinking of starting with one random history, and then keep adding random histories that increase the 'overall fit' of the collection of histories (if not, then do not add this particular history and move to the next).

But I have the feeling that I am reinventing something that already exists. Is a technique like the above well-known (or is there a well-known better one)?

You known some, but not all the correlations. Try to assume that the unknown correlations are 0. If this causes your correlaion matrix not to be positive definite (which you'll need), then you'll need to tweak or make up some more non-zero correlations. However you probably won't need it.

Then just see my answer here.

• Ah, something like this: deltaquants.com/manipulating-correlation-matrices? May 8 at 19:29
• Yes, this would render the matrix positive definite for sure. However in your situation, it might be better to leave the "known" correlation unchanged, and tweak only "unknown" ones to non-zero as needed. Anyway, why don't you try your matrix first using 0's for all unknowns, and see whether it has eigenvalues <=0. Maybe you don't need to "fix" anything. (Another note: in my old answer, I assumed μ=0, but you want the given μ's, which should be clear too.) May 8 at 19:56
• I can already plainly see that many of the correlations cannot be 0. So, I guess it becomes an optimisation problem that minimises the sum of the absolute unknown correlations, subject to semipositivedefinitiness. May 8 at 20:02
• Or maybe sum of covariances... May 8 at 20:03
• Then again, why minimise, and not - say - maximise... Interesting. May 8 at 20:04

To create a correlated random time series of returns you can always use a cholesky décomposition (if you have a positive definite covariance matrix ) .A simple manual implementation of it is described here :

https://www.quantstart.com/articles/Cholesky-Decomposition-in-Python-and-NumPy/

For technical understanding you can check the Wikipedia page here,which is very well explained :

https://en.m.wikipedia.org/wiki/Cholesky_decomposition

Moreover,if you want to add roughness to your asset returns or you want to simulate a volatility path(which is not a diffusion process ) you can always try to use a fractional Brownian motion with a specific time dépendant covariance matrix expressed such as :

\begin{aligned}\mathrm{E}\left[B_{t}^{H} B_{s}^{H}\right]=\frac{1}{2}\left(t^{2 H}+s^{2 H}-|t-s|^{2 H}\right) \end{aligned}

With $$B_{t}$$ and $$B_{s}$$ fractional Brownian motions at respectively time $$t$$ and $$s$$ And $$H$$ the hurst parameter,which determines the roughness of the paths.More details about the maths and the implementations are available on this paper :

https://arxiv.org/pdf/1406.1956.pdf