Quant Sandbox
DerivativesPortfolio & RiskFixed IncomeCorporate FinanceProbability & MeasureStochastic ModelsMarket MicrostructureGuide
Guide
Derivatives pricing0 / 17
01Forwards, calls and puts02Combining positions03Arbitrage and the forward price04Put–call parity05The one-step binomial model06Risk-neutral probabilities07Multi-step trees and backward induction08American options and early exercise09Delta and hedging10Geometric Brownian motion11The Black–Scholes formula12The Greeks: gamma, vega, theta and rho13Options on dividend-paying stocks, indices, currencies and futures14Implied volatility and the volatility smile15Stochastic volatility and the Heston model16Static replication: Breeden–Litzenberger and Carr–Madan17Exotic options: barriers, Asians and digitals
Portfolio & risk0 / 12
01Returns and volatility02Diversification and correlation03The efficient frontier and the capital market line04Risk aversion and the optimal complete portfolio05CAPM, beta and the security market line06Performance measures: Sharpe, Treynor, Jensen and information ratio07Factor models and systematic risk08The Fama–French factor models09Value at Risk and expected shortfall10Systemic risk and contagion11Portfolio constraints and the no-short-sales frontier12Estimating expected returns and covariances
Fixed income0 / 10
01Bond prices and yields02Duration and convexity03Immunization and duration matching04Spot rates, forward rates and the yield curve05Non-parallel curve moves and key-rate durations06Bond futures and the cheapest-to-deliver07Interest rate swaps08Callable bonds and negative convexity09Credit risk: default probabilities and credit spreads10Real rates, inflation and inflation-linked bonds
Corporate finance0 / 10
01Interest, compounding and discounting02Annuities, perpetuities and loan amortization03Net present value and internal rate of return04Project risk: sensitivity, scenarios and Monte Carlo NPV05The weighted average cost of capital06Capital structure and the Modigliani–Miller theorems07Dividends, payout policy and the dividend discount model08Discounted cash flow valuation09Relative valuation with multiples10Real options: the value of flexibility
Probability and measure0 / 13
01Measuring the size of sets02σ-algebras and Borel sets03Lebesgue measure and null sets04Measurable functions05The Lebesgue integral06Convergence theorems07Probability spaces and Kolmogorov's axioms08Random variables and their distributions09Expectation, variance and inequalities10Independence and product measures11Modes of convergence and the law of large numbers12Conditional probability and conditional expectation13Measure theory in option pricing
Stochastic models0 / 17
01Random walks and Brownian motion02The law of large numbers and the central limit theorem03Probability spaces, σ-algebras and random variables04Filtrations, adapted processes and stopping times05Conditional expectation and martingales06Properties of Brownian motion07The reflection principle and first passage times08The Brownian bridge09The Itô integral10Itô's lemma11Kolmogorov equations and the Feynman–Kac formula12Change of measure and Girsanov's theorem13Monte Carlo option pricing14Simulating SDEs: the Euler–Maruyama scheme15Correlated Brownian motions and multi-asset models16Mean reversion: Ornstein–Uhlenbeck and Vasicek17Jumps and the Merton jump-diffusion model
Market microstructure0 / 11
01Market makers and liquidity02The limit order book03Queue position and fill probability04Adverse selection and informed trading05The Glosten–Milgrom model06Measuring and decomposing the bid–ask spread07Informed trading and Kyle's lambda08Price impact and optimal execution09Inventory risk and quote skewing10Optimal quoting: the Avellaneda–Stoikov model11Market making profit and loss attribution
Knowledge graph

© 2026 Quant Sandbox · A study aid for quantitative finance

Privacy & dataNo cookies

This site does not use cookies and asks for no personal data. It keeps a few small settings in your browser's local storage — your chosen theme and language, the sidebar layout, and your progress and answers in the Guides — so it remembers them on your next visit. This data never leaves your device; clearing your browser storage removes it. Inputs you change can also be captured in the page URL, so you can share or bookmark a specific setup. The site uses Vercel Web Analytics, a privacy-friendly, cookieless service that records only anonymous, aggregated usage (such as page views) without identifying you or tracking you across other sites.

Guides/Portfolio & risk/08

The Fama–French factor models

