Case 090Portfolio constructionHard
Sthiram's two assets have expected returns of 8% and 8.5%, volatilities of 15% and 16%, and correlation 0.9. Show how a half-point change in one expected return swings the mean-variance weights, and propose a fix.
1The situation
Sthiram Capital allocates a fully invested sleeve between two similar equity strategies. Its research team forecasts expected returns of 8.0% for A and 8.5% for B, with volatilities of 15% and 16% and a correlation of 0.9, estimated from ten years of data. The optimiser maximises expected return minus a risk penalty, with risk aversion of 2, and the weights must add to 100%.
The portfolio manager notices that a small revision to B's forecast last quarter moved the recommended weights by a large amount and asks you why, and what to do about it.
2Your task
Derive the weights, show how a half-point change in B's forecast moves them, explain the cause, and propose and test a fix.
Quick check
B's forecast rises from 8.5% to 9.0%. Roughly how much does A's optimal weight change?
Worked solution
Try it on paper, then open one step at a time.
30-second answerThe answer to give first
At 8.0% and 8.5%, the optimiser holds 31% in A and 69% in B; raise B to 9.0% and A falls to -20%, lower it to 8.0% and A rises to 82%. Each point of forecast gap moves the weights 102 points because A minus B has a volatility of only 7%. The forecast gap is far inside its own noise, so shrink forecasts towards each other and cap the weights.
Step 1What weights does the optimiser choose?
With two assets and weights that sum to one, the answer splits into two parts. The first part is the minimum-variance mix, 81.6% in A, which depends only on risk; the second is a tilt towards the asset with the higher forecast, equal to the return gap divided by risk aversion times the variance of A minus B. The variance of A minus B is 0.15 squared plus 0.16 squared minus 2 x 0.9 x 0.15 x 0.16, which is 0.0049. The tilt for a gap of -0.5 points is -0.005 / (2 x 0.0049), about -51 points, so A gets 31% and B 69%.
| mu A, mu B | expected returns, 8.0% and 8.5% |
| sigma A-B squared | variance of A minus B, 0.0049 at correlation 0.9 |
| lambda | risk aversion, 2 |
Step 2How far does a half-point change move them?
Because the tilt is linear in the gap, every point of forecast gap moves A's weight by 102 percentage points. A half-point rise in B's forecast, to 9.0%, cuts A from 31% to -20%; a half-point fall, to 8.0%, lifts A to 82%; and at 7.5% the optimiser shorts B, -33%. Across one point of B's forecast, from 7.5% to 8.5%, B's weight swings from short to 69% long. Nothing about the assets' risk changed; only one number in one forecast moved.
Step 3Why is the optimiser so sensitive?
Picture two nearly identical shops on the same street: if one is a rupee cheaper, a strict bargain hunter sends every customer there, though the difference is noise. With correlation 0.9, holding more A and less B is a spread trade whose volatility is only 7.0%, so the optimiser treats a half-point gap as a respectable return for very little risk and bets heavily on it. At correlation 0.5 the spread's volatility would be 15.5% and the sensitivity 21 points per point of gap, five times calmer. Now set that against the forecast's precision: with ten years of data, the standard error of the gap between two average returns is about 7.0% over the square root of 10, 2.2%. The half-point gap the optimiser bets on is a quarter of one standard error.
Step 4What is the fix, and does it work?
Attack the input, then bound the output. Shrink the forecasts towards a common value in proportion to how little you trust them: halving the gap halves the tilt, and weights then move about 51 points per point of gap instead of 102. Then cap the weights, here between 20% and 80%, so no forecast revision can produce a short position or an all-in bet. The table shows the three versions side by side. A fuller answer is to start from equilibrium returns implied by a neutral mix and blend in views with stated confidence, the Black-Litterman approach, or to resample the optimisation over forecast noise and average the weights. The limitation: shrinkage and caps make the portfolio stable by ignoring part of the forecast, which is right only if the forecast is as noisy as the data says; a team with a genuinely precise view would be giving some of it away.
| B's forecast | Raw optimiser, A / B | Gap halved, A / B | Capped 20% to 80%, A / B |
|---|---|---|---|
| 7.5% | 133% / -33% | 107% / -7% | 80% / 20% |
| 8.0% | 82% / 18% | 82% / 18% | 80% / 20% |
| 8.5% | 31% / 69% | 56% / 44% | 31% / 69% |
| 9.0% | -20% / 120% | 31% / 69% | 20% / 80% |
| 9.5% | -71% / 171% | 5% / 95% | 20% / 80% |
Where candidates lose it
The common loss is blaming the optimiser's code. The formula is doing exactly what it is told; the problem is feeding it a forecast gap far smaller than its standard error while telling it that A and B are almost the same asset.
The second is fixing the output only, with tight caps, and leaving the forecasts alone. Caps stop the extremes but the weights then jump from one cap to the other on small revisions, so the input needs shrinking too.
What the interviewer asks next
- How would the sensitivity change if risk aversion were 4 instead of 2?
- Why does lowering the correlation estimate from 0.9 to 0.7 change the weights so much?
- How would you choose the amount of shrinkage from the data?
- What does resampled optimisation do, and what does it cost?
Company names and figures are illustrative.
