2011-10-03 71 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我可能應該這樣做,因爲它是操作的真正逆轉。更新 –