The problem: one budget for very different sectors
The Trade Model currently caps every sector’s tracking error at a flat
15%. But sectors are structurally different: a handful of TMT names will
always wander further from the TMT benchmark than a handful of REITs wander from
theirs, simply because tech stocks are more volatile and less alike. A flat cap therefore
punishes volatile sectors for behaving normally, and lets stable sectors carry far more
active risk than intended.
The fix: measure what “normal” tracking error actually looks
like in each sector, and set each sector’s budget just above its normal range.
Step 1 · What is tracking error?
Tracking error (TE, or “TEV”) measures how differently a portfolio moves from
its benchmark, day to day. Each day we compute the active return:
active returnday = portfolio returnday − benchmark returnday
If the portfolio simply were the benchmark, every active return would be zero.
Tracking error is the standard deviation of those daily gaps, scaled to a yearly number
(√252 because there are ~252 trading days in a year):
TE = std(active returns) × √252
A 15% TE means: in a typical year, the portfolio’s return lands
within ±15% of the benchmark’s return about two-thirds of the time.
Run a simulation and this step will be
worked out with one of your actual simulated baskets.
Step 2 · Build each sector’s benchmark
For every sector we build a synthetic cap-weighted index from all of the
sector’s S&P 1000 constituents — bigger companies count more, exactly like the
real index is built. This mirrors the Trade Model’s own “Synthetic S&P
1000” construction, so the benchmark is always consistent with the uploaded universe.
Run a simulation to see your
workbook’s actual benchmark weights here.
Step 3 · Simulate thousands of “could-have-been” portfolios
What does a typical sector sleeve look like? We don’t know which stocks the
fund will pick, so we let a random number generator play portfolio manager, one thousand
times per sector:
- Draw 8 stocks at random from the sector’s constituents (no repeats), weighted equally.
- Compute that basket’s daily returns over the chosen lookback window
(5 years by default, adjustable on the run tab).
- Subtract the sector benchmark’s daily returns, take the standard deviation, annualize — that’s one tracking-error observation.
- Repeat 1,000×. Now we have a whole distribution of tracking errors for the sector.
This is the Monte Carlo idea: when you can’t derive the answer,
sample it. One random basket says little; a thousand map out the full range of normal.
Where exactly is the randomness? In the portfolio composition,
not in simulated future prices. Each trial randomizes which stocks the sleeve holds
and then scores that composition on real historical returns — a
“random-portfolio” Monte Carlo, the standard tool for asking “what tracking
error is normal for this sector?”. It is not a path simulation that generates
hypothetical future price scenarios (the other common flavor of Monte Carlo in finance).
The forward-looking claim is therefore an assumption, stated openly: sectors’
relative TE profiles are persistent, so a distribution measured over the lookback
window is a reasonable estimate of next year’s. That assumption is why the lookback is
adjustable and why budgets should be re-estimated quarterly.
Run a simulation to see the scale of
your run here.
Step 4 · Set the budget at mean + 2σ
The 1,000 simulated tracking errors pile up into a roughly bell-shaped (normal)
distribution with a mean (μ, the typical TE for the sector) and a standard deviation
(σ, how much random baskets vary around it). We set the budget two standard deviations
above the mean:
budget = μ + 2σ
Under a normal distribution, about 97.7% of random baskets fall below
μ + 2σ. So a sector sleeve breaching its budget isn’t just “a bit
volatile” — it is an outlier versus nearly every random portfolio you could have
formed in that sector, which is exactly when a risk limit should bite. The app also reports
the empirical 97.7th percentile: if it sits close to μ + 2σ, the normal
assumption is holding; if it’s much higher, the distribution has a fat right tail and
the budget deserves extra caution.
Run a simulation to see every
sector’s budget equation computed with your numbers.
Step 5 · What your run predicts
Because the budget is placed at a fixed point of each sector’s own distribution,
the framework makes testable predictions about future sector sleeves:
Run a simulation and the
predictions below will be computed from your simulated distributions.
Step 6 · The diversification caveat
Random baskets can cluster — an Energy draw might land all exploration &
production names, no pipelines or refiners. A deliberately diversified sleeve tracks its
benchmark more closely than a random one, so the simulated distribution slightly
overstates normal TE. Two practical adjustments:
- Bigger baskets: raise the basket size in the run tab — more names means more built-in diversification, and budgets tighten by roughly 4–6 points going from 5 to 15 names.
- Fewer sigmas: shade the budget toward μ + 1σ (about 84% of random baskets fall below that) — the table reports both.
Known limitations
- Survivorship bias — the universe is today’s constituents; names that were delisted during the 5-year window are missing, so simulated TEs are likely slightly understated.
- Vendor data glitches — daily moves beyond ±200% are masked before any math runs. These are artifacts, not returns: bankruptcy re-listings stitched to cancelled pennies (Chord Energy shows a fake +25,733% day on Yahoo) or unadjusted reverse splits. One such day would otherwise corrupt the benchmark weights and every basket’s TE. Anything masked is disclosed in the results header; genuine one-day squeezes (GME’s +134%) are untouched.
- History, not prophecy — budgets are calibrated to the last 5 years; regime changes (e.g. a rate shock) can move sector volatility. Re-run quarterly.
- Equal-weight baskets — real sleeves are conviction-weighted, which typically adds a little tracking error versus equal weight.