首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PerformanceAnalytics在xts上崩溃.奇怪

PerformanceAnalytics在xts上崩溃.奇怪
EN

Stack Overflow用户
提问于 2012-11-04 16:44:29
回答 1查看 1K关注 0票数 0

我试图在xts对象的滚动基础上计算一些函数。在许多情况下,在加载PerformanceAnalytics包之后,使用xts似乎存在这样的问题。例如,请参阅下文。我做错了什么?这对我来说是非常重要的,因为它阻止了我正在执行的许多计算(很好,它仍然是周末)。几个小时前我重建了所有的主要包裹。请看下面我的sessionInfo。编辑:看看这个PerformanceAnalytics,我想现在有更多的东西坏了。例如:

table.DownsideRisk(ret)

代码语言:javascript
复制
Error: could not find function "sd.xts"

以下是我最初的例子:

代码语言:javascript
复制
require(quantmod)

# Get SP500 Index
getSymbols("^GSPC")

# This does not work
tail(rollapply(Cl(GSPC), 20, FUN=sd, fill=NA), 5)

# Hm, something with xts maybe?
z <- zoo(1:1500, as.Date(1:1500))
tail(rollapply(z, 20, mean, fill=NA), 5)
tail(rollapply(z, 20, sd, fill=NA), 5)

z <- as.xts(z)
tail(rollapply(z, 20, mean, fill=NA), 5)
tail(rollapply(z, 20, sd, fill=NA), 5)

require(PerformanceAnalytics)
# This does not work anymore
tail(rollapply(z, 20, sd, fill=NA), 5)
# This does not work anymore
tail(rollapply(Cl(GSPC), 20, FUN=sd, fill=NA), 5)
# Well, it looks like xts or PerformanceAnalytics problem... When I load PerformanceAnalytics, problems...

> require(quantmod)
Loading required package: quantmod
Loading required package: Defaults
Loading required package: xts
Loading required package: zoo

Attaching package: ‘zoo’

The following object(s) are masked from ‘package:base’:

    as.Date, as.Date.numeric

Loading required package: TTR
> 
> # Get SP500 Index
> getSymbols("^GSPC")
[1] "GSPC"
> 
> # This does not work
> tail(rollapply(Cl(GSPC), 20, FUN=sd, fill=NA), 5)
           GSPC.Close
2012-10-25         NA
2012-10-26         NA
2012-10-31         NA
2012-11-01         NA
2012-11-02         NA
> 
> # Hm, something with xts maybe?
> z <- zoo(1:1500, as.Date(1:1500))
> tail(rollapply(z, 20, mean, fill=NA), 5)
1974-02-05 1974-02-06 1974-02-07 1974-02-08 1974-02-09 
        NA         NA         NA         NA         NA 
> tail(rollapply(z, 20, sd, fill=NA), 5)
1974-02-05 1974-02-06 1974-02-07 1974-02-08 1974-02-09 
        NA         NA         NA         NA         NA 
> 
> z <- as.xts(z)
> tail(rollapply(z, 20, mean, fill=NA), 5)
           [,1]
1974-02-05   NA
1974-02-06   NA
1974-02-07   NA
1974-02-08   NA
1974-02-09   NA
> tail(rollapply(z, 20, sd, fill=NA), 5)

1974-02-05 NA
1974-02-06 NA
1974-02-07 NA
1974-02-08 NA
1974-02-09 NA
> 
> require(PerformanceAnalytics)
Loading required package: PerformanceAnalytics

Package PerformanceAnalytics (1.0.5.1) loaded.
Econometric tools for performance and risk analysis.
(c) 2004-2012 Peter Carl, Brian G. Peterson. License: GPL
http://r-forge.r-project.org/projects/returnanalytics/


Attaching package: ‘PerformanceAnalytics’

The following object(s) are masked from ‘package:graphics’:

    legend

> # This does not work anymore
> tail(rollapply(z, 20, sd, fill=NA), 5)
Error in FUN(.subset_xts(data, (i - width + 1):i), ...) : 
  unused argument(s) (fill = NA)
> # This does not work anymore
> tail(rollapply(Cl(GSPC), 20, FUN=sd, fill=NA), 5)
Error in FUN(.subset_xts(data, (i - width + 1):i), ...) : 
  unused argument(s) (fill = NA)
> # Well, it looks like xts or PerformanceAnalytics problem... When I load PerformanceAnalytics, problems...
> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8          LC_NUMERIC=C                 
 [3] LC_TIME=en_US.UTF-8           LC_COLLATE=en_US.UTF-8       
 [5] LC_MONETARY=en_US.UTF-8       LC_MESSAGES=en_US.UTF-8      
 [7] LC_PAPER=en_US.UTF-8          LC_NAME=en_US.UTF-8          
 [9] LC_ADDRESS=en_US.UTF-8        LC_TELEPHONE=en_US.UTF-8     
[11] LC_MEASUREMENT=en_US.UTF-8    LC_IDENTIFICATION=en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] PerformanceAnalytics_1.0.5.1 quantmod_0.3-21             
[3] TTR_0.21-1                   xts_0.8-8                   
[5] zoo_1.7-9                    Defaults_1.1-1              
[7] rj_1.1.0-4                  

loaded via a namespace (and not attached):
[1] grid_2.15.2    lattice_0.20-0 tools_2.15.2  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-04 17:01:15

PerformanceAnalytics注册了一个显然有一些问题的rollapply.xts方法。

您可以在对象上使用as.zoo来代替rollapply.zoo

试试tail(rollapply(as.zoo(z), 20, sd, fill=NA, align='right'), 5)

我不知道在使用sd.xts (这不是一种方法)和mean.xts (现在在xts中)使用PerformanceAnalytics时还会遇到哪些其他问题--充其量,这取决于您使用的版本。

这可能会让你的电脑爆炸,但是在运行你的“大量代码”之前,试着把它找出来。

代码语言:javascript
复制
rollapply.xts <- function(data, width, FUN, ...) {
  xdata <- xcoredata(data)
  out <- zoo:::rollapply.zoo(data=data, width=width, FUN=FUN, ...)
  xcoredata(out) <- xdata
  out
}

代码语言:javascript
复制
R> suppressPackageStartupMessages(library(PerformanceAnalytics))
R> tail(rollapply(Cl(GSPC), 20, FUN=sd, fill=NA), 20)
           GSPC.Close
2012-10-04   10.80165
2012-10-05   10.80888
2012-10-08   10.82280
2012-10-09   12.94614
2012-10-10   14.96816
2012-10-11   16.27298
2012-10-12   17.48353
2012-10-15   18.42794
2012-10-16   18.44652
2012-10-17   18.76495
2012-10-18         NA
2012-10-19         NA
2012-10-22         NA
2012-10-23         NA
2012-10-24         NA
2012-10-25         NA
2012-10-26         NA
2012-10-31         NA
2012-11-01         NA
2012-11-02         NA
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13220590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档