Upload
vuongmien
View
265
Download
4
Embed Size (px)
Citation preview
Empirical Asset Pricing
Seppo Pynnonen
Department of Mathematics and Statistics, University of Vaasa, Finland
Texas A&M University, May – June, 2013
As of June 12, 2013Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Part V
Testing Asset Pricing Models
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Introduction1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Introduction
Time series (day-to-day) variation in asset returns?Due to information arrival.
Average return (cross-sectional) variation?Asset pricing theories and models needed for understanding.CAPM-APT paradigms have set forth the basesFor the moment more than fifty variables identified in theliterature that are used to predict cross-section stock returns(e.g. Subrahmanyam 2010).
Informal wisdom (e.g. size, value, tax effect, momentum, etc.)motivated factorsTheoretically motivated variables based on risk-return modelvariants (beta decomposition ”bad-good beta”, state variablesin ICAPM, macro factors, consumption (CCAPPM), etc)Behavioral motivated variables (overreaction/underreaction)Friction (illiquidity, arbitrage constraints, ownershipconcentration, etc.) motivated variables
As a consequence research seems to be segmentedAcceptable theory yet to be discovered
For discussion, see Nagel (2012), Subrahmanyam (2010).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Testing Methodology1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Testing Methodology
Testing Methodology
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Testing Methodology
Main approaches for testing asset pricing models are:
Time-series regressions (TSR), CLM (1997, Ch 5& 6), Goyal(2012)Cross-sectional regressions (CSR), Cochrane (2005, Part II),Goyal (2012), Shanken and Zhou (2007).Combination of TSR and CSR, utilizing generalized method ofmoments (GMM), Cochrane (2005, Part II), Goyal (2012),Shanken and Zhou (2007).
TSR relies typically on multivariate regression with (Gibbons,Ross, Shanken 1989) GRS-test of joint pricing errors.
Cross-sectional regressions
Two-pass regression.Fama-Macbeth rolling estimation procedure.
GMM, essentially a two-pass regression, better robustness,however.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Time Series Regression testing
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Standard TSR testing setup:
rt = (r e1t , . . . , rNt)′: N × 1 vector of asset returns,
ft = (f1t , . . . , fKt)′: K × 1 vector of common factor returns,
t = 1, . . . ,T .
Unconstrained times series regression
rt = α + Bft + ut , (24)
ut = (u1t , . . . , uNt)′ ∼ i.i.d(0,Σu) zero-mean noise vector with
Σu: N × N positive definite (p.d.) error covariance matrix.Furthermore,Σf : K × K denote the factor covariance matrix (p.d.)
OLS estimators; α, B, Σu, Σf .
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
(a) Factors are portfolios of traded assets
a.1) Riskfree asset exists
Asset returns and factor returns are excess returnsNull hypothesis:
H0 : α = 0 (25)
Test statistic:
F =T − N − K
N
[1 + µf Σ
−1
f µf
]−1
α′Σ−1
u α, (26)
where µf the K -vector of sample means of the factors.Null distribution: F ∼ F (N,T − N − K ) (normalityassumption)GRS (1979): α′Σuα = sr2
q − sr2f , where srq is the Sharpe
ratio of the (ex post) tangency portfolio spanned by the Nassets and the K factors and srf is the Sharpe ratio of the (expost) tangency portfolio spanned by the K factors.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
a.2) No riskfree asset
γ0: zero-beta portfolio returnNull hypothesis
H0 : α = (ι− Bι)γ0 (27)
ι represents a conforming vector of ones (N in the first and Kin the second).Test statistics (likelihood ratio):
χ2 = (T − 1
2N − K − 1)
(log∣∣∣Σ∗u∣∣∣− log
∣∣∣Σu
∣∣∣) , (28)
where Σ∗u is the ML estimator of the Σu under the restriction
of H0 (more details: CLM, Sec. 6.2.2).Null distribution of χ2 ∼ χ2
N−1 (asymptotically).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
(b) Factors are macroeconomic variables
γ0 zero-beta return, γ1 a vector related to factor risk premia
Null hypothesisH0 : α = γ0ι + Bγ1 (29)
Test statistics is again of the form (28) with degrees offreedom N − K − 1 (more details: CLM Sec 6.2.3).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Fama-French market equity decile portfolios
ME decile portfolios from Kenneth French’s data library
http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/Portfolios Formed on ME.zip
File: Portfolios_Formed_on_ME.txt
This file was created by CMPT_ME_RETS using the 201212 CRSP database. It contains
value- and equal-weighted returns for size portfolios. Each record contains returns for:
Negative (not used) 30% 40% 30% 5 Quintiles 10 Deciles
The portfolios are constructed at the end of Jun. The annual returns are from January
to December.
Missing data are indicated by -99.99 or -999.
Value Weighted Returns -- Monthly
<= 0 Lo 30 Med 40 Hi 30 Lo 20 Qnt 2 Qnt 3 Qnt 4 Hi 20 Lo 10 Dec 2 ..
192607 -99.99 0.19 1.42 3.07 -0.75 1.87 1.29 1.79 3.19 0.15 -1.04 ..
192608 -99.99 3.07 2.82 2.81 2.00 3.75 3.71 1.32 3.01 1.98 2.01 ..
192609 -99.99 -1.66 -0.81 0.80 -0.53 -1.67 0.26 0.14 0.75 0.08 -0.74 ..
.
.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Fama-French 3-factor model with riskfree assets.
Test assets: ME decile portfolios from Kenneth French’s data library.
(ff_size.do)
// Get first Fama-French factors from Kenneth French’s data library
// File: unzipped from
// http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors.zip
local first = 5 // indicates the first data line to be read
local last = 1044 - ‘first’ + 1 // number of observations to be read from the text file
infix ‘first’ firstline yrm 1-6 mmrf 7-14 smb 15-22 hml 23-30 rf 31-38 in 1 / ‘last’ ///
using "../data/ffdata/F-F_Research_Data_Factors.txt", clear
save _junk // save FF-factors to a temporary Stata file
// Get size porfolios from Keneeth French’s data library
// http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/Portfolios_Formed_on_ME.zip
// Value weighted portfolios
local first = 14 // first data line
local last = 1051 - ‘first’ + 1 // number of data lines
infix ‘first’ firstline yrm 1-6 negbe 7-14 mel30 15-22 mem40 23-30 meh30 31-38 ///
qntl1 39-46 qntl2 47-54 qntl3 55-62 qntl4 63-70 qntl5 71-78 ///
dcl1 79-86 dcl2 87-94 dcl3 95-102 dcl4 103-110 dcl5 111-118 ///
dcl6 119-126 dcl7 127-134 dcl8 135-142 dcl9 143-150 dcl10 151-158 ///
in 1 / ‘last’ ///
using "../data/ffdata/Portfolios_Formed_on_ME.txt", clear
merge 1:1 yrm using _junk // merge FF-factors from the temporary file
rm _junk.dta // clean up
mvdecode _all, mv(-99.99 -999) // decode -99.99 and -999 as missing
keep if _merge == 3
drop _merge
replace yrm = ym(trunc(.01*yrm), yrm - 100*trunc(.01*yrm)) // month to year month format
format %tm yrm
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Use data starting from January 1950.
Generate first a table of portfolio means standard deviations and factor betas:
// Decile portfolio excess returns
forvalues i = 1(1)10 {
gen dcl‘i’e = dcl‘i’ - rf
}
// using sample period from Jan 1950 forwards generate some descriptive statistics
// by computing means standard deviatons and factor regression coefficients collected
// to a matrix (tbl)
matrix tbl = J(10, 6, 0) // collect results to a matrix
matrix colnames tbl = Mean Std Aplha Beta SMB HML // name the column of the matrix
matrix rownames tbl = "Small = 1" 2 3 4 5 6 7 8 9 "Big = 10" // name the rows
forvalues i = 1(1)10 { // compute summary statistic for the decile portfolios
quietly summ dcl‘i’e if yrm >= ym(1950, 1)
matrix tbl[‘i’, 1] = round(r(mean), .001) // an excellent summarizing web-page
// for how to access these kinds of information is
// http://www.ats.ucla.edu/stat/stata/faq/returned_results.htm
// we round th enumbers to three decimal places, which is
// not necessary if you collect results to a spreadsheet.
matrix tbl[‘i’, 2] = round(r(sd), .01)
quietly reg dcl‘i’e mmrf smb hml if yrm > ym(1949, 12)
matrix tbl[‘i’, 3] = round(_b[_cons], .001)
matrix tbl[‘i’, 4] = round(_b[mmrf], .01)
matrix tbl[‘i’, 5] = round(_b[smb], .001)
matrix tbl[‘i’, 6] = round(_b[hml], .001)
}
matrix list tbl // print the results
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
We get
. matrix list tbl // prin out the results
tbl[10,6]
Mean Std Aplha Beta SMB HML
Small = 1 .813 6.09 -.071 .92 1.232 .32
2 .79 6.02 -.09 1.01 1.1 .225
3 .84 5.75 -.024 1.04 .93 .221
4 .787 5.53 -.035 1.02 .835 .182
5 .807 5.36 .009 1.03 .702 .164
6 .755 5.05 -.001 1.03 .512 .155
7 .753 4.95 .025 1.04 .391 .114
8 .714 4.84 .001 1.05 .279 .12
9 .663 4.46 .018 1 .089 .094
Big = 10 .541 4.15 .032 .98 -.28 -.058
i.e.,
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
The FF three factor model for monthly data from Jan 1950through December 2012 (N = 756 months).Size sorted portfolio excess return means, standard deviations, andfactor coefficient for the size portfolios are summarized in thebelow table (ff size bm.do).
Portfolio Mean Std Aplha Beta SMB HML
Small = 1 0.813 6.09 -0.071 0.92 1.232 0.3202 0.790 6.02 -0.090 1.01 1.100 0.2253 0.840 5.75 -0.024 1.04 0.930 0.2214 0.787 5.53 -0.035 1.02 0.835 0.1825 0.807 5.36 0.009 1.03 0.702 0.1646 0.755 5.05 -0.001 1.03 0.512 0.1557 0.753 4.95 0.025 1.04 0.391 0.1148 0.714 4.84 0.001 1.05 0.279 0.1209 0.663 4.46 0.018 1.00 0.089 0.094
Big = 10 0.541 4.15 0.032 0.98 -0.280 -0.058
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
We have the case a.1) in which the question is whether theestimated alphas are jointly statistically zero:
sureg (dcl1e - dcl10e = mmrf smb hml)
Estimates the regressions and postestimation command test givesthe test result
test _cons
( 1) [dcl1e]_cons = 0
.
.
(10) [dcl10e]_cons = 0
chi2( 10) = 20.94
Prob > chi2 = 0.0215
The null hypothesis H0 : α = 0 is rejected at the 5% level.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Otherwise, the results show also that there is not much relationbetween cross-sectional returns and betas.
I.e., beta is quite flat across different values of mean excess returns.
// To plot mean returns and beta convert tbl to Stata data
clear
svmat tbl, names(col) // use col names as variable names
scatter Mean Beta, ytitle(Mean return) xtitle(Beta) xscale(range(0.8 1.2)) xlabel(0.8(0.1)1.2)
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Example: Zero-Beta
The zero-beta implies the non-linear hypothesis in (27). Maximumlikelihood (ML) estimation procedure based on normal distribution isdiscussed e.g. in CLM Sec 6.2.2.
The zero-beta null hypothesis in (27) implies that in each regressionequation
rit = αi + β′i ft + uit (30)
in (24) the intercept isαi = (1− β′iι)γ0, (31)
where β′i is the ith row of B, i = 1, . . .N. Thus, the restricted regressioncan be written as
rit = γ0 + βi (ft − γ0ι) + uit (32)
= γ0 + β1,i (f1,t − γ0) + · · ·+ βK ,i (fK ,t − γ0) + uit (33)
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Stata has non-linear SUR command nlsur to estimate non-linearsystem of equations (see help nlsur).
To compute the chi-square statistic in (28) we first estimate bysureg the unrestricted model and use scalar definition tocompute |Σ|. Next we do the same for the restricted model usingnlsur.
sureg (dcl1 - dcl10 = rm smb hml) if yrm >= ym(1950, 1) // unrestricted SUR
(output omitted)
ereturn list // see the ereturns e() produced by sureg
(much of output omitted)
matrices:
e(b) : 1 x 40
e(V) : 40 x 40
e(Sigma) : 10 x 10
scalar detU = det(e(Sigma)) // determinant of the unrestricted model
scalar list detU
detU = .01653918
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
Restricted model: Note that the estimated parameters are in curlybrackets ({ }) and that we need to spell out every equation.
nlsur (dcl1 = {gamma0} + {b1}*(rm - {gamma0}) + {s1}*(smb - {gamma0}) + {h1}*(hml - {gamma0})) ///
(dcl2 = {gamma0} + {b2}*(rm - {gamma0}) + {s2}*(smb - {gamma0}) + {h2}*(hml - {gamma0})) ///
(dcl3 = {gamma0} + {b3}*(rm - {gamma0}) + {s3}*(smb - {gamma0}) + {h3}*(hml - {gamma0})) ///
(dcl4 = {gamma0} + {b4}*(rm - {gamma0}) + {s4}*(smb - {gamma0}) + {h4}*(hml - {gamma0})) ///
(dcl5 = {gamma0} + {b5}*(rm - {gamma0}) + {s5}*(smb - {gamma0}) + {h5}*(hml - {gamma0})) ///
(dcl6 = {gamma0} + {b6}*(rm - {gamma0}) + {s6}*(smb - {gamma0}) + {h6}*(hml - {gamma0})) ///
(dcl7 = {gamma0} + {b7}*(rm - {gamma0}) + {s7}*(smb - {gamma0}) + {h7}*(hml - {gamma0})) ///
(dcl8 = {gamma0} + {b8}*(rm - {gamma0}) + {s8}*(smb - {gamma0}) + {h8}*(hml - {gamma0})) ///
(dcl9 = {gamma0} + {b9}*(rm - {gamma0}) + {s9}*(smb - {gamma0}) + {h9}*(hml - {gamma0})) ///
(dcl10 = {gamma0} + {b10}*(rm - {gamma0}) + {s10}*(smb - {gamma0}) + {h10}*(hml - {gamma0})) ///
if yrm >= ym(1950,1) // non-liner sur estimation
------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
/gamma0 | .0492573 .0160963 3.06 0.002 .0177091 .0808055
(rest of the output omitted)
scalar detR = det(e(Sigma)) // determinant of the resticted model Sigma
scalar list detR // show the value
detR = .01688797
scalar chi2 = (e(N) - 0.5*e(k_eq) - 3 - 1)*(log(detR) - log(detU)) // chi-square statistic
scalar list chi2
chi2 = 15.589184
displ 1 - chi2(9, chi2) // p-value (see help chi2)
.07597212
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
The zero-beta return estimates to γ0 = 0.049% per monthcompared to the average risk-free rate of rf = 0.34% per month onthe sample period.
The likelihood ration test gives χ2 = 15.6 with 9 degrees offreedom yielding the p-value 0.076, which does not reject H0 atthe 5% level.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Time Series Regression testing
An alternative to test the zero-beta restrictions in (27) is to useGMM.
We’ll return to this later.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Cross-Sectional Regression
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Factor model of excess returns Rit − Rf ,t
Reit = αi + β′i ft + uit (34)
E[Reit ] = λ′f βi + αi (35)
i = 1, . . . ,N, λf = E[ft ]: K -vector of expected factor risk premia(factors are assumed to be here portfolios traded assets).
E.g., CAPM: ft = Rmt − Rf ,t , αi = 0 and λ > 0
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Cross-sectional regression testing:
Two-pass regression:
(1) Estimate βi from the market model (34)
(2) Estimate λf and λ0 from the (cross-section) regression
Rei = λ0 + λ′f βi + ai (36)
where
Rei =
1
T
T∑t=1
Reit
is the mean return of asset i over sample period andai = αi − λ0 is a zero mean error term.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Denote
λ =
(λ0
λf
)OLS:
λOLS = (X′X)−1X′Re (37)
where X = (ι, B) : N × (K + 1) matrix with β′i in the ith row of B
and Re = (Re1 , . . . , R
eN)′.
GLS:λGLS = (X′Σ−1
a X)−1X′Σ−1a Re (38)
where Σa = 1T Σu.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Because of the cross-sectional correlation of residuals:
var[λOLS
]= (X′X)−1X′ΣaX(X′X)−1 (39)
(instead of usual of zero error correlation: (X′X)−1σ2a with
σ2a = σ2
u/T )
var[λGLS
]=(X′Σ−1
a X)−1
(40)
In Σa = 1T Σu, Σu is estimated by the sample covariance matrix of
residuals ut = Ret − XλOLS, where Re
t = (Re1t , . . . ,R
eNt)′.
Remark: Because XλOLS is constant over time, the estimate Σu of Σu
becomes simply the sample covariance matrix S of the excess returns Ret ,
i.e., Σu = S = 1T−1
∑Tt=1(Re
t − Re)(Ret − Re)′, and hence Σa = 1
T S, no
matter how many factors there are in your model! This may feel a bit
counter intuitive.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Recall, the standard errors of the components of λOLS and λGLS arethe square roots of the main diagonal elements of the
variance(-covariance) matrices var[λOLS
]and var
[λGLS
],
respectively.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Remark: An alternative for the second pass is to run the cross-sectionregression (36) monthly, i.e.,
Reit = λ0,t + λ′f ,t βi + ait , t = 1, . . . ,T
to obtains monthly OLS estimates λ0,t and λf ,t , then because βi s are
not time varying, it turns out that in λOLS of formula (37), thecomponents λ0 and λf are equal to the sample averages of the monthlyOLS estimates λ0,t and λf ,t , i.e.,
λ0 =1
T
T∑t=1
λ0,t
and
λf =1
T
T∑t=1
λf ,t .
This is called in the literature the Fama-MacBeth (FM) approach (Fama
and MacBeth, 1973).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
The advantage of this approach is that estimates for the standard errorsof OLS lambdas, i.e., the square roots of the respective diagonal
elements of var[λOLS
], are simply the square roots of the sample
variances of λ0,t and (components of) λf ,t (see Cochrane, 2005, Sec12.3 and the example below).
Thus, the FM-approach as such accounts for the cross-sectional
correlation adjustments in the standard errors, that need to be dealt with
explicitly in the second pass regression in equation (36) of the mean
excess return on betas.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Remark: It should be emphasized that the two OLS basedapproaches are identical only in the case when βi s from the firstpass regressions are time invariant, i.e., are not allowed to varyover time.
In the more general case where the first pass betas are allowed tobe time varying, these approaches lead to different results (seeCochrane, 2005, sec 12.3).
With time varying betas the FM-approach seems to be thestandard.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Errors in variables (EIV):
Explanatory variables βi have estimation error vi = βi − β suchthat βi = βi + vi .
This introduces additional noise to λ-estimates, which is notaccounted in OLS standard errors.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Shanken (1992, RFS) derives correction terms such that the OLS(or GLS) standard errors should be the square roots of the relevantdiagonal elements of
var[λOLS
]= (X′X)−1X′ΣaX(X′X)−1(1 + c) + Σf /T (41)
for the OLS and
var[λGLS
]=(X′Σ−1
a X)−1
(1 + c) + Σf /T (42)
for the GLS, where c = λ′Σ−1f λ with Σf = cov[f] and Σf :
(K + 1)× (K + 1) matrix, augment from Σf with zeroes in thefirst row and the first column and Σf in the lower right block.(See also Cohcrane 2005, Sec 12.2)
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
For example, in CAPM an estimator of the correction factor isc = (λ1/sm)2, where λ1 is the cross-section OLS estimator of therisk premium and Σf = s2
m = 1T−1
∑Tt=1(Re
m,t − Rem)2 is the
sample variance of the market excess returns over the sampleperiod. In particular, if CAPM holds, such that λ1 ≈ Re
m, c is thesquared Sharpe ratio.
Note that above corrections correspond the case k2 = 0 inShanken (1992, RFS), such that restriction (8) in his paper is notimposed here.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Example: Two-pass Regression Test on FF ME Decile Portfolios
Consider the earlier 10 FF size portfolios.
// ff_size_cross_section.do (as of July 27, 2017)
// Size porfolios are from Kenneth French’s data library
// File unzipped from:
// http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/Portfolios_Formed_on_ME.zip
// Value weighted portfolios
// Sample period: Jan 1950 to Dec 2012
// you can download this .do file (at least for a while :)) from:
// http://lipas.uwasa.fi/~sjp/temp/eap/stata/ff_size_cross_section.do
// the do-file includes also Fama-French 3-factor results
//
matrix ffmat = J(10, 5, .) // matrix to
store mean portfolio excess returns, CAPM beta
// FF3 market beta, smb coef, and hml coef
matrix colnames ffmat = "rmrf" "beta" "ffbeta" "smb" "hml"
// rmrf = r - rf is portfolio’s excess retturn, beta is CAPM beta, and ffbeta is FF3 loading
// on the market factor, in the data set mmrf = Mkt-Rf, smb = SMB, and hml = HML
forvalues i = 1 / 10 { // generate betas and factor slope coefficients and store into ffmat
replace dcl‘i’ = dcl‘i’ - rf // transform returns to excess return
quietly summ dcl‘i’ // summary statistics
matrix ffmat[‘i’, 1] = r(mean) // mean cross-section excess return of
// portfolio i saved in the first column
quietly reg dcl‘i’ mmrf // portfolio CAPM beta (firs pass regresion)
matrix ffmat[‘i’, 2] = _b[mmrf] // save CAPM beta into the second column
quietly reg dcl‘i’ mmrf smb hml // FF3 coefficients
matrix ffmat[‘i’, 3] = _b[mmrf] // FF3 market factor beta
matrix ffmat[‘i’, 4] = _b[smb] // FF3 smb coeff
matrix ffmat[‘i’, 5] = _b[hml] // FF3 hml coeff
} // forvalues i
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
matrix list ffmat // content of ffmat
ffmat[10,5]
rmrf beta ffbeta smb hml
r1 .81329366 1.0943983 .92365736 1.2324996 .31950147
r2 .79017195 1.1765461 1.0146186 1.1004915 .22513431
r3 .84039682 1.1745045 1.0425262 .92988174 .2209941
r4 .7873148 1.1450016 1.0238419 .83500845 .18164329
r5 .80695766 1.1350846 1.0349418 .70233115 .16398983
r6 .75478836 1.0925025 1.0250332 .5121679 .154878
r7 .75292328 1.0922082 1.0400764 .39051469 .1137214
r8 .7139947 1.0763998 1.0452311 .27910394 .11994263
r9 .66269841 1.0041549 1.0029915 .08917638 .09416092
r10 .5410582 .93866292 .97978884 -.28029296 -.05808212
save _tmp, replace // save current data into a temporary file
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
clear // clear the existing data from memory and transform ffmat to Stata data
svmat ffmat, names(col) // make columns of ffmat Stata data file variables
drop ffbeta smb hml // we need only portfolio average excess returns (rmrf) and CAPM beta
reg rmrf beta // second pass CAPM cross-section regression (see e.g. Cochrane 2005, p 249)
Source | SS df MS Number of obs = 10
-------------+------------------------------ F( 1, 8) = 55.99
Model | .062037961 1 .062037961 Prob > F = 0.0001
Residual | .008863663 8 .001107958 R-squared = 0.8750
-------------+------------------------------ Adj R-squared = 0.8594
Total | .070901624 9 .007877958 Root MSE = .03329
------------------------------------------------------------------------------
rmrf | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
beta | 1.113 0.149 7.48 0.000 0.770 1.456
_cons | -0.470 0.163 -2.89 0.020 -0.846 -0.094
------------------------------------------------------------------------------
// thus estimated lambda = 1.113 and lambda0 = -0.470 (rounded to three decimal places).
// notice the high t-value, which however is badly inflated due to the under estimated
// standard error because of cross-sectional correlation of the returns.
// the following presents computations for cross-correlation corrected standard errors
// which are square roots of the main diagonal elements of
// var[lambda_OLS] = inv(X’X) X’ Sigma_a X inv(X’X), see eq (39)
// for the purpose save CAPM lambda0 and lambda estimates
scalar lambda0 = _b[_cons] // CAPM intercept (pricing error "alpha")
scalar lambda = _b[beta] // CAPM lambda (market price of risk)
scalar list lambda0 lambda // show the saved coefficients
lambda0 = -.46997263
lambda = 1.1128931
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
// compute next residuals for the Sigma_a matrix
use _tmp, clear // retain original data
rm _tmp.dta // clean up
quiet cor dcl1-dcl10, cov // residual covariances, which here is the
// same as the covariance matrix of the excess returns!
// See the remark below eq (40) above.
scalar nobs = _N // number of months
matrix Sigma_a = r(C) / nobs // Sigma_a estimate (10 x 10 matrix)
symmetric Sigma_a[10,10]
dcl1 dcl2 dcl3 dcl4 dcl5 dcl6 dcl7 dcl8 dcl9 dcl10
dcl1 0.049
dcl2 0.046 0.048
dcl3 0.043 0.045 0.044
dcl4 0.041 0.042 0.041 0.040
dcl5 0.038 0.041 0.040 0.038 0.038
dcl6 0.035 0.037 0.037 0.036 0.035 0.034
dcl7 0.034 0.036 0.036 0.035 0.034 0.032 0.032
dcl8 0.032 0.034 0.034 0.033 0.033 0.031 0.031 0.031
dcl9 0.028 0.030 0.030 0.029 0.029 0.028 0.028 0.028 0.026
dcl10 0.022 0.024 0.025 0.024 0.024 0.024 0.024 0.024 0.023 0.023
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
matrix X = J(rowsof(ffmat), 1, 1), ffmat[1..., 2] // X-matrix to compute OLS std errors
matrix list X // show X (columns are constant for the intercept and beta)
X[10,2]
c1 beta
r1 1 1.0943983
r2 1 1.1765461
r3 1 1.1745045
r4 1 1.1450016
r5 1 1.1350846
r6 1 1.0925025
r7 1 1.0922082
r8 1 1.0763998
r9 1 1.0041549
r10 1 .93866292
matrix varb = invsym(X’*X)*X’*Sigma_a*X*invsym(X’*X) // variance covariance matrix (39) in the notes
matrix list varb // cov(hat lambda) accounting cross-correlation
c1 beta
c1 .30329502
beta -.30683427 .33533236
matrix list e(V) // cov(hat lambda) produced by reg,
//note the heavily underestimated varinaces on the main diagonal!
beta _cons
beta .02211936
_cons -.02417528 .02653307
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
scalar t_lambda = lambda / sqrt(varb[2,2]) // cross-correlation corrected t-stat
scalar t_lambda0 = lambda0 / sqrt(varb[1, 1]) // cross-correlation lambda0 t-stat
scalar list lambda t_lambda lambda0 t_lambda0 // print lambda and its t-value
lambda = 1.1128931
t_lambda = 1.9218332
lambda0 = -.46997263
t_lambda0 = -.85337503
// p-value of lambda approximated by normal distribution
displ "lambda p-val: " 2 * (1 - normal(abs(t_lambda)))
lambda p-val: .05462674
// p-value of lambda0 approximated by normal distribution
displ "lambda0 p-val: " 2 * (1 - normal(abs(t_lambda0)))
lambda0 p-val: .39345136
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
// Next we will show that t_lambda (and t_lambda0) is exactly the same as that produced by
// FM-rolling method (discussed in more detail later) of estimating lambda when first
// pass betas are estimated from full sample time series, i.e., when betas do not change
// in the second pass cross-section regressions, see e.g. Cochrane (2005, Sec 12.3)
save _tmp, replace // save current data into a temporary file
forvalues i = 1/10 { // replace portfolio returns by corresponding excess returns
replace dcl‘i’ = dcl‘i’ - rf // excess returns
} // forvalues
keep dcl1-dcl10 // keep only portfolio excess returns
list in 1/5, clean // first few lines
dcl1 dcl2 dcl3 dcl4 dcl5 dcl6 dcl7 dcl8 dcl9 dcl10
1. 5.63 6.34 4.33 4.25 5.33 3.76 2.42 2.21 2.1 1
2. 2.29 2.53 2.49 1.66 -.01 1.24 1.53 1.47 1.96 1.25
3. -.59 .1 -1.32 .12 -1.18 .1 -.38 1.11 .22 1.77
4. 5.86 6.49 5.39 6.3 5.78 5.47 3.79 3.25 3.6 3.96
5. 3.79 1.55 2.1 3.49 2.37 2.11 4.23 3.03 3.98 4.79
list in -5/l, clean // last few lines
dcl1 dcl2 dcl3 dcl4 dcl5 dcl6 dcl7 dcl8 dcl9 dcl10
752. 2.53 2.98 3.35 2.13 5.02 3.56 4.27 3.58 2.94 2.11
753. 4.72 4.22 5.28 3.26 2.35 3.04 1.87 2.53 2.07 2.8
754. -3 -3.78 -2.64 -2.98 .33 -1.78 -.85 .04 -1.55 -1.97
755. -.82 1.48 .95 .19 1.49 2.88 2.3 1.45 1.24 .35
756. 1.88 4.94 3.82 3.35 3.1 2.87 1.75 2.89 2.04 .39
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
// in order to run cross-sectional regressions, i.e., row wise, we need to transpose
// the data set, which transforms rows to variablels and columns to observations.
// this means that we will have 756 variables, labeled as v1, v2, ..., v756.
// the number of observations will be 10, i.e., the number of portfolios
xpose, clear // transpose columns to rows for FM cross-sectional regressions
describe, short // factors (10) are now observations, months (756) are now variables
Contains data
obs: 10
vars: 756
size: 30,240
list v1-v5, clean // 5 first months (columns) of the 10 in portfolios (rows)
v1 v2 v3 v4 v5
1. 5.63 2.29 -.59 5.86 3.79
2. 6.34 2.53 .1 6.49 1.55
3. 4.33 2.49 -1.32 5.39 2.1
4. 4.25 1.66 .12 6.3 3.49
5. 5.33 -.01 -1.18 5.78 2.37
6. 3.76 1.24 .1 5.47 2.11
7. 2.42 1.53 -.38 3.79 4.23
8. 2.21 1.47 1.11 3.25 3.03
9. 2.1 1.96 .22 3.6 3.98
10. 1 1.25 1.77 3.96 4.79
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
// for the second pass regressions we need to append also CAPM betas of the
// portfolios into the data set. the betas are in the second column of
// matrix ffmat created above.
matrix list ffmat // factor loadings computed above
svmat ffmat, names(col) // append factor betas into the current Stata data
drop rmrf ffbeta smb hml // mean portfolio excess returns and FF3 loadings are not needed
// monthly cross-sectinal regressions
// now we are ready to start computing the monthly cross-section regressions
// R_t^e = lambda0_t + lambda_t beta
// collect lambda0_t and lambda_t into vectors
// for the purpose we need to expand the default matsize (default is typically 400)
set matsize 800 // need to expand maximum matrix size to hold 756 monthly lambdas
matrix lambda_vec = J(nobs, 1, .) // monthly lambdas (CAPM market prices of risk estimates)
matrix lambda0_vec = J(nobs, 1, .) // monthly intercepts (pricing errors)
displ nobs // 756 months
forvalues i = 1 / 756 { // cross-section regressrions
quiet reg v‘i’ beta
matrix lambda_vec[‘i’, 1] = _b[beta]
matrix lambda0_vec[‘i’, 1] = _b[_cons]
}
// to compute t-values (using Stata ttest) we need to turn
// lambda_vec and lambda0_vec into Stata data
clear // remove existing data
svmat lambda_vec // turn (load) lambda vector to Stata data
svmat lambda0_vec // add lambda0
scalar list lambda t_lambda lambda0 t_lambda0 // recall values from the mean regression
lambda = 1.1128931, t_lambda = 1.9218332
lambda0 = -.46997263, t_lambda0 = -.85337503
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
// FM cross-section t-tests
//
ttest lambda_vec == 0 // FM t-test for lambda (mean indicates the lambda estimate)
One-sample t test
------------------------------------------------------------------------------
Variable | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]
---------+--------------------------------------------------------------------
l~a_vec1 | 756 1.112893 .5790791 15.92204 -.0239036 2.249689
------------------------------------------------------------------------------
mean = mean(lambda_vec1) t = 1.9218
Ho: mean = 0 degrees of freedom = 755
Ha: mean < 0 Ha: mean != 0 Ha: mean > 0
Pr(T < t) = 0.9725 Pr(|T| > |t|) = 0.0550 Pr(T > t) = 0.0275
ttest lambda0_vec == 0 // FM t-test for lambda0
One-sample t test
------------------------------------------------------------------------------
Variable | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]
---------+--------------------------------------------------------------------
l~0_vec1 | 756 -.4699725 .5507225 15.14236 -1.551102 .6111568
------------------------------------------------------------------------------
mean = mean(lambda0_vec1) t = -0.8534
Ho: mean = 0 degrees of freedom = 755
Ha: mean < 0 Ha: mean != 0 Ha: mean > 0
Pr(T < t) = 0.1969 Pr(|T| > |t|) = 0.3937 Pr(T > t) = 0.8031
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Thus, the mean cross-section regression lambda andFama-MacBeth (FM) average lambda results from the monthlyregressions are here exactly identical as discussed in Cochrane(2005, Sec 12.3).
The advantage of the FM monthly cross-sectional procedure isthat it automatically adjusts the standard errors of lambdaestimates for the cross-sectional correlation.
Next we impose Shanken correction to adjust standard errors forthe errors-in-variables, i.e., the correction in eq. (41) in the notes.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
// Proceed next to the Shanken correction for errors-in-variables, eq (41) in the notes
// (Shanken) correct t-staistic for lambdas
use _tmp, clear // load back the return data
rm _tmp.dta // clean up
// market return is the only factor in CAPM, the variance of which is needed
summ mmrf // use summarize to get standard deviation of the market factor
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
mmrf | 756 .5919709 4.322473 -23.24 16.1
scalar sdmkt = r(sd) // save market excess return standard deviation into scalar sdmkt
displ sdmkt // show the saved value
4.3224732
scalar c = (lambda / sdmkt)^2 // correction factor for (1 + c)*var[hat lambda]
scalar list c // correction factor
c = .06628912
// Shanken corrections for t-lambda
scalar t_lambda_s = lambda / sqrt(varb[1,1] * (1 + c))
scalar t_lambda_s = lambda / (sqrt(varb[2,2]*(1+c) + sdmkt^2/nobs))
displ "t-lambda: " t_lambda ", Shanken corrected t-lambda: " t_lambda_s
t-lambda: 1.9218332, Shanken corrected t-lambda: 1.7999704
display "p(t-lambda): " 2*(1 - normal(abs(t_lambda))) /// line continuation
", p(t-lambda-shanken) " 2*(1 - normal(abs(t_lambda_s)))
p(t-lambda): .05462674, p(t-lambda-shanken) .07186532
// Shanken corrections for t-lambda0
scalar t_lambda0_s = lambda0 / sqrt(varb[1,1] * (1 + c))
displ "t-lambda0: " t_lambda0 ", Shanken corrected t-lambda0: " t_lambda0_s
t-lambda0: -.85337503, Shanken corrected t-lambda0: -.82642309
display "p(t-lambda0): " 2*(1 - normal(abs(t_lambda0))) ///
", p(t-lambda0-shanken) " 2*(1 - normal(abs(t_lambda0_s)))
p(t-lambda0): .39345136, p(t-lambda0-shanken) .40856413
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
The bottom line is that the cross-sectional correction is materialwhile the errors-in-variables correction (Shanken correction) isfairly mild (in particular for t-lambda0).
FF3 or other factor models can be tested analogously. Again usingFM procedure adjusts for the cross-correlation.
Also it seems that people often adjust for serial correlation usingNewey-West (Newey and West, 1987, Econometrica) correctionwhich is available in most statistical software packages.The correction is implemented in most (time series) econometricpackages and can be utilized by regressing the monthly lambdas onthe constant term (i.e., estimating regression yt = α + errort)and selecting Newey-West option.In Stata this can be accomplished using newey (time series)regression procedure.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
// .... continues
// Newey-West (Newey and West (1987), Econometrica) heteroscedastic
// and autocorrelation corrected standard errors and t-values in FM-procedure
// this can be accomplished using Stata time regression ’newey’
// newey requires that data is time series
clear // remove existing data and turn again FM lambda_vec and lambda0_vec
// to Stata data
svmat lambda_vec // turn lambda vector to stata data
svmat lambda0_vec // add lambda0s
// generate time variable
gen time = _n // (dummy) time variable needed by tsset
tsset time // newey requires time series data
rename lambda_vec lambda_nw // rename for convenience
rename lambda0_vec lambda0_nw // rename for convenience
list in 1/5, clean
lambda_nw lambda0~w time
1. 19.09379 -17.13149 1
2. 2.216294 -.7812905 2
3. -9.071203 9.909338 3
4. 11.4307 -7.504146 4
5. -11.15408 15.33481 5
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
// Newey-West for market price of risk (lambda)
newey lambda, lag(6) // 6 lags (typical in financial applications) for Newey-West adjustment
Regression with Newey-West standard errors Number of obs = 756
maximum lag: 6 F( 0, 755) = .
Prob > F = .
------------------------------------------------------------------------------
| Newey-West
lambda_nw | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
_cons | 1.112893 .6039609 1.84 0.066 -.0727494 2.298535
------------------------------------------------------------------------------
// the t-value of 1.84 is slightly smaller
// than that of FM t-value t_lambda = 1.92 (rounded from 1.9218332, see above)
// that is, autocorrelation is fairly marginal (as usual for stock returns)
//
// similar results are obtained for the pricing error (lambda0)
// Newey-West for CAPM pricing error (lambda0)
newey lambda0, lag(6)
Regression with Newey-West standard errors Number of obs = 756
maximum lag: 6 F( 0, 755) = .
Prob > F = .
------------------------------------------------------------------------------
| Newey-West
lambda0_nw | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
_cons | -.4699725 .5682066 -0.83 0.408 -1.585425 .6454802
------------------------------------------------------------------------------
// FM t_lambda0 = -0.85
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
In all, it is crucial that the testing method accounts for thecross-sectional correlation. After that one can check whether theShanken correction and/or Newey-West heteroskedasticity andautocorrelation corrections are material.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Fama, E.F. and J.D. MacBeth (1973) Risk, return and equilibrium:Empirical tests, Journal of Political Economy 81(3), 607–636.
Recap of the approach:
Test for the CAPM implications of the generalized model inequation (7) in their paper, or
Rit = γ0t + γ1tβi + γ2tβ2i + γ3tsi + ηit (43)
where the tilde ( ) indicates that the variable is a random variable,si is some measure of risk not (deterministically) related to βi , ηitis the disturbance term with zero mean and not correlated with theregressors in (43).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
CAPM implies:
E[γ1t ] = E[Rit − Rft
]> 0
E[γ2t ] = E[γ3t ] = 0.
E[γ0] = Rft , or E[Rit − Rft
]= 0, where Rft is the risk-free
rate.
We demonstrate the F-M approach by using monthly CRSPreturns on NYSE (exchange code 1) common stocks (share codes10 and 11) in the period from Jan 1970 through Dec 1983. Therisk-free rate is obtained from Kenneth French’s data library(http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/index.html)
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
The procedure:
20 portfolios are formed on the basis of ranked OLS estimatedindividual security betas (βi ) using 5 year estimation period ofmonthly data (1970–1974).
The following 5 years (1975–1979) are used to recompute βi sand these are averaged to obtain 20 initial portfolio betas βptfor the risk-return tests. The subscript t indicates the relevantmonth of the following four years (1980–1983). This approachaccounts for delistings in βpts.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
To be included to the portfolio, a security available in the firstmonth of the testing period must have data for all 5 years ofthe preceding estimation period and at least 4 years of theportfolio formation period.
Component βi are updated yearly, that is, they are recomputedform monthly returns for 1974 through 1980, 1981, or 1982.
OLS standard deviation si of the market model regressionRit = ai + βi Rmt + εit is used as the non-beta risk.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
The resulting regression is
Rept = γ0t + γ1t βp,t−1 + γ2t β
2p,t−1 + γ3t sp,t−1 + ηpt , (44)
p = 1, . . . , 20, where Rept = Rpt − Rft is the excess return, βp,t−1 is
the average of βi for securities in portfolio p, β2p,t−1 is the average
of squared these βi , and sp,t−1 is average of si for securities inportfolio p, where si are computed for the same period as βi .
The month-by-month OLS estimates of γit , i = 0, 1, 2, 3 for the4-year period 1979–1982 are the inputs for testing the CAPMagainst the enhanced model in (43).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
CRSP NYSE data (Jan 1970 through Dec 1982) with risk-free ratefrom French’s data base.
. use ../data/nyse, clear
(NYSE (exchcd = 1) common stocks (shrcd == 10 or 11) monthly observations)
replace ret = 100*ret // percent returns
// NYSE Monthly rebalanced equally weighted index returns
sort yrm
by yrm : egen rm = mean(ret) // monthly rebalanced equally weighted index
sort permno yrm
. list yrm permno ret rm rf in 1/5 , clean
yrm permno ret rm rf
1. 1970m1 10006 -5.35714291 -5.632958 .6
2. 1970m2 10006 5.06738536 5.282691 .62
3. 1970m3 10006 2.33766232 -.9540051 .57
4. 1970m4 10006 -7.61421323 -13.07426 .5
5. 1970m5 10006 -14.0659347 -8.885833 .53
keep if yrm <= ym(1983, 12) // keep only data to the end of test period
gen re = ret - rf // excess returns
gen rme = rm - rf // equally weighted portfolio excess return
keep yrm permno ret re rm rme // keep only what is needed
order yrm permno ret rm re rme // order for convenience
save _nyse // temporary work file to be erased
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Produce number of stocks statistics equivalent of Table 1 inFama-MacBeth
. use _nyse, clear
. sort permno yrm
. duplicates drop permno, force
Duplicates in terms of permno
(216182 observations deleted)
. displ "Number of securities available: " _N
Number of securities available: 1985
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
. // compute number of observations fulfilling data requirement: a security
. // available in the first month of a testing period must have data for all
. // 5 years of the preceding estimation period and for at least
. // 4 years of the portfolio formation period, i.e. at least 9*12 + 1 = 109 months
. use _nyse, clear
(NYSE (exchcd = 1) common stocks (shrcd == 10 or 11) monthly observations)
. keep if yrm <= ym(1980, 12) // end of the first testing period year
(50611 observations deleted)
. drop if missing(re)
(677 observations deleted)
. save _tmp, replace
. keep if yrm >= ym(1975, 1) & yrm <= ym(1980, 1) // estimation period and first test period month
(96382 observations deleted)
. by permno : egen cnt = count(permno)
. drop if cnt < 61 // keep only series that have no missing observations in estimation period
(15907 observations deleted)
. gen testmok = 1
. keep permno testmok
. duplicates drop
Duplicates in terms of all variables
. keep if (_merge == 3) & (testmok == 1) // valid estimation period data
(35826 observations deleted)
. drop _merge
. order yrm // for convenience
. sort permno yrm
. // check data for porfolio formation period
. by permno : egen cnt = count(permno) if yrm < ym(1980, 1)
(13798 missing values generated)
. drop if cnt <= 9*12 // for portfolio formation there must be also available
(16861 observations deleted)
. // at least 4 years data for the portfolio formation period
. drop cnt
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
. by permno : egen cnt = count(permno) // do the rest of dropping too short series
. drop if cnt <= 12
(2230 observations deleted)
. drop cnt
. save _tmp, replace // temporary work file
. duplicates drop permno, force
Duplicates in terms of permno
(127582 observations deleted)
. displ "Number of securities meeting data requirement: " _N
Number of securities meeting data requirement: 977
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Table: Portfolio formation, estimation, and testing period
Period
Portfolio formation 1970–1974Initial estimation 1975–1979Testing period 1980–1983
No. of securities available 1985No. of securities meeting
data requirement 977
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Estimate market model betas for the portfolio formation period.
Stata statsby is useful here (see help statsby).
Note: statsb replaces data in memory by the statistics. Thus,Stata requires that the current data is saved first.
// STEP1: estimate betas for the porfolio formation
// (1.a) generate beta coefficients from the portfolio formation period 1970--1973
. use _tmp, clear
(NYSE (exchcd = 1) common stocks (shrcd == 10 or 11) monthly observations)
. statsby _b , by(permno) : reg re rme if yrm <= ym(1974, 12)
. list in 1/5, clean
permno _b_rme _b_cons
1. 10006 .7603728 .4764629
2. 10057 .8903054 -.619877
3. 10137 .5925678 .1209494
4. 10145 .8275435 1.354215
5. 10153 .958145 -.8215175
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
sort _b_rme
gen pf20 = int(20*(_n - 1) / _N) + 1 // indicators of beta size portfolios
keep permno pf20
save _sizepf70_74 // temporary file with permno and size indicators of the stock
list in 1/3, clean noobs
permno pf20
12319 1
25478 1
11690 1
list in -3/l, clean noobs
permno pf20
29663 20
45233 20
51086 20
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Estimation period betas and residual standard deviations and theirannual updates.
// (1.b) estimate betas and residual standard errors for the estimation
// periods 1975--1979, 1975--1980, 1975--1981, 1975--1982
// Note: we estimate the statistics for all series whether or not they satisfy the data
// requirements. We later drop those out that do not.
forvalues y = 1979(1)1982 {
use _nyse, clear
statsby _b se = e(rmse), by(permno) : ///
reg re rme if yrm >= ym(1975, 1) & yrm <= ym(‘y’, 12)
rename (_b_rme _eq2_se) (bm‘y’ se‘y’)
drop _b_con*
if(‘y’ == 1979) {
save _betas, replace // temporary file to save betas
}
else {
merge 1:1 permno using _betas
drop _merge
save _betas, replace
}
}
list in 1/5, clean
list in -5/L, clean
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Here are the generated betas and residual standard deviations
. list in 1/5, clean
permno bm1982 se1982 bm1981 se1981 bm1980 se1980 bm1979 se1979
1. 10006 .8795421 5.324085 .9019373 5.241346 .9237699 5.028825 .8614 4.524191
2. 10014 1.459297 13.04361 1.459297 13.04361 1.459297 13.04361 1.459297 13.04361
3. 10057 .9608358 8.011134 1.002822 8.050616 .9948581 8.347406 .9362952 7.564348
4. 10102 1.047189 7.346765 1.047189 7.346765 1.047189 7.346765 1.047189 7.346765
5. 10137 .5421037 5.403534 .5602105 5.468787 .584545 5.647153 .6474323 5.553326
. list in -5/L, clean
permno bm1982 se1982 bm1981 se1981 bm1980 se1980 bm1979 se1979
1801. 64573 . . . . . . . .
1802. 64581 . . . . . . . .
1803. 64610 . . . . . . . .
1804. 68195 1.4253 8.474117 1.408874 8.091972 1.497947 7.933659 1.58615 7.499249
1805. 68523 2.849449 16.47941 2.849449 16.47941 2.849449 16.47941 2.849449 16.47941
There are some missing data which will be handled later.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Attach the portfolio indicator to each stock and drop stocks thatdo not meet the data requirement, i.e., are not assigned to anyportfolio.
merge 1:1 permno using _sizepf70_74 // merge portfolio indicators into beta file
keep if _merge == 3 // keep only secutities meeting the initial data requirement
drop _merge
sort pf20
list in 1/5, clean
list in -5/L, clean
save _betas, replace
list in 1/5, clean
permno bm1982 se1982 bm1981 se1981 bm1980 se1980 bm1979 se1979 pf20
1. 21821 .6127205 5.90254 .6307797 5.64254 .6611778 5.602359 .6148231 5.142656 1
2. 27254 .6301314 6.845308 .5643887 6.997822 .5079333 6.812625 .4116281 5.813202 1
3. 34323 .3590286 4.419133 .3590286 4.419133 .3590286 4.419133 .3628268 4.041737 1
4. 11850 .4913562 4.50945 .4808856 4.573926 .4844347 4.407802 .4196905 3.802679 1
5. 22859 .4873369 5.020874 .5171595 4.929908 .5538918 4.895496 .6125267 4.852383 1
list in -5/L, clean
permno bm1982 se1982 bm1981 se1981 bm1980 se1980 bm1979 se1979 pf20
973. 44783 1.747275 9.331849 1.713582 9.304095 1.683159 9.375896 1.748576 9.580799 20
974. 27879 1.577752 12.75185 1.504913 13.0873 1.656519 12.32928 1.770306 13.06201 20
975. 10874 1.053696 9.706055 1.111093 7.830503 1.110862 7.502835 1.166138 7.211953 20
976. 41486 2.078249 11.52846 2.184388 11.80164 2.230703 12.30852 2.372094 12.81486 20
977. 41072 1.585226 10.16582 1.569643 10.70366 1.611185 11.35095 1.649102 11.65866 20
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
The next step is to merge the betas, residual standard deviations,and portfolio indicators to the return data.
// merge betas and residual standard deviations to the
// to the original stock return data in _nyse.dta that covers portffolio formation period,
// estimation period, and test period returns
merge 1:m permno using _nyse
keep if _merge == 3
drop _merge
order yrm permno pf20 re rme bm1979 bm1980 bm1981 bm1982 se1979 se1980 se1981 se1982
sort permno yrm pf20
save _nyseb, replace // save the file for convenience in a new temporary file
list yrm permno pf20 re rme bm1979 se1979 bm1980 se1980 in 1/5, clean
yrm permno pf20 re rme bm1979 se1979 bm1980 se1980
1. 1970m1 10006 7 -5.957143 -6.232958 .8614 4.524191 .9237699 5.028825
2. 1970m2 10006 7 4.447385 4.662691 .8614 4.524191 .9237699 5.028825
3. 1970m3 10006 7 1.767662 -1.524005 .8614 4.524191 .9237699 5.028825
4. 1970m4 10006 7 -8.114213 -13.57426 .8614 4.524191 .9237699 5.028825
5. 1970m5 10006 7 -14.59593 -9.415833 .8614 4.524191 .9237699 5.028825
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Produce sample statistics equivalent to Table 2 in Fama MacBethfor the first estimation period.
(a) Portfolio-wise average betas, their standard deviations, andaverage market model residual standard deviations: βp,t−1,s(βp,t−1), and sp,t−1(εi ), p = 1, . . . , 20.
use _nyseb, clear
drop if yrm < ym(1974, 1) | yrm > ym(1979, 12) // keep only the initial estimation period data
sort pf20 yrm
by pf20 yrm : egen rpe = mean(re) // rebalanced equally weighted portfolio (excess)
// returns
keep permno yrm pf20 rpe rme bm1979 se1979 pf20 // keep only relevant data for the sample stats
save _tmp, replace // save to a temporary file
by pf20 : egen bm79 = mean(bm1979) // portfolio wise mean betas
by pf20 : egen sb79 = sd(bm1979) // standard deviations of portfolio betas
by pf20 : egen bar_se79 = mean(se1979)
keep pf20 bm79 sb79 bar_se79 // keep only the portfolio-wise sample staistics
duplicates drop
save _stat, replace // save results to temporary _stat file
list in 1/3, clean noobs
pf20 bm79 sb79 barse79
1 .538303 .1591162 5.156752
2 .5576272 .1618077 5.019789
3 .6401169 .1985746 5.687965
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
(b) r(Rp,Rm)2 and residual standard errors, s(εp), of the marketmodels of the portfolio returns Rp = αp + βpRm + εp,p = 1, . . . , 20.
use _tmp, clear
drop bm1979 se1979 // not needed any more in sample stat computations
duplicates drop pf20 yrm, force
save _tmp, replace
statsby r2 = e(r2) sep = e(rmse) , by(pf20) : reg rpe rme
// squared corr(Rp,Rm) and residual standard
// error of regression Rp = a + b Rm + ep
merge 1:1 pf20 using _stat // merge to the stat file
drop _merge
save _stat, replace
list in 1/3, clean noobs
pf20 r2 sep bm79 sb79 barse79
1 .7379692 2.167871 .538303 .1591162 5.156752
2 .787424 1.980086 .5576272 .1618077 5.019789
3 .8571319 1.781868 .6401169 .1985746 5.687965
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
(c) Standard deviations s(Rp) of the portfolio returns Rp,p = 1, . . . , 20.
use _tmp, clear
statsby sdrpe = r(sd) , by(pf20) clear : summ rpe
// generate next standard deviations of portfolio returns
merge 1:1 pf20 using _stat // merge to _stat
drop _merge
gen sep_per_barse79 = sep / barse79
order pf20 bm79 sb79 r2 sdrpe sep barse79 sep_per_barse79 // match the ordering of the table
save _stat, replace
list in 1/3, clean noobs
pf20 bm79 sb79 r2 sdrpe sep barse79 sep_p~79
1 .538303 .1591162 .7379692 4.205107 2.167871 5.156752 .4203947
2 .5576272 .1618077 .787424 4.264291 1.980086 5.019789 .3944561
3 .6401169 .1985746 .8571319 4.680882 1.781868 5.687965 .3132698
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
The table below summarizes the results from steps (a) to (c) of the Stata
results for the estimation period 1975–1979.
Portfolio sample statistics for the estimation period 1975–1979
PortfolioStat 1 2 3 4 5 6 7 8 9 10
βp,t−1 0.54 0.56 0.64 0.62 0.70 0.77 0.72 0.79 0.87 0.83
s(βp,t−1) 0.16 0.16 0.20 0.23 0.27 0.27 0.26 0.25 0.32 0.21
r(Rp , Rm)2 0.74 0.79 0.86 0.86 0.89 0.94 0.87 0.91 0.93 0.94s(Rp) 4.21 4.26 4.68 4.73 4.97 5.37 5.30 5.58 5.95 5.70s(εp) 2.17 1.98 1.78 1.81 1.66 1.37 1.91 1.72 1.58 1.39sp,t−1(εi ) 5.16 5.02 5.69 6.59 6.72 7.02 6.52 6.33 7.34 7.02s(εp)/sp,t−1(εi ) 0.42 0.39 0.31 0.28 0.25 0.19 0.29 0.27 0.21 0.20
PortfolioStat 11 12 13 14 15 16 17 18 19 20
βp,t−1 0.90 0.95 1.02 0.97 1.03 1.03 1.19 1.25 1.33 1.67
s(βp,t−1) 0.25 0.30 0.27 0.35 0.33 0.35 0.36 0.37 0.37 0.46
r(Rp , Rm)2 0.96 0.96 0.97 0.97 0.95 0.95 0.97 0.96 0.96 0.94s(Rp) 6.04 6.41 6.89 6.46 7.05 7.08 8.01 8.41 9.06 11.31s(εp) 1.26 1.36 1.24 1.09 1.57 1.62 1.30 1.70 1.79 2.89sp,t−1(εi ) 7.27 8.06 7.58 7.96 8.65 8.45 9.36 9.88 10.19 11.28s(εp)/sp,t−1(εi ) 0.17 0.17 0.16 0.14 0.18 0.19 0.14 0.17 0.18 0.26
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
STEP 2: Fama-MacBeth cross-sectional regressions// STEP 2: Second stage regressions
use _nyseb, clear
drop if yrm < ym(1980, 1) | yrm > ym(1983, 12) // the four year test period
// drop smb hml mmrf // these are not needed any more
save _tmp, replace
// generate portfolios
sort pf20 yrm
by pf20 yrm : egen rpe = mean(re)
by pf20 yrm : egen retp = mean(ret)
by pf20 yrm : egen bm79 = mean(bm1979) // betas in the 1979 regressions
by pf20 yrm : egen bm80 = mean(bm1980) // updated betas in the 1980 regressions
by pf20 yrm : egen bm81 = mean(bm1981) // updated betas in the 1981 regressions
by pf20 yrm : egen bm82 = mean(bm1982) // updated betas in the 1982 regressions
by pf20 yrm : egen bm79sq = mean(bm1979^2) // average squared betas
by pf20 yrm : egen bm80sq = mean(bm1980^2)
by pf20 yrm : egen bm81sq = mean(bm1981^2)
by pf20 yrm : egen bm82sq = mean(bm1982^2)
by pf20 yrm : egen se79 = mean(se1979) // std(res) in the 1979 regressions
by pf20 yrm : egen se80 = mean(se1980)
by pf20 yrm : egen se81 = mean(se1981)
by pf20 yrm : egen se82 = mean(se1982)
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
STEP 2: Fama-MacBeth cross-sectional regressions (continues)
// generate beta, beta squared, and se series to facilitate regressions
gen beta = (yrm <= ym(1980, 12))*bm79 + (yrm >= ym(1981, 1) & yrm <=ym(1981, 12))*bm80 ///
+ (yrm >= ym(1982, 1) & yrm <=ym(1982, 12))*bm81 ///
+ (yrm >= ym(1983, 1) & yrm <=ym(1983, 12))*bm82
gen beta2 = (yrm <= ym(1980, 12))*bm79sq + (yrm >= ym(1981, 1) & yrm <=ym(1981, 12))*bm80sq ///
+ (yrm >= ym(1982, 1) & yrm <=ym(1982, 12))*bm81sq ///
+ (yrm >= ym(1983, 1) & yrm <=ym(1983, 12))*bm82sq
gen se = (yrm <= ym(1980, 12))*se79 + (yrm >= ym(1981, 1) & yrm <=ym(1981, 12))*se80 ///
+ (yrm >= ym(1982, 1) & yrm <=ym(1982, 12))*se81 ///
+ (yrm >= ym(1983, 1) & yrm <=ym(1983, 12))*se82
keep yrm pf20 rpe retp beta* se
duplicates drop
sort yrm pf20
save _tmp , replace
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
STEP 2: Fama-MacBeth cross-sectional regressions (continues)
// estimate monthly factor risk-premia
statsby _b _se s = e(rmse) r2 = e(r2), by(yrm) : reg retp beta beta2 se
format %tm yrm
sort yrm
// rename and label variables to improve readability of the reported results
rename _b_cons gamma0
rename _b_beta gamma1
rename _b_beta2 gamma2
rename _b_se gamma3
label var gamma0 "Intercept term"
label var gamma1 "Market beta"
label var gamma2 "Market beta squared"
label var gamma3 "Residual standard deviation"
label var yrm "Month"
rename _se_cons se_gamma0
rename _se_beta se_gamma1
rename _se_beta2 se_gamma2
rename _se_se se_gamma3
label var se_gamma0 "se(gamma0)"
label var se_gamma1 "se(gamma1)"
label var se_gamma2 "se(gamma2)"
label var se_gamma3 "se(gamma3)"
rename _eq2_s s_res
label var s_res "s(residual)"
rename _eq2_r2 rsq
label var rsq "R-square"
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
STEP 2: Fama-MacBeth cross-sectional regressions (continues)
order yrm gamma0 gamma1 gamma2 gamma3 se_gamma0
sort yrm
label data "CAPM estimates Rp-Rf = gamma0 + gamma1 beta + gamma2 beta^2 + gamma3 std(uhat)"
save ../data/ffbetas1980excess, replace // save the results
// clean up
rm _betas.dta
rm _nyseb.dta
rm _nyse.dta
rm _sizepf70_74.dta
rm _stat.dta
rm _tmp.dta
// print results
tabstat gamma0 gamma1 gamma2 gamma3 rsq, statistics( mean sd semean min max ) format(%9.3f)
stats | gamma0 gamma1 gamma2 gamma3 rsq
---------+--------------------------------------------------
mean | 1.153 2.431 -0.537 -0.118 0.482
sd | 8.001 17.385 6.086 0.792 0.264
se(mean) | 1.155 2.509 0.878 0.114 0.038
min | -20.212 -35.863 -13.576 -1.949 0.041
max | 26.711 46.272 14.445 2.218 0.862
------------------------------------------------------------
There is a huge variation in γ1 with range (−35.9, 46.3)!
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
Panel A summarizes the above results and Panel B summarizes rolling
estimation results for 1980–2009 (details discussed in class room).
Results for regression Rp − Rf = γ0t + γ1t βp + γ2t β2p + γ3t sp + ηpt
Stat γ0 γ1 γ2 γ3 R2
Panel A: Test 1980–1983 (48 mths). Estimation 1975–1979.
mean 1.153 2.431 -0.537 -0.118 0.482sd 8.001 17.385 6.086 0.792 0.264se(mean) 1.155 2.509 0.878 0.114 0.038t(mean) 0.998 0.969 -0.612 -1.035 . . .min -20.212 -35.863 -13.576 -1.949 0.041max 26.711 46.272 14.445 2.218 0.862
Panel B: Test 1980–2009 (360 mths). Rolling estimation per.
mean 0.310 0.882 -0.262 -0.016 0.470sd 8.989 15.505 7.344 0.961 0.224se(mean) 0.474 0.817 0.387 0.051 0.012t(mean) 0.654 1.080 -0.677 -0.314 . . .min -41.852 -66.663 -34.480 -3.739 0.002max 27.768 62.564 38.151 4.040 0.974
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Cross-sectional regression
The rolling estimation period method methodology is:
Form 20 βit ranked portfolios using the first 60 months fromthe 120 months up to month t − 1
Obtain OLS βits using 60 months up to month t − 1 andcompute portfolio betas βpt
Run the regression (44)
Compute the sample means ¯γk , k = 0, 1, 2, 3 over the months.
For a Stata implementation, see fm rolling capm.do
Results are given in Panel B in
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
GMM approach
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Modern asset empirical asset pricing relies on generalized methodof moments (GMM).
The advantage of this approach over the FM-method andMaximum Likelihood (not dealt with here) is that GMM allows forconditional heteroscedasticity, serial correlation, and non-normaldistribution.
The general form of GMM is the following. Let ht(θ) be a (vectorvalued) function such that
E[ht(θ)] = 0 (45)
gives the moment conditions of the model we are interested in,where θ includes the parameters of the model.
In finance ht(θ) derives typically from an asset pricing model andcan often be interpreted as pricing errors.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
For example, the simple regression model yt = β0 + β1xt + ut ,t = 1, . . . ,T , involves in particular the conditions E[ut ] = 0 andcov[ut , xt ] = 0.
Thus setting θ = (β0, β1)′ and noting thatcov[ut , xt ] = E[(yt − β0 − β1xt)xt ], we can define
ht(θ) =
(yt − β0 − β1xt
(yt − β0 − β1xt)xt
)= ut(θ)zt (46)
where ut(θ) = yt − β0 − β1xt , zt = (1, xt)′. Generally variables in
zt are called instruments and define the orthogonality conditions orrestrictions of the model.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
The empirical moments are
gT (θ) =1
T
T∑t=1
ht(θ). (47)
The objective is to choose θ such that the empirical moments areas close as possible to zero. If there are equally many parametersas equations in (47) then (called exactly identified) θ can besolved from the system.
If there are more equations (i.e., moment conditions) thanparameters, we say that the model is over identified and we try tofind a solution that satisfies all the moment conditions as closely aspossible.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
This amounts to selecting the GMM estimator θ of θ such that
θ = arg minθ
gT (θ)′WTgT (θ), (48)
where WT is a positive definite weighting matrix. Theoretically theoptimal weighting matrix is the inverse of the covariance matrix
S =∞∑
j=−∞E[ht(θ)ht−j(θ)′
], (49)
which must be estimated in a suitable manner in practice. S iscalled the long run covariance matrix of the moment conditions.
If there are more parameters than moment conditions the problemis under identified and no unique solution exists.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
The appeal of GMM derives from the fact that under fairly generalconditions θ → θ (in probability) and the asymptotic distributionof θ is normal.
That is, under fairly general conditions, θ is a consistent estimatorof θ and its sampling distribution is asymptotically normal.
Also√ThT (θ) ∼ N(0,S) asymptotically, which implies that
TgT (θ)′S−1gT (θ) ∼ χ2r asymptotically, where r is the degrees of
freedom equalling number of rows (moment conditions) in thevector hT (θ).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Replacing θ and S by their estimators we have in theover-identified case we have the J-statistic
J = TgT (θ)′WgT (θ) ∼ χ2r−k (asymptotically), (50)
where k < r is the number of estimated parameters and W = S−1.
The J-statistic can be used as a goodness-of-fit measure to testwhether the estimated model satisfies the imposed momentconditions.
Many software packages, including Stata, allows for testing alsoindividual moment conditions to identify which restrictions are notsupported by the data.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Continuing the simple regression example, given T observations,the empirical moment conditions are
gT (β0, β1) =1
T
T∑t=1
(yt − β0 − β1xt
(yt − β0 − β1xt)xt
)(51)
or
gT (β0, β1) =
(y − β0 − β1x
sxy − β0x − β1sxx
)(52)
where y and x are the sample means and
sxy =1
T
T∑t=1
xtyt and sxx =1
T
T∑t=1
x2t .
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Setting (52) to zero, yields two (linear) equations and twounknown parameters, i.e., we have the exactly identified case witha solution that is the same as the OLS.
An excellent reference of GMM estimation in finance is Cochrane(1985) [(1981)].
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
In order to illustrate the approach, consider the single parameterCAPM (Shanken and Zhou 2007, 84(1) 40–48 JFE).
E[Rit ] = γ0 + γ1E[(Ri − µi )(Rm − µm)]
σ2m
, (53)
where µi = E[Ri ], µm = E[Rm], and σ2m = E
[(Rm − µm)2
],
i = 1, . . . , n.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
These imply the following 2(n + 1) moment conditions
E
Rit − µiRmt − µm(Rmt − µm)2 − σ2
m
Rit − γ0 − γ1(Rit−µi )(Rmt−µm)
σ2m
= 0. (54)
i = 1, . . . , n
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
The empirical moments are
gT (µi ) =1
T
T∑t=1
(Rit − µi ) (55)
gT (µm) =1
T
T∑t=1
(Rmt − µm) (56)
gT (µm, σ2m) =
1
T
T∑t=1
((Rmt − µm)2 − σ2
m
)(57)
gT (θ1,i ,θ2) =1
T
T∑t=1
(Rit − γ0 − γ1
(Rit − µi )(Rmt − µm)
σ2m
)(58)
where θ1,i = (µi , µm, σ2m) and θ2 = (γ0, γ1).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Setting the empirical moments equal to zero for the first n + 2moments in (55), (56), and (57), there are n + 2 unknownparameters that can be solved to give
µi = Ri =1
T
T∑t=1
Rit (59)
µm = Rm =1
T
T∑t=1
Rmt (60)
σ2m =
1
T
T∑t=1
(Rmt − µm)2, (61)
i = 1, . . . , n.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
In the second step we plug these estimates into θi ,1 to get
θi ,1 = (Ri , Rm, σ2m) and given θi ,1 estimate γ0 and γ1 using the n
moment conditions given in equation (58) (Shanken and Zhou2007 call this approach GMM2, see also Goyal (2012)).
In spite of this we will use all moment conditions in the followingStata implementation.
It is notable that we have 2(n + 1) moment conditions and n + 4unknown parameter, such that the problem is over identified.
Before going to the estimation, let us look the general Statasyntax.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Stata has very general GMM estimation options including paneldata (see Stata manual [R]).
The general syntax is
gmm ([eqname1 :] <mexp1 >) ([eqname2 :] <mexp2 >). . .[if] [in] [weight] [, options]
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Example: Consumption CAPM
Consider the following SDF model
E[β(1 + rt+1) (ct+1/ct)
−γ] = 1 (62)
where ct is consumption and rt return on an asset.The implied moment condition is
ut(β, γ) = 1− β{
(1 + rt+1)(ct+1/ct)−γ} (63)
Using time series data (tsset), the Stata command would be forthe moment condition
gmm ( 1 - {beta}*((1 + F.r)*(F.c/c)^(-1*{gamma})) ) · · ·
Estimated parameters are enclosed in braces (e.g., {beta}).
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
In this example we generate 20 monthly balanced equally weightedbeta portfolios as in the FM rolling example. I.e., betas areestimated from 60 months period ending at t − 1, firms areclassified to 20 size beta portfolios and month t portfolio returnsare the averages of the associated stocks.
// fm_gmm_capm.do
// GMM analysis of CAPM (data as in Fama-MacBeth 20 beta portfolio example
// Rolling updates of estimated beta portfolios
// (a) estimation period of betas consists of months t - 60 to t - 1
// (b) monthly balanced equally weighted portfolio for period from t to t + hldng - 1
// Data must be available for all of the estimation period months and at least minobs months
// in the beta estimation period.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
global estpl = 60 // estimation period
global betaupd = 12 // beta updating frequency
global minobs = 41
global fmnth = ym(1980, 1)
global lmnth = ym(2009, 12) - $betaupd + 1
// compute 20 rolling beta portfolios by estimating betas from the period of
// 60 months ending to month t-1 and sort securities into 20 portfolios in month t
forvalues lmm = $fmnth ($betaupd) $lmnth {
global mm = ‘lmm’
displ "Coefficients for " $estpl " months in period: " %tm $mm-$estpl " -- " %tm $mm-1
// compute number of observations fulfilling data requirement: a security
// available for month t and at leas $minobs years in the period ending month t
// i.e., $minobs*12 + 1 months
qui use _nyse, clear
qui drop if missing(re)
quietly keep if yrm >= ($mm - $estpl) & yrm <= $mm + $betaupd - 1 // sample period ending
// at the test month
quietly save _tmp, replace
qui keep if yrm <= $mm
by permno : egen cnt = count(permno)
qui drop if cnt < $minobs // keep only those that have potentially
// the minimum number of observations
qui keep if yrm == $mm
gen testm = 1
quietly keep permno testm
qui merge 1:m permno using _tmp // mark those series that are available for the test month
qui keep if _merge == 3 & (testm == 1) // remove series that are not available for the test month
// or have missing observations on the estimation period
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
sort pf20 yrm
save _pfretfile
keep if pf20 == 1
rename rpe r1 // for easy reference, rename
keep yrm rme r1
save _ff, replace
forvalues i = 2/20 {
use if pf20 == ‘i’ using _pfretfile, clear
keep yrm rpe
rename rpe r‘i’
sort yrm
merge 1:1 yrm using _ff
drop _merge
save _ff, replace
}
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
drop testm _merge
sort permno yrm
quietly save _tmp, replace // temporary work file
qui statsby _b , by(permno) : reg re rme if yrm < $mm
sort _b_rme // sort by beta to define 20 portfolios
gen pf20 = int(20*(_n - 1) / _N) + 1 // indicators of the 20 beta size portfolios
keep permno pf20
qui quietly save _sizepf, replace // temporary file with permno and size indicators of the stock
qui quietly merge 1:m permno using _tmp // merge portfolio indicators into beta file
drop if yrm < $mm
drop _merge
sort pf20 yrm
by pf20 yrm : egen rpe = mean(re)
by pf20 yrm : egen rp = mean(ret)
keep yrm pf20 rpe rp rme rm
qui duplicates drop
keep pf20 yrm rpe rme
order yrm
if $mm > $fmnth {
append using _pfretfile
}
save _pfretfile, replace
}
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
use _ff, clear
gmm (r1 - {m1}) (r2 - {m2}) (r3 - {m3}) (r4 - {m4}) (r5 - {m5}) /// Stock mean equations
(r6 - {m6}) (r7 - {m7}) (r8 - {m8}) (r9 - {m9}) (r10 - {m10}) ///
(r11 - {m11}) (r12 - {m12}) (r13 - {m13}) (r14 - {m14}) (r15 - {m15}) ///
(r16 - {m16}) (r17 - {m17}) (r18 - {m18}) (r19 - {m19}) (r20 - {m20}) ///
(rme - {me}) /// Market mean
((rme - {me})^2 - {sigma2m = 1}) /// Market variance
(r1 - {gam0} - {gam1} * (r1 - {m1})*(rme - {me}) / {sigma2m}) /// Beta equations
(r2 - {gam0} - {gam1} * (r2 - {m2})*(rme - {me}) / {sigma2m}) ///
(r3 - {gam0} - {gam1} * (r3 - {m3})*(rme - {me}) / {sigma2m}) ///
(r4 - {gam0} - {gam1} * (r4 - {m4})*(rme - {me}) / {sigma2m}) ///
(r5 - {gam0} - {gam1} * (r5 - {m5})*(rme - {me}) / {sigma2m}) ///
(r6 - {gam0} - {gam1} * (r6 - {m6})*(rme - {me}) / {sigma2m}) ///
(r7 - {gam0} - {gam1} * (r7 - {m7})*(rme - {me}) / {sigma2m}) ///
(r8 - {gam0} - {gam1} * (r8 - {m8})*(rme - {me}) / {sigma2m}) ///
(r9 - {gam0} - {gam1} * (r9 - {m9})*(rme - {me}) / {sigma2m}) ///
(r10 - {gam0} - {gam1} * (r10 - {m10})*(rme - {me}) / {sigma2m}) ///
(r11 - {gam0} - {gam1} * (r11 - {m11})*(rme - {me}) / {sigma2m}) ///
(r12 - {gam0} - {gam1} * (r12 - {m12})*(rme - {me}) / {sigma2m}) ///
(r13 - {gam0} - {gam1} * (r13 - {m13})*(rme - {me}) / {sigma2m}) ///
(r14 - {gam0} - {gam1} * (r14 - {m14})*(rme - {me}) / {sigma2m}) ///
(r15 - {gam0} - {gam1} * (r15 - {m15})*(rme - {me}) / {sigma2m}) ///
(r16 - {gam0} - {gam1} * (r16 - {m16})*(rme - {me}) / {sigma2m}) ///
(r17 - {gam0} - {gam1} * (r17 - {m17})*(rme - {me}) / {sigma2m}) ///
(r18 - {gam0} - {gam1} * (r18 - {m18})*(rme - {me}) / {sigma2m}) ///
(r19 - {gam0} - {gam1} * (r19 - {m19})*(rme - {me}) / {sigma2m}) ///
(r20 - {gam0} - {gam1} * (r20 - {m20})*(rme - {me}) / {sigma2m}) , ///
winit(identity)
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Estimates of the market risk premium (γ1) and pricing error (γ0).Only the estimate of the pricing error is statistically significant!Thus, in the light of this analysis, beta does not seem to do its job.
Number of obs = 360
-----------------------------------------------------
| Robust
| Coef. Std. Err. z P>|z|
-------------+---------------------------------------
/me | 0.737 0.279 2.64 0.008
/sigma2m | 28.692 3.457 8.30 0.000
/gam0 | 0.452 0.185 2.44 0.015
/gam1 | 0.316 0.335 0.94 0.346
-----------------------------------------------------
For comparison, below are also results of the two-stage regression
Number of obs = 20
------------------------------------------------------
mean | Coef. Std. Err.* t P>|t|
-------------+----------------------------------------
_cons | 0.520 0.206 2.52 0.036
beta | 0.278 0.349 0.79 0.450
------------------------------------------------------
* adjusted standard errors
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Numerical results differ, but qualitatively the results are consistent.The bottom line is that GMM adjusts the standard errors, whilecross-sectional regressions they must be explicitly adjusted.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
To close this GMM part, let us return back to the time seriestesting, i.e., testing the zero-beta hypothesis in (27), which impliesthe non-linear restrictions in (31) on the intercept term inregression (30).
GMM, which ’only’ assumes the existence of relevant moments.
The zero-beta hypothesis in (27) implies that to each regressionequation the following moment conditions
E[rit − γ0 − β′i (ft − ιγ0)
]= 0 (64)
E[(rit − γ0 − β′i (ft − ιγ0)
)ft]
= 0, (65)
where β′i is the ith row of B, i = 1, . . . ,N.
The first condition is due to the zero-beta hypothesis and thesecond one is due to the technical modeling condition that theerror term uit = rit − γ0 − β′i (ft − ιγ0) does not correlate with theexplanatory variable.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
We may note that the GMM moment conditions for regression(24) are (’OLS moment conditions’)
E[(rit − αi − β′i ft)ft
]= 0, (66)
i = 1, . . . ,N.Thus the zero-beta hypothesis implies N − 1 restrictions on theseOLS conditions, such that we have in the GMM testing N − 1degrees of freedom.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Using Stata gmm, we explicitly define the moment conditions, forexample as follows: As in the non-linear least squares, parametersto be estimated are in braces ({ }).
gen rm = mmrf + rf // market return
// gmm moment conditions for the zero beta model
gmm (dcl1 - {gamma0} - {b1}*(rm - {gamma0}) - {s1}*(smb - {gamma0}) - {h1}*(hml - {gamma0})) ///
(dcl2 - {gamma0} - {b2}*(rm - {gamma0}) - {s2}*(smb - {gamma0}) - {h2}*(hml - {gamma0})) ///
(dcl3 - {gamma0} - {b3}*(rm - {gamma0}) - {s3}*(smb - {gamma0}) - {h3}*(hml - {gamma0})) ///
(dcl4 - {gamma0} - {b4}*(rm - {gamma0}) - {s4}*(smb - {gamma0}) - {h4}*(hml - {gamma0})) ///
(dcl5 - {gamma0} - {b5}*(rm - {gamma0}) - {s5}*(smb - {gamma0}) - {h5}*(hml - {gamma0})) ///
(dcl6 - {gamma0} - {b6}*(rm - {gamma0}) - {s6}*(smb - {gamma0}) - {h6}*(hml - {gamma0})) ///
(dcl7 - {gamma0} - {b7}*(rm - {gamma0}) - {s7}*(smb - {gamma0}) - {h7}*(hml - {gamma0})) ///
(dcl8 - {gamma0} - {b8}*(rm - {gamma0}) - {s8}*(smb - {gamma0}) - {h8}*(hml - {gamma0})) ///
(dcl9 - {gamma0} - {b9}*(rm - {gamma0}) - {s9}*(smb - {gamma0}) - {h9}*(hml - {gamma0})) ///
(dcl10 - {gamma0} - {b10}*(rm - {gamma0}) - {s10}*(smb - {gamma0}) - {h10}*(hml - {gamma0})) ///
if yrm >= ym(1950,1), inst(rm smb hml) winit(identity) // two step GMM
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
Clip of the results
GMM estimation
Number of parameters = 31
Number of moments = 40
Initial weight matrix: Identity Number of obs = 792
GMM weight matrix: Robust
------------------------------------------------------------------------------
| Robust
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
/gamma0 | 0.051 0.015 3.29 0.001 0.021 0.081
/b1 | 0.929 0.016 56.94 0.000 0.897 0.961
/s1 | 1.222 0.031 39.58 0.000 1.161 1.282
/h1 | 0.339 0.032 10.46 0.000 0.276 0.403
/b2 | 1.011 0.009 106.91 0.000 0.992 1.029
/s2 | 1.107 0.017 65.36 0.000 1.074 1.140
/h2 | 0.213 0.021 10.36 0.000 0.173 0.254
(etc)
/b10 | 0.980 0.004 234.88 0.000 0.971 0.988
/s10 | -0.278 0.007 -38.77 0.000 -0.292 -0.264
/h10 | -0.058 0.007 -8.14 0.000 -0.072 -0.044
------------------------------------------------------------------------------
Instruments for equation 1: rm smb hml _cons
Instruments for equation 2: rm smb hml _cons
(etc)
Instruments for equation 10: rm smb hml _cons
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
GMM approach
The zero-beta portfolio return estimates to γ0 = 0.051% permonth compared to the average risk free rate of rf = 0.34% permonth on the sample period.
Test results for the null hypothesis (27), or H0 : α = (ι + Bι)γ0
can be obtained by the postestimation command estat overid,which gives
. estat overid // test for Zero-beta hypothesis
Test of overidentifying restriction:
Hansen’s J chi2(9) = 13.2326 (p = 0.1524)
that does not reject the null hypothesis.
Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Thanks!1 Testing Asset Pricing Models
Introduction
Testing Methodology
Time Series Regression testing
Example: Time Series Regression testing for FF ME decile portfolioswith risk-free asset exists
Example: Time Series Regression testing for FF ME decile portfolios:Zero-beta
Cross-sectional regression
Two-pass regression
Fama-MacBeth Rolling method
Fama-MacBeth Stata implementation
Monthly Rolling Fama-MacBeth
GMM approach
Thanks!Seppo Pynnonen Empirical Asset Pricing
Testing Asset Pricing Models
Thanks!
Thanks!
Seppo Pynnonen Empirical Asset Pricing