The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
This article replicates Table A2 of the online appendix to Rapach, Ringgenberg, and Zhou (2016), “Short interest and aggregate stock returns” (Journal of Financial Economics, 121, 46-65), using two functions from forecastdom:
ivx_wald(): the Kostakis, Magdalinos, and
Stamatogiannis (2015) IVX-Wald test for return predictability with
persistent regressors.qll_hat(): the Elliott and Müller (2006) \(\widehat{qLL}\) test for time-varying
coefficients.The predictive regression is
\[r_{t:t+h} = \alpha + \beta\,\mathrm{SII}_t + \varepsilon_{t:t+h}, \qquad r_{t:t+h} = \frac{1}{h}\sum_{j=1}^{h} r_{t+j},\]
at horizons \(h \in \{1, 3, 6, 12\}\). IVX-Wald tests \(H_0: \beta = 0\). The \(\widehat{qLL}\) statistic tests \(H_0: \beta_t = \beta\) for all \(t\).
Monthly U.S. log excess return on the S&P 500 and the standardised linearly-detrended log of the equal-weighted short interest index (EWSI), 1973-01 to 2014-12 (504 observations).
ggplot(rrz2016, aes(date, SII)) +
geom_hline(yintercept = 0, linetype = "dashed", colour = "grey60") +
geom_line(colour = "#47A5C5", linewidth = 0.6) +
labs(x = NULL, y = "SII",
title = "Short interest index, 1973-2014") +
theme_minimal()The original MATLAB program (Compute_IVX_Wald.m in the
JFE data archive) calls the IVX-Wald with
beta = 0.99, M_n = 0 and the negated SII.
RRZ hypothesise that SII negatively predicts returns, and the sign does
not affect the Wald statistic. The \(\widehat{qLL}\) test is called with
Newey-West truncation L = h. We pass the same arguments to
ivx_wald() and qll_hat().
horizons <- c(1, 3, 6, 12)
results <- do.call(rbind, lapply(horizons, function(h) {
ivx <- ivx_wald(rrz2016$r, matrix(-rrz2016$SII, ncol = 1),
K = h, M_n = 0L, beta = 0.99)
T_ <- nrow(rrz2016)
P <- T_ - h
y_h <- sapply(seq_len(P), function(t) mean(rrz2016$r[(t + 1):(t + h)]))
X_h <- matrix(rrz2016$SII[1:P], ncol = 1)
Z_h <- matrix(1, P, 1)
qll <- qll_hat(y_h, X_h, Z = Z_h, L = h)
data.frame(h = h, IVX_Wald = ivx$statistic, qLL = qll$statistic)
}))
knitr::kable(results, digits = 3, row.names = FALSE,
col.names = c("$h$", "IVX-Wald", "$\\widehat{qLL}$"))| \(h\) | IVX-Wald | \(\widehat{qLL}\) |
|---|---|---|
| 1 | 3.377 | -3.721 |
| 3 | 4.513 | -4.858 |
| 6 | 4.603 | -4.909 |
| 12 | 3.669 | -5.016 |
Critical values (from RRZ 2016, online appendix):
For comparison, the paper reports IVX-Wald = 3.38*, 4.51**, 4.60**, 3.67* and qLL = \(-3.72\), \(-4.86\), \(-4.91\), \(-5.02\). Our values match to two decimal places at every horizon. Conclusion: SII predicts the equity premium at all horizons (significant IVX-Wald) and constant \(\beta\) is not rejected.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.