Prices Xts中多列的累积收益

Prices Xts中多列的累积收益,r,xts,R,Xts,我有以下数据,并试图计算复合回报率 sample_data <- data.frame(Date = c ("2017-01-31","2017-02-28", "2017-03-31", "2017-04-30"), stock1 = c(9,12,13,14), stock2 = c(5,6,8,9), stock3 = c(4,4.5,5,4), stock4 = c(6,7.8,8,8.5), stock5 = c(5,5.5,6.2,7)) 您的s

我有以下数据,并试图计算复合回报率

sample_data <- data.frame(Date = c ("2017-01-31","2017-02-28", "2017-03-31", "2017-04-30"), 
              stock1 = c(9,12,13,14), stock2 = c(5,6,8,9), stock3 = c(4,4.5,5,4), stock4 = c(6,7.8,8,8.5), stock5 = c(5,5.5,6.2,7))

您的
sample_数据
不是
xts
对象。它是一个
数据帧
。您可以采取以下措施来克服:

sample_data <- data.frame(Date = c ("2017-01-31","2017-02-28",
                                    "2017-03-31", "2017-04-30"), 
                          stock1 = c(9,12,13,14), stock2 = c(5,6,8,9),
                          stock3 = c(4,4.5,5,4), stock4 = c(6,7.8,8,8.5),
                          stock5 = c(5,5.5,6.2,7))

class(sample_data)  ## check the structure of your data
x = xts(sample_data[, -1], order.by=as.Date(sample_data$Date))
Return.calculate(x, method = c("compound"))

非常感谢你,现在如果我想在同一张图上绘制ggplot(几何线)这些股票(即每只股票画一条线),这可能吗?而且这似乎做得不对,例如,在2017年1月31日至2017年2月28日期间,股票1的价格从9上涨至12,应为33%,随后的结果应在此基础上复合?是的,您当然可以使用
ggplot
绘制它们。我认为如果你问一个新问题会更好。这是做正确的思考——当你计算复合回报时,你要取价格之间的对数差。在您的示例中,它将是
log(12/9)
,返回
0.287682078
。如果计算简单返回值,结果将是
(12-9)/9
,即
0.33333
。这清楚吗?如果我的回答有帮助,请随意接受/投票
sample_data <- data.frame(Date = c ("2017-01-31","2017-02-28",
                                    "2017-03-31", "2017-04-30"), 
                          stock1 = c(9,12,13,14), stock2 = c(5,6,8,9),
                          stock3 = c(4,4.5,5,4), stock4 = c(6,7.8,8,8.5),
                          stock5 = c(5,5.5,6.2,7))

class(sample_data)  ## check the structure of your data
x = xts(sample_data[, -1], order.by=as.Date(sample_data$Date))
Return.calculate(x, method = c("compound"))
> Return.calculate(x, method = c("compound"))
               stock1    stock2     stock3     stock4     stock5
2017-01-31         NA        NA         NA         NA         NA
2017-02-28 0.28768207 0.1823216  0.1177830 0.26236426 0.09531018
2017-03-31 0.08004271 0.2876821  0.1053605 0.02531781 0.11980120
2017-04-30 0.07410797 0.1177830 -0.2231436 0.06062462 0.12136086