在R中,我有一个带月回报的xts对象,我希望单独计算每个资产的总时间加权回报。以下是数据样本:
SPY EFA
2005-02-28 0.0206 0.0371
2005-03-31 -0.0184 -0.0265
2005-04-29 -0.0189 -0.0163
例如,我打算从2005年2月28日到2005年4月29日计算SPY的时间加权回报。手动,我会计算为[(1 + .0206)*(1 + -.0184)*(1 + .0189) - 1] * 100.我有100个资产向量。我将如何在R中实现这一目标?谢谢。
答案 0 :(得分:0)
您可以使用匿名函数选择 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)
与间谍的结果相同