如何计算 R 中多种产品的每日 returns
How to calculate daily returns of multiple products in R
我有一个如下所示的数据集,其中包含从 2014-5-1 到 2014-11-30 的 46 种产品价格历史记录:
prodid price date
19119665 27.89999962 11/25/2014
19119665 27.89999962 11/25/2014
19119665 26.89999962 11/27/2014
19119665 26.89999962 11/28/2014
19119665 26.89999962 11/30/2014
19141710 19.89999962 5/1/2014
19141710 19.89999962 5/1/2014
19141710 19.89999962 5/1/2014
而且我想把每一种产品都当作一只股票,计算这些产品随时间的每日价格变化。
我想到了以下使用 quantmod 的代码:
periodReturn(data,period='daily',subset='prodid')
但是这段代码似乎没有做它应该做的事情。我收到以下错误:
Error in try.xts(x) :
Error in as.POSIXlt.character(x, tz, ...):character string is not in standard unambiguous format
非常感谢任何帮助!
我认为没有一种方法可以实现您的要求。这是我使用 dplyr
.
的方法
dat %>% mutate(perx = price / lag(dat$price) - 1)
prodid price date perx
1 19119665 27.9 11/25/2014 NA
2 19119665 27.9 11/25/2014 0.00000000
3 19119665 26.9 11/27/2014 -0.03584229
4 19119665 26.9 11/28/2014 0.00000000
5 19119665 26.9 11/30/2014 0.00000000
6 19141710 19.9 5/1/2014 -0.26022305
7 19141710 19.9 5/1/2014 0.00000000
8 19141710 19.9 5/1/2014 0.00000000
我有一个如下所示的数据集,其中包含从 2014-5-1 到 2014-11-30 的 46 种产品价格历史记录:
prodid price date
19119665 27.89999962 11/25/2014
19119665 27.89999962 11/25/2014
19119665 26.89999962 11/27/2014
19119665 26.89999962 11/28/2014
19119665 26.89999962 11/30/2014
19141710 19.89999962 5/1/2014
19141710 19.89999962 5/1/2014
19141710 19.89999962 5/1/2014
而且我想把每一种产品都当作一只股票,计算这些产品随时间的每日价格变化。
我想到了以下使用 quantmod 的代码:
periodReturn(data,period='daily',subset='prodid')
但是这段代码似乎没有做它应该做的事情。我收到以下错误:
Error in try.xts(x) :
Error in as.POSIXlt.character(x, tz, ...):character string is not in standard unambiguous format
非常感谢任何帮助!
我认为没有一种方法可以实现您的要求。这是我使用 dplyr
.
dat %>% mutate(perx = price / lag(dat$price) - 1)
prodid price date perx
1 19119665 27.9 11/25/2014 NA
2 19119665 27.9 11/25/2014 0.00000000
3 19119665 26.9 11/27/2014 -0.03584229
4 19119665 26.9 11/28/2014 0.00000000
5 19119665 26.9 11/30/2014 0.00000000
6 19141710 19.9 5/1/2014 -0.26022305
7 19141710 19.9 5/1/2014 0.00000000
8 19141710 19.9 5/1/2014 0.00000000