我需要计算两个价格之间的回归贝塔:
- 没有拦截
- 使用总最小二乘估计
在 R 中有prcomp
执行它的功能。之后,我如何提取测试版?
代码是
`library(quantmod)
# how to get closes
getCloses <- function(sym) {
ohlc <- getSymbols(sym, from="2009-01-01", to="2011-01-01",
auto.assign=FALSE, return.class="zoo")
Cl(ohlc)}
# how to import data (2 assets)
closes <- merge(IWM=getCloses("IWM"),
VXZ=getCloses("VXZ"), all=FALSE)
# function for hedging ratio
tlsHedgeRatio <- function(p, q) {
r <- princomp( ~ p + q+0)
r$loadings[1,1] / r$loadings[2,1]
}
# get the hedging ratio
with(closes, {
cat("TLS for VXZ vs. IWM =", tlsHedgeRatio(VXZ,IWM), "\n")
})`
在代码中展示了如何使用拦截执行 TLS 回归。我试图在没有拦截的情况下执行相同的操作。在使用lm
函数时,添加+0
允许在没有截距的情况下执行回归,我怎么能对prcomp
函数做同样的事情?