3

我正在尝试使用 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 的 2.6 到 3.0 以上的测试版。虽然我不确定每个站点的回溯期是多少,但更改上述代码中的值会在 1、2、3 年的回溯中产生小于 1 的 beta 值。

同样,通过尝试使用 lm() 计算 beta,我得到了 0.39 beta 用于 ACAD ~ SPY 2 年回顾:

m <- lm(acad[,6] ~ spy[,6] + 0)
beta <- coef(m)[1]
beta

我错过了什么?

4

1 回答 1

4

Beta 是根据收益计算的,通常是每月一次。您确实希望在使用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 个月的贝塔系数约为 2.6。

于 2015-08-24T17:28:06.563 回答