Skip to content
All library documents

Resampling and Simulating Returns for Monte Carlo Portfolio Tests

Article Quant Q&A · Author: Nipper

Summary

The document outlines two ways to create return samples for Monte Carlo analysis of mean–variance portfolios. One approach resamples rows from historical multivariate returns: collect asset prices, convert them to returns, use a lower frequency suited to the investment horizon, then repeatedly draw equal-length subsets with replacement. Run the portfolio model on each sample and aggregate a performance measure, such as the Sharpe ratio, across runs.

A second approach first simulates artificial prices or returns with a random-walk model or geometric Brownian motion, then resamples from those series. Individual asset processes can be assigned different means and variances, while a Cholesky transformation can introduce pairwise correlations. These are practical suggestions rather than a comparison backed by results. The document does not discuss limits such as regime changes, heavy tails, or whether the assumed process fits observed data, so resampling and simulation choices should be matched to the question being tested.

Key ideas

  • Historical Monte Carlo samples can be formed by resampling multivariate return observations with replacement.
  • Use sample frequencies and lengths that reflect the portfolio horizon being studied.
  • Run the portfolio model on each sample and aggregate its performance measures across runs.
  • Artificial returns can be simulated with random walks or geometric Brownian motion.
  • A Cholesky transformation can add pairwise dependence to otherwise independently generated asset series.

Tags

Full text
# Monte Carlo approach and methods for generating random returns


# Monte Carlo approach and methods for generating random returns












Recently I found myself reading more about Monte Carlo approach in m.v. portfolio optimization framework.

I already discuss the topic on this forum (if interested please consider the following links - Monte Carlo (resampling) in m.v. portfolio optimization , Quasi Random Monte Carlo in m.v. portfolio optimization ) however the following question arises:

What does it means "draw" or "generate" random returns samples from the assets distribution or from the multivariate distribution?

All literature I have been able to read until now seem not to address the "practical aspects" of the Monte Carlo approach (only its application in different quantitative finance problems). Of course simply calling a random generating function in our code (i.e. `.rvs()` in `scipy` python package) is what probably came first to a reader's mind however I think there is or could be more than this.

Specifically which other techniques/methods one can apply? What is the best practice in the industry?

Maybe one should randomly generate prices instead returns and apply a random walks model (econometric models, i.e. arithmetic, geometric etc.).

## Answer by develarist (score 1)

https://quant.stackexchange.com/a/57610

To "draw" random returns samples from the assets' distribution, you first download empirical price data for $N$ assets, convert them to returns then collect into matrix form, and then take subsets of these empirical multivariate returns data $m$ times.

- After running the mean-variance model on each of these $m$ Monte Carlo simulations, you average across all of the $m$ performance criterion (e.g. Sharpe ratio) belonging to each run to have an aggregated picture of how well the model performed.

- The subsets are equal length to one another, but of shorter length than the parent "full sample" data, and should be sampled at random with replacement.

- Before taking subsets of the empirical asset returns, you should downsample them to a lower frequency, since portfolio optimization is a low frequency/long horizon problem (usage of monthly data makes more sense than daily data).

To "generate" random returns samples from the multivariate distribution, you first simulate artificial random prices or returns with random walk process or Geometric Brownian motion for $N$ assets, and then take subsets of these artificial multivariate returns data $m$ times.

- After running the mean-variance model on each of these $m$ Monte Carlo simulations, you average across all of the $m$ performance criterion (e.g. Sharpe ratio) belonging to each run to have an aggregated picture of how well the model performed.

- The subsets are equal length to one another, but of shorter length than the parent "full sample" data, and should be sampled at random with replacement.

- In the simplest case, each $n$th asset is generated one by one if the univariate GBM process is used, for example. This allows you to target a unique mean and variance for each individual asset (each univariate return series), to mimic how stocks in real life have different statistical properties, which are then collected into an asset returns matrix.

- What's important when generating artificial data is that GBM allows you to incorporate pair-wise correlations between the assets using the Cholesky decomposition inversion method to make them more realistic (empirical data usually has asset dependencies, whereas random number generators by default don't so the Cholesky inserts these properties during data construction)

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.