Your Return Was 12%. Sector Picks or Stock Picks? How Performance Attribution Works
6 min read
6 min read
Your portfolio made 12% this year. The index you compare yourself with made 6,8%. You beat it by 5,2 points. Nice.
But why did you win? Did you pick the right sectors? Did you pick the right stocks inside them? Or was it a bit of both?
Performance attribution answers that question. It takes the gap between you and your benchmark and splits it into causes. This post shows the classic method, called Brinson attribution, with one small example in rupiah.
A benchmark is the yardstick you measure yourself against, like an index. If you want a refresher, read how to compare your portfolio return with a benchmark.
The gap between your return and the benchmark's return is called active return. Performance attribution explains where it came from.
The method comes from two papers. Brinson and Fachler published one in the Journal of Portfolio Management in 1985. Brinson, Hood and Beebower published the other in the Financial Analysts Journal in 1986. Together they are known as the Brinson model. Most attribution reports used by professionals today are built on it. (We saw these publication details in search summaries, not in the original papers.)
The idea is simple. You can beat a benchmark in only two main ways:
A third piece, called interaction, covers the overlap of the two. We will get to it.
Let's use made-up numbers. They are for teaching, not a claim about any real fund or sector.
Say the benchmark has two sectors, Banks and Consumer. You hold the same two sectors, but in different amounts.
| Benchmark weight | Benchmark return | Your weight | Your return | |
|---|---|---|---|---|
| Banks | 60% | 10% | 75% | 13% |
| Consumer | 40% | 2% | 25% | 9% |
Weight means the share of the money in that sector.
First, the totals. Each total is weight times return, added up.
On Rp100.000.000, that is Rp12.000.000 for you against Rp6.800.000 for the benchmark. The gap is Rp5.200.000, or 5,2 points.
Allocation asks: did your sector weights help?
Allocation = (Your weight − Benchmark weight) × (Sector benchmark return − Total benchmark return)
This is the Brinson-Fachler version of the formula. Let's run it.
Banks: (0,75 − 0,60) × (10% − 6,8%) = 0,15 × 3,2% = +0,48 points
You held more Banks, and Banks beat the benchmark. Good call.
Consumer: (0,25 − 0,40) × (2% − 6,8%) = (−0,15) × (−4,8%) = +0,72 points
You held less Consumer, and Consumer lagged the benchmark. Also a good call. Two negatives multiply into a positive.
Allocation total: +1,20 points. That is Rp1.200.000 of your Rp5.200.000 lead.
Selection asks: inside each sector, did your stocks beat the sector?
Selection = Benchmark weight × (Your sector return − Benchmark sector return)
Banks: 0,60 × (13% − 10%) = 0,60 × 3% = +1,80 points
Consumer: 0,40 × (9% − 2%) = 0,40 × 7% = +2,80 points
Selection total: +4,60 points. That is Rp4.600.000, the biggest piece by far.
Notice that selection uses the benchmark's weight, not yours. That keeps it a clean test of stock picking alone, as if you had held the benchmark's mix.
You now have 1,20 + 4,60 = 5,80 points. But your real gap is 5,2. Something is missing, and it is the overlap.
Interaction = (Your weight − Benchmark weight) × (Your sector return − Benchmark sector return)
Banks: 0,15 × 3% = +0,45 points
Consumer: (−0,15) × 7% = −1,05 points
Interaction total: −0,60 points.
In plain words: your best stock picking happened in Consumer, but you held less of Consumer than the benchmark. So your skill had less money behind it. That cost you 0,60 points.
| Effect | Points | Rupiah on Rp100 juta |
|---|---|---|
| Allocation | +1,20 | Rp1.200.000 |
| Selection | +4,60 | Rp4.600.000 |
| Interaction | −0,60 | −Rp600.000 |
| Total active return | +5,20 | Rp5.200.000 |
12% − 6,8% = 5,2 points. The three effects add up exactly.
So the honest story of this example is: most of the win came from picking better stocks, a smaller part from sector weights, and a little was given back because your best picks were in a sector you underweighted.
This math is useful. It is also easy to over-read. Keep these limits in mind.
If you want to go one step further and judge whether the active return was worth the extra risk, read what the information ratio measures. To see how big each of your bets is against a benchmark in the first place, read about active weight.
NetWort does not produce a Brinson attribution report for you today. You can still run the idea by hand, using the numbers you already have.
Open the Explore screener. Look up the stocks you hold, plus an index or ETF that could be your benchmark, and compare their returns side by side. Then plug the sector weights and returns into the three formulas above. It takes a few minutes, and it shows you whether your results came from where you put your money or from what you picked.