根据月度股票收益创建累积收益指数
Posted
技术标签:
【中文标题】根据月度股票收益创建累积收益指数【英文标题】:Create an Index of Cumulative Returns from Monthly Stock Returns 【发布时间】:2018-11-25 05:51:32 【问题描述】:我仍然是数据争吵 R 的菜鸟,正在努力寻找解决方案。
这是我的每月百分比变化的数据框的样子:
Month Security1 Security2 ... SecurityN
1970-01 -2.30% 1.02% 0.64%
1970-02 1.87% -0.01% 9.50%
1970-03 3.38% 2.33% 5.56%
我正在尝试输出一个数据框,其中包含每个证券的月收益(> 1500 个)索引以显示累积收益,如下所示:
Month Security1 Security2 ... SecurityN
1970-01 100 100 100
1970-02 101.87 99.99 109.50
1970-03 105.32 102.32 115.59
我尝试过使用:
cum.ret <- apply(dataframe, 2, function(x) Return.cumulative(x, geometric = TRUE))
但这只会返回每只股票自成立以来的收益:例如Security1 返回 121%,Security2 返回 233%,以此类推。
除了加载数据,我的笔记本中没有其他代码。
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:一个可能的解决方案:
mydf[-1] <- lapply(mydf[-1], function(x) as.numeric(sub('%','',x)))
mydf[1,-1] <- 100
mydf[-1] <- lapply(mydf[-1], cumsum)
给出:
> mydf Month Security1 Security2 SecurityN 1 1970-01 100.00 100.00 100.00 2 1970-02 101.87 99.99 109.50 3 1970-03 105.25 102.32 115.06
使用过的数据:
mydf <- read.table(text="Month Security1 Security2 SecurityN
1970-01 -2.30% 1.02% 0.64%
1970-02 1.87% -0.01% 9.50%
1970-03 3.38% 2.33% 5.56%", header=TRUE, stringsAsFactors=FALSE)
【讨论】:
如果我的数据有不同的开始日期,我如何应用 cumsum 函数,它将索引基于每个证券各自的开始日期?例如一种证券从 1970 年 2 月开始,以 100 为基数,以 1970 年 1 月为基数,另一种证券从 1980 年 6 月开始,以 1980 年 5 月为基数,等等?提前致谢!以上是关于根据月度股票收益创建累积收益指数的主要内容,如果未能解决你的问题,请参考以下文章