2013-10-04 32 views
0

我一直在尝试使用PerformanceAnalytics包中的SharpeRatio函数。我试图在动物园对象上翻转夏普比率,但认为结果不好。 任何人都可以说为什么我不能像rollapply这样应用(dreturns.z,FUN =“SharpeRatio”,by.column = T,width = 20,align =“right”)? 另一个问题,这个函数SharpeRatio作为一个参数FUN。我怎样才能用rollapply定义它,因为rollapply还定义了参数FUN?R - PerformanceAnalytics - SharpRatio rollapply zoo

dprices.z = get.hist.quote(instrument="VTI", quote="AdjClose",start="2013-07-01", 
               provider="yahoo", origin="1970-01-01", 
               compression="d",retclass="zoo") 

    dreturns.z =dprices.z/lag(dprices.z,k=-1) -1 
    rownames(dreturns.z)=as.character(index(dreturns.z)) 

    tail(rollapply(dreturns.z,FUN=mean,width=20,align="right")/sqrt(rollapply(dreturns.z,FUN=var,width=20,align="right"))) 
      AdjClose 
2013-09-26 0.4093935 
2013-09-27 0.3366035 
2013-09-30 0.3531433 
2013-10-01 0.3745384 
2013-10-02 0.2891515 
2013-10-03 0.1851469 
    StdDevSharpeRatio = function(x) {SharpeRatio(x,FUN="StdDev")} 
    VaRSharpeRatio = function(x) {SharpeRatio(x,FUN="VaR")} 
    ESSharpeRatio= function(x) {SharpeRatio(x,FUN="ES")} 

    tail(rollapply(dreturns.z,FUN="StdDevSharpeRatio",width=20,align="right")) 
      AdjClose 
2013-09-26 0.4093935 
2013-09-27 0.3366035 
2013-09-30 0.3531433 
2013-10-01 0.3745384 
2013-10-02 0.2891515 
2013-10-03 0.1851469 
    tail(rollapply(dreturns.z,FUN="VaRSharpeRatio",width=20,align="right")) 
      AdjClose 
2013-09-26 0.3473634 
2013-09-27 0.2746835 
2013-09-30 0.2947952 
2013-10-01 0.3147704 
2013-10-02 0.2383431 
2013-10-03 0.1373277 
    tail(rollapply(dreturns.z,FUN="ESSharpeRatio",width=20,align="right")) 
      AdjClose 
2013-09-26 0.4093935 
2013-09-27 0.3366035 
2013-09-30 0.3531433 
2013-10-01 0.3745384 
2013-10-02 0.2891515 
2013-10-03 0.1851469 
    tail(rollapply(dreturns.z,FUN="SharpeRatio",by.column=T,width=20,align="right")) 
       AdjClose 
2013-09-26 -0.07070451 
2013-09-27 -0.25525289 
2013-09-30 -0.14237154 
2013-10-01 -0.10778731 
2013-10-02 -0.16874505 
2013-10-03 -0.09659218 

回答

0

因为我不是夏普比率的专家,你期望什么结果?永远不要忘记,您假设无风险利率为0(因为SharpeRatio(R, Rf = 0, p = 0.95)的默认值为零),这可能会影响您的结果。

关于你的问题的后半部分,我会做这样的事情:

rollapply(dreturns.z, FUN = function(x) SharpeRatio(x, FUN = "StdDev"), 
      by.column=T, width=20, align="right") 

希望这有助于....