Lesson 8 of 12 · 1 min read

The lesson "CAPM, beta and the security market line" said that a single number, the market beta, should explain every asset's expected return, and "Factor models and systematic risk" showed how one common factor splits risk into a systematic and an idiosyncratic part. This lesson asks what happens when the market alone is not enough. It builds the Fama–French factors from sorted portfolios, runs the regressions that use them, and shows how to read the loadings, the alpha and the R² that come out.

Size and value anomalies under CAPM

Test CAPM on a stock or a portfolio by regressing its monthly excess return Ri−RfR_i - R_fRi​−Rf​ on the market's excess return RM−RfR_M - R_fRM​−Rf​:

Ri,t−Rf,t=αi+βi (RM,t−Rf,t)+εi,t.R_{i,t} - R_{f,t} = \alpha_i + \beta_i\,(R_{M,t} - R_{f,t}) + \varepsilon_{i,t}.Ri,t​−Rf,t​=αi​+βi​(RM,t​−Rf,t​)+εi,t​.

If CAPM holds, the intercept αi\alpha_iαi​ is zero: the market beta accounts for the whole average return. In US data from the 1960s onwards two groups of portfolios break this. Portfolios of small companies earned more than their betas justify, and so did portfolios of value stocks, firms with a high ratio of book equity to market value. Growth stocks, with a low ratio, earned less. These positive and negative alphas are called the size and value anomalies. Fama and French (1993) responded by adding the returns that size and value themselves earn as extra factors.

Building factors from sorted portfolios

A factor here is the return of a long–short portfolio. Each June, sort all stocks by market capitalisation into small and big, and separately by book-to-market into growth (bottom 30%), neutral and value (top 30%). The intersections give six value-weighted portfolios. Two factors come out of them:

SMB=13(SV+SN+SG)−13(BV+BN+BG),\text{SMB} = \tfrac{1}{3}(\text{SV} + \text{SN} + \text{SG}) - \tfrac{1}{3}(\text{BV} + \text{BN} + \text{BG}),SMB=31​(SV+SN+SG)−31​(BV+BN+BG),
HML=12(SV+BV)−12(SG+BG).\text{HML} = \tfrac{1}{2}(\text{SV} + \text{BV}) - \tfrac{1}{2}(\text{SG} + \text{BG}).HML=21​(SV+BV)−21​(SG+BG).

SMB (small minus big) buys small firms and sells big ones while holding the value mix fixed; HML (high minus low) buys value and sells growth while holding the size mix fixed. Because each is a difference of two portfolios, it costs nothing to hold in theory, and its average return is a premium per unit of exposure. The market factor MKT is RM−RfR_M - R_fRM​−Rf​.

The five-factor model of 2015 adds two more built the same way. RMW (robust minus weak) is long firms with high operating profitability and short those with low profitability. CMA (conservative minus aggressive) is long firms that grow their assets slowly and short those that invest heavily. Carhart (1997) added momentum, UMD (up minus down), long last year's winners and short its losers; it is often appended to either model.

The three-factor and five-factor regressions

The Fama–French regressions are time-series regressions, one per fund or portfolio, with the factor returns as regressors. The three-factor model (FF3) is

Ri,t−Rf,t=αi+bi MKTt+si SMBt+hi HMLt+εi,t,R_{i,t} - R_{f,t} = \alpha_i + b_i\,\text{MKT}_t + s_i\,\text{SMB}_t + h_i\,\text{HML}_t + \varepsilon_{i,t},Ri,t​−Rf,t​=αi​+bi​MKTt​+si​SMBt​+hi​HMLt​+εi,t​,

and the five-factor model (FF5) adds ri RMWt+ci CMAtr_i\,\text{RMW}_t + c_i\,\text{CMA}_tri​RMWt​+ci​CMAt​. Taking expectations and using E[ε]=0E[\varepsilon] = 0E[ε]=0 gives the model's prediction for the average excess return:

E[Ri−Rf]=αi+bi E[MKT]+si E[SMB]+hi E[HML].E[R_i - R_f] = \alpha_i + b_i\,E[\text{MKT}] + s_i\,E[\text{SMB}] + h_i\,E[\text{HML}].E[Ri​−Rf​]=αi​+bi​E[MKT]+si​E[SMB]+hi​E[HML].

