2011-10-03 69 views
2

我很好奇我是如何从对数回报恢复到价格的。这里有一个例子:如何将退货换算为价格?

> a1 <- c(88.23, 88.44, 88.55, 88.77, 88.99) 
> a1 
[1] 88.23 88.44 88.55 88.77 88.99 
> a2 <- diff(log(a1)) 
> a2 
[1] 0.002377315 0.001243008 0.002481391 0.002475249 

a1是价格,a2是收益。我将如何从a2回到a1?任何建议都会很棒。

回答

4

这应该做:

> Reduce(function(x,y) {x * exp(y)}, a2, init=a1[1], accumulate=T) 
[1] 88.23 88.44 88.55 88.77 88.99 
5

你想使用类似

a3 <- exp(cumsum(a2)) 

或者,你可以使用

a3 <- cumprod(exp(a2)) 

但是因为你需要最初的价格加回至每个值,这些将被关闭。

+2

在计算上更有效的(倒不是说这件事情影响)为:A1 [1] * C(1,EXP(cumsum(A2))) –

+0

@PatrickBurns我可能应该这样做,因为它是操作的真正逆转。更新 –