Curious observations about efficient frontier calculations

I was using Portfolio Visualizer to try out a few efficient frontier calculations. You can run the same calculation using this link. I find it quite curious: 1) What causes Portfolio 2 to stop at σ ~ 15%? In some other portfolios I tried, the efficient frontier curves can sometimes be really short. 2) How/Why…


Curious observations about efficient frontier calculations

I was using Portfolio Visualizer to try out a few efficient frontier calculations. You can run the same calculation using this link. I find it quite curious: 1) What causes Portfolio 2 to stop at σ ~ 15%? In some other portfolios I tried, the efficient frontier curves can sometimes be really short. 2) How/Why would Portfolio 2, which is a superset of Portfolio 1, cross 1 from below?

To illustrate this, I’ve attached four example runs below. Red is EF #2, while blue is EF #1. EF #2 = EF #1 + one extra asset class. The region I was talking about is where the two curves intersect. Most prominent are Run01 and Run02, where the computed curves already intersect, while for the other two runs if the EF #2 calculations were to extend to higher risk values, they would also be below EF #2. My point was that by simply setting that extra asset class to 0%, EF #2 would do at least equally well as EF #1 — what am I missing here?

The app developer kindly replied on the brief inner workings of resampled efficient frontier calculations, which is what one should expect for Monte Carlo simulations. Since I didn’t ask the permission, I’ll just point to the FAQ where some of the same references are listed. My best understanding is this: The algorithm first generates say 1000 simulated return series that include assets/asset classes from both portfolios. Each return series is different, but sampled from the same joint normal distribution with the same mean and covariance matrix as found for the historical data. Now for each of the two portfolio, the algorithm computes the efficient frontier for each return series and then averages, at each risk value, the 1000 (risk, return) data to get the combined efficient frontier.

Run1
Run2
Run3
Run4

Still not sure the root cause. Archived here.

[

Source link