Skip to main content
Typos, punctuation
Source Link
Richard Hardy
  • 69.5k
  • 13
  • 126
  • 278

Implementation of Shanken (1992) AdjustementAdjustment for Fama MacBeth Asset Pricing Tests

As this calculation of the t-Stat does not contain a correction for the error in variables problem I looked for a Shanken (1992) adjustment on the standard error. Unfortunately many papers state, that they apply the Shanken adjustments to their t-Stats but do not include a calculation for it. I found a description for the implementation of a Shanken-adjustment adjustment (http://lipas.uwasa.fi/~sjp/Teaching/eaptx/lectures/p5.pdf - slide 41 and following). This example also includes a sample implementation of the Shanken-adjustment adjustment in Stata for a single cross-sectional regression. I used this example and transferred the calculations into Matlab-code code.

The problem now is that I am uncertain how the aggregation of periodic standard error calculations (following the Shanken-adjustments adjustments) into one standard error for the t-test happens. With a single cross-section regression there is no aggregation of values - but for the periodical cross-section regression according to Fama & MacBeth I run monthly cross-sectional regressions. 
I implemented "my interpretation" of a Shanken-adjustment adjustment in a 60 month rolling regression to reconcile the results of Artmann (2011: https://www.econstor.eu/bitstream/10419/70130/1/736358048.pdf page 36, table 8, panel F) who implemented a Shanken t-stat with Fama & MacBeth-MacBeth implementation. 
I can reconcile the paper's factor loadings approximately but the calculated t-stats a far off.

Whereas the paper arrives at a t-stat of 3.6 for the intercept my t-stat is only 1.28. Hence I assume my implementation of the Shanken-adjustment adjustment for the rolling beta estimation Fama/Macbeth-MacBeth procedure is faulty. My code works as follows:

Do you know how to properly implement the Shanken-adjustments adjustments for the Fama/-MacBeth approach? Many thanks!

Implementation of Shanken (1992) Adjustement for Fama MacBeth Asset Pricing Tests

As this calculation of the t-Stat does not contain a correction for the error in variables problem I looked for a Shanken (1992) adjustment on the standard error. Unfortunately many papers state, that they apply the Shanken adjustments to their t-Stats but do not include a calculation for it. I found a description for the implementation of a Shanken-adjustment (http://lipas.uwasa.fi/~sjp/Teaching/eaptx/lectures/p5.pdf - slide 41 and following). This example also includes a sample implementation of the Shanken-adjustment in Stata for a single cross-sectional regression. I used this example and transferred the calculations into Matlab-code.

The problem now is that I am uncertain how the aggregation of periodic standard error calculations (following the Shanken-adjustments) into one standard error for the t-test happens. With a single cross-section regression there is no aggregation of values - but for the periodical cross-section regression according to Fama & MacBeth I run monthly cross-sectional regressions. I implemented "my interpretation" of a Shanken-adjustment in a 60 month rolling regression to reconcile the results of Artmann (2011: https://www.econstor.eu/bitstream/10419/70130/1/736358048.pdf page 36, table 8, panel F) who implemented a Shanken t-stat with Fama & MacBeth implementation. I can reconcile the paper's factor loadings approximately but the calculated t-stats a far off.

Whereas the paper arrives at a t-stat of 3.6 for the intercept my t-stat is only 1.28. Hence I assume my implementation of the Shanken-adjustment for the rolling beta estimation Fama/Macbeth procedure is faulty. My code works as follows:

Do you know how to properly implement the Shanken-adjustments for the Fama/MacBeth approach? Many thanks!

Implementation of Shanken (1992) Adjustment for Fama MacBeth Asset Pricing Tests

As this calculation of the t-Stat does not contain a correction for the error in variables problem I looked for a Shanken (1992) adjustment on the standard error. Unfortunately many papers state, that they apply the Shanken adjustments to their t-Stats but do not include a calculation for it. I found a description for the implementation of a Shanken adjustment (http://lipas.uwasa.fi/~sjp/Teaching/eaptx/lectures/p5.pdf - slide 41 and following). This example also includes a sample implementation of the Shanken adjustment in Stata for a single cross-sectional regression. I used this example and transferred the calculations into Matlab code.

The problem now is that I am uncertain how the aggregation of periodic standard error calculations (following the Shanken adjustments) into one standard error for the t-test happens. With a single cross-section regression there is no aggregation of values - but for the periodical cross-section regression according to Fama & MacBeth I run monthly cross-sectional regressions. 
I implemented "my interpretation" of a Shanken adjustment in a 60 month rolling regression to reconcile the results of Artmann (2011: https://www.econstor.eu/bitstream/10419/70130/1/736358048.pdf page 36, table 8, panel F) who implemented a Shanken t-stat with Fama-MacBeth implementation. 
I can reconcile the paper's factor loadings approximately but the calculated t-stats a far off.

Whereas the paper arrives at a t-stat of 3.6 for the intercept my t-stat is only 1.28. Hence I assume my implementation of the Shanken adjustment for the rolling beta estimation Fama-MacBeth procedure is faulty. My code works as follows:

Do you know how to properly implement the Shanken adjustments for the Fama-MacBeth approach?

edited tags
Link
Source Link

Implementation of Shanken (1992) Adjustement for Fama MacBeth Asset Pricing Tests

I am trying to implement an unconditional asset pricing test according to the Fama & MacBeth (1973) method. The calculation of the factor-loadings as average of monthly cross-sectional regressions are all set and working. A challenge I am facing is the implementation of a proper t-Stat. Originally I just the calculation based on Cochrane (2005): $$ \sigma^2(\lambda)=1/T^2*\sum \limits_{t=1}^T (\hat\lambda_t-\bar\lambda)^2 $$ This value I used in the t-Test: $$ tStat=\frac{\bar\lambda-0}{\sqrt{\sigma^2}} $$

As this calculation of the t-Stat does not contain a correction for the error in variables problem I looked for a Shanken (1992) adjustment on the standard error. Unfortunately many papers state, that they apply the Shanken adjustments to their t-Stats but do not include a calculation for it. I found a description for the implementation of a Shanken-adjustment (http://lipas.uwasa.fi/~sjp/Teaching/eaptx/lectures/p5.pdf - slide 41 and following). This example also includes a sample implementation of the Shanken-adjustment in Stata for a single cross-sectional regression. I used this example and transferred the calculations into Matlab-code.

The problem now is that I am uncertain how the aggregation of periodic standard error calculations (following the Shanken-adjustments) into one standard error for the t-test happens. With a single cross-section regression there is no aggregation of values - but for the periodical cross-section regression according to Fama & MacBeth I run monthly cross-sectional regressions. I implemented "my interpretation" of a Shanken-adjustment in a 60 month rolling regression to reconcile the results of Artmann (2011: https://www.econstor.eu/bitstream/10419/70130/1/736358048.pdf page 36, table 8, panel F) who implemented a Shanken t-stat with Fama & MacBeth implementation. I can reconcile the paper's factor loadings approximately but the calculated t-stats a far off.

enter image description here

Whereas the paper arrives at a t-stat of 3.6 for the intercept my t-stat is only 1.28. Hence I assume my implementation of the Shanken-adjustment for the rolling beta estimation Fama/Macbeth procedure is faulty. My code works as follows:

% general calculation:
varianceOfDependent = cov(testAssetReturnData) ./ estimationPeriod;
factorCovariance = cov(factorData);

% ########################################################
% calculation for each cross-section regression:
% 1) variance calculation:
variance = (X'*X)^-1 * X' * varianceOfDependent * X * (X'*X)^-1; % variance estimate according to Cochrane, with X as Nxk matrix

% 2) calculate correctional factors
c =  regResult.beta(2:end) * factorCovariance^-1 * regResult.beta(2:end)'; % with regResult.beta(2:end) corresponding to the coefficient estimates for all factors (no intercept!)
modifiedFactorCovariance = [zeros(1,size(factorCovariance,2)+1); 

zeros(size(factorCovariance,2),1) factorCovariance];
    standardErrorsShanken = diag(sqrt(variance*(1+c) + modifiedFactorCovariance ./estimationPeriod))';
    tStatShanken = transpose(regResult.beta) ./ standardErrorsShanken; % transpose(regResult.beta) as lambda estimates of the period  

% ########################################################  
% Each tStatShanken is stored and the average is taken for each factor to arrive at the t-stat results

The implementation follows equation 41 of the linked paper: enter image description here

Do you know how to properly implement the Shanken-adjustments for the Fama/MacBeth approach? Many thanks!