Antonio has asked the following question
Dear Sir,
I was wondering how to run a Fama and MacBeth regression over 25 Portfolios. In accordance with your code, the first variable needs to be the dependent variable while the following variables are considered as independent variables. Basically, I would like to calculate the risk premium of a factor over the 25 value and size-sorted portfolios. Therefore in my case, I would have more dependent variables and just one dependent variable.
Thanks for your availability
Answer
To answer your question, I have preareed a dummy dataset, which you can download by typing the following in Stata command window.
use http://fintechprofessor.com/ff.dta, clear
So before running the Fama and MacBeth regressions, this is how the data needs to be structured.
The data is in a long format where the portfolios are tracked by a variable, called the panelvar. The portfolio returns are written in a separate variable, in our case, it is named as returns. The panelvar has values from 1, up to 25. The first 10 observations of the portfolios 1 and 2 look like:
. list in 1/10, noob +---------------------------------------------+ | mofd P returns size MTB | |---------------------------------------------| | 1993m6 1 .038 64.0125 5.224508 | | 1993m7 1 .0539 71.86839 4.505145 | | 1993m8 1 -.0639 27.82528 1.888283 | | 1993m9 1 -.0328 20.08383 7.730755 | | 1993m10 1 .0249 59.34985 8.961844 | |---------------------------------------------| | 1993m11 1 .0657 47.42625 3.766557 | | 1993m12 1 .0408 81.47429 5.148165 | | 1994m1 1 .0185 42.39914 5.375627 | | 1994m2 1 .0323 62.36839 4.882884 | | 1994m3 1 -.00598 64.79323 1.281697 | +---------------------------------------------+ . list in 101/110, noob +---------------------------------------------+ | mofd P returns size MTB | |---------------------------------------------| | 1993m6 2 .0114 41.16883 4.549813 | | 1993m7 2 -.0158 10.09915 2.136258 | | 1993m8 2 .00616 73.43023 2.924793 | | 1993m9 2 -.0141 58.28651 7.608449 | | 1993m10 2 .0129 63.4972 1.137969 | |---------------------------------------------| | 1993m11 2 -.0223 16.1786 1.368057 | | 1993m12 2 .0322 64.10929 6.226629 | | 1994m1 2 -.0144 54.48264 7.883276 | | 1994m2 2 .0388 74.99379 1.362888 | | 1994m3 2 .0345 68.66164 7.102628 | +---------------------------------------------+
How to run the Fama and MacBeth regression
My asreg command is available on SSC, to download it, type:
ssc install asreg, replace
asreg can estimate three types of regressions: (1) cross-sectional regressions (2) rolling window regressions and (3) Fama and MacBeth regressions. You can read more details here.
Since our main focus here is on the Fama and MacBeth procedure, the discussion this point onwards will use option fmb of the asreg program. The syntax is:
asreg depvar indepvars, fmb
The data must be first declared as panel data with the xtset command. In our dataset, we have P as the panel variable and mofd as the time variable, therefore, to declare the data as panel data, the xtset command would be:
xtset P mofd
In our dataset, we have the variable returns as the dependent variable and size and MTB as the two independent variables. The command for the Fama and MacBeth regression would be:
. asreg returns size MTB , fmb
Explanation
retunrs = The dependent variable
size and MTB = independent variables