簡體   English   中英

R-PerformanceAnalytics-SharpRatio rollapply zoo

[英]R - PerformanceAnalytics - SharpRatio rollapply zoo

我一直在嘗試使用PerformanceAnalytics包中的SharpeRatio函數。 我試圖將“夏普比率”應用到動物園對象上,但認為結果不正確。 誰能說為什么我不能像rollapply(dreturns.z,FUN =“ SharpeRatio”,by.column = T,width = 20,align =“ right”)那樣應用它? 另一個問題是,此函數SharpeRatio作為一個參數FUN。 由於rollapply還定義了參數FUN,我如何用rollapply定義它?

    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

由於我不是夏普比率專家,因此您期望得到什么結果? SharpeRatio(R, Rf = 0, p = 0.95) ,不要忘記您假設無風險利率為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")

希望這可以幫助....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM