我正在尝试使用PerformanceAnalytics CAPM.beta()函数对R中的股票的beta(标有SPY的基准)进行量化,结果甚至与我在Yahoo / Google Finance上在线看到的值都不接近。代码:
require(PerformanceAnalytics)
start_date <- "2013-08-24"
acad <- getSymbols("ACAD", from = start_date, auto.assign = F)
spy <- getSymbols("SPY", from = start_date, auto.assign = F)
CAPM.beta(acad[,6], spy[,6])
对于上面的示例,Yahoo / Finviz / Google全部列出了ACAD的beta版本,从2.6到3.0。虽然我不确定每个站点的回溯期是多少,但是更改上面代码中的值会导致1,2,3年回溯的beta值小于1。
同样,通过尝试使用lm()计算beta,我得到了ACAD〜SPY 2年回溯的0.39 beta:
m <- lm(acad[,6] ~ spy[,6] + 0)
beta <- coef(m)[1]
beta
我想念什么?
Beta是根据回报(通常是每月)计算的。使用时,您确实希望模型中的截距项(alpha)适合lm
。
start_date <- "2012-07-01"
acad <- getSymbols("ACAD", from = start_date, auto.assign = F)
spy <- getSymbols("SPY", from = start_date, auto.assign = F)
r<-function(x) {m<-to.monthly(x[,6])[,4];diff(m)/lag(m)}
coef(lm(r(acad)[2:37]~r(spy)[2:37]))
#> (Intercept) r(spy)[2:37]
#> 0.08601629 2.62485092
在这种情况下,针对调整后的月底收市价的36个月计算得出的Beta约为2.6。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句