【问题标题】:Create Growth Of $1,000 Column in XTS Object in R在 R 中的 XTS 对象中创建 $1,000 列的增长
【发布时间】:2014-11-09 11:56:46
【问题描述】:

我正在努力完成我认为是一项简单的任务。我正在计算一些投资回报,并想在回报列旁边创建一个显示 1,000 美元增长的列。理想情况下,这是:

Index       Return      
4/27/90     -0.011444191    989 
5/30/90     0.000582282     989 
6/28/90     0.007011319     996 
7/30/90     0.005969896     1,002 
10/30/90    0.007221412     1,009 

第三列等于上面的值乘以 (1+Return) 然后向下填充。所以1009的值是乘以1002*(1+0.005969896)

我曾尝试使用延迟功能来做到这一点,但由于盯着它太久,我现在头晕目眩。

我确实使用这个成功地获得了 1,009 的最终数字:

 Account = 1000
 for (i in na.omit(sample$Return)){
   Account  = (1+i) * Account
 }

但是,我希望将运行总计作为 xts 对象中的一列。如何做到这一点?

这将创建我在上表中使用的 xts 对象,没有第 3 列。

sample <- structure(c(-0.0114441907965878, 0.000582281990849955, 0.00701131947964186, 
0.00596989588048895, 0.00722141248178086), .indexCLASS = "Date", tclass = "Date", tzone = "UTC", src = "yahoo", updated = structure(1414972280.65536, class = c("POSIXct", 
"POSIXt")), index = structure(c(641174400, 644025600, 646531200, 
649296000, 657244800), tclass = "Date"), .Dim = c(5L, 1L), .Dimnames = list(
    NULL, "Return"), class = c("xts", "zoo"))

谢谢。

【问题讨论】:

    标签: r xts


    【解决方案1】:

    试试cumprod

    sample$Account <- 1000 * cumprod(1+sample$Return)
    sample
                     Return   Account
    1990-04-27 -0.011444191  988.5558
    1990-05-30  0.000582282  989.1314
    1990-06-28  0.007011319  996.0665
    1990-07-30  0.005969896 1002.0130
    1990-10-30  0.007221412 1009.2489
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-11
      • 2021-06-23
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多