根据月度股票收益创建累积收益指数

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 月为基数,等等?提前致谢!

以上是关于根据月度股票收益创建累积收益指数的主要内容,如果未能解决你的问题,请参考以下文章

[20180920]航空航天与国防行业的股票排名

如何用python计算某支股票持有90天的收益率

如何计算股票的收益

用ML算法预测股票收益率

交割日效应

股票里的PEG是如何计算的?