9.4 Coefficient tests between model coefficients for two assets
In this section we consider hypothesis tests for coefficients in the bivariate GWN model for asset returns.
9.4.1 Test for equal means between two assets
Often it is of interest to test if the expected returns on two assets are the same:
H0:μ1=μ2vs. H1:μ1≠μ2.
Notice that this hypothesis is not of the form that the two coefficients equal a specific value (e.g. μ1=μ2=0.05). However, we can transform the hypothesis into one in which a coefficient equals a specific value by considering the differences in the expected returns. In particular, the relation μ1=μ2 is equivalent to the relation δ=μ1−μ2=0. Hence, we can reformulate the hypothesis of equal expected returns to the hypothesis that the difference in expected returns is equal to zero:
H0:δ=μ1−μ2=0vs. H1:δ=μ1−μ2≠0.
Now, we have test in the form of the coefficient tests we considered earlier.
The parameter δ=μ1−μ2 can be estimated with the plug-in estimator:
ˆδ=ˆμ1−ˆμ2.
To form a z-score, we require an estimate of se(ˆδ). Now,
var(ˆδ)=var(ˆμ1−ˆμ2)=var(ˆμ1)+var(ˆμ2)−2cov(ˆμ1,ˆμ2).
To evaluate (9.24), we use the result from Chapter 7 that the joint distribution of the vector (ˆμ1,ˆμ2)′ is multivariate normal: (ˆμ1ˆμ2)=N((μ1μ2), 1T(ˆσ21ˆσ12ˆσ12ˆσ22)),
for large enough T. Then
^var(ˆδ)=1T(ˆσ21+ˆσ22−2ˆσ12),
and
^se(ˆδ)=√1T(ˆσ21+ˆσ22−2ˆσ12).
We can test (9.23) using the z-score:
zδ=0=ˆδ^se(ˆδ)=ˆμ1+ˆμ2√1T(ˆσ21+ˆσ22−2ˆσ12),
with the test statistic S=|zδ=0|.
The estimate ^var(ˆδ) can also be computed using the delta method. Define θ=(μ1,μ2)′ and f(θ)=δ=μ1−μ2. The gradient of f(θ) is:
g(θ)=(11),
and ^var(ˆδ) can be computed as:
^var(ˆδ)=g(ˆθ)′^var(ˆθ)g(ˆθ)=(1,−1)′(ˆσ21Tˆσ12Tˆσ12Tˆσ22T)(1−1)=1T(ˆσ21+ˆσ22−2ˆσ12).
Let’s use the z-score (9.25) to test the hypothesis that the expected returns on Microsoft and Starbucks are the same using a 5% significance level. The R code to compute the z-score and test statistic is:
muhat.vals["MSFT"] - muhat.vals["SBUX"]
delta.hat = sigmahat.vals^2
sig2hat.vals = cov(gwnMonthlyRetC[, c("MSFT", "SBUX")])[1,2]
covhat = sqrt((sig2hat.vals["MSFT"]+sig2hat.vals["SBUX"]-2*covhat)/n.obs)
sehat.deltahat = delta.hat/sehat.deltahat
z.score.delta = abs(z.score.delta)
S= c(delta.hat, sehat.deltahat, S)
ans =names(ans) = c("Estimate", "Std Error", "Test Statistic")
ans
## Estimate Std Error Test Statistic
## -0.0105 0.0093 1.1323
Here, ˆδ=−0.0105, ^se(ˆδ)=0.0093 and S=1.1323. Since S<2 we do not reject H0:δ=μmsft−μsbux=0 at the 5% level.
◼
9.4.2 Test for equal Sharpe ratios between two assets
In the previous section, we considered testing if two assets have the same expected return. It is important to recognize that even if two assets have the same mean return they may have different standard deviations (volatilities) and, hence, different risks. Often, it is more interesting to test the hypothesis that two assets have the same reward-to-risk (i.e., Sharpe) ratios:
H0:SR1=μ1−rfσ1=SR2=μ2−rfσ2vs. H1:SR1≠SR2.
where rf denotes the risk-free rate over the investment horizon. As with testing the equality between two means, it is convenient to re-formulate the hypothesis of equal Sharpe ratio to the hypothesis that the difference in the Sharpe ratios is equal to zero:
H0:δ=SR1−SR2=0vs. H1:δ=SR1−SR2≠0.
The plug-in estimator for δ is:
ˆδ=^SR1−^SR2=ˆμ1−rfˆσ1−ˆμ2−rfˆσ2
To determine ^se(ˆδ) from (9.24), we utilize the result from Chapter 8 that the joint distribution of the vector (^SR1,^SR2) is multivariate normal:
(^SR1^SR2)∼N((SR1SR1), (1T(1+12^SR21)ˆρ12T(1+12ˆρ12^SR1^SR2)ˆρ12T(1+12ˆρ12^SR1^SR2)1T(1+12^SR22))),
for large enough T. Then,
^var(ˆδ)=^var(^SR1)+^var(^SR2)−2^cov(^SR1,^SR2)=1T(1+12^SR21)+1T(1+12^SR22)−2ˆρ12T(1+12ˆρ12^SR1^SR2)=1T(2+12(^SR21+^SR22)−2ˆρ12(1+12ˆρ12^SR1^SR2)),
and,
^se(ˆδ)=√1T(2+12(^SR21+^SR22)−2ˆρ12(1+12ˆρ12^SR1^SR2)).
We can test (9.26) using the z-score:
zδ=0=ˆδ^se(ˆδ)=^SR1−^SR2√1T(2+12(^SR21+^SR22)−2ˆρ12(1+12ˆρ12^SR1^SR2)),
with the test statistic S=|zδ=0|.
Let’s use the z-score (9.27) to test the hypothesis of equal Sharpe ratios between Microsoft and Starbucks using a 5% significance level. The R code to compute the z-score and test statistic is:
0.03/12
r.f = (muhat.vals["MSFT"]-r.f)/sigmahat.vals["MSFT"]
SR.msft = (muhat.vals["SBUX"]-r.f)/sigmahat.vals["SBUX"]
SR.sbux = cor(gwnMonthlyRetC[, c("MSFT", "SBUX")])[1,2]
corhat = SR.msft - SR.sbux
delta.hat = (2 + 0.5*(SR.msft^2 + SR.sbux^2)
var.deltahat =-2*corhat*(1+0.5*SR.msft*SR.sbux))
sqrt(var.deltahat)
se.deltahat = delta.hat/se.deltahat
z.score.delta = abs(z.score.delta)
S = c(SR.msft, SR.sbux, delta.hat, se.deltahat, S)
ans =names(ans) = c("SR.msft", "S.sbux", "deltahat", "se.deltahat", "S")
ans
## SR.msft S.sbux deltahat se.deltahat S
## 0.0162 0.1089 -0.0927 1.1505 0.0805
Although the Sharpe ratio for Starbucks is much larger than the Sharpe ratio for Microsoft, there is substantial estimation error in ˆδ=SRmsft−SRsbux which produces a small test statistic S=0.0805. Since S<2 we do not reject the null hypothesis of equal Sharpe ratios at the 5% level of significance.