I am working with mean variance optimization (MVO) and as such after "training" my model I test the results on a test dataset. Markowitz states that the return of a portfolio is the "Sum of weighted average returns". Let's now show an example on how this is not true on a real world scenario.

  1. Asset A has a weight of 10% and an annual geometric return of 100%
  2. Asset B has a weight of 90% and an annual geometric return of 10%

According to markowitz the return of the portfolio should be (0.1 * 100) + (0.9 * 10) = 19%.

Now, let's do a simulation on the value gained with the portfolio. Total value to invest in the portfolio is 100. Timeframe is 5 years. Compound annualy.

  1. Markowitz: Start value is 100. Rate is 19%. End value is 238.64. (Investment websites used to get this value)
  2. "Real" return: Start value is 100. Asset A start value is 10, and Asset B start value is 90. Asset A grows from 10 to 320. Asset B grows from 90 to 144.95. In total the end value is 464.95. The return necessary to get this end value, starting with 100 (combining assets) is 35.98%.

Right now I have a training model with multiple input parameters, and as such I am trying to find the best combination by averaging the performance on the test dataset. So my question is which return is "more correct" and which one should I used to compare strategies.

A quick end note is that not only are the returns different when comparing "real" vs markowitz but also volatility is different (unless multiplying the weights with the respective returns every period), so I am bit confused on which pair of values I should use.

  • If you are also doing a Monte Carlo simulation you will get different results depending upon parameters May 31, 2022 at 14:07

2 Answers 2


Analysis in the Markowitz model is intended to be done over a single investment period (source). Here you've stretched it out to 5 annual periods, so you're outside the bounds of the model.

The missing piece is rebalancing. If your desired portfolio is 90% of Asset A and 10% of Asset B, at the end of the first year you're already at 83.2%/16.8%. After five years, without rebalancing, you're at 31.2%/68.8% (!). If you factor in an annual rebalance to bring the portfolio back to the target, your two scenarios should line up.

  • 1
    While I do understand the logic I can never get to the return provided by markowitz. Depending on the weights sometimes its 1% off sometimes is more. Seems to be dependant on the weights attribute to a high return. Nonetheless, after implementing what you said the volatilty is always spot on
    – Ventura
    May 31, 2022 at 17:18
  • 3
    @Ventura You probably need to rebalance continuously to get the theoretic return exactly. The less often you rebalance, the more the differences add up.
    – Barmar
    Jun 1, 2022 at 14:21
  • @Barmar I have done that exactly. Currently rebalancing every week (every period in my case). With that in mind the returns are still different. So two options: either my rebalance is being done wrong or there must another way.
    – Ventura
    Jun 1, 2022 at 16:54
  • 1
    @Ventura In order for the two scenarios in the original question to match exactly, you have to rebalance at the end of each period; in this case each year. If you want to change the period to a week, you'll need to recalculate the Markowitz return for one week.
    – glibdud
    Jun 1, 2022 at 18:14
  • I will just add that in the end, I took this answer advice (rebalancing) and stopped trying to match the markowitz returns.
    – Ventura
    Jun 3, 2022 at 13:46

Example computation year after year:

Year 0: A=10, B=90 => Markowitz model: (10/100 * 100% + 90/100 * 10%) = 19%
Year 1: A=20, B=99 => Markowitz model: (20/119 * 100% + 99/119 * 10%) => 25.1%, actual return: 19%
Year 2: A=40, B=108.9 => Markowitz model: (40/148.9 * 100% + 108.9/148.9 * 10%) => 34.1%, actual return: 25.1%

So you can see that the Markowitz model is actually accurate to compute the return for the next period. However, you must recompute the model weight at end of each period.

  • Not sure I understood what you said. My returns dataset are not annual, they are weekly
    – Ventura
    Jun 3, 2022 at 13:46
  • The Markowitz model is accurate to estimate the return of a period (weekly, annual, ...). After that period, you must recompute the model's weight (as I did in my iterations above), to recompute the Markowitz' rate. You'll see it match exactly.
    – xryl669
    Jun 7, 2022 at 9:28

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .