从星期一到星期五在 xts 对象中聚合 returns
Aggregating returns in xts object from mondays to fridays
我有一个离散向量 returns。
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
我需要将每日 returns 汇总到每周 returns(周一至周五)。计算应从星期一开始,从 cumprod(1+x)-1
到星期五。每周计算从零开始。当我有一个价格向量时,我知道如何使用 endpoints
函数来做到这一点。不幸的是我只有 returns。我的新矢量应该是这样的
> x
return
2015-02-01 0.03030100
2015-02-08 0.07213535
2015-02-13 0.05101005
感谢您的帮助。
要聚合就不要cumprod
。 cumprod
将 return 对传递给它的对象中的每个观察值进行观察。你想要 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
。
我有一个离散向量 returns。
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
我需要将每日 returns 汇总到每周 returns(周一至周五)。计算应从星期一开始,从 cumprod(1+x)-1
到星期五。每周计算从零开始。当我有一个价格向量时,我知道如何使用 endpoints
函数来做到这一点。不幸的是我只有 returns。我的新矢量应该是这样的
> x
return
2015-02-01 0.03030100
2015-02-08 0.07213535
2015-02-13 0.05101005
感谢您的帮助。
要聚合就不要cumprod
。 cumprod
将 return 对传递给它的对象中的每个观察值进行观察。你想要 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
。