Fama–MacBeth Second-Step Cross-Sectional Regressions
Summary
The second step of the Fama–MacBeth procedure runs a separate cross-sectional regression for each time period. For each month, stock returns are the dependent variable and the factor beta estimates from the first-stage time-series regressions are the explanatory variables. The monthly coefficient estimates represent period-specific prices of risk; averaging them over time gives the estimated average risk premia.
The responses describe estimating uncertainty from the time-series variation in those monthly prices of risk, which supports significance tests. They note that the procedure addresses cross-sectional correlation, while autocorrelation may require additional methods such as Newey–West standard errors or GMM. The example uses an unbalanced stock panel, but does not fully discuss missing-data handling or variations such as including an intercept in each cross-sectional regression.
Key ideas
- Run a cross-sectional regression of stock returns on estimated factor betas for each period.
- The monthly regression coefficients are period-specific estimates of factor risk premia.
- Average the monthly coefficient estimates across time to obtain mean risk premia.
- Use the variation across monthly estimates to estimate uncertainty and test significance.
- Additional methods may be needed to address autocorrelation in the monthly estimates.
Tags
Full text
# Fama-Macbeth second step confusion
# Fama-Macbeth second step confusion
I am confused on how to run the second step of the Fama Macbeth (1973) two step procedure.
I have monthly stock returns and monthly Fama-French factors, for around 10,000 stocks. This creates an unbalanced panel, mainly because stocks start and stop trading within the period I examine (1991-2015, 25 years, 300 months).
In the first step I regress each stock's excess return on the Fama-French factors: $$ R_{i,t} = \alpha_i + \beta_{i, MktRf} MktRf_t + \beta_{i, SMB} SMB_t + \beta_{i, HML} HML_t + \epsilon_{i, t} $$
So, I get 10,000 "quadruplets" $\alpha_i, \text{ } \beta_{i, MktRf}, \text{ } \beta_{i, SMB}, \text{ } \beta_{i, HML}$ for each stock.
But how exactly do I proceed for the second step, which requires me to run 300 (number of months in sample) regressions??
What exactly are the dependent and the independent variables for each time period (month)?
## Answer by phdstudent (score 22, accepted)
https://quant.stackexchange.com/a/24415
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 Freddorick (score 12)
https://quant.stackexchange.com/a/24416
The two step Fama-Macbeth regression works as follows:
First, run a cross sectional regression in each period. I believe that you want to estimate risk premia for each of the Fama and French factors. Therefore you run:
$$r_{i,t} = \lambda_{t,MKT} \hat{\beta}_{i,MKT}+\lambda_{t,HML} \hat{\beta}_{i,HML}+\lambda_{t,SMB} \hat{\beta}_{i,SMB}+ \alpha_{i,t} \quad \forall t \in [t_0,t_T] $$
The independent variables are the estimates from your times series regressions. They are the same for each cross-sectional regression. You run thus cross-sectional regression for each of your 300 months in the sample. This gives you 300 estimates for each risk premium, one for each period. Note that some people prefer to run the cross-sectional regressions also with intercept.
Second, to find the risk premium for each risk factor you average each premium over time.
$$\hat{\lambda_{RP}} =\frac{1}{T} \sum_{t = 0}^T \lambda_{t,RP} $$
To obtain standard errors:
$$\hat{\sigma}^2(\hat{\lambda}_{RP}) =\frac{1}{T^2} \sum_{t = 0}^T (\lambda_{t,RP}-\hat{\lambda}_{RP})^2 $$
where RP is either MKT, HML or SMB. With the standard error and the estimate you can perform a t-test.
A few comments on the procedure:
1) Please note that the Fama-Machbeth regression only corrects for cross sectional correlation. Petersen (2009) recommends to estimate standard errors with the Newey-West procedure to correct for autocorrelation. John Cochrane recommends to use GMM in his book Asset Pricing.
2) The time series regressions you mention in your post as a first step are actually not part of the Fama-Macbeth regression and the only purpose of those regressions is to find the betas. However, they are often called first step in many academic papers.
3) There is an excellent summary by Jason Hsu.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.