我试图在xts对象的滚动基础上计算一些函数。在许多情况下,在加载PerformanceAnalytics包之后,使用xts似乎存在这样的问题。例如,请参阅下文。我做错了什么?这对我来说是非常重要的,因为它阻止了我正在执行的许多计算(很好,它仍然是周末)。几个小时前我重建了所有的主要包裹。请看下面我的sessionInfo。编辑:看看这个PerformanceAnalytics,我想现在有更多的东西坏了。例如:
table.DownsideRisk(ret)
Error: could not find function "sd.xts"以下是我最初的例子:
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 发布于 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时还会遇到哪些其他问题--充其量,这取决于您使用的版本。
这可能会让你的电脑爆炸,但是在运行你的“大量代码”之前,试着把它找出来。
rollapply.xts <- function(data, width, FUN, ...) {
xdata <- xcoredata(data)
out <- zoo:::rollapply.zoo(data=data, width=width, FUN=FUN, ...)
xcoredata(out) <- xdata
out
}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 NAhttps://stackoverflow.com/questions/13220590
复制相似问题