当我运行下面的代码时,我的CAPM.beta.bull函数正常工作,但是为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)
}
我正在运行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
答案 0 :(得分:1)
大多数PerformanceAnalytics功能都使用股票回报而非价格,因此您需要首先计算回报,然后传递给这些函数。例如,您的stockbull函数可能变为
stockbull = function(call){
Ra <- Return.calculate(Ad(call))
Rb <- Return.calculate(Ad(SPY))
CAPM.beta.bull(Ra, Rb , Rf=0)
}
其他功能的变化非常相似。通过这些修改,CAPM.beta函数返回接近1的值,这是合理的结果。