读R中的月回报

时间:2012-03-09 18:14:08

标签: r time-series

我在文件“equity.dat”中有以下每月股票数据:

2010-03,1e+06
2010-03,1.00611e+06
2010-04,998465
2010-05,1.00727e+06
2010-06,1.00965e+06

我正在尝试使用以下代码计算月度回报:

library(PerformanceAnalytics)
y = Return.read(filename="equity.dat", frequency = "m", sep=",", header=FALSE)
y

z = Return.calculate(y)
z
z[1]=0 #added this to remove the NA in first return

但是我收到以下错误:

Error in read.zoo(filename, sep = sep, format = format, FUN = FUN, header = header,  : 
  index has bad entries at data rows: 1 2 3 4 5

我在使用as.mon时检查了Return.read的格式,这就是为什么我使用yyyy-mm。我应该使用不同的格式吗?

1 个答案:

答案 0 :(得分:2)

根据?Return.read,默认format.in=此处为"%F",这不是您的数据格式,因此必须指定。索引也必须是唯一的(在这种情况下不是),否则它必须按照?zoo?read.zoo聚合,后者在内部使用:

Return.read(filename = "equity.dat", frequency = "m", sep = ",", header = FALSE, 
  aggregate = function(x) tail(x, 1), format = "%Y-%m")

我们已使用tail来定义聚合函数 - 您可能希望也可能不希望使用其他内容。