CAPM.beta.bear 和 PerformanceAnalytics 中的 TimingRatio 错误

Error with CAPM.beta.bear and TimingRatio in PerformanceAnalytics

当我 运行 下面的代码时,我的 CAPM.beta.bull 函数工作正常,但是 returns CAPM.beta.bear 和 TimingRatio

的错误
library(PerformanceAnalytics)
library(quantmod)

getSymbols("AAPL", from="2012-01-01", to="2015-01-01")
getSymbols("SPY", from="2012-01-01", to="2015-01-01")


stockbull = function(call){
CAPM.beta.bull(Ad(call), Ad(SPY) , Rf=0)
}

stockbear = function(call){
CAPM.beta.bear(Ad(call), Ad(SPY), Rf=0)
}

stocktiming = function(call){
TimingRatio(Ad(call), Ad(SPY) , Rf=0)
}

我是 运行ning R 3.1.3,这是我导致的错误,我们将不胜感激。

> stockbull(AAPL)
[1] 0.3041228
> stockbear(AAPL)
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases
> stocktiming(AAPL)
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases

大多数 PerformanceAnalytics 函数使用股票 returns,而不是价格,因此您需要先计算 returns,然后传递给这些函数。例如,您的 stockbull 函数可以变为

stockbull = function(call){
  Ra <- Return.calculate(Ad(call))
  Rb <- Return.calculate(Ad(SPY))
  CAPM.beta.bull(Ra, Rb , Rf=0)
}

对其他功能进行了非常相似的更改。通过这些修改,CAPM.beta 函数 return 值接近 1。这是合理的结果。