计算时间序列的时间加权 returns
Calculate time-weighted returns for a time series
在 R 中,我有一个每月 returns 的 xts 对象,我希望通过它单独计算每个资产的整体时间加权 return。这是数据示例:
SPY EFA
2005-02-28 0.0206 0.0371
2005-03-31 -0.0184 -0.0265
2005-04-29 -0.0189 -0.0163
例如,我要计算 SPY 从 2/28/05 到 4/29/05 的时间加权 returns。手动计算,我会计算为 [(1 + .0206)*(1 + -.0184) * (1 + .0189) - 1] * 100。我有 100 个资产向量。我将如何在 R 中完成此操作?谢谢。
可以选择sapply和prod匿名函数计算,如下:
df <- data.frame( spy = c(.0206,-0.0184,0.0189 ), efa = c(0.0371,-0.0265,-0.01631))
sapply(df,function(x)(prod(x+1)-1)*100)
输出:
> sapply(df,function(x)(prod(x+1)-1)*100)
spy efa
2.0755376 -0.6850001
手动乘以你的表达式得到:
((1 + .0206)*(1 + -.0184) * (1 + .0189) - 1) * 100 = 2.075538 (approx)
这与间谍的应用结果相同
在 R 中,我有一个每月 returns 的 xts 对象,我希望通过它单独计算每个资产的整体时间加权 return。这是数据示例:
SPY EFA
2005-02-28 0.0206 0.0371
2005-03-31 -0.0184 -0.0265
2005-04-29 -0.0189 -0.0163
例如,我要计算 SPY 从 2/28/05 到 4/29/05 的时间加权 returns。手动计算,我会计算为 [(1 + .0206)*(1 + -.0184) * (1 + .0189) - 1] * 100。我有 100 个资产向量。我将如何在 R 中完成此操作?谢谢。
可以选择sapply和prod匿名函数计算,如下:
df <- data.frame( spy = c(.0206,-0.0184,0.0189 ), efa = c(0.0371,-0.0265,-0.01631))
sapply(df,function(x)(prod(x+1)-1)*100)
输出:
> sapply(df,function(x)(prod(x+1)-1)*100)
spy efa
2.0755376 -0.6850001
手动乘以你的表达式得到:
((1 + .0206)*(1 + -.0184) * (1 + .0189) - 1) * 100 = 2.075538 (approx)
这与间谍的应用结果相同