# CAPM: Testing for alphas jointly equal to zero

For my project, I need to assess if a certain factor X leads to a CAPM-Anomaly. First, I sorted the monthly stock return (sample size: 500+ observations) according to the X factor in 10 decile portfolios ("DP"). Afterwards, I performed for each decile portfolio a linear regression to evaluate if each alpha is significantly different from zero. The linear Regression for the i-th decile portfolio is: $$R_{i,t}-R^f_t = \alpha_i + \beta_i(R^m_t-R^f_t)+ \epsilon_{i,t}$$

Since I'm dealing with a time serie, I will adjust for heteroskedasticity and autocorrelation with the Newey-West (1987) correlation corrector with 6 lags.

Results: The decile portfolios DP1, DP2 have significant negative alphas and DP8, DP9, DP10 a significant positive alpha. However, I would primarily be interested if/not all alphas are jointly equal to zero. I already saw posts that discussed the GRS-Test proposed by Gibbons, Ross, and Shanken (1989) but this test has the major drawback that it assumes normally distributed uncorrelated homoskedastic error terms. Somebody mentioned a test with the Chi-Squared-Distribution but didn't elaborate what the assumptions were let alone how to perform it in R.

I would be so grateful if somebody would know a less restrictive test for evaluating if all alphas are jointly equal to zero. Specifically, I would be interested in the underlying assumptions of the test (preferably with a source) as well as the concrete code in R (if it doesn't causes too much inconvenience) :D

Here is the code which I have so far (for the first decile portfolio DP1)

library(sandwich)
library(lmtest)

#Performing Linear Regression
L1 <- lm(DP1 ~ MktRf, data = DATA)

#Building NeweyWest Covariance Corrector
NW_VCOV_L1 <- NeweyWest(L1, lag = 6, prewhite = F, adjust = T)

#Performing Covariance Test
coeftest(L1, vcov = NW_VCOV_L1)


which yields following Output

t test of coefficients:

Estimate  Std. Error t value  Pr(>|t|)
(Intercept) -0.00327902  0.00068035 -4.8196 1.799e-06 ***
MktRf        0.92165566  0.02334994 39.4714 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

• Have you seen the excellent answers by @Matthew Gunn, here and here? Apr 18 at 12:12