Fama and MacBeth (1973) Two-Pass Regressions
Re: Fama and MacBeth (1973) Two-Pass Regressions
Aren't you confusing Fama-French with Fama-MacBeth? Fama-French does a time series regression for each i, then a cross section regression on the estimates (which sounds like what you're trying to do). Fama-MacBeth does a cross section regression at each t, then a time series regression on the estimates.
Re: Fama and MacBeth (1973) Two-Pass Regressions
Dear Tom, Thank you for the reply. The information I found about the Fama-MacBeth two pass regressions is such:TomDoan wrote:Aren't you confusing Fama-French with Fama-MacBeth? Fama-French does a time series regression for each i, then a cross section regression on the estimates (which sounds like what you're trying to do). Fama-MacBeth does a cross section regression at each t, then a time series regression on the estimates.
The Fama-Macbeth regression works with multiple assets across time (panel data). The parameters are estimated in two steps:
1) First regress each asset against the proposed risk factors to determine that asset's beta for that risk factor.
2) Then regress all asset returns for a fixed time period against the estimated betas to determine the risk premium for each factor.
My understanding is that that the first step is the time-series regressions to generate the betas and then do the cross-section regressions in the second step by using the estimated betas as explanatory variables. Would you please kindly let me know if my understanding is incorrect? Thank you
Re: Fama and MacBeth (1973) Two-Pass Regressions
The information that I have on Fama and MacBeth comes from reading....Fama and MacBeth. They do an elaborate calculation that generates time-varying betas for each portfolio. That generates a data set similar to the one that I posted in the example above which can be analyzed by cross section regressions for each time period followed by time series "regressions" (on a constant) for each component. You do not have such a data set and you aren't generating one with what you're doing. That's why what you're trying makes no real sense, since you're taking a fixed set of betas and replicating it across time. Since the beta's are the same at each time period, the first step in "Fama-MacBeth" is vacuous, since each regression will be identical. Instead, you should be doing Fama-French, which is as I described it.
Re: Fama and MacBeth (1973) Two-Pass Regressions
hi Tom, Thanks for the reply. I totally agree with what you mentioned above. The reason why I am doing what I am doing is that Petkova(2006) and He,Huh,and Lee(2010) did Fama-Macbeth regressions in the same way as I am doing in their papers. One of my purposes is to replicate the study of He (2010) along with my own research. Could you please kindly let me know whether my code are right for the tests I would like to do, treating the betas as time invariant explanatory variables in the cross-section regressions?TomDoan wrote:The information that I have on Fama and MacBeth comes from reading....Fama and MacBeth. They do an elaborate calculation that generates time-varying betas for each portfolio. That generates a data set similar to the one that I posted in the example above which can be analyzed by cross section regressions for each time period followed by time series "regressions" (on a constant) for each component. You do not have such a data set and you aren't generating one with what you're doing. That's why what you're trying makes no real sense, since you're taking a fixed set of betas and replicating it across time. Since the beta's are the same at each time period, the first step in "Fama-MacBeth" is vacuous, since each regression will be identical. Instead, you should be doing Fama-French, which is as I described it.
Re: Fama and MacBeth (1973) Two-Pass Regressions
I hate to keep harping on this, but He, Ho and Lee never reference Fama and MacBeth. They reference four Fama-French papers. Petkova has Fama-French in the title. They are not doing Fama-MacBeth. They are doing Fama-French. Both involve two passes, but they are a different pair of passes. (Fama-MacBeth really is three passes, since one is used to generate the time-varying betas). Is what you are trying to do Fama-French?
Re: Fama and MacBeth (1973) Two-Pass Regressions
Hi Tom. Thank you so much for point out my mistake and help me understand better about the fama-french and fama-macbeth regressions. Yes, I am trying to do Fama-French regressions here.TomDoan wrote:I hate to keep harping on this, but He, Ho and Lee never reference Fama and MacBeth. They reference four Fama-French papers. Petkova has Fama-French in the title. They are not doing Fama-MacBeth. They are doing Fama-French. Both involve two passes, but they are a different pair of passes. (Fama-MacBeth really is three passes, since one is used to generate the time-varying betas). Is what you are trying to do Fama-French?
Re: Fama and MacBeth (1973) Two-Pass Regressions
Hi Tom, could you please kindly let me know how I can save coefficients into series ? Thank you.
Code: Select all
dec vect[series] b(4)
clear(zeros) b
linreg r1
# constant mktrf smb hml
compute %pt(b, [u]X[/u], %beta)
* I am not sure what I should put to replace X.
Re: Fama and MacBeth (1973) Two-Pass Regressions
You don't have to create a panel data set since that was all part of generating a Fama-MacBeth style data set which you don't need. This does the time series regressions and saves the coefficients, then does the cross section regression of the mean returns on the beta's.
Code: Select all
dec vect[series] betas(3)
dec series avgret
clear(zeros) betas avgret
*
* Do time series regressions for each portfolio, saving the mean return (into
* avgret) and the coefficients on the factors (into BETAS).
*
compute port=0
dofor s = sl to bh
linreg s
# constant mktrf smb hml
compute port=port+1
compute %pt(betas,port,%xsubvec(%beta,2,4))
compute avgret(port)=%mean
end dofor s
*
* Run the cross section regression across portfolios
*
linreg avgret 1 port
# betas
Re: Fama and MacBeth (1973) Two-Pass Regressions
Thank you so much for the reply.TomDoan wrote:You don't have to create a panel data set since that was all part of generating a Fama-MacBeth style data set which you don't need. This does the time series regressions and saves the coefficients, then does the cross section regression of the mean returns on the beta's.
Code: Select all
dec vect[series] betas(3) dec series avgret clear(zeros) betas avgret * * Do time series regressions for each portfolio, saving the mean return (into * avgret) and the coefficients on the factors (into BETAS). * compute port=0 dofor s = sl to bh linreg s # constant mktrf smb hml compute port=port+1 compute %pt(betas,port,%xsubvec(%beta,2,4)) compute avgret(port)=%mean end dofor s * * Run the cross section regression across portfolios * linreg avgret 1 port # betas
Re: Fama and MacBeth (1973) Two-Pass Regressions
Dear Tom, Could you please kindly show me how I can implement shanken's (1992) correction to fix the errors-in-variables problem in the cross section regression ? Many ThanksTomDoan wrote:You don't have to create a panel data set since that was all part of generating a Fama-MacBeth style data set which you don't need. This does the time series regressions and saves the coefficients, then does the cross section regression of the mean returns on the beta's.
Code: Select all
dec vect[series] betas(3) dec series avgret clear(zeros) betas avgret * * Do time series regressions for each portfolio, saving the mean return (into * avgret) and the coefficients on the factors (into BETAS). * compute port=0 dofor s = sl to bh linreg s # constant mktrf smb hml compute port=port+1 compute %pt(betas,port,%xsubvec(%beta,2,4)) compute avgret(port)=%mean end dofor s * * Run the cross section regression across portfolios * linreg avgret 1 port # betas
Re: Fama and MacBeth (1973) Two-Pass Regressions
My understanding is that the Shanken (1992) "On the estimation of beta pricing models", Review of Financial Studies 5, 1-34 correction amounts to multiplying the estimated variance of the OLS intercept (the variance of the alpha in the asset pricing model) by an adjustment factor of 1+(E(Rmkt)/Var(Rmkt))^2 where E(Rmkt) and var(Rmkt) are the mean and variance of the the excess returns on the market portfolio. You can compute the specific adjustment factor from your data directly by computing the mean of the excess returns on the market and its variance (so the adjustment factor depends on your specific sample period). While the prior adjustment factor is small for monthly data, it is important when using annual data.
Re: Fama and MacBeth (1973) Two-Pass Regressions
Hi Tom, If I would like to address the errors-in-variables problem in the cross section regression by using GLS estimation method, how I can do it? How can I find the adjustment factor matrix? Thank you in advance for your helpfan wrote:Thank you so much for the reply.TomDoan wrote:You don't have to create a panel data set since that was all part of generating a Fama-MacBeth style data set which you don't need. This does the time series regressions and saves the coefficients, then does the cross section regression of the mean returns on the beta's.
Code: Select all
dec vect[series] betas(3) dec series avgret clear(zeros) betas avgret * * Do time series regressions for each portfolio, saving the mean return (into * avgret) and the coefficients on the factors (into BETAS). * compute port=0 dofor s = sl to bh linreg s # constant mktrf smb hml compute port=port+1 compute %pt(betas,port,%xsubvec(%beta,2,4)) compute avgret(port)=%mean end dofor s * * Run the cross section regression across portfolios * linreg avgret 1 port # betas
Re: Fama and MacBeth (1973) Two-Pass Regressions
IRJ wrote:My understanding is that the Shanken (1992) "On the estimation of beta pricing models", Review of Financial Studies 5, 1-34 correction amounts to multiplying the estimated variance of the OLS intercept (the variance of the alpha in the asset pricing model) by an adjustment factor of 1+(E(Rmkt)/Var(Rmkt))^2 where E(Rmkt) and var(Rmkt) are the mean and variance of the excess returns on the market portfolio. You can compute the specific adjustment factor from your data directly by computing the mean of the excess returns on the market and its variance (so the adjustment factor depends on your specific sample period). While the prior adjustment factor is small for monthly data, it is important when using annual data.
hi IRJ, thank you for the reply. I am still not clear how to generate the Shanken corrected standard error for alphas on mktreturn, smb, and hml in the pricing test. Could you please kindly share your knowledge with me? Thanks