The model holds when αi=0\alpha_i = 0αi​=0: then the average return is just the sum of each loading times its factor premium, exactly as CAPM's line had one beta times one premium.

Reading the loadings

Each loading is a sensitivity holding the other factors fixed. bib_ibi​ is close to the CAPM beta but usually not equal to it, because SMB and HML now absorb part of the co-movement. A positive sis_isi​ means the fund behaves like small stocks, a negative one like large stocks; a positive hih_ihi​ means a value tilt and a negative one a growth tilt. A loading of 0.5 on SMB says that when small firms beat big ones by 1% in a month, the fund tends to gain 0.5% more than its market exposure alone would give. In the five-factor model, a positive rir_iri​ points to profitable firms and a positive cic_ici​ to firms that invest conservatively.

Alpha and its t-statistic

Alpha is the average return the factors do not explain. It is estimated from a finite sample, so it comes with a standard error, and the question is whether it differs from zero by more than noise. The usual test is the t-statistic

tα=α^SE(α^),t_\alpha = \frac{\hat\alpha}{\text{SE}(\hat\alpha)},tα​=SE(α^)α^​,

and ∣tα∣>2|t_\alpha| > 2∣tα​∣>2 is the rough threshold for a significant alpha at the 5% level. The standard error shrinks like 1/T1/\sqrt{T}1/T​ in the number of months TTT, so a given alpha becomes easier to detect in a longer sample.

Why does adding factors shrink alpha? Suppose the true model is FF3, but you fit CAPM. The omitted terms si SMB+hi HMLs_i\,\text{SMB} + h_i\,\text{HML}si​SMB+hi​HML then sit in the residual, and their mean ends up in the intercept:

αiCAPM≈αi+si E[SMB]+hi E[HML].\alpha_i^{\text{CAPM}} \approx \alpha_i + s_i\,E[\text{SMB}] + h_i\,E[\text{HML}].αiCAPM​≈αi​+si​E[SMB]+hi​E[HML].

A small-value fund therefore shows a positive CAPM alpha even if its manager has no skill: it is collecting the size and value premia. Once those factors enter the regression, that part of the alpha moves into the loadings. (The approximation ignores the correlation between the market and the omitted factors, which shifts the beta a little too.)

Worked example

Expected return and alpha from an FF3 fit

  1. A fund's FF3 loadings are b = 1.1, s = 0.4 and h = −0.3, a growth tilt. Premia are 6% on MKT, 2% on SMB and 3.5% on HML a year. The market contributes, in %:

    1.1⋅6\displaystyle 1.1 \cdot 61.1⋅6=6.6
  2. Size and value together contribute (the growth tilt costs return):

    0.4⋅2−0.3⋅3.5\displaystyle 0.4 \cdot 2 - 0.3 \cdot 3.50.4⋅2−0.3⋅3.5=-0.25
  3. So the model predicts this annual excess return, in %:

    6.6−0.25\displaystyle 6.6 - 0.256.6−0.25=6.35
  4. The fund actually earned 8% a year over the risk-free rate. Its FF3 alpha is the gap:

    8−6.35\displaystyle 8 - 6.358−6.35=1.65
  5. With a standard error of 1.1% a year on alpha, the t-statistic is below 2, so the alpha is not significant:

    1.65/1.1\displaystyle 1.65 / 1.11.65/1.1=1.5

The figure simulates 240 months of factor returns and a fund whose true alpha is zero, with market loading 1, RMW loading 0.3, CMA loading 0, and size and value loadings set by the sliders. Start at the defaults, s=0.5s = 0.5s=0.5 and h=0.4h = 0.4h=0.4, with CAPM: the fitted alpha is 4.00% a year with a t-statistic of 2.08, apparently significant skill, and R² is 0.746. Switch to FF3: alpha falls to 1.28% (t = 1.04) and R² rises to 0.899, while the size and value bars land near their true marks. Switch to FF5: the remaining alpha, which was the profitability premium, drops to 0.29% (t = 0.26), R² reaches 0.919, and the RMW bar finds its loading of 0.3. Then set both tilts to zero and see the CAPM alpha shrink, or lengthen the sample and watch the bars settle.

