Asset Allocation & Performance branch, Finance-Plus Ring · Node AA1.06 · ~16 focused hours · Mastery gate ≥ 85%
A US fund shows you twelve quarters. Its excess return averaged 4.45% a quarter against a market that made 2.21%, so it beat its benchmark by 8.96 points a year with a tracking error of 3.44. Regress those returns on the market alone and the alpha is 10.11% a year with a t-statistic of 4.62, which in most industries would settle the argument. Add two more columns to the regression, one for company size and one for cheapness, and the alpha falls to 0.28% a year with a t-statistic of 0.07.
Nothing about the fund changed. The returns are the same twelve numbers. What changed is the set of things you were willing to call a risk rather than a skill, and that choice, not the arithmetic, is where the money is.
This Ring is additive institutional and CFA breadth: it presents the toolkit and the plumbing alongside, not in place of, the programme's process-over-P&L, concentration-over-diversification philosophy. Factor models are the sharpest instrument in that toolkit and the one most easily turned into a weapon against your own judgement. Used well, a factor model tells a concentrated investor exactly which of her bets are hers and which are rented from a premium anyone can buy. Used badly, it explains away every good decision as an exposure and leaves nothing to be proud of.
Advertisement
The single-factor world you already know priced risk with one number. A stock's expected return was the risk-free rate plus its beta times the equity risk premium, and everything else was noise to be diversified away. That model is coherent, testable and empirically poor. Multifactor pricing is what the profession built when the tests kept failing: keep the logic that only undiversifiable risk earns a premium, and stop insisting there is exactly one such risk.
Two things follow, and they take the rest of the branch to work out. The first is a pricing theory, arbitrage pricing theory, that derives a linear return relation from an argument about arbitrage rather than from an argument about investor preferences. The second is a family of working models, macroeconomic, fundamental and statistical, that put numbers into that relation and let you take a portfolio apart.
By the end you will run the cross-sectional regression by hand on a five-stock Indian panel and split a manager's active return into the part her exposures produced and the part her stock picks produced. You will split her active risk the same way, build a portfolio that holds exactly one factor bet and nothing else, and compute how much of a concentrated eight-stock book is a quality tilt wearing the clothes of research.
Along the way, one warning. A published factor with a t-statistic of 2.4 sounds convincing until you work out that the best of three hundred pure-noise strategies has an expected t-statistic of 3.38. The factor zoo is not a joke about academics. It is why the teaching ends on how to disbelieve a number that has been fitted to the data you are being shown.
Learning objectives
You can:
- State the three assumptions of arbitrage pricing theory (returns follow a k-factor process, markets are sufficiently competitive and populated to hold many well-diversified portfolios, and no arbitrage is available among them) and explain why the theory delivers a pricing relation without a market portfolio, a utility function or a normal distribution.
- Solve for the factor risk premiums implied by well-diversified portfolios with known exposures, identify a portfolio that does not lie on the resulting plane, and construct the arbitrage that closes it: a replicating combination with matched exposures, zero net investment and a positive expected return, plus the price change that ends the opportunity.
- Decompose a realised return under a macroeconomic factor model into its expected component, its factor-surprise component and its firm-specific component, and explain why the factors must be surprises rather than levels.
- Estimate a fundamental factor model by cross-sectional regression on a panel of standardised attributes, read off each name's fitted and idiosyncratic return, and verify the two orthogonality conditions the fit must satisfy.
- Split active return into factor and selection components that reconcile exactly, and split active risk into factor and idiosyncratic parts using a factor covariance matrix, reporting each factor's share and cross-checking the model's tracking error against the realised one.
- Compute both information ratios a factor model supports, the naive ratio of active return to active risk and the appraisal ratio of selection return to specific risk, and read a manager whose first ratio is excellent and whose second is zero.
- Build a pure factor portfolio by solving a linear system for weights carrying unit exposure to one factor and zero to the others, use its zero-investment version to hedge an unwanted exposure, and find the risk-minimising hedge, which is generally not a full hedge.
- Read a statistical factor model honestly: compute the variance share of the leading principal components on a small correlation matrix, and state what is lost when factors are extracted rather than named.
- Apply the multiple-testing arithmetic to a factor claim: expected false discoveries, the Bonferroni critical value, the expected maximum t-statistic of N pure-noise trials, and the post-publication haircut.
- (Productivity objective: R10.) Reproduce every estimation above in Python, name the two library defaults that change the answer, and use an assistant to build and cross-check factor code while keeping the by-hand estimation that the gate rewards.
The duality, stated once (R10). The gated skill is the estimation done by hand: a two-equation solve for factor premiums, a cross-sectional regression whose residuals sum to zero, a quadratic form that turns exposures into tracking error. The productivity payoff is running the same thing across a thousand funds in twenty lines. The risk that sits between them is specific to this material and worth naming now. An assistant will fit any factor model you ask it to fit, on any data, and report exposures and an alpha that look exactly like the output of a correct model, because the arithmetic almost always succeeds. What fails silently is the specification: a factor that does not belong, a benchmark whose own exposures were never measured, a sample chosen after the result was known. There is no error message for a well-fitted wrong model, and the reconciliation identities below are the only cheap defence.
Prerequisites & connections
Builds on. M3.02 supplies the single-factor machinery used here without re-derivation: expected return and variance, covariance, beta as covariance-with-the-market over market variance, the security market line, and the honest scorecard on where CAPM fails empirically. That scorecard is the motivation for everything that follows, and it is not repeated. QM1.02 supplies the regression discipline: ordinary least squares, standard errors, the t-statistic, R-squared and the diagnostics, all of which are applied here rather than taught. QM1.04 supplies the inference half, and in particular the multiple-testing correction that the factor-zoo section turns on published factor claims. M9.02 supplies the factor menu (value, quality, momentum, size, low volatility) with the evidence and the caveat for each, and the argument that a bottom-up investor should know her implicit tilts. AA1.01 supplies the covariance matrix and the estimation-error problem, which reappears here as the reason factor models exist at all. AA1.03 supplies the Brinson decomposition, the information ratio in its portfolio sense, and the reconciliation habit.
Feeds forward. AA1.07 owns the fundamental law of active management, manager selection and the transfer coefficient; the active-risk decomposition built here is the input that law consumes, and the appraisal ratio computed here is what a manager-selection process should actually be looking at. QD1.02 owns the empirical construction of factor signals: how a value score is computed from filings, how a momentum score skips the most recent month, how a cross-section is standardised, and how a signal is evaluated with the information coefficient. AA1.02's risk budgeting takes these exposures as its risk units. EC1.02 owns index construction and benchmark mechanics, which is where the benchmark whose own exposures you are told here never to skip actually gets built. The quant branch is where this estimation gets vectorised and backtested rather than hand-rolled.
Seven neighbouring modules own material this one deliberately does not rebuild (R1). M3.02 owns CAPM, beta and the equity risk premium; the empirical failures are restated here in three sentences as motivation and are argued properly there. M9.02 owns the factor menu and the active-versus-passive debate; what happens here is the computation of a tilt that M9.02 asks you to notice. AA1.07 owns the fundamental law and manager choice, QM1.02 owns regression mechanics, QM1.04 owns multiple testing, and AA1.03 owns performance measurement, benchmark validity and GIPS.
QD1.02 owns factor construction and the information coefficient, and it needs one extra sentence. It uses the phrase "information ratio" for the ratio of a signal's mean information coefficient to the standard deviation of that series, which is a different quantity from the portfolio information ratio used here. The naming collision is real, it is resolved in the section on the two ratios, and neither module is wrong.
Core teaching content
1. One factor was never enough
The single-factor model says a diversified investor is compensated for exactly one thing: co-movement with the market. Everything else washes out in a portfolio, so nothing else can carry a price.
The logic is clean and the empirical record is not. Low-beta stocks have earned more than the security market line predicts and high-beta stocks less, so the line is too flat. Once size and price-to-book are in the regression, beta adds almost nothing to explaining average returns across firms. The market portfolio the theory actually refers to includes every risky asset on earth and is unobservable, so every test has really been a test of an index proxy.
Those three findings sit in the risk-and-return material and are not re-argued here. What matters for what follows is the shape of the response. Two responses were possible, and the profession took both.
The first response keeps a single equilibrium story and adds factors to it: if size and cheapness predict returns, perhaps they proxy for risks that a rational investor would want compensation for, so put them in the pricing equation and keep the equilibrium framing. That is the Fama and French route, from the three-factor model of 1993 to the five-factor model of 2015, with momentum added along the way by Carhart in 1997 out of Jegadeesh and Titman's 1993 finding.
The second response abandons equilibrium altogether. Ross's 1976 arbitrage pricing theory asks a smaller question and gets a stronger answer. It never says what the factors are, never asks what investors want, and never needs a market portfolio. It only says that if returns are driven by a small number of common influences, and if many well-diversified portfolios exist, then their expected returns must line up on a plane, because if they did not, somebody would already have made a riskless profit closing the gap.
Those are different intellectual objects and the difference matters when you use them. An equilibrium model tells you what a return should be and therefore what to pay. An arbitrage argument tells you only what returns must be consistent with each other, which is weaker and much harder to argue with. Most working factor models sit closer to the second, whatever their marketing says.
Arbitrage pricing theory
Arbitrage pricing theory prices a well-diversified portfolio from its exposures to common risk factors, with no need for the market portfolio. The expected return is the risk-free rate plus each factor exposure times that factor's risk premium. The theory says that once you have named your factors, expected returns must be mutually consistent, and it says nothing about whether you named the right ones.
5 min read, on its own page
Macroeconomic factor model
A macroeconomic factor model names its factors in advance and takes them from the economy. The factors are observable and the sensitivities are estimated by time-series regression, one asset at a time. Macroeconomic models have one large advantage and one large weakness. The advantage is interpretability: an exposure of 1.6 to GDP growth is a sentence a risk committee can act on. The weakness is estimation.
3 min read, on its own page
Fundamental factor model
A fundamental factor model treats each company's measured attributes, such as book-to-price, as known exposures, and then estimates the factor returns by a regression across companies each period. Exposures are standardised into z-scores, so a name at +1.4 is 1.4 standard deviations cheaper than the average name that month. What the factors do not explain is the residual, the part of a company's return that a stock-picker claims to be paid for.
3 min read, on its own page
Statistical factor model
A statistical factor model takes a covariance matrix of asset returns and extracts the linear combinations that explain the most variance, in order, each uncorrelated with the ones before. These principal components are used as the factors. The method finds structure without being told what to look for, and the cost is that the factors arrive unnamed, so you supply the name from outside the model and your name might be wrong.
3 min read, on its own page
7. The three families side by side
| Macroeconomic | Fundamental | Statistical | |
|---|---|---|---|
| Factors are | named economic surprises | standardised company attributes | extracted linear combinations |
| Known in advance | the factor values | the exposures | neither |
| Estimated | exposures, from a time series per asset | factor returns, from a cross-section per period | both, from the covariance matrix |
| Data needed | long macro history, revised | one cross-section of fundamentals per period | a return panel only |
| Typical estimation risk | few observations, unstable betas | bad accounting inputs, style definitions | sample dependence, unidentified components |
| Interpretability | high, and directly economic | high, and directly investable | low by construction |
| Best used for | scenario and stress analysis | attribution, risk and portfolio construction | discovery and as an audit |
The families are not rivals so much as different bargains with the same scarcity. You can know the factors and estimate the loadings, know the loadings and estimate the factors, or know neither and let the data choose. Every desk that runs one seriously ends up running a second as a check on it.
8. Active return and active risk, decomposed
Everything so far has been about a single asset. Portfolio work starts with one word, active. An exposure that matters is always the portfolio's exposure minus the benchmark's, because a value tilt shared with the benchmark buys you the benchmark and nothing more.
Write active weights as w_a,i = w_P,i - w_B,i. They sum to zero when both weight vectors sum to one. The portfolio's active exposure to factor j is then x_j = Σ w_a,i b_i,j, and the two decompositions follow directly from the return-generating process.
Active return splits into a factor part and a selection part:
R_P - R_B = Σ_j x_j f_j + Σ_i w_a,i u_i
The first term is what your exposures earned given the factor returns that happened. The second is what your names did beyond their characteristics, weighted by how differently from the benchmark you held them. On the Indian panel the split is exact: an active return of +0.52 points is +0.6715 from a half-standard-deviation value tilt and -0.1515 from selection, and 0.6715 - 0.1515 = 0.5200 to the last decimal. That reconciliation is the error detector for this whole region, exactly as the Brinson identity is for sector attribution.
Run it before you read any number in the table.
Active risk splits the same way, and here the algebra needs the factor covariance matrix Ω:
σ²_active = x' Ω x + Σ_i w²_a,i σ²_u,i
The first term is factor variance, a quadratic form in the active exposures. The second is specific variance, which sums cleanly only because the model assumes the residuals are mutually uncorrelated. Take the square root and you have tracking error predicted from characteristics rather than measured from a return series, which is the point: you can compute it for a portfolio that has never been held.
Three things about that formula repay attention. It is a quadratic form, not a sum of squares, so the off-diagonal terms matter and a pair of negatively correlated exposures can be less risky together than either alone.
The specific term falls with the square of the weights, so it collapses as a book diversifies and dominates when a book concentrates. And the two pieces add without a covariance term only because the model defines the residuals to be uncorrelated with the factors, which is an assumption you are entitled to test rather than a fact.
The model's tracking error and the realised tracking error will not agree exactly, and the gap is informative. On the US fund the model predicts 1.8623 points a quarter against a realised 1.7183. The difference here is entirely the degrees-of-freedom convention: ordinary least squares forces the residuals to be uncorrelated with the factors in sample, so the realised active variance equals the factor variance plus the residual sum of squares over n - 1, while the model's specific variance divides by n - k. Reconstruct it that way and 1.5769 + 1.3755 = 2.9524, whose square root is 1.7183 exactly.
When the gap survives that adjustment, you have a missing factor or an unstable exposure, and either is worth finding.
Factor portfolio
A factor portfolio, also called a pure factor portfolio, has unit exposure to one factor and zero exposure to every other, so its return estimates that factor's return. A tracking portfolio is the same linear solve with a different target: it matches a chosen set of exposures, and every hedge is one. Fully hedging an unwanted exposure usually fails to minimise tracking error, because the exposure may be partly offsetting another bet.
3 min read, on its own page
11. Four uses, and the model risk every one of them inherits
Return attribution is the first use, and it is the one that changes conversations. Splitting active return into factor and selection tells a committee whether it is paying for a tilt or for research, and the answer is frequently not the one on the fund factsheet.
Risk attribution is the second, and it runs before the fact rather than after. A factor model turns a proposed portfolio into a predicted tracking error with a named source for each part of it, which is what makes a risk limit enforceable in advance instead of explicable in arrears.
Portfolio construction is the third. Once exposures are the currency, an optimiser can be told to maximise expected alpha subject to a cap on each factor exposure and on total tracking error, which is a far more honest objective than one written in terms of individual weights.
Scenario analysis is the fourth. Set the factor returns to the values they took in a period you care about, hold the exposures fixed, and read off what the portfolio would have done. A book with a quality exposure of +0.69 in a month when quality returns +2.8% picks up 1.93 points from that alone, before a single company does anything.
Every one of the four inherits the same model risk, and it comes in four flavours worth naming separately. Specification risk is the missing factor: whatever it explains is reported as selection, so your alpha is contaminated by exactly the exposures you failed to include. Estimation risk is the noise in the covariance matrix, which is estimated from a finite sample and is at its worst precisely for the small, illiquid names where you most want a risk number. Regime risk is the assumption that the factor covariance matrix is the same object next quarter as last, which correlations reliably violate when markets fall.
And specification-search risk is the one nobody writes down: the model was chosen partly because it produced a story someone liked.
A useful habit against all four. Before reading a factor report, ask what fraction of active variance it assigns to specific risk. If the number is very low for a concentrated book, the model has probably absorbed genuine stock-specific bets into a factor that does not deserve them. If the number is very high for a diversified one, factors are missing.
{
"skill": "Estimating and cross-checking a fundamental factor model on a panel",
"use": "Have an assistant write the cross-sectional estimation loop from your panel of z-scores and forward returns, then have it write a second, structurally different implementation (an explicit per-period loop against a vectorised solve) so the two factor-return series can be differenced before either is trusted.",
"tools": ["Chat assistants with code execution - Claude, ChatGPT, Gemini", "Python: pandas, NumPy (groupby-apply, numpy.linalg.lstsq)", "statsmodels for the standard errors and diagnostics", "A spreadsheet for the five-name hand check"],
"prompt": "Here is a panel with columns date, ticker, z_value, z_quality, z_size and return. For each date, regress return on a constant plus the three z-columns and return the four estimated factor returns and the per-name residuals. Then, in the same script, assert for every date that (a) the residuals sum to zero to within 1e-10, (b) each z-column is uncorrelated with the residuals to within 1e-10, and (c) the weighted residuals plus the exposure-weighted factor returns reproduce each portfolio's active return exactly. Print any date where an assertion fails and do not round intermediate values.",
"verify": "Recompute one full date by hand on five names with a calculator and match every residual, which is what Worked Example 3 drills. Then deliberately break the input: feed a panel whose z-scores do not have zero cross-sectional mean and confirm the assertions actually fire, because an assertion that has never failed has never been tested. Trace every exposure back to the line of the filing it came from and date-check the filing against the return window, since a z-score built from data published after the return window is look-ahead that no diagnostic will reveal. Recompute the totals independently and cite the file and page for each input (Guardrail 1-5). A factor model that fits well on look-ahead data fits beautifully and is worthless.",
"diy": "You must be able to run the two-column cross-sectional regression by hand, verify both orthogonality conditions, and split an active return into factor and selection so that the two pieces reconcile exactly. That is the gated skill. An assistant will happily fit a model that includes a factor you should not have included; only you can decide what belongs in the specification, and that decision is where the alpha goes.",
"market": "IN"
}
{
"skill": "Reading a factor claim you have been handed, whether from a paper, a vendor or a model",
"use": "Use an assistant to extract a factor claim's full testing history into a table (sample period, universe, breakpoints, weighting, t-statistic, whether the result survives out of sample), and to compute the multiple-testing arithmetic that the original claim almost certainly omits.",
"tools": ["Document AI grounded on the paper or vendor methodology you already hold", "Chat assistants with code execution for the correction arithmetic", "SSRN, journal sites and the vendor's own methodology document as primary sources"],
"prompt": "From this factor study, extract into a table: the sample start and end, the universe and its size, whether returns are equal- or value-weighted, what breakpoints define the portfolios, the reported premium, its t-statistic, and any out-of-sample or post-publication result. Then compute, for N = 100, 300 and 450 candidate factors: the expected number of false positives at a 5% level, the Bonferroni critical t, and the expected maximum t-statistic of N pure-noise trials. State explicitly which figures you could not find in the document rather than inferring them.",
"verify": "Do not accept the extracted table: open the paper and check the sample period and the t-statistic yourself, because a transposed row or a misread panel is invisible downstream. Match the universe and weighting scheme against the claim being made, since a premium that exists only in equal-weighted microcaps is a different claim from one that survives value weighting on large caps. Recompute the corrected critical value by hand. Date-check the sample against the publication date and look for the out-of-sample window (Guardrail 1-5). For anything the model asserts about what a paper found, go to the paper: a confidently recalled t-statistic is the single most common fabrication in this region.",
"diy": "You must be able to state, unprompted, why a t-statistic of 2.4 is unremarkable when three hundred things were tried, and to compute the expected maximum of N normals to prove it. Without that arithmetic you will read every new factor claim at face value, which is precisely the behaviour the factor zoo was built by.",
"market": "US"
}
Factor zoo
The factor zoo is the several hundred published factors claimed to explain the cross-section of expected returns, many of which fail to replicate or fade after publication. Test 300 strategies that have no edge at all, at a 5% significance level, and you expect 15 of them to look significant. That is why Harvey, Liu and Zhu proposed a t-statistic hurdle of about 3.0, well above the conventional 2.0.
4 min read, on its own page
13. What a concentrated book is actually betting on
The concentrated investor's objection to all of this is reasonable and should be met with numbers rather than with argument. It runs: my eight positions are the product of two years of reading annual reports, and telling me they are a quality factor is a category error.
Compute it and the answer is more interesting than either side expects. An eight-name Indian book of the classic compounder shape has a quality exposure of +0.691, a size exposure of -0.214 and a value exposure of -0.135. The quality tilt is large, the large-cap tilt is real, and the book is slightly expensive rather than cheap, which is what paying up for quality looks like when it is measured.
Now split the active risk. Factor variance is 19.91 and specific variance is 70.47, so the total active variance is 90.38, the tracking error is 9.51%, and factors account for 22.0% of the active variance. Seventy-eight percent of what this book risks is stock-specific. The concentrated investor's claim about her own portfolio is correct, and the factor model is what proved it.
Hold the exposures fixed and express them through 200 names at 0.5% each instead, and the specific variance collapses from 70.47 to 2.88. Tracking error falls from 9.51% to 4.77% and the factor share rises to 87.4%. Identical tilt, opposite risk composition. Concentration is what converts a factor bet into a stock bet, and it is the only thing that does.
Then look at return rather than risk, in a single month when quality returns +2.8%, value -1.1% and size -0.6%. The book's factor contribution is +2.2117 points, of which +1.9348 is quality alone, against a selection contribution of +0.42. Factors delivered 84.0% of that month's active return in a book whose risk is 78% stock-specific.
Both numbers are true and neither is the whole answer, which is exactly the finding. Over one month, factor returns dominate the outcome, because a large tilt meeting a large factor move produces a large number. Over a long horizon, the specific bets are what accumulate, because they carry most of the variance and, if the research is any good, a positive mean. So the concentrated investor should expect her monthly reports to be dominated by tilts she did not consciously choose, and should judge her process on the residual, over years.
Measure the tilt so that you can stop taking credit for it, then benchmark the residual against the only thing that matters.
14. Where factor models break
Exposures are not stable. A company's value score moves when its price moves, so a name that was a growth stock at the start of a drawdown is a value stock at the end of it, without a single decision by the manager. Any exposure taken from a single date is a snapshot of an object that is still moving, and a risk report built on last quarter's exposures describes last quarter's portfolio.
Factor covariances are less stable still, and they fail in the direction that hurts. Correlations between style factors are estimated in ordinary conditions and applied in extraordinary ones. The hedge computed above rests on a correlation of -0.25 between value and size, and that number is the whole reason the fund was told to keep a size exposure of +0.1163 rather than trade it to zero. Let the correlation go to +0.5 in a liquidation and the retained exposure stops offsetting the value bet and starts compounding it. Tracking error at +0.1163 is then 5.3294% against 4.9070% for the full hedge the arithmetic had advised against, and the risk-minimising exposure has moved to a short of -0.2325. The sizing was right for a correlation that no longer holds, and it is wrong on the day it matters.
Crowding is the failure mode that has no diagnostic. A factor works partly because someone must be willing to hold the other side. When enough capital chases the same exposure, the premium compresses, and the exit becomes correlated across all the holders at once. The quant equity events of August 2007 are the standard reference: a large, fast, factor-level drawdown with no accompanying news about any company.
A factor model built on the covariances of an uncrowded period will not price that at all, because the risk is in the ownership structure rather than in the return history.
And the deepest limitation is a distinction the vocabulary hides. A factor that explains returns and a factor that predicts returns are different claims requiring different evidence. A contemporaneous cross-sectional regression with an R-squared of 0.73 tells you that cheap names moved together this month. It says nothing whatever about next month. Risk models are built on explanation and are perfectly useful without any predictive claim; alpha models require prediction and are held to a much harder standard of evidence.
Almost every commercial factor model you will meet is the first kind being sold with the vocabulary of the second.
Keep three sentences to hand when a factor report arrives. It measures co-movement, which is a fact about the past. It attributes that co-movement to names someone chose in advance, and those names could be wrong. And what it calls selection is only the part its author could not explain.
Common mistakes & how experts think differently
- Using factor levels instead of factor surprises. The return-generating process is written in deviations from expectation for a reason: the expected level is already inside the expected return. Substituting the level double-counts, and the error is invisible because the answer is still a plausible-looking return. On the trucking company in Worked Example 2 it turns 12.86% into 14.18%. The expert's first question about any macro factor model is where the expected series came from, because a surprise cannot exist without a forecast.
- Measuring exposures on the portfolio rather than actively. A book with a value exposure of +0.085 sounds neutral until you notice its benchmark sits at -0.415, which makes the active bet a full half standard deviation. Exposure without a benchmark is a description, not a decision. Experts never write down a portfolio exposure without the benchmark's beside it, and they check the benchmark's own exposures first, because a capitalisation-weighted index is rarely style-neutral.
- Treating an unexplained residual as skill. The residual is what the model failed to explain, and a model missing a factor reports that factor's return as alpha. Before crediting a manager with selection, experts ask which exposures were not in the specification, and the honest answer is usually momentum, liquidity or a country tilt.
- Adding a factor because it improves the fit. Every additional column raises R-squared mechanically. A factor belongs in a model when it survives orthogonalisation against the factors already there and when its exposure is something a portfolio can actually be built to hold. Experts test a candidate by regressing it on the existing set and re-measuring what the residual predicts, which is the double-counting check the signal-construction work already teaches.
- Hedging an unwanted exposure to zero. The instinct is that zero exposure is zero risk, and it is wrong whenever factors are correlated. The tracking-error-minimising size exposure in Worked Example 5 is +0.1163, not zero, and in the sharper case of Practice Problem 9 hedging to zero raises tracking error outright. Experts compute the quadratic form before trading a hedge, and they can say what the correlation assumption is and where it came from.
- Confusing the two information ratios. The portfolio ratio divides active return by active risk; the signal ratio divides a mean information coefficient by its own standard deviation. Both are called an information ratio in their own literature. Experts name which one they mean before quoting a number, and they treat any comparison across the two as a category error.
- Ranking managers on the naive information ratio. A ratio of 2.6 annualised is not evidence of genius; it is evidence that a persistent tilt met a persistent factor return. The appraisal ratio is the number that asks about skill, and on the US fund here it is 0.10 annualised against a naive 2.61. Experts compute both and take the second one seriously.
- Accepting a t-statistic without a trial count. A t of 2.4 is unremarkable when 300 specifications were run, because the expected maximum of 300 pure-noise trials is 3.38. Experts ask how many things were tried, treat the answer as unverifiable, and apply the correction anyway.
- Assuming a statistical factor is a thing. Principal components are linear combinations chosen to maximise explained variance, and when eigenvalues tie, any rotation is equally valid. Experts use them to discover structure and to audit a named model, and they refuse to build a narrative on a component whose eigenvalue is nearly equal to its neighbour's.
- Letting the model settle a judgement it cannot reach. A factor model measures co-movement and attributes it to names a human chose. It cannot tell you whether the quality tilt in your book is a rented premium or the visible shadow of good business selection, because those two things look identical in the exposures. Experts use the model to size and to price the tilt, then answer the question about its origin with the research file rather than with the regression.
Worked examples
Worked example 1: A two-factor arbitrage, built and then closed (US, $)
The risk-free rate is 4.00%. Two factors drive returns: a surprise in industrial production growth and a surprise in inflation. Three well-diversified portfolios are quoted, the same three met earlier: A with exposures of (1.0, 0.5) and an expected return of 11.0%, B at (2.0, 1.5) and 17.0%, and C at (1.5, 1.0) and 13.0%.
Solution. Step 1, find the plane. Subtract the risk-free rate from each expected return and solve the two-equation system. From A, 1.0 λ_1 + 0.5 λ_2 = 7.0. From B, 2.0 λ_1 + 1.5 λ_2 = 13.0. Doubling the first gives 2.0 λ_1 + 1.0 λ_2 = 14.0; subtracting it from the second leaves 0.5 λ_2 = -1.0, so λ_2 = -2.000000% and λ_1 = 8.000000%.
Step 2, price C. 4.00 + 1.5(8.00) + 1.0(-2.00) = 14.000000%. C is quoted at 13.00%, so it is over-priced by exactly 1.000000 point of expected return.
Step 3, replicate C's exposures. Solve 1.0 w_A + 2.0 w_B = 1.5 and 0.5 w_A + 1.5 w_B = 1.0, giving w_A = 0.500000 and w_B = 0.500000, with a risk-free weight of 0.000000. Check the exposures: 0.5(1.0) + 0.5(2.0) = 1.500000 and 0.5(0.5) + 0.5(1.5) = 1.000000, matching C on both.
Step 4, price the replication and trade the gap. 0.5(11.0) + 0.5(17.0) = 14.000000%. That agrees with Step 2 by a completely independent route: one used the estimated premiums, the other used only the quoted returns of A and B.
So short $1,000,000 of C and buy $500,000 each of A and B. Net investment is zero, net exposure is zero on both factors, and expected profit is 1.00% × $1,000,000 = $10,000.00. It scales linearly, so $4,000,000 of the same trade earns $40,000.00.
Step 5, close it. If C is a claim on an expected terminal value of $113.00 priced at $100.00, restoring a 14.00% expected return requires a price of 113.00 / 1.14 = $99.1228070175, a fall of $0.8771929825 or 0.8772%.
Read it. Under one percent of price movement destroys the whole opportunity, which is the practical content of the no-arbitrage assumption. The profit is riskless only under conditions the example assumed and reality frequently withholds: the portfolios must be diversified enough that firm-specific terms really cancel, the exposures must be measured rather than assumed, and the short must be borrowable at the assumed cost.
Note also what the negative inflation premium is telling you. An asset that pays off when inflation surprises upward is insurance, so its expected return is lower, and any factor model that forces all premiums positive has misunderstood what a premium is.
Worked example 2: A macroeconomic surprise decomposition, two stocks and a portfolio (US, $)
Consensus expected GDP growth of 2.4% and inflation of 2.8%. The quarter delivered GDP growth of 3.1% and inflation of 2.2%. Two synthetic US companies, with exposures estimated from a five-year time-series regression:
| Expected return | GDP sensitivity | Inflation sensitivity | Firm-specific return | |
|---|---|---|---|---|
| Meridian Freight Systems (synthetic) | 9.4% | 1.6 | -0.9 | +1.8% |
| Cascade Utility Holdings (synthetic) | 6.5% | 0.4 | -1.7 | -0.3% |
Solution. Step 1, the surprises. GDP surprise = 3.1 - 2.4 = +0.700000 points. Inflation surprise = 2.2 - 2.8 = -0.600000 points. Both are deviations from a forecast, and the forecast has to be stated or there is no surprise to speak of.
Step 2, Meridian. Factor contribution = 1.6(0.7) + (-0.9)(-0.6) = 1.120000 + 0.540000 = +1.660000. Realised return = 9.400000 + 1.660000 + 1.800000 = 12.860000%.
Step 3, Cascade. Factor contribution = 0.4(0.7) + (-1.7)(-0.6) = 0.280000 + 1.020000 = +1.300000. Realised return = 6.500000 + 1.300000 - 0.300000 = 7.500000%. Cascade made almost as much from the factors as Meridian did, from a completely different source: the utility barely notices growth and cares intensely about inflation, and inflation came in low.
Step 4, a 60/40 portfolio, two ways. Aggregate first: expected return = 0.6(9.4) + 0.4(6.5) = 8.240000%; GDP exposure = 0.6(1.6) + 0.4(0.4) = 1.120000; inflation exposure = 0.6(-0.9) + 0.4(-1.7) = -1.220000; factor contribution = 1.12(0.7) + (-1.22)(-0.6) = 0.784000 + 0.732000 = +1.516000; specific contribution = 0.6(1.8) + 0.4(-0.3) = +0.960000. Total = 8.240000 + 1.516000 + 0.960000 = 10.716000%. Now the independent route: 0.6(12.86) + 0.4(7.50) = 7.716000 + 3.000000 = 10.716000%. Identical, because the decomposition is linear in the weights.
Read it. Only 1.66 of Meridian's 3.46 points of surprise came from the economy; the larger part was a company event. That is the split a factor model exists to make, and it is the split an investor most often gets wrong in both directions, crediting a macro call for a contract win or blaming a company for a rate move. Watch the arithmetic trap too: putting the levels into the model instead of the surprises gives 9.4 + 1.6(3.1) - 0.9(2.2) + 1.8 = 14.180000%, which is wrong by 1.32 points and looks perfectly reasonable.
Worked example 3: A five-stock Indian panel, from cross-sectional regression to active return (India, ₹)
Five synthetic Indian companies, one month of returns, and a value exposure for each expressed as a standardised score against the wider market. The benchmark is a capitalisation-weighted index of the five; the portfolio is a manager's book of the same five names.
| Company (all synthetic) | Value z-score | Return | Benchmark weight | Portfolio weight |
|---|---|---|---|---|
| Nandi Steel Works | +1.4 | +5.1% | 15% | 25% |
| Konark Cements | +0.6 | +1.9% | 20% | 20% |
| Varsha Pharma | -0.3 | +3.5% | 25% | 15% |
| Tungabhadra Textiles | +0.8 | +2.2% | 10% | 20% |
| Sahyadri Software Services | -2.5 | -1.4% | 30% | 20% |
Solution. Step 0, the checks before the work. The z-scores sum to 0.000000, as standardised scores should. Both weight columns sum to 1.000000. If either failed, nothing below would reconcile.
Step 1, estimate the factor returns. The design matrix is a column of ones and the z-column. Because the z-scores sum to zero, the two columns are orthogonal and the estimates separate: f_MKT = mean(r) = 11.30 / 5 = 2.260000%, and f_VAL = Σ z_i r_i / Σ z_i² = 12.490000 / 9.300000 = 1.3430107527%. Every unit of value exposure earned 1.343 points this month.
Step 2, fitted and idiosyncratic returns. Fitted is 2.26 + 1.3430107527 z_i; the residual is what is left.
| Company | Fitted return | Idiosyncratic return |
|---|---|---|
| Nandi Steel Works | +4.1402150538 | +0.9597849462 |
| Konark Cements | +3.0658064516 | -1.1658064516 |
| Varsha Pharma | +1.8570967742 | +1.6429032258 |
| Tungabhadra Textiles | +3.3344086022 | -1.1344086022 |
| Sahyadri Software Services | -1.0975268817 | -0.3024731183 |
Step 3, verify the fit two ways. The residuals sum to 2.66e-15, which is zero to machine precision. And Σ z_i u_i = -6.66e-16, also zero: the residuals carry no value exposure, which is what makes the split meaningful. Total sum of squares is 23.132000, explained is 16.7742043011 and residual is 6.3577956989, so R-squared is 0.7251514915.
Step 4, the portfolio arithmetic. Benchmark return = 0.15(5.1) + 0.20(1.9) + 0.25(3.5) + 0.10(2.2) + 0.30(-1.4) = 1.820000%. Portfolio return = 0.25(5.1) + 0.20(1.9) + 0.15(3.5) + 0.20(2.2) + 0.20(-1.4) = 2.340000%. Active return = +0.520000 points. Active weights are (+0.10, 0.00, -0.10, +0.10, -0.10) and sum to zero.
Step 5, split the active return. Active exposure to the unit column is Σ w_a,i = 0.000000, so the market factor contributes nothing, which is always true when both weight vectors sum to one. Active exposure to value is 0.10(1.4) + 0(0.6) - 0.10(-0.3) + 0.10(0.8) - 0.10(-2.5) = +0.500000. Factor contribution = 0.500000 × 1.3430107527 = +0.6715053763. Selection contribution = Σ w_a,i u_i = 0.0959784946 + 0 - 0.1642903226 - 0.1134408602 + 0.0302473118 = -0.1515053763.
Step 6, reconcile. 0.6715053763 + (-0.1515053763) = 0.5200000000, equal to the active return to the last decimal. This is an identity, not a rounding success, and a residual means an error upstream.
Read it. The manager beat her benchmark by 52 basis points and every one of them, and 15 more, came from a value tilt. Her stock selection lost 15 basis points. Told only the active return, a committee would credit the picks. Notice also the benchmark's own value exposure of -0.415000 against the portfolio's +0.085000: the book is barely value-tilted in absolute terms and half a standard deviation value-tilted against its index, because the index's largest holding is its most expensive name. Measure exposures actively or you will describe the wrong bet.
Worked example 4: A US fund's twelve quarters, and what three columns do to its alpha (US, $)
Cascadia Small Value Fund (synthetic) reports twelve quarters of excess return over the risk-free rate. The three factor series are quarterly excess market return, a size factor (small minus big) and a value factor (high minus low book-to-price), all in percent.
| Quarter | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Fund | 7.91 | 1.15 | 7.14 | 5.72 | -4.70 | 8.65 | 5.04 | -0.50 | 9.04 | 8.19 | 1.27 | 4.46 |
| Market | 4.8 | -2.1 | 6.3 | 1.4 | -5.6 | 8.2 | 2.9 | -1.3 | 5.1 | 7.4 | -4.2 | 3.6 |
| Size | 3.3 | 3.6 | -0.3 | 0.6 | 0.4 | 2.0 | 3.1 | 0.9 | 2.2 | 1.9 | 2.4 | 1.5 |
| Value | 0.3 | -0.6 | 0.8 | 2.9 | 1.2 | -0.4 | 2.1 | 2.6 | 3.4 | 0.9 | 3.1 | 1.7 |
Solution. Step 1, the headline numbers. Fund mean 4.447500% a quarter; market mean 2.2083333333%; mean active return 2.2391666667 points, or 8.9566666667% annualised at four times. Active standard deviation 1.7182573536 points a quarter, or 3.4365147073% annualised at twice. Naive information ratio 1.3031614047 on quarterly data, 2.6063228095 annualised. That last figure is high enough to be a warning on its own.
Step 2, the one-factor regression. Regressing fund excess return on market excess return gives an alpha of 2.5265614082 a quarter with a standard error of 0.5463433021, so t = 4.6245 and p = 0.0009. Market beta is 0.8698589850 with a standard error of 0.1112960186. Residual standard deviation 1.6902680161, R-squared 0.8593244230. Annualised, that alpha is 10.1062456328%.
Step 3, add size. Alpha falls to 1.5075947924 with a standard error of 0.8748515165, so t = 1.7233. The size loading is 0.5725181385 with t = 1.4464. Half the alpha has gone and the significance has gone with it.
Step 4, add value. The three-factor fit:
| Term | Coefficient | Standard error | t | p |
|---|---|---|---|---|
| Alpha | 0.0702926489 | 1.0233621595 | 0.0687 | 0.9469 |
| Market | 0.9161727895 | 0.0939874349 | 9.7478 | 0.0000 |
| Size | 0.7448435725 | 0.3493010695 | 2.1324 | 0.0655 |
| Value | 0.6755160069 | 0.3274043643 | 2.0632 | 0.0730 |
Residual standard deviation 1.3752316887, R-squared 0.9255011984, adjusted 0.8975641478. Annualised alpha 0.2811705957%. The 95% confidence interval on quarterly alpha, at eight degrees of freedom and a critical t of 2.3060041352, runs from -2.2895847227 to +2.4301700206, which annualises to a range from -9.16% to +9.72%. Twelve quarters says essentially nothing about this alpha.
Step 5, account for every point that vanished. Annualised one-factor alpha minus annualised three-factor alpha is 9.8250750371 points. Size explains 0.7448435725 × 1.80 × 4 = 5.3628737223. Value explains 0.6755160069 × 1.50 × 4 = 4.0530960412. The change in market beta explains (0.9161727895 - 0.8698589850) × 2.2083333333 × 4 = 0.4091052736. Those three plus the three-factor alpha reconstruct 10.1062456328, exactly the one-factor alpha. Nothing was lost; it was reclassified.
Step 6, decompose active risk. Estimate the factor covariance matrix from the twelve quarters, with variances 20.9681060606, 1.4963636364 and 1.8309090909 and correlations of 0.0342 between market and size, -0.2662 between market and value and -0.2395 between size and value. Active exposures against a benchmark that is the market itself are (0.9161727895 - 1, 0.7448435725, 0.6755160069) = (-0.0838272105, +0.7448435725, +0.6755160069). Factor variance = x' Ω x = 1.5769449170. Specific variance = 1.3752316887² = 1.8912621975. Total 3.4682071145, so model active risk is 1.8623123032 a quarter and 3.7246246063% annualised. Factors are 45.4685912612% of active variance, specific risk 54.5314087388%. Within the factor part, value contributes 46.2561791773%, size 39.2380141479% and market 14.5058066747%.
Step 7, cross-check the tracking error. Realised active standard deviation is 1.7182573536 against the model's 1.8623123032. The gap is the degrees-of-freedom convention: ordinary least squares forces the sample covariance between the factors and the residuals to zero, so realised active variance equals factor variance plus the residual sum of squares over n - 1. That is 1.5769449170 + 1.8912621975 × 8/11 = 1.5769449170 + 1.3754634164 = 2.9524083333, whose square root is 1.7182573536. Exact.
Step 8, the two information ratios. Active return from factors = x' × (2.2083333333, 1.80, 1.50) = 2.1688740177 a quarter. Active return from selection is the alpha, 0.0702926489. They sum to 2.2391666667, the realised mean active return, to fifteen decimal places. Factor information ratio = 2.1688740177 / sqrt(1.5769449170) = 1.7271341218. Appraisal ratio = 0.0702926489 / 1.3752316887 = 0.0511133139.
Read it. Every number in Step 1 says star manager and every number after Step 4 says index fund with a tilt.
The fund is a competent small-value vehicle that ran into a small-value market: over these twelve quarters the size factor returned 1.80% a quarter and the value factor 1.50%, and holding exposures of 0.74 and 0.68 to them was worth 9.4 points a year. The alpha left over is 0.28% a year with a t-statistic of 0.07. To establish that alpha as different from zero at the two-sigma level, at this residual volatility, would take roughly 383 years of quarterly data. Say that number out loud before you next describe three years of performance as evidence.
Worked example 5: A pure factor portfolio, and an unwanted exposure hedged (India, ₹)
Three synthetic Indian index products are available, each with a stated exposure to a value factor and a size factor. A synthetic fund, Sahyadri Balanced Equity, has an active value exposure of +0.62 that it wants to keep and an active size exposure of +0.35 that it does not. Its specific risk is 3.2% a year. Annualised factor volatilities are 6.0% for value and 8.0% for size, with a correlation of -0.25.
| Product (all synthetic) | Value exposure | Size exposure |
|---|---|---|
| Product 1 | 1.20 | 0.30 |
| Product 2 | -0.40 | 1.10 |
| Product 3 | 0.10 | -0.50 |
Solution. Step 1, the system. Three unknown weights, three equations: weights sum to 1, value exposure equals the target, size exposure equals the target. Written as a matrix, the rows are (1, 1, 1), (1.20, -0.40, 0.10) and (0.30, 1.10, -0.50).
Step 2, three solves. For a pure value portfolio, target (1, 1, 0): weights (+0.7824074074, -0.0787037037, +0.2962962963). For a pure size portfolio, target (1, 0, 1): (+0.2731481481, +0.8009259259, -0.0740740741). For a style-neutral portfolio, target (1, 0, 0): (+0.0416666667, +0.2916666667, +0.6666666667). Verify each by multiplying back: the pure value portfolio's value exposure is 1.0000000000 and its size exposure is 0.0000000000.
Step 3, build the zero-investment overlay. Pure size minus style-neutral gives (+0.2314814815, +0.5092592593, -0.7407407407). Its weights sum to 0.0000000000, its value exposure is 0.0000000000 and its size exposure is 1.0000000000. This is the hedging instrument: it can be applied on top of any portfolio without changing the amount of capital invested.
Step 4, tracking error before the hedge. Covariance between the two factors is -0.25 × 6 × 8 = -12.00. Factor variance = 0.62²(36) + 0.35²(64) + 2(0.62)(0.35)(-12) = 13.838400 + 7.840000 - 5.208000 = 16.470400. Adding specific variance 3.2² = 10.240000 gives 26.710400 and a tracking error of 5.1682105220%.
Step 5, hedge the size exposure to zero. Short 0.35 units of the overlay. Factor variance becomes 0.62²(36) = 13.838400, total 24.078400, tracking error 4.9069746280%. The reduction is 0.2612358940 points, or 5.0546682047% of the original tracking error. A visible-looking exposure of 0.35 standard deviations bought back five percent of the risk.
Step 6, find the exposure that actually minimises risk. Differentiate the factor variance with respect to the size exposure and set it to zero: x_size = -Cov(V,S) x_value / Var(S) = 12.00 × 0.62 / 64 = +0.1162500000. Tracking error there is 4.8180390202%, below the fully hedged 4.9069746280%. The optimal trade removes 66.7857142857% of the exposure, not all of it.
Step 7, isolate why. Set the correlation to zero and repeat: tracking error before the hedge would be 5.6496371565% and after 4.9069746280%, a reduction of 0.7426625285 points instead of 0.2612358940. Nearly two-thirds of the apparent benefit of the hedge was destroyed by the negative correlation, because the size bet was already offsetting part of the value bet.
Read it. Two practical consequences. Any hedge whose size was chosen by looking at the exposure alone is the wrong size whenever factors are correlated, which is always.
And the hedge is only as pure as the instrument: if the overlay actually leaves a residual size exposure of 0.08 because the products' own exposures were measured with error, tracking error lands at 4.8267587468% rather than 4.9069746280%, which in this case is closer to the optimum by luck rather than by design. State the instrument's measured exposures and their vintage whenever you report a hedged risk number.
Worked example 6: Principal components as factors, and what naming costs (US, $)
Two small correlation matrices, both chosen so the eigenvalues can be written down without a computer.
Solution. Step 1, five equicorrelated assets. Five US large-caps whose returns correlate at 0.55 with each other and have unit variance. For an n × n matrix with ones on the diagonal and ρ everywhere else, the eigenvalues are 1 + (n-1)ρ once and 1 - ρ with multiplicity n - 1. Here that is 1 + 4(0.55) = 3.200000 once and 1 - 0.55 = 0.450000 four times, summing to 5.000000 as the trace requires.
Step 2, read the first component. It explains 3.20 / 5 = 64.000000% of total variance, and its loadings are equal on all five names at 1/sqrt(5) = 0.4472135955. The equal-weighted market portfolio emerged from the algebra without being assumed. A one-component model leaves 36.000000% of variance unexplained, all of it firm-specific.
Step 3, the tie. Components two through five each carry an eigenvalue of 0.450000 and a variance share of 9.000000%. Equal eigenvalues mean the subspace they span has no preferred axes: any orthogonal rotation of those four vectors is an equally valid set of components. Software will print four specific vectors and none of them means anything.
Step 4, break the symmetry. Four assets in two pairs, correlated 0.80 within a pair and 0.40 across. The eigenvalues are 2.600000, 1.000000, 0.200000 and 0.200000, from 1 + 0.8 + 0.4 + 0.4, 1 + 0.8 - 0.4 - 0.4 and 1 - 0.8 twice.
| Component | Eigenvalue | Share of variance | Loadings |
|---|---|---|---|
| PC1 | 2.600000 | 65.000000% | (+0.5, +0.5, +0.5, +0.5) |
| PC2 | 1.000000 | 25.000000% | (+0.5, +0.5, -0.5, -0.5) |
| PC3 | 0.200000 | 5.000000% | not identified |
| PC4 | 0.200000 | 5.000000% | not identified |
Step 5, name them. The first two take 90.000000% between them. The first is the market. The second is long one pair and short the other, a clean spread that a risk report will want a name for. The mathematics offers none. It could be value against growth, domestic against exporter, or two sectors that diverged in this sample and will not in the next.
Read it. Statistical models find structure you did not know was there, which is worth a great deal in a new market or a mixed book. They hand you back components you cannot describe, hedge with intent, or explain to a client, and when eigenvalues tie they hand you components that are not even determinate.
Use them to check a named model rather than to replace one: if your three named factors explain 40% of variance and the first three components explain 75%, something systematic is moving your book and you have not named it.
Worked example 7: A concentrated Indian book, and where its risk really lives (India, ₹)
Eight synthetic Indian companies in a high-conviction book, each with standardised exposures to value, quality and size, and each with an annual specific risk from the model. The size score is signed as smallness, the small-minus-big convention used for the US fund earlier, so a negative size exposure is a large-capitalisation tilt. The benchmark is a broad index whose style exposures are zero by construction of the scores.
| Company (all synthetic) | Weight | Value | Quality | Size | Specific risk |
|---|---|---|---|---|---|
| Sahyadri Software Services | 18% | -1.10 | +1.40 | -0.90 | 22% |
| Nilgiri Consumer Brands | 15% | -0.80 | +1.10 | -0.60 | 20% |
| Chandra Bank | 14% | +0.70 | +0.30 | -0.70 | 26% |
| Vindhya Paints | 12% | -1.30 | +1.60 | -0.40 | 19% |
| Godavari Insurance | 12% | +0.20 | +0.50 | -0.30 | 21% |
| Konark Cements | 11% | +0.90 | -0.20 | +0.40 | 24% |
| Nandi Steel Works | 10% | +1.50 | -0.70 | +0.80 | 30% |
| Kaveri Diagnostics | 8% | -0.40 | +0.90 | +1.20 | 28% |
Factor volatilities are 6.0% for value, 5.0% for quality and 7.0% for size, with correlations of -0.48 between value and quality, +0.26 between value and size and -0.17 between quality and size.
Solution. Step 1, the book's exposures. Weighted sums of each column: value = -0.135000, quality = +0.691000, size = -0.214000. The book is strongly quality-tilted, meaningfully large-cap tilted and slightly expensive rather than cheap.
Step 2, the covariance matrix. Multiply out D R D with volatilities on the diagonal of D: variances 36.00, 25.00 and 49.00; covariances -14.40 between value and quality, +10.92 between value and size and -5.95 between quality and size. Leading principal minors are 36.00, 692.64 and 31,554.96, all positive, so the matrix is a legitimate covariance matrix.
Step 3, factor variance. x' Σ x = 19.9143952000, of which quality accounts for 71.1052440096%, size 17.2705877606% and value 11.6241682298%.
Step 4, specific variance. Σ w_i² σ²_u,i = 70.4672000000, a specific risk of 8.3944743731%.
Step 5, put them together. Total active variance 90.3815952000, tracking error 9.5069235402%. Factors are 22.0336841322% of active variance and stock-specific risk is 77.9663158678%.
Step 6, express the same tilt through 200 names. Hold the exposures fixed and spread the book over 200 positions of 0.5% each with an average specific risk of 24%. Specific variance falls from 70.4672000000 to 200 × 0.005² × 24² = 2.8800000000. Total active variance is 22.7943952000, tracking error 4.7743476204%, and the factor share rises to 87.3653151368%.
Step 7, now look at one month's return. Suppose value returns -1.1%, quality +2.8% and size -0.6%, and the book's selection return is +0.42 points. Factor contributions are -0.135 × -1.1 = +0.1485, +0.691 × 2.8 = +1.9348 and -0.214 × -0.6 = +0.1284, totalling +2.2117000000. Active return is 2.2117 + 0.42 = +2.6317000000 points, and factors delivered 84.0407341262% of it.
Read it. The two headline numbers point in opposite directions and both are correct. Seventy-eight percent of this book's risk is stock-specific, which vindicates the concentrated investor's claim about what she is doing. Eighty-four percent of this month's return came from a tilt she did not consciously choose, which vindicates the factor analyst's warning. The reconciliation is arithmetic rather than rhetorical: a large exposure meeting a large factor move dominates any single period, while stock-specific variance, being most of the variance, dominates the accumulation over many.
Concentration is the mechanism, and Step 6 isolates it: identical exposures, one-half the tracking error, and the factor share going from 22% to 87% purely because the positions got smaller.
Verify: every figure above at full precision
Every number in the worked examples, the practice solutions and the mastery keys comes from one script that is run before the module is written. The headline figures, restated so any recomputation can be checked against them:
| Figure | Value |
|---|---|
| Factor premium 1, Worked example 1 | 8.0000000000% |
| Factor premium 2, Worked example 1 | -2.0000000000% |
| Fair expected return on portfolio C | 14.0000000000% |
| No-arbitrage price of C | $99.1228070175 |
| Meridian realised return | 12.8600000000% |
| Cascade realised return | 7.5000000000% |
| 60/40 portfolio realised return | 10.7160000000% |
| Indian panel, market factor return | 2.2600000000% |
| Indian panel, value factor return | 1.3430107527% |
| Indian panel, R-squared | 0.7251514915 |
| Indian panel, active return | 0.5200000000 points |
| Indian panel, factor contribution | 0.6715053763 |
| Indian panel, selection contribution | -0.1515053763 |
| US fund, one-factor alpha per quarter | 2.5265614082 (t = 4.6244941568) |
| US fund, three-factor alpha per quarter | 0.0702926489 (t = 0.0686879501) |
| US fund, three-factor betas | 0.9161727895 / 0.7448435725 / 0.6755160069 |
| US fund, residual standard deviation | 1.3752316887 |
| US fund, factor share of active variance | 45.4685912612% |
| US fund, model active risk per quarter | 1.8623123032 |
| US fund, naive information ratio | 1.3031614047 |
| US fund, appraisal ratio | 0.0511133139 |
| Pure value portfolio weights | 0.7824074074 / -0.0787037037 / 0.2962962963 |
| Tracking error unhedged | 5.1682105220% |
| Tracking error fully hedged | 4.9069746280% |
| Risk-minimising size exposure | 0.1162500000 |
| Tracking error at the optimum | 4.8180390202% |
| Tracking error at +0.1163 if the correlation moves to +0.50 | 5.3294371185% |
| Risk-minimising size exposure at a correlation of +0.50 | -0.2325000000 |
| First principal component share, five assets at 0.55 | 64.0000000000% |
| Block matrix, first two components | 65.0000000000% and 25.0000000000% |
| Concentrated book exposures | -0.1350 / +0.6910 / -0.2140 |
| Concentrated book tracking error | 9.5069235402% |
| Concentrated book factor share of variance | 22.0336841322% |
| Same tilt across 200 names, factor share | 87.3653151368% |
| Concentrated book factor share of one month's return | 84.0407341262% |
| Expected maximum t of 300 pure-noise trials | 3.3775086897 |
| Bonferroni two-sided critical value at 300 tests | 3.7648236495 |
Practice set
Work every problem before opening its solution. A calculator is assumed and a spreadsheet is fine. Numeric answers within 0.5% of the stated figure count as correct, except where an exact reconciliation is demanded, in which case exact means exact. Markets alternate deliberately.
P1 (guided). Solve for two factor premiums. The risk-free rate is 3.50%. Portfolio One has exposures of 0.8 and 1.2 to two factors and an expected return of 9.5%. Portfolio Two has exposures of 1.6 and 0.4 and an expected return of 10.7%. Find both factor risk premiums, then give the fair expected return of a portfolio with exposures of 1.0 to each.
Solution. Subtract the risk-free rate: 0.8 λ_1 + 1.2 λ_2 = 6.0 and 1.6 λ_1 + 0.4 λ_2 = 7.2. Solving gives λ_1 = 3.900000% and λ_2 = 2.400000%. Check both: 3.5 + 0.8(3.9) + 1.2(2.4) = 9.500000 and 3.5 + 1.6(3.9) + 0.4(2.4) = 10.700000. A portfolio at (1.0, 1.0) should return 3.5 + 3.9 + 2.4 = 9.800000%.
P2 (guided). Size the arbitrage. Portfolio Three, on the same plane as Problem 1, has exposures of 1.0 to each factor and is quoted at an expected return of 8.0%. Build the replicating portfolio from Portfolios One and Two, state the riskless profit per ₹1 crore of the trade, and say which way the trade runs.
Solution. Fair return is 9.800000%, quoted is 8.000000%, so Portfolio Three is over-priced by 1.800000 points. Replicate its exposures: 0.8 w_1 + 1.6 w_2 = 1.0 and 1.2 w_1 + 0.4 w_2 = 1.0, giving w_1 = 0.750000 and w_2 = 0.250000, with a risk-free weight of 0.000000. The replication's expected return is 0.75(9.5) + 0.25(10.7) = 9.800000%, matching the plane by an independent route. Short Portfolio Three, buy the replication: on ₹1,00,00,000 the expected riskless profit is ₹1,80,000.00.
P3 (guided). Decompose a realised return. A synthetic Indian cement company has an expected return of 8.2%, a GDP-surprise sensitivity of 1.10 and an inflation-surprise sensitivity of -1.40. Consensus expected GDP growth of 3.4% and inflation of 4.0%; the actuals were 2.9% and 4.6%. Firm-specific return was -0.60 points. Give the realised return and each component.
Solution. GDP surprise = 2.9 - 3.4 = -0.500000; inflation surprise = 4.6 - 4.0 = +0.600000. GDP contribution = 1.10(-0.5) = -0.550000; inflation contribution = -1.40(0.6) = -0.840000; factor total = -1.390000. Realised = 8.200000 - 1.390000 - 0.600000 = 6.210000%. Both surprises hurt: growth came in low for a cyclical, and inflation came in high for a company that suffers from it.
P4. Estimate a cross-sectional factor model. Four synthetic US companies have value z-scores of +1.2, -0.4, -1.6 and +0.8, and monthly returns of +3.6%, +2.4%, -1.4% and +3.9%. Estimate the market factor return and the value factor return, give each name's fitted and idiosyncratic return, verify the fit, and report R-squared.
Solution. The z-scores sum to 0.000000 and Σ z² = 4.800000. So f_MKT = mean(r) = 8.5 / 4 = 2.125000% and f_VAL = Σ z r / Σ z² = 8.720000 / 4.800000 = 1.8166666667%. Fitted returns are +4.3050000000, +1.3983333333, -0.7816666667 and +3.5783333333; residuals are -0.7050000000, +1.0016666667, -0.6183333333 and +0.3216666667. Residuals sum to 3.33e-15 and the residual-exposure product is zero, both as required. Total sum of squares 17.827500, residual sum of squares 1.986167, so R-squared is 0.8885897256. Four names and two parameters will always fit well; read the residuals, not the fit.
P5. Split an active return. Using Problem 4's four names, the benchmark weights are 30/25/25/20 and the portfolio weights are 40/20/10/30. Compute the benchmark return, the portfolio return, the active return, the active value exposure, and the factor and selection contributions. Show that the two contributions reconcile.
Solution. Benchmark return = 0.30(3.6) + 0.25(2.4) + 0.25(-1.4) + 0.20(3.9) = 2.110000%. Portfolio return = 0.40(3.6) + 0.20(2.4) + 0.10(-1.4) + 0.30(3.9) = 2.950000%. Active return = +0.840000 points. Active weights (+0.10, -0.05, -0.15, +0.10) sum to zero. Active value exposure = 0.10(1.2) - 0.05(-0.4) - 0.15(-1.6) + 0.10(0.8) = +0.460000. Factor contribution = 0.46 × 1.8166666667 = +0.8356666667. Selection contribution = Σ w_a u = +0.0043333333. Sum = 0.8400000000, equal to the active return. Every basis point of this manager's month was the value tilt.
P6. Turn exposures into tracking error. A US portfolio has active exposures of +0.45 to factor one and -0.30 to factor two. Factor variances are 25.0 and 36.0 with a covariance of +6.0, all annual and in percent squared. Specific risk is 4.5% a year. Give the factor variance, the total active variance, the tracking error and the factor share of active variance.
Solution. Factor variance = 0.45²(25) + (-0.30)²(36) + 2(0.45)(-0.30)(6) = 5.062500 + 3.240000 - 1.620000 = 6.682500. Specific variance = 4.5² = 20.250000. Total 26.932500, tracking error = 5.1896531676%, factor share = 24.8120300752%. Note the negative cross term: two exposures of opposite sign to positively correlated factors partially cancel, which is why a sum of squares would have overstated the risk by a quarter of the factor part.
P7. Compute both information ratios. A fund's annual active return is 2.60 points with a tracking error of 4.80%. Its factor model reports an alpha of 0.35 points and a specific risk of 4.20%. Give the naive information ratio, the appraisal ratio, the factor information ratio, and say which one belongs in a manager-selection memo.
Solution. Naive information ratio = 2.60 / 4.80 = 0.5416666667. Appraisal ratio = 0.35 / 4.20 = 0.0833333333. Factor return = 2.60 - 0.35 = 2.250000; factor risk = sqrt(4.80² - 4.20²) = 2.3237900077; factor information ratio = 0.9682458366. The memo needs both, with the appraisal ratio leading, because the factor part is available at index-fund cost and the selection part is not. As a cross-check on the arithmetic, sqrt(0.9682458366² + 0.0833333333²) = 0.9718253158, which is the highest information ratio obtainable by combining two uncorrelated sources with these ratios.
P8. Build a pure factor portfolio. Three synthetic Indian products have exposures of (1.50, 0.00), (0.50, 1.00) and (-0.50, -1.00) to two factors, in the order (factor one, factor two). Find the weights of a portfolio that is fully invested, has unit exposure to factor one and zero to factor two. Then find the pure factor-two portfolio.
Solution. Solve w_1 + w_2 + w_3 = 1, 1.50 w_1 + 0.50 w_2 - 0.50 w_3 = 1, 0.00 w_1 + 1.00 w_2 - 1.00 w_3 = 0. The third equation forces w_2 = w_3; substituting gives w_1 = 0.6666666667 and w_2 = w_3 = 0.1666666667. Check: exposure to factor one is 1.5(2/3) + 0.5(1/6) - 0.5(1/6) = 1.000000, and to factor two is 1(1/6) - 1(1/6) = 0.000000. For the pure factor-two portfolio, target (1, 0, 1): weights (-0.3333333333, +1.1666666667, +0.1666666667), which requires a short position, as pure factor portfolios usually do.
P9. Decide whether to hedge at all. A synthetic US fund has an active value exposure of 0.80 and an active size exposure of 0.30. Factor volatilities are 5.0% and 9.0% with a correlation of -0.40; specific risk is 2.8%. Compute the tracking error unhedged, fully hedged and at the risk-minimising size exposure, and state the exposure below which hedging to zero raises tracking error.
Solution. Covariance = -0.40(5)(9) = -18.00. Unhedged factor variance = 0.64(25) + 0.09(81) + 2(0.8)(0.3)(-18) = 16.000000 + 7.290000 - 8.640000 = 14.650000; with specific variance 7.840000 the tracking error is 4.7423622806%. Fully hedged, factor variance is 16.000000, total 23.840000, tracking error 4.8826222463%, which is higher. The risk-minimising exposure is 18.00 × 0.80 / 81 = +0.1777777778, where the tracking error is 4.6130250379%. Hedging to zero raises tracking error for any starting exposure below -2ρ x_value σ_value / σ_size = 0.3555555556, and 0.30 is below it. The unwanted exposure was doing useful work.
P10. Read a statistical model. Eight assets are equicorrelated. Give the first eigenvalue and the variance share of the first component when the common correlation is 0.40, then when it is 0.70. Say what happens to the remaining seven components in each case.
Solution. With ρ = 0.40: λ_1 = 1 + 7(0.40) = 3.800000, a share of 3.80 / 8 = 47.500000%; the other seven each have 1 - ρ = 0.600000, a share of 7.500000% each. With ρ = 0.70: λ_1 = 5.900000, a share of 73.750000%; the others are 0.300000 each, 3.750000% each. In both cases the seven remaining eigenvalues are tied, so no rotation of that subspace is preferred and none of those components is identified. Higher common correlation makes the first component more dominant and the rest even less meaningful.
P11. Apply the multiple-testing correction. A researcher reports a factor with a t-statistic of 2.4. Compute the expected number of false positives at a 5% level if 50 candidates were tested, and again if 200 were; give the Bonferroni two-sided critical value for each; and give the expected maximum t-statistic of 50 and of 200 pure-noise trials.
Solution. With 50 tests: expected false positives = 0.05 × 50 = 2.500000; the probability of at least one is 1 - 0.95^50 = 0.9230550247; the Bonferroni critical value is 3.2905267315; and sqrt(2 ln 50) = 2.7971496225. With 200 tests: expected false positives 10.000000; probability of at least one 0.9999649473; Bonferroni critical value 3.6622599309; expected maximum 3.2552472614. A t of 2.4 clears neither hurdle at either trial count, and it sits below the expected best of a set of strategies with no edge at all.
P12. Price the post-publication haircut. A published factor reports an in-sample premium of 7.2% a year. Apply an out-of-sample haircut of 32% and, separately, a post-publication haircut of 58%. Give both premiums, and the annual rupee difference on a ₹50,00,000 allocation between the in-sample figure and the post-publication one.
Solution. At a 32% haircut the premium is 4.8960000000%; at 58% it is 3.0240000000%. On ₹50,00,000 the in-sample figure implies ₹3,60,000.00 a year and the post-publication figure ₹1,51,200.00, a difference of ₹2,08,800.00 a year. That gap is the cost of taking a backtest at face value, and it arrives whether the cause is arbitrage by other readers or overfitting by the author.
Applied mini-project
Build a three-factor fundamental model on a real panel, attribute one fund's active return to factors and to selection, and write a one-page verdict on whether the manager is paid for skill or for exposure. Budget about three hours. Label every synthetic entity as synthetic and trace every real figure to a named primary source with the pull date recorded.
Artefact 1 is the panel. Assemble at least 25 companies from one market, with a price, a book value, a return-on-equity figure and a market capitalisation for each, plus the next period's total return. India can be sourced from company annual reports and exchange filings; the United States from SEC EDGAR.
Compute three z-scores per name, standardising within the cross-section: value from book-to-price, quality from return on equity, size from the logarithm of market capitalisation. A size score built that way is positive for the largest companies, the opposite sign to the small-minus-big convention in Worked Examples 4 and 7, so write down which one you used before anything downstream reads a sign. Test 1: each z-column has a cross-sectional mean of zero and a standard deviation of one, to six decimal places. Test 2: every fundamental input predates the start of the return window, with the filing date recorded next to it.
Artefact 2 is the estimated model. Run the cross-sectional regression of return on a constant plus the three z-columns, for at least six consecutive periods. Report the four factor returns per period and keep the residuals. Test 3: in every period, the residuals sum to zero and are uncorrelated with each exposure column, both to within 1e-10. Test 4: the fitted plus residual returns reproduce the raw returns exactly.
Artefact 3 is the attribution. Pick one real fund with a published holdings list, or construct a defensible portfolio of your panel names, and pick a benchmark with published weights. Compute active weights, active exposures on all three factors, and the split of active return into factor and selection contributions for each period. Test 5: in every period, factor plus selection equals the active return to within 1e-10.
Then build a factor covariance matrix from your estimated factor-return series and compute predicted tracking error, the factor and specific shares of active variance, and each factor's share of the factor part. Test 6: the predicted tracking error is reconciled against the realised active standard deviation, with the degrees-of-freedom convention stated and the residual gap explained rather than ignored.
Artefact 4 is the verdict, at most one page. State the fund's active return over the whole window, how much of it the exposures explain, the alpha and its standard error, the appraisal ratio, and what you would need to see before paying an active fee for it. Include one paragraph naming every place your numbers rest on an assumption rather than a source, and one sentence on the factor you did not include and what its absence would have done to the alpha.
Every row scores 0 to 3, so 21 points are available across the seven, and the pass mark is 17 with no zero on any row.
| # | Criterion | 0 | 1 | 2 | 3 |
|---|---|---|---|---|---|
| 1 | Panel and standardisation (Tests 1 to 2) | absent or unsourced | built, standardisation approximate | both tests pass | both tests pass, every filing date recorded and checked against the return window |
| 2 | Cross-sectional estimation (Tests 3 to 4) | fails or absent | one period only | six periods, both tests pass | plus a hand recomputation of one full period matching to six decimals |
| 3 | Active exposures | portfolio exposures only | active exposures computed | active exposures with the benchmark's own exposures reported beside them | plus the exposure drift across the six periods, quantified |
| 4 | Return attribution (Test 5) | does not reconcile | reconciles in some periods | reconciles in every period | plus per-name selection contributions and the two largest named |
| 5 | Risk attribution (Test 6) | absent | tracking error computed | factor and specific shares reported, each factor's share given | plus the reconciliation against realised active risk with the convention stated |
| 6 | The two information ratios | neither | naive only | both, with the appraisal ratio leading | plus the number of periods needed to make the alpha significant |
| 7 | Honesty of the verdict | false precision, no caveats | partial caveats | assumptions named and sources cited | plus the omitted-factor paragraph, with its likely direction argued |
Any artefact whose test fails scores zero for that row, whatever the quality of the write-up, because a factor model that does not reconcile is not a model with a small error in it. It is a different model from the one you think you built.
Reading & resources
Read each of these as something to verify against and learn from, never as a source to lift a number from without tracing it yourself.
The pricing theory itself is short and worth reading in the original. Ross's 1976 paper in the Journal of Economic Theory, "The Arbitrage Theory of Capital Asset Pricing", is the source of the whole structure and is more modest in its claims than most textbook summaries suggest. [Paid] [Advanced]. Chen, Roll and Ross, "Economic Forces and the Stock Market" (Journal of Business, 1986), is the canonical macroeconomic factor model and the reference for how the factors were chosen. [Paid] [Intermediate]. Fama and French's 1993 three-factor paper in the Journal of Financial Economics, and their 2015 five-factor paper, are the fundamental-factor spine, and Carhart's 1997 four-factor paper in the Journal of Finance adds momentum. [Paid] [Intermediate].
Ken French's data library carries the factor return series themselves, free, and is the single most useful download in this material. [Free] [Beginner].
For the portfolio machinery, Grinold and Kahn's Active Portfolio Management is the standard treatment of active exposures, active risk, the appraisal ratio and the fundamental law, and it is where the manager-selection material picks the thread up. [Paid] [Advanced]. Barra's published model handbooks and the methodology documents of the major commercial risk vendors show how a fundamental factor model is specified in practice, including the industry blocks that a teaching example leaves out. [Free] [Intermediate].
Treynor and Black's 1973 paper in the Journal of Business is where the appraisal ratio comes from. [Paid] [Advanced].
On the factor zoo, three papers do most of the work. Harvey, Liu and Zhu, "... and the Cross-Section of Expected Returns" (Review of Financial Studies, 2016), catalogues the published factors and argues for a much higher significance hurdle. [Paid] [Advanced]. Hou, Xue and Zhang, "Replicating Anomalies" (Review of Financial Studies, 2020), re-tests hundreds of published anomalies under consistent methodology. [Paid] [Advanced]. McLean and Pontiff, "Does Academic Research Destroy Stock Return Predictability?" (Journal of Finance, 2016), measures what happens to a premium after it is published. [Paid] [Advanced].
Feng, Giglio and Xiu's "Taming the Factor Zoo" (Journal of Finance, 2020) is the methodological response. [Paid] [Advanced].
For data and tools: SEC EDGAR for US filings and fund holdings, free; company annual reports, exchange filings and index provider methodology documents for the Indian panel, free; NumPy, pandas and statsmodels for the estimation, free, with numpy.linalg.lstsq for the cross-sectional solve and statsmodels.OLS when you want standard errors without writing them yourself.
Do this, not just read: download one factor return series and one fund's monthly returns, run the one-factor regression, then add a second factor and watch the alpha move. Twenty minutes of watching an alpha shrink when a column is added teaches more about what alpha means than any chapter, and it is the exact experiment that Worked Example 4 formalises.
Teach it back & journal
Feynman prompt. Explain to an intelligent trustee who has just been shown a fund with "10.1% annual alpha, t-statistic 4.6" why you would not hire it. Use the actual mechanics: the alpha was measured against one factor, the fund carried a size exposure of 0.74 and a value exposure of 0.68, those two factors returned 1.80% and 1.50% a quarter over the window, and adding the two columns leaves an alpha of 0.28% a year with a t-statistic of 0.07. Then, without changing your voice, explain what would have changed your mind: a longer window, a wider factor set that the alpha survives, or evidence that the tilt itself is the product being sold and priced accordingly. If your listener can, unprompted, ask you "what factor is missing from the three, and which way would it move the alpha?", you have taught the substance rather than the arithmetic.
Journal prompt. Take your own portfolio, or the last one you argued for, and estimate its three exposures by hand: value, quality and size, as weighted averages of your own rough z-scores against the market you invest in. Then answer three questions in writing. Which exposure is largest, and did you choose it or inherit it from a preference you have never examined? If a cheap index product carried that exposure, what would remain of your case for holding your version, stated as a number rather than as a conviction? And what would you have to see, over how many years, before you would agree that the residual is skill rather than noise, given that the fund in this material would need about 383 years of quarterly data to make its alpha significant? Then write a paragraph on the thing that makes this material genuinely uncomfortable: a factor model cannot distinguish a rented premium from the visible shadow of good business judgement, because the two look identical in the exposures. Which single measurement, made a habit, would most change how you argue for a position next quarter, and what will you do this month to make it a habit rather than an intention?
This module's flashcards and mastery quiz are wired into the app: see the node's Quiz and Reviews.