So far you’ve met the cast of factors — market, size, value, momentum, profitability, investment — and the idea that a factor is a portfolio whose return is a reward for bearing some shared risk. But naming factors is the easy part. The hard, money-deciding part is measurement: given an actual fund’s monthly returns, how much of each factor does it carry? Is its leftover return real skill or just statistical noise? And do these factors even earn a premium, or did someone backtest themselves into a mirage?
That’s all econometrics, and it splits cleanly into two regressions that ask two different questions. A time-series regression looks at one asset over time and asks “what are this asset’s exposures, and is its alpha real?” A cross-sectional regression looks at many assets at one moment and asks “across the whole market, does loading on this factor actually pay?” Confuse them and nothing in this field makes sense; keep them straight and the famous Fama–MacBeth procedure falls out naturally. Let’s measure.
Before you read — take a guess
A mutual fund's monthly returns are regressed on the market, size and value factors. The regression's R² comes back at 0.99. What does that high R² tell you about the fund?
Time-series regression: one asset’s exposures
Analogy. Picture a single sailboat over a season. Some days it’s pushed by the wind (the market), some days by the tide (the value factor), some days by a current (size). A time-series regression watches that one boat across many days and asks: how strongly does it respond to each force, and is there any leftover motion the known forces can’t explain?
Definition. For a single asset , you regress its excess return (return minus the risk-free rate, ) on the contemporaneous factor returns:
Each is a loading (also called a factor exposure): the slope on factor , telling you how many units of that factor the asset carries. The intercept is the model alpha — the average return left over after every factor has been paid its due. The residual is the wiggle no factor explains.
Reading the picture. With a single factor this is just a scatter of the asset’s excess return (vertical) against the factor’s return (horizontal), with a fitted line through it. The slope is the loading and the intercept is alpha — exactly the geometry below. Toggle the presets to watch a defensive (low-loading) asset’s line lie flat, a market-tracking asset sit at slope one, and an aggressive asset swing hard; flip the alpha control to lift the whole line by adding skill on top.
- Loading (slope)
- β = 1.0
- Alpha (intercept)
- α = +0%
Each dot is one period: the factor's return across, the asset's excess return up. The fitted slope is the loading (factor exposure); the intercept is alpha — the average return left over once the factor is accounted for. Steeper line = more exposure; lifting the line = real skill on top.
What R² measures here. Alongside the loadings and alpha, the regression spits out an — the fraction of the asset’s return variance the factors explain. A broad, diversified equity portfolio is almost nothing but factor exposure, so its on a good multi-factor model is routinely 0.90 or higher. A single stock, dragged around by company-specific news, has far more idiosyncratic wiggle, so its is much lower — often 0.3 to 0.5. Diversification literally raises by averaging away the idiosyncratic part.
Is the alpha real? A point estimate of per year is meaningless without a t-statistic — the alpha divided by its standard error. As a rough bar, you want before treating an alpha as distinguishable from luck. And the standard errors can’t be naive: monthly returns are heteroskedastic (volatility clusters) and autocorrelated (this month relates to last), which deflates ordinary standard errors and makes junk alphas look significant. Practitioners use Newey–West standard errors, which inflate the error bars to account for that structure, so the t-stat you trust is the honest, larger-error one.
Loadings and alpha, in one breath
A time-series regression of one asset’s excess return on the factors gives you, per asset: the loadings (slopes = how much of each factor it carries), the alpha (intercept = average return no factor explains), and R² (how much of its variance the factors account for). Loadings and alpha are return quantities; R² is a variance quantity. Keep that distinction — the next section is built on it.
Fill in the anatomy of a time-series factor regression.
Pick the right option for each blank, then check.
Regressing one asset's on the factor returns, the slope on each factor is its , the intercept is the model , and the fraction of the asset's variance the factors explain is the . Because returns cluster and autocorrelate, the honest standard errors are the ones.
What R² does and doesn’t tell you
Here is the single most expensive confusion in factor analysis, and it deserves its own section: R² measures variance explained, not average return earned. The two are orthogonal — almost completely unrelated. Knowing a fund’s tells you essentially nothing about whether it makes money beyond its factors.
The vivid case. Imagine a fund that quietly holds the exact same basket as the value factor. Its returns track that factor tick for tick, so its time-series is 0.99 — gorgeous fit. But because it is the factor, the regression’s intercept is : there’s no return left over once you account for the factor it’s secretly mimicking. That is a closet index fund — high R², zero alpha, charging active fees for a passive tilt. The high R² isn’t evidence of skill; it’s evidence the fund has no independent skill, just exposure.
The opposite case. Now imagine a genuinely skilled, eclectic strategy whose bets don’t line up neatly with any known factor. Its might be a modest 0.40 — the factors explain less than half its variance — yet its alpha is large and significant. Low R², real alpha. The alpha lives in the unexplained part, which is exactly the part R² is small because of.
So flip your intuition: high R² is the opposite of alpha, not a sign of it. A high R² says “this asset is well described by the factors,” which means “there’s little room left for skill.” Alpha is what survives in the residual; R² rising means the residual shrinking.
Two funds are each regressed on the same factor model. Fund A has R² = 0.97 and α = 0.0% (not significant). Fund B has R² = 0.45 and α = +3.5% per year (t = 2.6). Which statement is correct?
Cross-sectional regression: are loadings priced?
The time-series regression answered “what does this one asset carry, and is its alpha real?” It cannot answer a different, equally vital question: across the whole universe of assets, does loading more heavily on a factor actually earn you more return? A factor only deserves the name if its premium is positive — if the assets that load on it are paid for it. That’s a statement about the cross-section, so it needs a cross-sectional regression.
Analogy. Forget the single boat over a season. Line up every boat in the marina on one afternoon and plot, for each, its sail area against its average speed. If bigger sails systematically go faster, “sail area” is priced; the slope of that cloud tells you how many extra knots one extra unit of sail buys. That slope is a premium.
Definition. Using the loadings already estimated from the first-pass time-series regressions, you regress assets’ average excess returns on those loadings — across assets:
Now the unit of observation is an asset (or a test portfolio), not a date. The slopes estimate the factor risk premia — the extra average return earned per unit of loading on factor . The intercept is the pricing error: the average return common to all assets that isn’t explained by any loading (it should be near zero if the model prices the cross-section well).
This is a genuinely different regression from the time-series one, even though both involve “betas.” Time-series: one asset, many dates, asks for exposure and alpha. Cross-section: many assets, the loadings as the X variable, asks whether those loadings are rewarded.
Reading the picture. Each dot below is one test portfolio: its factor loading runs across, its average realised excess return runs up. The best-fit line’s slope is the estimated premium (how much average return one extra unit of loading earns) and its intercept is the pricing error. A priced factor tilts the line clearly upward — high-loading portfolios genuinely earn more.
- Estimated premium (slope)
- 4.91
- Pricing error (intercept)
- +0.50
Each dot is a portfolio: factor loading across, average excess return up. The upward slope is the estimated factor premium — higher loading is rewarded with higher average return. The intercept is the pricing error (return unexplained by loading). Two points sit off the line: that scatter is the regression's noise.
Match each regression ingredient to which of the two passes it belongs to and what it means.
Pick a term, then click its definition.
Fama–MacBeth in two passes
In 1973 Eugene Fama and James MacBeth turned the two regressions into a clean, two-pass recipe that’s still the workhorse for estimating factor premia and their significance. The trick solves a thorny statistical problem — assets’ returns are correlated with each other at any moment, which wrecks naive cross-sectional standard errors — and it does so almost elegantly.
Pass 1 — time series (estimate the loadings). For each asset, run the time-series regression from the first section to estimate its loadings . After this pass, every asset has a fixed set of factor exposures.
Pass 2 — cross section, one regression per period. Here’s the clever bit. For each month separately, run a cross-sectional regression of that month’s returns across assets on the loadings:
That gives you not one premium estimate but a whole time series of monthly premium estimates — one number per factor per month.
Combine. The estimated premium is simply the time-series average of those monthly slopes,
and — this is the elegant part — its t-statistic comes from the standard error of that time series of monthly estimates. By treating each month’s cross-sectional slope as one observation and averaging over months, cross-sectional correlation within a month is automatically absorbed: you never have to model it, because you only ever average across independent-ish months.
Worked example — testing a value (HML) premium. Suppose Pass 2 gives just four monthly HML slopes (a real study uses hundreds; four keeps the arithmetic visible):
| Month | Monthly HML slope | Deviation from mean | Squared deviation |
|---|---|---|---|
| 1 | +0.4% | +0.2% | 0.04 |
| 2 | −0.2% | −0.4% | 0.16 |
| 3 | +0.6% | +0.4% | 0.16 |
| 4 | 0.0% | −0.2% | 0.04 |
| Avg | +0.2% | — | sum = 0.40 |
Walk the arithmetic (working in units of percent):
- Mean premium: per month.
- Sample variance: divide the sum of squared deviations by : .
- Standard deviation: per month.
- Standard error of the mean: .
- t-statistic: .
A t-stat of about 1.1 is well below the rough bar of 2, so on this (deliberately tiny) sample the value premium is not statistically significant — the +0.2%/month average is swamped by month-to-month noise. The premium might be real, but four months can’t prove it. Run the same procedure over 600 months and the in the denominator shrinks the standard error dramatically, which is exactly why the canonical Fama–French studies use decades of data.
Why divide by √T
The standard error of an average is the data’s standard deviation divided by . That is why more months are the cheapest way to buy significance: a real premium with steady month-to-month noise will eventually clear the t = 2 bar simply because the denominator keeps shrinking. A premium that can’t clear the bar even with hundreds of months is genuinely indistinguishable from noise.
In the Fama–MacBeth procedure, where does the t-statistic for a factor premium come from?
Reading the t-stats honestly
The whole machine exists to separate signal from noise, and the t-statistic is the verdict. A factor premium isn’t “real” because its average is positive — it’s credible only when that average is large relative to its month-to-month wobble. A premium of +0.2%/month sounds like a clean win until you notice the months range from −0.2% to +0.6%; that spread is the noise the t-stat measures against.
Why short windows mislead. With a small , the in the standard error is small, so the error bars are wide and even a genuine premium can fail the t = 2 bar (as our four-month example did). The reverse trap is just as dangerous: data-mine enough candidate factors over a short window and some will clear t = 2 by pure luck. This is why the field now demands higher hurdles (some argue t > 3) for newly discovered factors — you’re implicitly testing hundreds of them, so the bar for “not luck” must rise.
The misconception to bury. Tying the whole lesson together: a high R² does not mean you found alpha or a good investment. R² says the factors explain the asset’s variance; it is silent on average return, and a perfect-fit closet index fund has R² near 1 and alpha of zero. Skill lives in a significant alpha (time series) or a significant, positive premium (cross section) — never in R². Measure the right thing, demand a real t-stat, and don’t let a pretty fit fool you.
Sort each statement: a sign of genuine, measurable edge — or a statistical mirage / misread?
Place each item in the right group.
- An R² of 0.98, taken as proof the fund has skill
- A factor that clears t = 2 once in a four-month window
- One of two hundred mined factors that happens to look significant
- A +0.2%/month average premium with a t-stat of 1.1
- A cross-sectional premium that stays positive and significant over 50 years
- A time-series alpha of +3% with a Newey–West t-stat of 2.8
If the time-series and cross-sectional regressions both use “betas,” why not just run one?
Because they answer different questions and use the betas in opposite roles. In the time-series pass, beta is an output: you regress one asset’s returns on the factor returns over time, and the slope you estimate is the loading. In the cross-sectional pass, those estimated loadings become the input — the X variable — and you regress assets’ average returns on their loadings, with the new slope being the factor’s premium. One asks “how exposed is this asset?”; the other asks “is that exposure rewarded?” Fama–MacBeth chains them precisely because you need the first pass’s loadings before the second pass can price them — and running the second pass month by month is what makes its standard errors trustworthy.
Putting it together
Estimating factor exposures is two regressions doing two jobs. The time-series regression () takes one asset over many dates and returns its loadings (slopes), its alpha (intercept — return no factor explains), and its (variance explained, not average return — diversified portfolios sit at 0.90+, single stocks far lower). A high is the opposite of alpha: a closet index fund fits perfectly and earns nothing extra. The cross-sectional regression () takes many assets at a moment, uses the loadings as inputs, and returns the premia (slopes) and the pricing error (intercept) — answering whether loading on a factor is actually rewarded. Fama–MacBeth chains them: estimate loadings (Pass 1), run a cross-sectional regression every month to get a time series of premium estimates (Pass 2), then take their average and judge it by the t-stat from that series’ standard error. Our four-month value example gave a +0.2%/month premium but only — not significant, because the in the standard error punishes short samples. Always demand an honest, Newey–West-corrected t-stat, never a pretty .
Big picture
Estimating factor exposures — the whole pipeline
- Estimating factor exposures
- Time-series regression
- One asset, many dates
- Excess return on factor returns
- Slopes = loadings (exposures)
- Intercept = alpha (unexplained return)
- Newey–West standard errors
- R² ≠ average return
- R² = variance explained
- Diversified portfolios 0.90+
- High R² is the opposite of alpha
- Closet index fund: R² ≈ 1, alpha = 0
- Cross-sectional regression
- Many assets, one moment
- Average return on loadings
- Slopes = factor risk premia (λ)
- Intercept = pricing error
- Fama–MacBeth two passes
- Pass 1: estimate loadings
- Pass 2: cross-section each month → λ̂ over time
- Premium = average of monthly λ̂
- t-stat from that series' SE
- Read t-stats honestly
- Need |t| ≈ 2 (higher for new factors)
- SE shrinks like 1 / √T
- Short windows mislead both ways
- High R² ≠ alpha ≠ good investment
- Time-series regression
Recap: estimating factor exposures
In a time-series factor regression of one asset, what do the slope and the intercept represent?
Check your answer to continue.
Next, we’ll put these estimates to work — turning measured loadings and a thin, hard-won alpha into a verdict on whether a strategy’s returns are skill or merely repackaged factor beta, and watching how published factor premia decay once the whole market piles into them.