Factor loadings and alpha from a fund's returnsOpen in Fama–French
0.50
-0.51
0.40
-0.51
240 months
60600
0.00.51.0MKT0.94True loading: 1.00SMBnot in the modelTrue loading: 0.50HMLnot in the modelTrue loading: 0.40RMWnot in the modelTrue loading: 0.30CMAnot in the modelTrue loading: 0.00
Alpha (annualised)
4.00%
t-statistic of alpha
2.08
R²
0.746

Bars are the estimated loadings, vertical marks the simulated fund's true ones (market 1, RMW 0.3, CMA 0, true alpha 0). Whatever the model leaves out ends up in alpha.

Explained variance

The R² of the regression is the share of the fund's return variance the factors explain. With uncorrelated residuals, the variance splits as

Var(Ri)=bi⊤ Σf bi+σε,i2,\text{Var}(R_i) = \mathbf{b}_i^{\top}\,\Sigma_f\,\mathbf{b}_i + \sigma_{\varepsilon,i}^2,Var(Ri​)=bi⊤​Σf​bi​+σε,i2​,

where bi\mathbf{b}_ibi​ collects the loadings and Σf\Sigma_fΣf​ is the covariance matrix of the factors. With the market as the only factor this is the single-index split from the factor-models lesson, βi2σM2+σε2\beta_i^2\sigma_M^2 + \sigma_\varepsilon^2βi2​σM2​+σε2​. Adding factors moves variance from the residual into the systematic part, so R² can only rise. A high R² says the fund is close to a mix of factor portfolios; it says nothing about whether the alpha is zero.

Testing many portfolios at once

A model is judged on many test portfolios together, for example 25 portfolios sorted by size and book-to-market. Run the time-series regression for each and look at all intercepts: a good model leaves them small and jointly insignificant. The Gibbons–Ross–Shanken (GRS) test turns the vector of alphas into one F-statistic, and the average absolute alpha gives an easy-to-read summary. FF3 cuts the mean absolute alpha of size–value portfolios far below CAPM's; FF5 does better still on portfolios sorted by profitability and investment, and makes HML nearly redundant, because value firms tend to be profitable and to invest conservatively.

Limits of factor models

Factors found by sorting historical data are at risk of data mining: test enough characteristics and some will show a premium by chance. Hundreds of candidate factors have been published, the so-called factor zoo, and many shrink or vanish out of sample or after costs. Whether a premium is a reward for risk or a mispricing is not settled by the regression either. In practice the models are most useful as a benchmark: they tell you which part of a fund's return could have been bought with cheap factor portfolios.

Alpha is always relative to a model. A CAPM alpha, an FF3 alpha and an FF5 alpha are different numbers for the same fund, and a manager's skill should be measured against the factors an investor could have held instead.

Summary

  • SMB, HML, RMW, CMA and UMD are long–short portfolios built from sorts on size, book-to-market, profitability, investment and past returns.
  • The time-series regression Ri−Rf=α+b MKT+s SMB+h HML(+r RMW+c CMA)+εR_i - R_f = \alpha + b\,\text{MKT} + s\,\text{SMB} + h\,\text{HML} (+ r\,\text{RMW} + c\,\text{CMA}) + \varepsilonRi​−Rf​=α+bMKT+sSMB+hHML(+rRMW+cCMA)+ε gives loadings that say which styles a fund resembles.
  • With zero alpha the expected excess return is the sum of loadings times factor premia; the CAPM alpha of a tilted fund is roughly its tilts times the omitted premia.
  • Alpha is significant when ∣tα∣>2|t_\alpha| > 2∣tα​∣>2; R² measures how much of the variance is systematic, and rises as factors are added.
  • Models are tested on many portfolios jointly (GRS, mean |α|), and the long list of published factors calls for caution about data mining.
Try itOpen the Fama–French lab
2 questions on this lesson at the end of the series
Previous · 07Factor models and systematic riskNext · 09Value at Risk and expected shortfall
Connections

The Fama–French factor models

Open the full graph
Builds on
02.07Factor models and systematic risk02.05CAPM, beta and the security market line
Leads to
02.09Value at Risk and expected shortfall
See it in the knowledge graph
Labs for this lesson
Fama–French