Because I can fit e.g. ~25 distributions via empirical cumulative distribution fitting to correlated data (including stable dist.), and then simulate the original data based on correlation (covariance) using the best fitting distribution for each feature, I am planning on the following three approaches regarding MC and bootstrapping for estimating optimal weights for monthly re-balancing (20 trading days).


Fetch about 2-4 years of daily price data for the stocks of interest, estimate log-returns, and fit various distributions to the log-returns for each asset. Then, using the correlation between the assets, simulate small blocks of e.g. 20 days (1 month) of log-returns.

Next, use MV minimization (tangency portfolio) with the mean returns and covariance matrix for the 20-day sequence of simulated log-returns, repeat $B=500$ times, and average the weight vectors $\mathbf{w}^{(b)}$, portfolio returns $r_P^{(b)}$ and portfolio variance $\sigma^{2 (b)}_P$ for all the $B$ iterations. Determine the median, and 10th and 90th percentiles of each ($\mathbf{w}$, $r_P$, $\sigma^2_P)$.


In the nice paper by Daly et al on covariance noise filtering via Marcenko-Pastur and daily data, they randomly selected test dates and used data for the following 20 days as the data for each block. During each iteration, all data prior to the randomly selected test date were used for the in-sample training data, and separate analyses were done on the out-of-bag data. They basically filtered covariance and correlation matrices for the training and test (20-day block) data and reported the number of signal eigenvalues greater than $\lambda_+$.

My thoughts here would be to simply generate the return vector and covariance matrix for each 20-day block (of log-returns), and then use MV minimization via a tangency portfolio for the block. Repeat $B=500$ times. This approach would conserve between-asset correlation while also using the observed mean returns, which are alternate realizations.


This approach would involve simply fetching random daily data (selecting one day at a time) to construct sequences of e.g. 20 days, which would then be MV-minimized for a min-variance (not tangency) $GMV$ portfolio, assuming zero mean returns, since any information related to mean return here would be biased and false, as individual days were randomly sampled. Repeat $B=500$ times.

I think all three methods above have merit, since the first simulates correlated returns for small sequences of data and applies a tangency portfolio. The second method randomly fetches blocks of data and generates tangency portfolios for each. The last approach simply fetches random days to construct 20-day sequences, and assumes zero returns for the $GMV$ portfolio.

In light of the above and the numerous ways in which MC can be applied to portfolio optimization, which approach is more common for determining weights to be applied during a monthly (20-day) re-balance?


First of all, I would re-order your approches this way

  1. Monte-Carlo of daily returns
  2. Bootstrap of daily returns
  3. Block Bootstrap of 20 days

Second I would like to comment on what you want to do with the data?

It seems to me that you target to implement a "sliding (20 days) robust Markowitz portfolio". It leads to the question what kind of robustness are you targeting?

if it is a robustness with respect to

  • the covariance matrix, this is probably the covariance matrix that you would like to bootstrap, or to clean.
    • They are a lot of documented ways to do it; have a look for instance at Correlation, hierarchies, and networks in financial markets (by M. Tumminello, F. Lillo, R.N. Mantegna, 2008)
    • but if you want to do it by yourself using resampled data, you can work on a distribution of the covariance itself and not on portfolio
    • you could also use your synthetic data to build a covariance matrix that would explain the predicted out of sample risk
    • in any case notice that your MS approach will simply destroy the correlation structure of your assets
  • if you fear to not have a good estimation of the expected returns, I am not sure that any of your methods will help, it will be easy for you to check this: are few days of past returns correlated with the future returns? (just draw a scatter plot to check this)

You see that I do not talk about the "robustness of the portfolios" themselves, because given you plan to use a Markowitz construction to obtain them, it means that you will have two inputs: the expected returns and the covariance matrix. Somehow if these are clean, your portfolio will be clean.

Nevertheless I would like to share a generic remark about this: say you have a method $F()$ taking parameters $\Theta$ to produce a quantity of interest. In your case, it seems that you consider that

  • $F$ is the Markowitz portfolio construction
  • $\Theta=\{C,\mu\}$ where $C$ is the covariance matrix and $\mu$ are the expected returns.
  • your portfolio is


For some reasons $\Theta$ has to be estimated on a database $D$, tau that your best estimator is $\mathbb{E}_D(\Theta)$. Statisticians call the plug-in method the idea that your "best guess" for the outcome (the portfolio) is $$\hat w=F(\mathbb{E}_D(\Theta)).$$

But you could consider that what you want is $$\tilde w=\mathbb{E}_D(F(\Theta)).$$ This is the approach that you have in mind, since you want to produce several portfolios and apply a filter on them (in your case you plan to average them) to obtain "something better".

What is the difference?

  • when $F$ is linear: there is no difference (except if your procedure $\mathbb{E}_D$ to obtain a clean estimate is very strange and tricky).
  • if we assume that the best estimator of $\Theta$ is $$\Theta^* = \Theta-\epsilon,$$ where $\epsilon$ is small, the plug-in approach can be rewritten (thanks to q Taylor expansion) $$\hat w=F(\mathbb{E}_D(\Theta))=F(\Theta^*) + \partial F(\Theta^*)\cdot\epsilon+o(\epsilon).$$

Hence the question to ask to yourself is: what is the sensibility of my formula $F$ (ie the Markowitz portfolio construction) to the parameters I will estimate (ie the expected returns and the covariance matrix)?

  • $\begingroup$ Thanks for the answer, and that's a helpful paper. Your statement about MC destroying the correlation between assets, I think you meant to say destroy any autocorrelation. I can specify a correlation matrix, cleanup pathologies, simulate a dataset using that corr matrix with different distributions for each variable, and obtain a similar correlation matrix from the simulated data. The paper you linked to addresses the stability of corr for bootstrapped and simulated data sets. $\endgroup$ Sep 22 '21 at 16:05
  • $\begingroup$ Regarding KL dist, hierarchical clustering, force plots (min span trees), Ledoit-Wolf, Schaefer-Strimmer, they're not novel methods, and I was expecting the authors to validate real-world returns and volatility based on different methods, but the paper ends with plots of KL dist between filtered corr matrices for different simulations. I was expecting something like the output tables in the Daly et al paper I cited (risk vs filtering method). $\endgroup$ Sep 22 '21 at 16:14
  • $\begingroup$ I think a problem with MC is the assets selected, and which epoch of time is used to define the corr matrix. Between-asset corr changes over time. Simulating a 20-day block of correlated log-returns based on corr derived from 2 years of returns may be meaningless. What does today's 20-day corr matrix look like vs 50 days ago, 100 days ago, 252, etc. Ledoit-Wolf, to shrink ("nudge") towards identity matrix or regressing data on major eigenvector (PC), and then using residuals as model inputs will be needed. After all, these filterings typically result in more wealth. $\endgroup$ Sep 22 '21 at 16:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.