I am trying to wrap my head around the statement that time series regression should not be used for testing a factor model when the factor is not a return. This has been mentioned in multiple posts, and there are specific posts about that, too, e.g. this and this. Cochrane explains this at the end of section 12.2 of "Asset Pricing" (2005):

Most importantly, you can run the cross-sectional regression when the factor is not a return. The time-series test requires factors that are also returns, so that you can estimate factor risk premia by $\hat\lambda=E_T(f)$. The asset pricing model does predict a restriction on the intercepts in the time-series regression. Why not just test these? If you impose the restriction $E(R^{ei})=\beta_i^\top\lambda$ you can write the time-series regression $$ R_t^{ei}=a_i+\beta_i^\top f_t+\varepsilon_t^i, \quad\quad t=1,2,\dots,T \quad \text{for each} \ i\tag{12.9} $$ as $$ R_t^{ei}=\beta_i^\top\lambda+\beta_i^\top(f_t-E(f))+\varepsilon_t^i, \quad\quad t=1,2,\dots,T \quad \text{for each} \ i. $$ Thus, the intercept restriction is $$ a_i=\beta_i^\top(\lambda-E(f)). \tag{12.24} $$ This restriction makes sense. The model says that mean returns should be proportional to betas, and the intercept in the time-series regression controls the mean return. You can also see how $\lambda=E(f)$ results in a zero intercept. Finally, however, you see that without an estimate of $\lambda$, you cannot check this intercept restriction. If the factor is not a return, you will be forced to do something like a cross-sectional regression. (Emphasis is mine)

But why do we care whether $f$ is a return or not? For me, the crucial issue seems to be whether the risk premium is linear in $f$. (Not only affine, but also linear, so there is no level shift.) If it is, then by definition $\lambda=cE(f)$ for some $c\neq 0$. Then $$ E(R^{ei})=\beta_i^\top\lambda \ \longleftrightarrow \ E(R^{ei})=\frac{\beta_i^\top}{c}cE(f)=:\gamma_i^\top E(f) $$ and we are back to legitimate use of time series regression for testing the factor model by examining whether $a_i=0$ for each $i$ in $(12.9)$. That has nothing to do with whether $f$ is a return or not.


If this is correct, then the practical question is, when is the risk premium nonlinear in $f$? Could you provide an example of that? And would it not make sense to just redefine $f$ so that the risk premium becomes linear in it?

Update 1 (27 June 2023)

Here is an R script showing that the GRS test (which is based on time-series regressions) works just fine when the factor risk premium is linear in $f$ – even though the factor risk premium does not equal the expected value of the factor, $\lambda\neq E(f)$.

