2014-01-20 73 views
1

我基本上想要計算一個xts時間序列的累計回報(和一個指數值),對於這個xts時間序列我有每個週期的回報。但由於我正在查看定義的期間來比較這些時間序列,因此我希望從此期間開始到結束的累積收益和指數值以及每行的當前累計收益。計算xts時間序列的逐行回報

比方說我的數據是這樣的(和基礎索引值是100):

 Return Index Cumulative Return 
Date0 0  100   0 
Date1 0.05 105  0.05 
Date2 0.10 115.5  0.155   
Date3 -0.1 103.95  0.0395 

我如何能實現在R裏面?

回答

3
# First create an xts object similar to the one you describe 
x <- .xts(c(100,105,115.5,103.95), 1:4, dimnames=list(NULL, "Index"), tzone="UTC") 
x$Return <- c(0, ROC(x$Index, type="discrete", na.pad=FALSE)) 

累積算術回報隨時只是1加上回報(減1)的乘積。 cumprod將爲您計算累計產品。

x$CumulativeReturn <- cumprod(1 + x$Return) - 1 
#      Index Return CumulativeReturn 
#1970-01-01 00:00:01 100.00 0.00   0.0000 
#1970-01-01 00:00:02 105.00 0.05   0.0500 
#1970-01-01 00:00:03 115.50 0.10   0.1550 
#1970-01-01 00:00:04 103.95 -0.10   0.0395 

如果你用數收益的工作,你可以簡單地做cumsum(x$Return)