Measuring the factor exposure of your own portfolio: a simple regression, factor loadings and tracking error
Run a returns-based regression on your own portfolio, read factor loadings and R-squared, and translate residual risk into an annual tracking error against the market.
What you will learn
- What a factor loading is and how a returns-based regression estimates it.
- How to compute a one-factor regression by hand and read alpha, beta, R-squared and residual risk.
- How to interpret a three- or five-factor output table and the typical range of loadings for long-only funds.
- A holdings-based shortcut for a portfolio of several ETFs, and the limits of both methods.
Explanation
Loadings instead of labels
A product's name says what it tries to do; a regression shows what it did. It explains the portfolio's monthly excess return (return minus the risk-free rate) as a combination of factor returns:
R_p − R_f = α + β_mkt × (R_m − R_f) + β_HML × HML + β_SMB × SMB + ε
HML ("high minus low", value) and SMB ("small minus big", size) are the long-short academic factor returns from lesson 1. Each β is a loading: the sensitivity of your portfolio to one unit of that factor's return. Alpha (α) is the average return the factors do not explain; ε (epsilon) is the monthly residual; R-squared is the share of return variance the factors explain. Monthly factor returns for several regions are published free by academic data libraries (search for the Fama–French data library); your own returns come from broker statements.
Doing the one-factor case by hand
With one factor: β = covariance(portfolio, factor) / variance(factor); α = mean(portfolio) − β × mean(factor). The residual standard deviation times the square root of 12 is the annualised idiosyncratic risk. The tracking error against the market, which drives the regret discussed in lesson 11, is the standard deviation of (portfolio minus market), annualised the same way. Spreadsheet functions (SLOPE, INTERCEPT, LINEST) handle the multi-factor case.
Reading a multi-factor table
Typical ranges: a market-cap world ETF loads about 1.0 on the market and near 0 on the rest, R-squared above 0.98. A long-only value ETF often shows HML between 0.2 and 0.5; a small-cap value fund SMB 0.6–0.9 and HML 0.3–0.5. Loadings near 1.0 on HML or momentum occur only in long-short products. Rules of thumb:
- A loading is only meaningful with enough data: use at least 36, better 60 monthly observations, and look at the t-statistic if your spreadsheet gives one (above about 2 means the loading is unlikely to be noise).
- Monthly alpha is almost always statistically indistinguishable from zero for a private portfolio; do not build a story on it.
- Loadings drift as the index reconstitutes; repeat the regression once a year.
The holdings-based shortcut
If your portfolio is a few ETFs, estimate the portfolio loading as the weighted average of the funds' loadings, which several free analysis websites publish. This is quick but inherits their estimation window.
Worked example
Hypothetical example: six months of excess returns (percent) for a portfolio and for the market. Six months is far too short for a real estimate; it is used only to show the arithmetic. Costs and taxes are ignored.
| Month | Market | Portfolio | Difference |
|---|---|---|---|
| 1 | 2.0 | 2.4 | 0.4 |
| 2 | −1.5 | −1.9 | −0.4 |
| 3 | 3.0 | 3.3 | 0.3 |
| 4 | 0.5 | 0.9 | 0.4 |
| 5 | −2.5 | −2.2 | 0.3 |
| 6 | 1.5 | 1.5 | 0.0 |
Step 1 – means: market 0.50 %, portfolio 0.667 %.
Step 2 – sample variance of the market: deviations 1.5, −2.0, 2.5, 0, −3.0, 1.0; squares sum to 22.5; divided by (6 − 1) = 4.5.
Step 3 – sample covariance: products of deviations sum to 23.75; divided by 5 = 4.75.
Step 4 – β = 4.75 / 4.5 = 1.056. α = 0.667 − 1.056 × 0.50 = 0.139 % per month.
Step 5 – residuals (actual minus α + β × market): 0.15, −0.46, −0.01, 0.23, 0.30, −0.22. Residual standard deviation (dividing by 6 − 2 = 4) = 0.33 % per month, or 0.33 × 3.46 = 1.1 % per year.
Step 6 – tracking error against the market: standard deviation of the difference column = 0.31 % per month, about 1.1 % per year.
Reading: slightly more aggressive than the market (β above 1) with little independent risk, which suggests a mild tilt; with six observations neither α nor β is reliable. In a real three-factor run the same portfolio might show HML 0.3 with market beta nearer 1.0, because part of the extra beta is value exposure.
Common mistake
Practice activity
On paper: your portfolio is 60 % world market-cap ETF (loadings HML 0.00, SMB 0.00), 25 % world value ETF (HML 0.45, SMB 0.10) and 15 % world quality ETF (HML −0.10, SMB 0.00). (a) Compute the portfolio HML and SMB loadings with the holdings-based shortcut. (b) The value ETF's factsheet says "strong value exposure". Does a portfolio HML of your result deserve that description? (c) Name one thing the shortcut cannot capture.
Show solution
(a) HML = 0.60 × 0.00 + 0.25 × 0.45 + 0.15 × (−0.10) = 0.1125 − 0.015 = 0.0975, about 0.10. SMB = 0.25 × 0.10 = 0.025. (b) No. A portfolio loading of 0.10 is a light tilt: if HML returns 3 % in a year, the tilt adds about 0.3 percentage points before costs. (c) The shortcut cannot capture changes in fund loadings over time, interaction between funds (overlap in holdings) or the portfolio's own residual risk.
Limitations: fund loadings taken from a website were estimated over a specific window and may not match your holding period.
Key takeaways
- A regression turns marketing labels into measurable loadings; long-only products typically load 0.2–0.5 on a factor, not 1.0.
- β = covariance / variance; α is the unexplained average; residual risk and tracking error are annualised with the square root of 12.
- Use at least 36–60 monthly observations, matching currency and excess returns.
- Repeat yearly; loadings drift with index reviews.
Next step
Lesson 10 turns to the costs that stand between the paper premium and your account: turnover, implementation shortfall, capacity and crowding.
Self-check
Answer the questions, then check your answers. You can retry as often as you like.
Automatic self-check for your own revision. Your answers are checked in your browser and are not seen or assessed by us. It is not an exam and not a qualification.
Your progress
“Complete” only means you marked the lesson as done. It is not a test of your understanding. Progress and notes are saved only in this browser on this device — not in an account.