I am trying to do Fama Macbeth regression on some tradable factors using 5-year rolling window updated monthly. However, I am a little bit confused when calculating the final R-squared of the model. I am thinking about two ways to deal with it:

For each rolling window, I have one R-squared. To calculate the final R-squared of the model, I just take the average of all R-squared in each rolling window (just like the way we do with lambda) >> I get pretty good R-squared (around 70%-80%)

After extracting the final lambda for each factor, I use R-squared formula to calculate the final R-squared >> I get very bad R-squared (negative). In this case, I use dependent variables are average return of each portfolio, independent variables are obviously the betas, corresponding with factors and portfolios.

So how usually the final R-squared is calculated ?


1 Answer 1


It really depends whether you are making time-series or cross-sectional tests. It seems that you are trying to do 2-step Fama-Macbeth regressions. So at this second stage rolling windows no longer matter (those are time-series regressions - the first stage). After you have the beta estimates from the first stage you run the second stage (details here).

For each time-period $t$ you will have a cross-sectional regression. You can average safely the $R^2$ of each regression to get an average $R^2$. This has been done in the literature, for example: Lewellen (2015).

Take a look at table 2 from that paper and the description of the table:

Table 2 reports average slopes, R2s, and sample sizes for 596 monthly cross --sectional regressions, 1964:05 to 2013:12.

enter image description here

An alternative way is to make a single cross-sectional regression on the second stage. This is the approach of Lettau and Ludvigson (2001). In this case you will have a single R2. Take a look at their table 1:

enter image description here

  • $\begingroup$ First, thank you for your prompt response. However, I think in the second stage, we still need the rolling window because for each rolling window we have a specific matrix of betas (for factors and portfolios) and they are different across rolling windows. And those betas are regressed as independent variables against a subsequent period. More precisely, for the first rolling window (t1 >> t60), I extract betas (time-series regression ) and I use excess return at t61 to regress against those betas (cross-sectional regression) to get lambda and Rsquared for the first rolling window. $\endgroup$
    – BlueFx
    Mar 23, 2018 at 16:31
  • $\begingroup$ Do you think whether it is reasonable to regress in the second stage like the way that I just described ? Thanks. $\endgroup$
    – BlueFx
    Mar 23, 2018 at 16:45
  • $\begingroup$ You have a vector and not a matrix of betas. Then the second window should be t2 >> t61 and the third t3 >> t62 and so on and so forth. $\endgroup$
    – phdstudent
    Mar 23, 2018 at 16:50
  • $\begingroup$ In the case of Lettau and Ludvigson (2001), I don't think I can replicate their way because they have constant betas for all period. Not like in the rolling-window case, when we have different betas for different rolling windows ? $\endgroup$
    – BlueFx
    Mar 23, 2018 at 17:15
  • $\begingroup$ Correct. But you can also run a single time-series regression instead of rolling windows. $\endgroup$
    – phdstudent
    Mar 23, 2018 at 17:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.