Why Non-Traded Factors Require Cross-Sectional Pricing Tests
Summary
The document examines why time-series regressions with zero-intercept restrictions are generally unsuitable for testing asset-pricing models built on non-traded factors. In a traded-factor model, the factor’s expected return supplies its risk premium, linking the model’s pricing restriction to zero regression intercepts. For a non-traded factor such as macroeconomic growth, the risk premium must be estimated separately, so the intercept can reflect the gap between that premium and the factor’s mean. Cross-sectional or two-pass approaches can estimate the price of risk directly.
The discussion gives a shifted-market-return example: adding a constant to a traded return changes the factor’s mean without changing its covariance-based exposure, breaking the zero-intercept implication. It also notes that simulated tests with a scalar multiple of a market factor may not reveal the problem. The examples clarify the distinction between traded and non-traded factors, though the thread’s simulation is not a general demonstration of test performance, and non-traded-factor results depend on assumptions about exposures and risk premia.
Key ideas
- A traded factor’s expected return identifies its risk premium, supporting zero-intercept time-series tests.
- For a non-traded factor, the risk premium may differ from the factor’s mean.
- Cross-sectional or two-pass regressions can estimate risk prices when they are not identified by traded returns.
- Adding a constant to a return factor preserves covariance exposure but changes its mean and the intercept restriction.
Tags
Full text
# Why not use a time series regression when the factor is not a return?
# Why not use a time series regression when the factor is not a return?
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.
#### Question
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".)
```
library(MASS)
library(GRS.test)
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
N=25
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
par(mfrow=c(5,5),mar=c(2,2,0.5,0.5))
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.
## Answer by phdstudent (score 2)
https://quant.stackexchange.com/a/75960
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.
## Answer by fes (score 1)
https://quant.stackexchange.com/a/75963
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
$$\beta_i=\frac{\text{Cov}(R_{t,m}^{e},R_{t,i}^e)}{\text{Var}(R_{t,m}^{e})}.$$
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]$.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.