PerformanceAnalytics中的列名称冲突

PerformanceAnalytics中的列名称冲突,r,performanceanalytics,R,Performanceanalytics,我最近发现了性能分析,发现它对我的研究非常有用。然而,我发现了一种奇怪的行为。我正在尝试扩展InformationRatio()以接受零基准测试返回: InformationRatio <- function(Ra, Rb=NULL, scale=NA) { if (is.null(Rb)) { Rb <- Ra[, 1, FALSE] Rb[] <- 0 } PerformanceAnalytics::InformationRatio(Ra, Rb

我最近发现了性能分析,发现它对我的研究非常有用。然而,我发现了一种奇怪的行为。我正在尝试扩展
InformationRatio()
以接受零基准测试返回:

InformationRatio <- function(Ra, Rb=NULL, scale=NA) {
  if (is.null(Rb)) {
    Rb <- Ra[, 1, FALSE]
    Rb[] <- 0
  }
  PerformanceAnalytics::InformationRatio(Ra, Rb, scale)
}

InformationRatio(managers[, 1:6])
Inf不是我所期望的。(在浏览源代码后)发现其来源包含在
Return.exterx()
中:

如果资产回报率(Ra==R)和基准回报率(Rb==Rf)之间的colnames发生冲突,则Rf被分配给R,最终导致除以零

这里有一个解决方法:

InformationRatio <- function(Ra, Rb=NULL, scale=NA) {
  if (is.null(Rb)) {
    Rb <- Ra[, 1, FALSE]
    Rb[] <- 0
    colnames(Rb) <- "zero"
  }
  PerformanceAnalytics::InformationRatio(Ra, Rb, scale)
}

InformationRatio(managers[, 1:6])
这是一个错误还是我遗漏了什么?如果是,我如何报告?我过不去,没有追踪器。我想写一封电子邮件,但我在这里见过开发人员,所以post可能是一个不错的选择,不是吗?

Rb不应该是一个标量,它应该是一个时间序列

Rb在文档中描述为

Rb: return vector of the benchmark asset
因此,我认为文档可能更清晰,我将改进它,以指定一个时间序列。我们需要将基准回报的时间序列与资产回报的时间序列合并起来进行计算

以下是Rb时间序列输入的工作示例:

至于Return.oversex,我认为不允许colnames冲突是有意义的,因为您试图确定一个系列到另一个系列的超额回报。上面粘贴的代码旨在合并序列,并创建与输入序列具有相同索引的输出序列。与最初编写函数时(xts之前)相比,现在可以更高效地完成该操作,我也将对此进行研究

一般来说,R软件包的bug报告应转到软件包网站或软件包维护人员处。电子邮件也可以SO应该是针对使用问题,而不是错误报告,一般来说,因为错误得到了修复,SO仍然保留着陈旧的数据。

Rb不应该是一个标量,它应该是一个时间序列

Rb在文档中描述为

Rb: return vector of the benchmark asset
因此,我认为文档可能更清晰,我将改进它,以指定一个时间序列。我们需要将基准回报的时间序列与资产回报的时间序列合并起来进行计算

以下是Rb时间序列输入的工作示例:

至于Return.oversex,我认为不允许colnames冲突是有意义的,因为您试图确定一个系列到另一个系列的超额回报。上面粘贴的代码旨在合并序列,并创建与输入序列具有相同索引的输出序列。与最初编写函数时(xts之前)相比,现在可以更高效地完成该操作,我也将对此进行研究

一般来说,R软件包的bug报告应转到软件包网站或软件包维护人员处。电子邮件也可以SO应该用于解决使用问题,而不是一般的bug报告,因为bug得到了修复,SO仍然保留着陈旧的数据

                            HAM1     HAM2    HAM3      HAM4      HAM5    HAM6
Information Ratio: zero 1.549119 1.373211 1.19553 0.6592017 0.2355561 1.66417
Rb: return vector of the benchmark asset
data(managers)
rb<-xts( rep(0,nrow(managers)), order.by=index(managers) )
colnames(rb)<-'zero'
InformationRatio(managers,rb)
                            HAM1     HAM2    HAM3      HAM4      HAM5    HAM6 EDHEC LS EQ  SP500 TR US 10Y TR US 3m TR
Information Ratio: zero 1.549119 1.373211 1.19553 0.6592017 0.2355561 1.66417    1.665694 0.6448502 0.7265079 7.620057