Portfolio construction · Estimation riskEmpirical finding
Portfolio optimization under estimation error and out-of-sample evaluation
The fitted max-Sharpe portfolio weakened materially on later data.
One maximum-Sharpe portfolio was fitted, frozen, and then run on later data. Its measured performance fell.
Commit 4806df9Evidence ad24c49Data – · 2,892 rowsUniverse 15 instrumentsTests 239 / 239 passed
- 1.12MVO Sharpe · 2015–2021 fit
- 0.44MVO Sharpe · sealed 2022–2026 evaluation
- 0.68Gap between the two published Sharpe ratios
- ≈0.5Estimated sampling error of a Sharpe ratio over this window
- ≈0.6Robust MVO Sharpe · evaluation (best of the four)
- 34.3%Robust MVO maximum drawdown · evaluation window
Risk-based methods delivered a more stable risk shape—not a reliable return advantage.
Maximum-Sharpe mean–variance optimization scored a Sharpe ratio near 1.12 in the 2015–2021 fit period. The same frozen weights scored 0.44 in the sealed 2022–2026 evaluation. Risk parity and hierarchical risk parity ran at roughly half the volatility of the optimized books. Their drawdowns were about two-thirds as deep. Neither reliably won on return. The evidence supports that narrower claim.
In-sample efficient frontier, 2015–2021 estimates
% annualised · in-sample moments · notebook 02
| Point | annualised volatility (%) | annualised expected return (%) |
|---|---|---|
| frontier | 4.13318 | 3.30723 |
| frontier | 4.18838 | 3.96457 |
| frontier | 4.33573 | 4.62191 |
| frontier | 4.56748 | 5.27925 |
| frontier | 4.87147 | 5.9366 |
| frontier | 5.24389 | 6.59394 |
| frontier | 5.66408 | 7.25128 |
| frontier | 6.10508 | 7.90862 |
| frontier | 6.56253 | 8.56596 |
| frontier | 7.03322 | 9.2233 |
| frontier | 7.51466 | 9.88064 |
| frontier | 8.00491 | 10.538 |
| frontier | 8.50245 | 11.1953 |
| frontier | 9.00607 | 11.8527 |
| frontier | 9.5148 | 12.51 |
| frontier | 10.0279 | 13.1674 |
| frontier | 10.5446 | 13.8247 |
| frontier | 11.0982 | 14.482 |
| frontier | 11.715 | 15.1394 |
| frontier | 12.3855 | 15.7967 |
| frontier | 13.1015 | 16.4541 |
| frontier | 13.8559 | 17.1114 |
| frontier | 14.6451 | 17.7687 |
| frontier | 15.4714 | 18.4261 |
| frontier | 16.3301 | 19.0834 |
| frontier | 17.2162 | 19.7408 |
| frontier | 18.1258 | 20.3981 |
| frontier | 19.0555 | 21.0555 |
| frontier | 20.0025 | 21.7128 |
| frontier | 20.9644 | 22.3701 |
| SPY | 17.6744 | 15.4237 |
| QQQ | 20.9644 | 22.3701 |
| IWM | 22.1826 | 12.7561 |
| EFA | 17.4804 | 8.17667 |
| EEM | 21.506 | 7.73937 |
| AGG | 4.33716 | 2.94934 |
| TLT | 14.0882 | 5.3667 |
| LQD | 7.99139 | 4.88487 |
| GLD | 13.9215 | 6.75544 |
| DBC | 17.0865 | 3.74975 |
| VNQ | 20.909 | 11.1479 |
| USMV | 15.2331 | 13.007 |
| MTUM | 20.1369 | 17.2725 |
| VLUE | 20.1627 | 11.8096 |
| QUAL | 17.7593 | 15.4057 |
| MVO max Sharpe | 11.0764 | 14.4575 |
| Robust MVO | 18.9407 | 20.975 |
| Risk parity | 7.53947 | 7.69801 |
| HRP | 5.33026 | 5.19272 |
Sharpe ratio by construction method · fit window and sealed evaluation
Sharpe (rf 2%) · 2015–2021 vs 2022–2026 · notebook 02
| construction method | in-sample 2015–2021 | out-of-sample 2022–2026 |
|---|---|---|
| MVO max Sharpe | 1.12469 | 0.435431 |
| Robust MVO | 1.00181 | 0.586694 |
| Risk parity | 0.755757 | 0.355055 |
| HRP | 0.59898 | 0.120618 |
Out-of-sample equity curves, frozen 2021 weights
growth of $1 · 2022-01 = 1 · daily · notebook 02
Weights fitted on 2015–2021
weight (%) · long-only, fully invested · notebook 02
| ETF | MVO max Sharpe | Robust MVO | Risk parity | HRP |
|---|---|---|---|---|
| SPY | 0 | 1.53083e-14 | 3.68074 | 1.93356 |
| QQQ | 52.5163 | 91.7947 | 3.31297 | 0.833922 |
| IWM | 0 | 0 | 3.22099 | 0.803273 |
| EFA | 1.0623e-15 | 0 | 3.93258 | 1.29356 |
| EEM | 0 | 2.54178e-14 | 3.30099 | 1.20391 |
| AGG | 2.45467e-14 | 3.14652e-15 | 21.6809 | 53.6186 |
| TLT | 35.8711 | 8.2053 | 17.3631 | 6.41027 |
| LQD | 9.27459e-15 | 0 | 9.9236 | 15.7936 |
| GLD | 11.6126 | 4.0381e-14 | 9.02287 | 6.56466 |
| DBC | 0 | 2.14586e-14 | 6.32847 | 2.99082 |
| VNQ | 7.09841e-15 | 4.16991e-15 | 3.3428 | 1.27363 |
| USMV | 2.09683e-14 | 7.32338e-15 | 4.25127 | 2.8401 |
| MTUM | 2.00786e-14 | 1.09009e-13 | 3.34485 | 0.903865 |
| VLUE | 0 | 1.04656e-14 | 3.57617 | 1.62112 |
| QUAL | 3.65742e-14 | 5.13112e-14 | 3.71767 | 1.91513 |
Fractional risk contributions by construction method
fraction of portfolio variance (%) · in-sample covariance · notebook 02
| ETF | MVO max Sharpe | Robust MVO | Risk parity | HRP |
|---|---|---|---|---|
| SPY | 0 | 1.30349e-14 | 6.66667 | 3.10052 |
| QQQ | 85.8728 | 101.429 | 6.66667 | 1.48136 |
| IWM | 0 | 0 | 6.66667 | 1.44996 |
| EFA | 1.0174e-15 | 0 | 6.66667 | 2.00767 |
| EEM | 0 | 2.15787e-14 | 6.66667 | 2.24447 |
| AGG | 3.91655e-15 | 3.87382e-17 | 6.66667 | 35.8623 |
| TLT | 9.6943 | -1.42911 | 6.66667 | 8.47121 |
| LQD | 3.21556e-15 | 0 | 6.66667 | 19.8684 |
| GLD | 4.43289 | 1.07574e-15 | 6.66667 | 8.35406 |
| DBC | 0 | 6.50499e-15 | 6.66667 | 2.89091 |
| VNQ | 7.20969e-15 | 2.74168e-15 | 6.66667 | 2.71972 |
| USMV | 1.98284e-14 | 4.75443e-15 | 6.66667 | 4.30471 |
| MTUM | 2.9375e-14 | 1.07247e-13 | 6.66667 | 1.64508 |
| VLUE | 0 | 8.53807e-15 | 6.66667 | 2.54444 |
| QUAL | 4.25797e-14 | 4.29262e-14 | 6.66667 | 3.05526 |
Performance by method · in-sample 2015–2021 and out-of-sample 2022–2026
| Window | Method | Annualised return | Annualised volatility | Sharpe (rf 2%) | Sortino | Max drawdown | Hit rate | Skew | Excess kurtosis | VaR 95 (1d) | ES 95 (1d) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| in-sample 2015–2021 | MVO max Sharpe | 0.14843 | 0.110764 | 1.12469 | 1.59142 | 0.14047 | 0.575482 | -0.471522 | 5.76709 | 0.0110111 | 0.0168343 |
| in-sample 2015–2021 | Robust MVO | 0.211278 | 0.189407 | 1.00181 | 1.40516 | 0.255342 | 0.573212 | -0.517436 | 8.99331 | 0.0188816 | 0.029439 |
| in-sample 2015–2021 | Risk parity | 0.0769304 | 0.0753947 | 0.755757 | 1.01917 | 0.167089 | 0.566969 | -1.54667 | 23.5824 | 0.00591884 | 0.0109146 |
| in-sample 2015–2021 | HRP | 0.0517914 | 0.0533026 | 0.59898 | 0.798216 | 0.130388 | 0.553348 | -2.35812 | 43.7399 | 0.0041846 | 0.00744273 |
| out-of-sample 2022–2026 | MVO max Sharpe | 0.0757748 | 0.146384 | 0.435431 | 0.627739 | 0.303808 | 0.517272 | 0.239992 | 4.34938 | 0.0156076 | 0.0203249 |
| out-of-sample 2022–2026 | Robust MVO | 0.131591 | 0.216527 | 0.586694 | 0.843657 | 0.343373 | 0.545616 | 0.202669 | 4.96544 | 0.0222037 | 0.0307724 |
| out-of-sample 2022–2026 | Risk parity | 0.0502576 | 0.0942931 | 0.355055 | 0.505106 | 0.202405 | 0.537644 | 0.12519 | 3.56273 | 0.00964046 | 0.0131716 |
| out-of-sample 2022–2026 | HRP | 0.0264966 | 0.0731957 | 0.120618 | 0.169861 | 0.179764 | 0.527015 | 0.0676724 | 2.34874 | 0.00749275 | 0.0101249 |
Returns, volatility, drawdown and VaR/ES are decimals (0.146 = 14.6%).
Portfolio weights fitted on 2015–2021
| ETF | MVO max Sharpe | Robust MVO | Risk parity | HRP |
|---|---|---|---|---|
| SPY | 0 | 1.53083e-16 | 0.0368074 | 0.0193356 |
| QQQ | 0.525163 | 0.917947 | 0.0331297 | 0.00833922 |
| IWM | 0 | 0 | 0.0322099 | 0.00803273 |
| EFA | 1.0623e-17 | 0 | 0.0393258 | 0.0129356 |
| EEM | 0 | 2.54178e-16 | 0.0330099 | 0.0120391 |
| AGG | 2.45467e-16 | 3.14652e-17 | 0.216809 | 0.536186 |
| TLT | 0.358711 | 0.082053 | 0.173631 | 0.0641027 |
| LQD | 9.27459e-17 | 0 | 0.099236 | 0.157936 |
| GLD | 0.116126 | 4.0381e-16 | 0.0902287 | 0.0656466 |
| DBC | 0 | 2.14586e-16 | 0.0632847 | 0.0299082 |
| VNQ | 7.09841e-17 | 4.16991e-17 | 0.033428 | 0.0127363 |
| USMV | 2.09683e-16 | 7.32338e-17 | 0.0425127 | 0.028401 |
| MTUM | 2.00786e-16 | 1.09009e-15 | 0.0334485 | 0.00903865 |
| VLUE | 0 | 1.04656e-16 | 0.0357617 | 0.0162112 |
| QUAL | 3.65742e-16 | 5.13112e-16 | 0.0371767 | 0.0191513 |
Effective number of holdings (1 / Σ w²)
| Method | Effective N |
|---|---|
| MVO max Sharpe | 2.3926 |
| Robust MVO | 1.17736 |
| Risk parity | 8.93028 |
| HRP | 3.08402 |
Fractional risk contributions
| ETF | MVO max Sharpe | Robust MVO | Risk parity | HRP |
|---|---|---|---|---|
| SPY | 0 | 1.30349e-16 | 0.0666667 | 0.0310052 |
| QQQ | 0.858728 | 1.01429 | 0.0666667 | 0.0148136 |
| IWM | 0 | 0 | 0.0666667 | 0.0144996 |
| EFA | 1.0174e-17 | 0 | 0.0666667 | 0.0200767 |
| EEM | 0 | 2.15787e-16 | 0.0666667 | 0.0224447 |
| AGG | 3.91655e-17 | 3.87382e-19 | 0.0666667 | 0.358623 |
| TLT | 0.096943 | -0.0142911 | 0.0666667 | 0.0847121 |
| LQD | 3.21556e-17 | 0 | 0.0666667 | 0.198684 |
| GLD | 0.0443289 | 1.07574e-17 | 0.0666667 | 0.0835406 |
| DBC | 0 | 6.50499e-17 | 0.0666667 | 0.0289091 |
| VNQ | 7.20969e-17 | 2.74168e-17 | 0.0666667 | 0.0271972 |
| USMV | 1.98284e-16 | 4.75443e-17 | 0.0666667 | 0.0430471 |
| MTUM | 2.9375e-16 | 1.07247e-15 | 0.0666667 | 0.0164508 |
| VLUE | 0 | 8.53807e-17 | 0.0666667 | 0.0254444 |
| QUAL | 4.25797e-16 | 4.29262e-16 | 0.0666667 | 0.0305526 |
In-sample moments and the standard error of the annualised mean
| ETF | Annualised mean | Annualised vol | SE(mean) | mean / SE |
|---|---|---|---|---|
| QQQ | 0.223701 | 0.209644 | 0.0792829 | 2.82156 |
| MTUM | 0.172725 | 0.201369 | 0.0761536 | 2.26812 |
| SPY | 0.154237 | 0.176744 | 0.066841 | 2.30753 |
| QUAL | 0.154057 | 0.177593 | 0.0671618 | 2.29382 |
| USMV | 0.13007 | 0.152331 | 0.0576085 | 2.25783 |
| IWM | 0.127561 | 0.221826 | 0.0838901 | 1.52058 |
| VLUE | 0.118096 | 0.201627 | 0.0762511 | 1.54878 |
| VNQ | 0.111479 | 0.20909 | 0.0790736 | 1.40981 |
| EFA | 0.0817667 | 0.174804 | 0.0661072 | 1.23688 |
| EEM | 0.0773937 | 0.21506 | 0.081331 | 0.951589 |
| GLD | 0.0675544 | 0.139215 | 0.0526482 | 1.28313 |
| TLT | 0.053667 | 0.140882 | 0.0532784 | 1.00729 |
| LQD | 0.0488487 | 0.0799139 | 0.0302218 | 1.61634 |
| DBC | 0.0374975 | 0.170865 | 0.0646175 | 0.580299 |
| AGG | 0.0294934 | 0.0433716 | 0.0164022 | 1.79814 |
SE(mean) = σ / √Y with Y = 6.99 years of in-sample data.
Efficient frontier points (in-sample)
| Expected return | Volatility | Sharpe | SPY | QQQ | IWM | EFA | EEM | AGG | TLT | LQD | GLD | DBC | VNQ | USMV | MTUM | VLUE | QUAL |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.0330723 | 0.0413318 | 0.316277 | 0 | 7.62127e-18 | 0 | 1.38194e-17 | 0 | 0.920679 | 0 | 5.38686e-17 | 3.23357e-17 | 0.0427945 | 3.3169e-18 | 1.68322e-17 | 0 | 0.0365263 | 3.11706e-17 |
| 0.0396457 | 0.0418838 | 0.469053 | 1.99685e-17 | 0.034255 | 1.99204e-17 | 1.03127e-16 | 5.31432e-18 | 0.89979 | 8.24102e-17 | 0 | 3.06954e-17 | 0.0361209 | 0 | 0.00681909 | 0 | 0.00951446 | 0.0135009 |
| 0.0462191 | 0.0433573 | 0.604722 | 1.79929e-17 | 0.0762298 | 0 | 4.42227e-18 | 4.80605e-18 | 0.876337 | 0 | 0 | 0.00580998 | 0.0268564 | 8.09248e-19 | 0.0147665 | 0 | 9.37688e-18 | 1.7372e-18 |
| 0.0527925 | 0.0456748 | 0.717957 | 1.15967e-17 | 0.112591 | 0 | 1.62894e-17 | 0 | 0.846954 | 0 | 6.76723e-17 | 0.0230101 | 0.0129334 | 5.26401e-18 | 0.00451165 | 0 | 0 | 0 |
| 0.059366 | 0.0487147 | 0.808091 | 3.11439e-17 | 0.14596 | 5.79581e-18 | 0 | 7.78612e-18 | 0.813947 | 2.29964e-17 | 0 | 0.0400935 | 0 | 2.22739e-17 | 0 | 1.27597e-17 | 0 | 1.26165e-17 |
| 0.0659394 | 0.0524389 | 0.876054 | 4.89644e-19 | 0.176698 | 8.85812e-19 | 3.82443e-18 | 8.65296e-19 | 0.767345 | 4.89644e-19 | 0 | 0.0559571 | 3.743e-18 | 0 | 6.96303e-18 | 1.12603e-18 | 1.37278e-19 | 2.75464e-18 |
| 0.0725128 | 0.0566408 | 0.927119 | 1.82879e-17 | 0.205078 | 0 | 0 | 1.58887e-17 | 0.699996 | 0.03035 | 0 | 0.0645761 | 0 | 2.19012e-18 | 0 | 0 | 0 | 3.57231e-18 |
| 0.0790862 | 0.0610508 | 0.96782 | 6.22297e-18 | 0.233156 | 1.26022e-17 | 0 | 8.34505e-18 | 0.629985 | 0.0645922 | 4.72905e-17 | 0.0722661 | 8.1614e-18 | 0 | 3.95984e-18 | 3.14423e-17 | 0 | 4.70799e-18 |
| 0.0856596 | 0.0656253 | 1.00052 | 0 | 0.261234 | 5.16615e-18 | 1.31906e-18 | 0 | 0.559975 | 0.0988343 | 1.74271e-17 | 0.079956 | 0 | 3.07915e-18 | 0 | 1.5013e-18 | 4.82165e-18 | 0 |
| 0.092233 | 0.0703322 | 1.02703 | 3.43798e-17 | 0.289312 | 0 | 0 | 1.27796e-18 | 0.489965 | 0.133077 | 1.32892e-17 | 0.0876459 | 1.27555e-17 | 0 | 3.17287e-17 | 0 | 0 | 1.33442e-17 |
| 0.0988064 | 0.0751466 | 1.0487 | 0 | 0.31739 | 5.12567e-18 | 1.16016e-17 | 7.40095e-18 | 0.419955 | 0.167319 | 2.64453e-17 | 0.0953362 | 2.62586e-17 | 0 | 0 | 0 | 0 | 0 |
| 0.10538 | 0.0800491 | 1.06659 | 0 | 0.345468 | 3.81848e-18 | 0 | 1.00199e-17 | 0.349945 | 0.201561 | 0 | 0.103026 | 0 | 0 | 2.56967e-17 | 0 | 3.01285e-18 | 0 |
| 0.111953 | 0.0850245 | 1.08149 | 9.25257e-18 | 0.373547 | 2.89161e-18 | 4.2051e-18 | 0 | 0.279935 | 0.235803 | 1.00558e-17 | 0.110716 | 0 | 0 | 1.13037e-17 | 0 | 7.05339e-19 | 0 |
| 0.118527 | 0.0900607 | 1.094 | 1.74559e-17 | 0.401625 | 3.86594e-18 | 2.9926e-17 | 1.40128e-17 | 0.209925 | 0.270045 | 0 | 0.118406 | 3.18203e-17 | 5.25165e-18 | 3.0292e-17 | 0 | 1.55199e-17 | 9.50887e-18 |
| 0.1251 | 0.095148 | 1.1046 | 9.8004e-18 | 0.429703 | 4.28833e-18 | 2.02625e-17 | 3.5074e-17 | 0.139914 | 0.304287 | 3.56359e-17 | 0.126096 | 8.0533e-18 | 0 | 1.4644e-17 | 0 | 3.5556e-19 | 1.91112e-17 |
| 0.131674 | 0.100279 | 1.11363 | 0 | 0.457781 | 0 | 7.03971e-18 | 6.86282e-18 | 0.0699042 | 0.33853 | 0 | 0.133786 | 1.98883e-17 | 2.01509e-18 | 4.23491e-17 | 0 | 5.70509e-18 | 0 |
| 0.138247 | 0.105446 | 1.12139 | 1.42237e-19 | 0.485878 | 1.52971e-26 | 7.19843e-18 | 2.32138e-25 | 1.5545e-17 | 0.372698 | 8.47923e-26 | 0.141424 | 7.20028e-25 | 4.49001e-26 | 5.68295e-24 | 4.59557e-23 | 6.16784e-19 | 3.89918e-17 |
| 0.14482 | 0.110982 | 1.12469 | 0 | 0.526683 | 8.15763e-18 | 2.75761e-17 | 2.82521e-17 | 3.00254e-17 | 0.35817 | 0 | 0.115147 | 2.78027e-17 | 0 | 0 | 0 | 0 | 9.90611e-18 |
| 0.151394 | 0.11715 | 1.12159 | 0 | 0.567489 | 2.85192e-17 | 0 | 0 | 0 | 0.343642 | 9.28242e-19 | 0.0888695 | 2.52519e-18 | 0 | 1.4407e-17 | 7.05009e-17 | 0 | 7.35824e-18 |
| 0.157967 | 0.123855 | 1.11394 | 0 | 0.608294 | 2.36201e-17 | 2.72726e-17 | 6.29895e-18 | 1.23943e-17 | 0.329113 | 1.76964e-17 | 0.0625923 | 0 | 5.17784e-18 | 8.81319e-18 | 0 | 6.26743e-18 | 3.52052e-19 |
| 0.164541 | 0.131015 | 1.10324 | 2.66839e-17 | 0.6491 | 0 | 0 | 2.72442e-18 | 1.71e-17 | 0.314585 | 0 | 0.036315 | 0 | 6.79449e-18 | 0 | 0 | 0 | 8.14622e-17 |
| 0.171114 | 0.138559 | 1.09061 | 6.45656e-17 | 0.689905 | 0 | 0 | 0 | 0 | 0.300057 | 0 | 0.0100377 | 0 | 0 | 1.60916e-17 | 0 | 0 | 6.03269e-17 |
| 0.177687 | 0.146451 | 1.07673 | 9.90126e-17 | 0.729385 | 0 | 3.55386e-17 | 2.08907e-17 | 4.97382e-17 | 0.270615 | 5.53112e-17 | 0 | 2.50667e-17 | 1.71943e-17 | 0 | 7.64517e-17 | 3.57625e-17 | 2.17339e-17 |
| 0.184261 | 0.154714 | 1.0617 | 2.64942e-17 | 0.768044 | 5.59602e-17 | 0 | 0 | 0 | 0.231956 | 0 | 7.90255e-17 | 8.4421e-18 | 1.71387e-17 | 0 | 0 | 0 | 2.43435e-17 |
| 0.190834 | 0.163301 | 1.04613 | 5.37406e-17 | 0.806703 | 0 | 0 | 0 | 1.0414e-17 | 0.193297 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0.197408 | 0.172162 | 1.03047 | 1.43328e-16 | 0.845363 | 0 | 6.84843e-18 | 5.5133e-19 | 4.29623e-17 | 0.154637 | 4.14493e-17 | 3.68285e-17 | 1.09106e-17 | 2.30044e-17 | 4.27591e-17 | 0 | 1.055e-16 | 6.93113e-17 |
| 0.203981 | 0.181258 | 1.01502 | 0 | 0.884022 | 0 | 2.99622e-17 | 0 | 3.02091e-17 | 0.115978 | 3.08411e-17 | 2.75685e-17 | 5.43616e-18 | 6.24216e-18 | 3.71163e-17 | 5.16901e-18 | 4.11801e-18 | 0 |
| 0.210555 | 0.190555 | 0.999998 | 3.00367e-17 | 0.922681 | 6.23547e-18 | 0 | 0 | 0 | 0.0773187 | 3.80169e-17 | 0 | 1.18233e-17 | 3.88217e-18 | 8.21793e-18 | 0 | 1.19718e-17 | 0 |
| 0.217128 | 0.200025 | 0.985518 | 7.33051e-17 | 0.961341 | 0 | 0 | 0 | 0 | 0.0386593 | 0 | 3.77579e-17 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0.223701 | 0.209644 | 0.971655 | 0 | 1 | 2.98063e-17 | 2.34613e-17 | 4.51358e-17 | 3.14083e-17 | 9.67571e-16 | 1.4783e-17 | 2.05579e-18 | 1.68394e-17 | 2.66241e-17 | 5.12837e-18 | 0 | 1.97442e-18 | 2.68099e-17 |
Audience and decision
Research significance
Allocators, risk committees, and model reviewers
Portfolio managers, asset allocators, investment committees, and model validators use optimizers to convert noisy expected returns and covariances into precise weights. The evidence distinguishes numerical sophistication from decision reliability.
Decision context
Authority assigned to an optimized allocation
Do not interpret an in-sample efficient frontier or Sharpe ranking as a forecast. Decide first whether the mandate is return maximization, concentration control, or a stable risk budget, then evaluate the construction method against that stated objective.
The ranking changed when the estimates left the fit window
Four construction methods sat the same test. The experiment drew 2,891 daily observations for 15 liquid ETFs from a frozen adjusted-close snapshot. Maximum-Sharpe MVO, box-uncertainty robust MVO, equal-risk-contribution risk parity, and hierarchical risk parity were each fit on 2015–2021 data. Their weights were then frozen and applied to one untouched 2022–2026 window.
The robust portfolio posted the best out-of-sample Sharpe, about 0.6. It also stayed concentrated in QQQ and drew down more than 30% in 2022, then rode the 2023–2025 mega-cap rally. The box uncertainty set lowered estimated return levels without changing their ranking, so concentration survived. One 4.5-year window cannot separate a robust method from a fortunate regime.
Differences of ±0.2 in Sharpe sit well inside an estimated sampling error near 0.5 for this evaluation window. So the defensible conclusion describes realized risk shape. It does not name the method that will earn the highest future return.
Treat optimization as an assumption-sensitive proposal
- Separate the return objective from the risk-budget objective before comparing methods.
- Report concentration, risk contribution, drawdown, and out-of-sample behavior beside the in-sample optimum.
- State the uncertainty treatment plainly: shrinking return levels does not change an uncertain ranking.
- Rank methods only after multiple rolling-origin evaluations. This study ran one window.
- State each method's regime dependency. Risk-based allocations can embed a bond and stock–bond-correlation bet.
Implementation and reproduction path
Fitted return and covariance relationships entered a different observed environment
Lab measurement Maximum-Sharpe optimization scored about 1.12 in the 2015–2021 fit period. It scored 0.44 in the sealed 2022–2026 evaluation. Risk-based methods held a steadier risk shape without establishing a return advantage.
Institutional record The two windows straddle a documented change in stock–bond correlation and monetary conditions. That change brought inflation pressure, rapid tightening, and weakness in equities and nominal bonds at once.
Interpretive synthesis An optimized portfolio assumes its fitted return and covariance relationships still bear on the decision. Precise weights carry relationships measured in one observed environment into a different one.
Causal boundary: the experiment does not identify regime change as the cause of the performance ranking. Correlation, estimation error, concentration, asset selection, and the realized equity path can each move the result.
Numbers
| Statement | Value | As stated | Note |
|---|---|---|---|
| MVO Sharpe · 2015–2021 fit | 1.12 | 1.12 | |
| MVO Sharpe · sealed 2022–2026 evaluation | 0.44 | 0.44 | |
| Gap between the two published Sharpe ratios | 0.68 | 0.68 | Difference of the two published (rounded) Sharpe ratios; unrounded gap 0.689. |
| Estimated sampling error of a Sharpe ratio over this window | ≈0.5 | near 0.5 | sqrt((1 + SR²/2) / Y) with Y the evaluation window in years. |
| Robust MVO Sharpe · evaluation (best of the four) | ≈0.6 | about 0.6 | |
| Robust MVO maximum drawdown · evaluation window | 34.3% | more than 30% in 2022 | |
| Daily observations · 15 ETFs | 2,891 | 2,891 | |
| Liquid ETFs in the universe | 15 | 15 | |
| Fit window | 2015–2021 | ||
| Sealed evaluation window | 2022–2026 | ||
| First daily observation | 2015-01-05 | 2015-01-05 | |
| Last daily observation | 2026-07-06 | 2026-07-06 |
Limitations
- The result rests on one sealed evaluation window, not a distribution of rolling-origin outcomes.
- The 15-ETF universe was selected in 2026, so it tilts toward survivors.
- Weights stayed frozen. Rebalancing, transaction costs, and drift sat outside this experiment.
- Every method received the same raw covariance estimate. Shrinkage was available and deliberately unused.
- The study does not prove risk parity or HRP outperform, or that MVO always underperforms.
Cite this
Wisniewski, K. (2026, August 8). Portfolio optimization under estimation error and out-of-sample evaluation. Quantitative Markets & Institutions Lab. https://www.kylewisniewski.com/lab/portfolio-estimation
@misc{wisniewski2026portfolio,
author = {Wisniewski, Kyle},
title = {Portfolio optimization under estimation error and out-of-sample evaluation},
year = {2026},
month = {aug},
howpublished = {\url{https://www.kylewisniewski.com/lab/portfolio-estimation}},
note = {Empirical finding · Quantitative Markets & Institutions Lab · commit 4806df9}
}