与Performance Analytics数据一起使用

时间:2013-12-20 18:29:09

标签: r sapply performanceanalytics

我有一个由返回时间序列组成的数据框,其中包含以下列

date x1 x3 x8 x11

x.R是我的数据框,包含回复

我想在Performance Analytics工具中使用findDrawdowns方法,并将其应用于每个时间序列。我想将结果存储在列表中,以便我可以访问findDrawdowns

的所有输出
sapply(x.R,  sortDrawdowns(findDrawdowns))

以上命令产生如下。不确定我如何访问这些值..任何帮助都非常适用!

             x1          x3         x8         x11      
return       Numeric,47 Numeric,47 Numeric,47 Numeric,49
from         Numeric,47 Numeric,47 Numeric,47 Numeric,49
trough       Numeric,47 Numeric,47 Numeric,47 Numeric,49 
to           Numeric,47 Numeric,47 Numeric,47 Numeric,49 
length       Numeric,47 Numeric,47 Numeric,47 Numeric,49 
peaktotrough Numeric,47 Numeric,47 Numeric,47 Numeric,49
recovery     Numeric,47 Numeric,47 Numeric,47 Numeric,49 

1 个答案:

答案 0 :(得分:0)

您需要一个嵌套的sapply,因为sortDrawdowns会返回所有无法在2维中显示的下拉(即上面表格中的每个单元格都包含所有下拉列表。这是一个解决方案用补充数据:

# Make up data
len=29
data <- data.frame(
  x1=rnorm(len, 0, .05),
  x3=rnorm(len, 0, .05),
  x8=rnorm(len, 0, .05),
  x11=rnorm(len, 0, .05)
)    
rownames(data) <- as.character(as.Date("2013-12-01") - (len:1))

# Get worst drawdowns    
sapply(
  names(data),    # for each entry in df
  function(x) {   
    sapply(       # cycle through each item in a drawDown object
      sortDrawdowns(findDrawdowns(data[, x, drop=F])),  # get drawdows sorted
      `[[`, 1                                           # extract 1st item
    )
  } 
)
#                      x1         x3         x8        x11
# return       -0.1887651 -0.3425831 -0.1592202 -0.2928802
# from         17.0000000  5.0000000 16.0000000  1.0000000
# trough       20.0000000 24.0000000 27.0000000 16.0000000
# to           25.0000000 30.0000000 30.0000000 30.0000000
# length        9.0000000 26.0000000 15.0000000 30.0000000
# peaktotrough  4.0000000 20.0000000 12.0000000 16.0000000
# recovery      5.0000000  6.0000000  3.0000000 14.0000000