从星期一到星期五汇总xts对象的回报

时间:2015-02-18 23:20:43

标签: r xts finance zoo endpoints

我有一个离散回报的向量。

require(xts)

set.seed(1)
x <- xts(rep(0.01,20), Sys.Date()-20:1)
colnames(x) = c("return")

> x
           return
2015-01-30   0.01
2015-01-31   0.01
2015-02-01   0.01
2015-02-02   0.01
2015-02-03   0.01
2015-02-04   0.01
2015-02-05   0.01
2015-02-06   0.01
2015-02-07   0.01
2015-02-08   0.01
2015-02-09   0.01
2015-02-10   0.01
2015-02-11   0.01
2015-02-12   0.01
2015-02-13   0.01

我需要将每日回报率调整为每周回报(星期一至星期五)。计算应该从周一cumprod(1+x)-1到星期五开始。每周计算从零开始。当我有一个价格向量时,我知道如何使用endpoints函数。不幸的是我只有回报。我的新矢量应该是这样的

> x
               return
2015-02-01 0.03030100
2015-02-08 0.07213535
2015-02-13 0.05101005

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

如果要汇总,您不想要cumprodcumprod将返回传递给它的对象中每个观察的观察结果。您想要prod

由于您将周数定义为周一至周五,因此您可以使用apply.weekly轻松完成此操作:

x <- xts(rep(0.01,15), as.Date("2015-02-14")-15:1)
colnames(x) <- "return"
apply.weekly(1+x, prod)-1
#                return
# 2015-02-01 0.03030100
# 2015-02-08 0.07213535
# 2015-02-13 0.05101005

如果您正在使用其他一周的定义(例如周三至周三),那么您需要period.apply使用endpoints