我在下面有一些不规则的数据,这给了我正确的每月回报。现在我希望将其转换为年度几何回归,但由于某种原因,它会返回NaN以获得许多值。
我怀疑这是因为xts objet中的索引值是如何排序的,但我不知道如何将它们变为降序(无法在线找到答案)。
有什么问题?它怎么解决?
以下代码
Browse[2]> Data.xts[,1]
monthly.returns
2012-09-27 -0.02469261
2012-10-30 -0.05129329
2012-11-29 0.05129329
2012-12-30 0.11778304
2013-01-30 -0.14310084
2013-02-27 -0.08004271
2013-03-28 -0.02817088
2013-04-29 -0.02898754
2013-05-30 0.16251893
2013-06-27 0.00000000
2013-07-30 0.52324814
2013-08-29 0.86927677
2013-09-29 -0.01250016
2013-10-30 0.02484600
2013-11-28 -0.06986968
2013-12-30 -0.06453852
2014-01-30 0.17055672
2014-02-27 0.22195942
2014-03-30 0.02342027
2014-04-29 -0.11258822
2014-05-29 0.03061464
2014-06-29 -0.08381867
2014-07-30 -0.06782260
2014-08-28 -0.08541775
2014-09-29 -0.10394609
2014-10-30 -0.29833937
2014-11-27 0.05556985
2014-12-30 -0.22652765
Browse[2]> annualReturn(Data.xts[, 'monthly.returns'] , type = 'log')
yearly.returns
2012-12-30 NaN
2013-12-30 NaN
2014-12-30 1.255605
答案 0 :(得分:3)
我不知道annualReturn()
函数的内部工作原理,它是您编写的自定义函数还是来自某个包,但可能解释您所看到的内容NaN
在多个地方,你正在做一些带负数的对数函数。
只需使用基数R,我们就可以看到:
> log(-2)
[1] NaN
记录负数会产生NaN
,我相信这可能与您的数据有关。
答案 1 :(得分:1)
?annualReturn
说明表示,
给定一组价格,返回定期退货。
所以它期望价格和你给它的回报,它被视为价格。而作为Beta test of interactive serial port is available:,取负数的对数会导致NaN。
您可以使用apply.yearly
直接汇总您的回报,假设您的回报是算术的。
> apply.yearly(1+x, prod)-1
[,1]
2012-12-30 0.08731379
2013-12-30 1.16831187
2014-12-30 -0.46319006
如果他们要记录退货,你应该将它们相加。
> apply.yearly(x, sum)
[,1]
2012-12-30 0.09309043
2013-12-30 1.15267951
2014-12-30 -0.47633945