I have an unbalanced panel of monthly bond returns and would like to regress them on several possible return-drivers. There is cross-sectional correlation in the residuals. In this case, Peterson shows that there are two ways to estimate the model (Peterson (2009): Estimating Standard Errors in Finance Panel Data Sets: Comparing Approaches):
- Fama MacBeth (by using the pmg() function in R): In the first step, pmg() runs cross sectional regressions for every single month. In the second step the average over the estimates is taken. The standard deviations of the cross-sectional regression estimates are used to generate the sampling Errors for these estimates.
Fama_MacBeth<-pmg(R~SIZE+MOMENTUM+VOLA+Rating+Value+Duration+Liquidit, data=Data_Z, index=c("Date","ISIN"))
- Pooles OLS with standard Errors clustered by time
OLS_Pooling<-plm(R~SIZE)+MOMENTUM)+VOLA)+Value+Rating+Duration+Liquidity, data=Data_Z, model='pooling', index=c('ISIN', 'Date'))
Pooling_Test<- coeftest(OLS_Pooling, vcov=function(x) vcovHC(x, cluster="time", type="HC1"))
My results below are quite different for Pooled OLS and Fama MacBeth. I know that some degree od deviation is normal, but in my case even some positive and negativ signs are different.
Dependent variable:
----------------------------
R
coefficient mean
test groups
Pooled OLS Fama MacBeth
(1) (2)
------------------------------------------------
Beta.DEF -0.093 0.061*
(0.061) (0.034)
SIZE -0.131*** -0.043**
(0.020) (0.017)
MOMENTUM -0.007 0.008
(0.054) (0.014)
VOLA -0.257*** -0.022
(0.051) (0.017)
Value -0.128*** 0.019***
(0.023) (0.007)
Rating 0.180*** -0.013***
(0.015) (0.003)
Duration 0.073*** 0.021*
(0.017) (0.012)
Liquidity 0.004* 0.027***
(0.002) (0.005)
Constant -2.386*** -1.432***
(0.140) (0.099)
------------------------------------------------
Observations 335,369
R2 0.378
================================================
Note: *p<0.1; **p<0.05; ***p<0.01
Do you have any suggestion how to deal with these results? Any idea what went wrong?