Fama–MacBeth Regression: Estimating and Testing Prices of Risk
Summary
The document outlines the two stages of Fama–MacBeth regression for testing whether factor exposures explain stock returns. First, time-series regressions estimate each security’s factor loadings. Then monthly cross-sectional regressions use those estimated exposures to obtain a series of factor risk-price estimates. Averaging the monthly estimates gives the estimated prices of risk, whose statistical significance can be evaluated using their time-series variation.
The response also flags an important assumption in the question’s proposed split-sample procedure: loadings estimated in one period are treated as stable when applied later, although exposures can change over time. It notes that the original method can use portfolios and that the question’s concern about portfolio membership is not resolved in the supplied answers. A separate practitioner approach is mentioned: use earlier-period loadings to predict later returns and assess prediction error. The material is a concise outline, not a complete guide to portfolio formation, inference adjustments, or implementation choices.
Key ideas
- The first Fama–MacBeth stage estimates each security’s factor loadings from time-series data.
- The second stage runs a cross-sectional regression each period to estimate factor prices of risk.
- Average the period-specific price estimates and assess significance using their time-series variability.
- Applying earlier loadings to a later period assumes that exposures remain sufficiently stable.
- Out-of-sample prediction error is an alternative way to assess how well a factor model explains future returns.
Tags
Full text
# Fama-Macbeth practitioner's step by step guide?
# Fama-Macbeth practitioner's step by step guide?
I've been reading the original Fama-Macbeth (1973) paper as well as questions here and elsewhere. I feel like I'm beginning to run in circles and would like to clarify/confirm how FM regression is done, step by step. My interest is purely that of a practitioner's: I would like to run Fama-Macbeth regressions on a specific country's stock market to test difference risk factors' relevance in explaining returns.
Assume you are running FM for N securities over 1990 - 2010 period.
1) Step 1: For 1990-2000, run time-series regressions for each security i where R(i) = B(i)*RiskFactor + e(i). Store B(i)'s for each security. You will run N regressions here.
2) Step 2: Go to 2000-2010 period, run cross-section regressions for each month where R(i) = Lambda(i) * B(i) + e(i). Bi's are already calculated in step 1. You get Lambda(i)'s and e(i)'s in this step. You will run T regressions here.
3) Step 3: Calculate Lambda(i) average and e(i) average (simple average of each month's). Do tests of significance on them. If your factor has explanatory power over returns, then Lambda(i) should be statistically significant whereas e(i) should not be statistically significant.
Would highly appreciate if you could point to any errors in the above summary
*Also, I am confused about the use of portfolios. In their original paper Fama-Macbeth create 20 portfolios by Beta sort. From what I understand, they use these portfolios in step 2 above (cross-section regressions). They also state that they allow securities to go in and out of portfolios, however, I do not understand how this is possible given they are doing cross sectional regressions and allowing for portfolio changes would cause a lot of problems.
If there are any practical step by step guides I would highly appreciate it too.
Thank you
## Answer by phdstudent (score 4)
https://quant.stackexchange.com/a/68376
For each stock run a time series regression:
$r_{i,t} = \alpha + \beta F_t + \epsilon_t$
Then for each month $t$, you run a cross-section regression:
$r_{i,t} = \lambda_0 + \hat{\beta}_i {\lambda}_t + \alpha_{i,t}$
Where: $\hat{\beta}_i \equiv [\beta_{i, MktRf}, \beta_{i, SMB}, \beta_{i, HML}]'$, is a vector of the coefficients estimated on the first step.
What you are looking for is to estimate the vector of $\hat{\lambda}_t \equiv [\lambda_{t, MktRf}, \lambda_{y, SMB}, \lambda_{t, HML}]$.
So after the second step you will have $T$ estimates for each $\lambda$ (price of risk).
Then you just need to average those $\lambda$'s:
$\hat{\lambda} = \frac{1}{T} \sum^{T}_{t=1} \hat{\lambda}_t$
And you can test their statistical significance using as a variance estimate the following:
$Est.Asy.Var(\hat{\lambda}) = \frac{1}{T^2} \sum^{T}_{t=1} (\hat{\lambda}_t - \hat{\lambda} )(\hat{\lambda}_t - \hat{\lambda} )'$
## Answer by Si Chen (score 1)
https://quant.stackexchange.com/a/68372
This assumes that the factor loadings, B(i), would have to be stable across those time periods. A lot of the research acknowledges that factor loadings do change over time.
A better approach might be to follow the example from Grinold, Richard and Ronald N. Kahn, “Multiple-Factor Models for Portfolio Risk”, Financial Analysts Journal, Vol. 46, No. 2 (Mar. - Apr., 1990), pp. 59 - 80. Available at https://www.cfainstitute.org/en/research/foundation/1994/a-practitioners-guide-to-factor-models. They generated the Risk factors for the subsequent period (2000-2010) in your case, and then used the B(i) from the earlier period (1990 - 2000), to test the error terms e(i). They tested the mean squared error of the prediction versus actual to see how well the model explained future returns.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.