(You can run the script online and see the results for yourself at https://rdrr.io/snippets/. Just paste the script there, delete/comment the irrelevant lines following !!! and click "Run".)

data("data")  # Fama-French data: market's excess return and 25 portfolios (5x5, sorted on SMB and HML) 
data=data/100 # because original data was in percent

T=nrow(data)  # 630

Sigma=cov(data[,c(8:32,2)])    # empirical covariance matrix; the last column is the market, the other 25 columns are the portfolios

# !!! Choose one of the two following lines for H0 vs. H1:
alpha =rep(0,N+1)              # Jensen's alpha, in this case zero for all assets
set.seed(-1); alpha=runif(n=N+1,min=-0.01,max=0.01) # Jensen's alpha, in this case nonzero for all assets

beta_m=rep(NA,N+1); for(i in 1:(N+1)) beta_m[i]=Sigma[i,N+1]/Sigma[N+1,N+1] # actual betas from Fama-French data
mu_mte=rep(mean(data[,2]),T)   # expected value of market excess return, in this case time-constant and in line with Fama-French data

# !!! Choose one of the two following lines:
c=1 # factor risk premium is 1x its expected value; Cochrane says we can    use time-series regressions
c=3 # factor risk premium is 3x its expected value; Cochrane says we cannot use time-series regressions
# Generate a matrix of returns according to the CAPM in case of c=1 or 
# a no-name model in case of c=3 (normality is mainly for convenience):
set.seed(1); r_matrix=mvrnorm(n=T, mu=alpha+beta_m*mean(mu_mte)*c, Sigma=Sigma)

f_matrix=cbind(r_matrix[,N+1]) # factor return matrix for the function GRS.test()

# GRS test
result=GRS.test(r_matrix[,1:N],f_matrix); print(round(c(result$GRS.stat,result$GRS.pval),3)) 

# Individual t-tests and individual estimates of alphas and betas: 
# full dots ~ true, hollow circles ~ estimated
for(i in 1:N){ 
 m1=lm(r_matrix[,i]~f_matrix); print(summary(m1))
 true=c(alpha[i],beta_m[i]); estimated=as.numeric(m1$coef); ylim1=c(-0.05,2)
 plot(estimated,ylim=ylim1,xlab="",ylab=""); points(true,pch=19)
}; par(mfrow=c(1,1),mar=c(5.1,4.1,4.1,2.1))

Related question: GRS test does not reject a nonsense factor in place of the market factor. Short answer: the test lacks power.

Update 2 (30 June 2023)

Perhaps a concrete example would put me on track. Question 2: What would be a data generating process (DGP) implied by a factor model where
(i) the factor is not a return and
(ii) the risk premium does not equal the mean of the factor,
so that a time series based test of the asset pricing model fails?

I would like to simulate data from such a DGP and then apply the GRS test to see for myself that the test fails. The construction of the DGP may well reveal the real statistical/econometric issue with running time series regressions with factors that are not returns.

Update 3 (5 July 2023)

While I have now converged quite a bit to understanding why a time series regression cannot be used when the factor is not a return, I still have a puzzling example that is in line with my original point. The GRS test does not reject a scalar multiple of the market factor. Why is that? Follow the link to the question and find a simulation illustrating the point.

  • $\begingroup$ The linearity of risk premium w.r.t. $f$ would make more sense if risk premium were time varying, $\lambda_t$. Otherwise it is just a constant, $\lambda$. In any case, the issue seems to be whether we can scale the sensitivity $\beta_i$ and the risk premium by $\frac{1}{c}$ and $c$, respectively. $\endgroup$ Jun 8, 2023 at 19:03
  • $\begingroup$ Simple example. Let $F$ be: (1) a return series and (2) be an asset pricing factor that works in the sense of all alphas being zero. Now imagine $\tilde{F} = F + 1000$ (or indeed any affine transformation $\tilde{F} = c_1F + c_2$). Now the alphas are no longer zero. $\endgroup$ Jul 5, 2023 at 15:22
  • $\begingroup$ @MatthewGunn, thank you. The case of $c_2\neq 0$ is quite easy. The case of $c_1\neq 0 \ \text{and} \ c_2=0$ is a bit more confusing (and I only discuss this case in this and one of the linked posts), but I think I got it by now. $\endgroup$ Jul 5, 2023 at 15:24
  • $\begingroup$ What's conceptually going on is that the cross-sectional relationship between (i) regression beta on a factor and (ii) expected returns should be a line. One way to estimate that line is with a cross-sectional regression. If some factor $F$ is ALSO a return, then there's another way. Two points define a line. One point you're confident about is $(0, r_f)$: the risk free rate has zero beta and an expected return of $r_f$. If $F$ is a return, then you also have the point $(1, E[F]$: $F$ has a beta of 1 on itself and an expected return of $E[F]$. $\endgroup$ Jul 5, 2023 at 15:42
  • $\begingroup$ If $F$ isn't a return though, the expected return associated with a beta of 1 is almost certainly NOT going to be $E[F]$. If $F$ isn't a return, there's no reason to believe $(1, E[F])$ is a point on line for the cross-sectional relationship between beta and expected returns. $\endgroup$ Jul 5, 2023 at 15:45

2 Answers 2


Indeed if a factor is not a portfolio of traded assets you cannot apply time-series tests. It is no longer true that the null hypothesis implies $\alpha$ in the time-series regression is equal to zero.

Consider a one factor model with:

$$E_t[R^e_{i,t+1}] = \beta_{i,t} \lambda_t$$ and $$\beta_{i,t} = \frac{\text{Cov}_t(F_{t+1},R^e_{i,t+1})}{\text{Var}_t(F_{t+1})}$$

where $F_{t+1}$ is a non-traded factor (GDP growth, consumption growth) and $\lambda_t$ is the conditional risk-premium associated with one unit exposure to the factor.

If you assume that $\beta$ are constant over time (which is not true when factors are autocorrelated, such as is often the case with macro factors), you can write the unconditional model as:

$$E[R^e_{i,t+1}] = \beta_i E[\lambda_t].$$

This yields: $$E[R^e_{i,t+1}] = \beta_i E[\lambda_t] = \alpha_i +\beta_i E[F_{t+1}],$$ $$\alpha_i = \beta_i E[\lambda_t - F_{t+1}].$$

If you have a traded asset then trivially: $\beta_i E[\lambda_t - F_{t+1}] = 0$. This is however not true for a non-traded factor (i.e. the risk premium does not have to equal the mean of the factor). So you first need to estimate $\lambda$, the price of risk, which is often done using two-pass regressions or Fama-MacBeth regressions.

  • $\begingroup$ Richard: Let me preface this by saying that I have zero experience with this topic but one of the answers you provided a link to seems to say that: if you want to regress returns on SOMETHING, then that SOMETHING should really represent some kind of change in that SOMETHING also. Otherwise, it doesn't make sense as a regressor. When you think about it, that kind of makes sense because, if the return covers some period of time, then one would want SOMETHING to cover the same time period. The only way that is possible is if one regresses on the change of SOMETHING over the same period of time. $\endgroup$
    – mark leeds
    Jun 26, 2023 at 22:40
  • $\begingroup$ So, when Cochrane says that it needs to be a return, I think he really means that it needs to represent a change in the level of the variable. But hopefully someone can confirm this. $\endgroup$
    – mark leeds
    Jun 26, 2023 at 22:42
  • $\begingroup$ Richard: In thinking about this some more, I'm still puzzled why Cochrane uses the term "return". If he uses log prices on on the LHS, then the change is the return. But, for variables that are levels but not log prices, to me, the term "change in levels", seems like a better choice of words. Given this confusion, I'm not one hundred percent sure that I'm barking up the correct tree !!!!! $\endgroup$
    – mark leeds
    Jun 27, 2023 at 4:23
  • 1
    $\begingroup$ The contact form did not work, but I sent him an e-mail – and got a response within 2 hours! I am very happy about that, given my tremendous respect for and admiration of John Cochrane! Unfortunately, the e-mail response does not clarify matters for me. In my reading of the e-mail, he reiterated what is already presented in the textbook without trying to identify the root of my mistake (I mean the technical part; he did mention some conceptual things, but that does not fix it for me). I am starting to lose hope, but I will keep thinking about the problem... $\endgroup$ Jun 30, 2023 at 8:27
  • 1
    $\begingroup$ Out of the two answers I got here both were helpful (and the discussions in the comments perhaps even more so). Since I could not split the bounty equally between the two of you, I had to pick one and I have decided to award it to @fes this time. Thank you for you contribution! $\endgroup$ Jul 3, 2023 at 18:53

For simplicity consider the unconditional CAPM:

$$\mathbb{E}[R^e_{t,i}]=\beta_i \mathbb{E}[R_{t,m}^{e}].$$

If you think of $\beta_i$ as a free parameter the equation has no meaning. You can always find some $\beta_i$ so that the equation is true. But in the model we importantly have


We could redefine: $\mathbb{E}[R^e_{t,i}]=\gamma_i$. But if you just test for this you are not imposing the above restriction on $\beta_i$.

Regarding the concrete example demonstrating why non-return factors are problematic, consider again the unconditional CAPM. Define a shifted market return as a factor $f_t=R_{t,m}^e+c$, where $c$ is some constant, so $f_t$ is not a return. Now we have

$$\mathbb{E}[R^e_{t,i}]=-\beta_ic+\beta_i \mathbb{E}[f_t].$$

So $\alpha\neq0$. However, $Corr(R_{t,p}^e,f_t)$ is maximised for $R_{t,p}^e=R_{t,m}^e$ so that the market portfolio is factor mimicking portfolio for the factor (the correlation is one). Then risk premium associated with this factor is $\lambda=\mathbb{E}[R_{t,m}^e]\neq\mathbb{E}[f_t]$.

  • $\begingroup$ This answer made me think; that is great! I agree that $\beta_i$ cannot be a free parameter. But my $\gamma_i$ is not free either; it is a constant multiple of $\beta_i$ where the constant is the same across assets $i=1,\dots,N$. I think that imposes enough structure to make the time series regressions valid. $\endgroup$ Jun 27, 2023 at 7:33
  • $\begingroup$ Yep but you need to impose that restriction when estimating the model so it is not just testing for a zero intercept. For this you also need estimates of the betas for which you need the market return. $\endgroup$
    – fes
    Jun 27, 2023 at 7:41
  • $\begingroup$ You might find a way to make this work, but at least it seems very cumbersome and nonstandard, so I see why a textbook tells you to avoid it. $\endgroup$
    – fes
    Jun 27, 2023 at 7:44
  • $\begingroup$ It may indeed be quite nonstandard, but I think it is far from cumbersome. It allows using a simple method (single-stage time-series regressions) instead of a cumbersome one (two-stage regressions a la Fama-MacBeth) or a more challenging one (though quite elegant) from the econometric perspective (GMM). I have now updated my answer with an R script demonstrating that my conjecture works in practice. I am curious if this indeed is the case or if I have made a mistake or two on the way. $\endgroup$ Jun 27, 2023 at 11:07
  • $\begingroup$ @RichardHardy If we consider the CAPM, by linearity do you mean $f_t=cR_{t,m}^e$? In this case things might be simple but it seems strange to me. $\endgroup$
    – fes
    Jun 27, 2023 at 11:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.