1

目前我有下xts表。

       AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2013-09-09    505.00    507.92   503.48     506.17    12116200        506.17
2013-09-10    506.20    507.45   489.50     494.64    26490200        494.64
2013-09-11    467.01    473.69   464.81     467.71    32031600        467.71
2013-09-12    468.50    475.40   466.01     472.69    14409400        472.69
2013-09-13    469.34    471.83   464.70     464.90    10649000        464.90
...

我可以使用quantmod包来计算百分比变化,Delt(AA[,"AAPL.Adjusted"],k=1)但是我是 R 新手,想知道如何在没有包的情况下做到这一点,而不是使用某种 for 循环。我想它会是这样的lag(k/k-1)-1?谢谢你。

4

3 回答 3

1

另一种选择是使用ROC

s <- get(getSymbols('AMZN')
s$pct <- ROC(Ad(s),1)
head(s)
           AMZN.Open AMZN.High AMZN.Low AMZN.Close AMZN.Volume AMZN.Adjusted          pct
2007-01-03     38.68     39.06    38.05      38.70    12405100         38.70           NA
2007-01-04     38.59     39.14    38.26      38.90     6318400         38.90  0.005154651
2007-01-05     38.72     38.79    37.60      38.37     6619700         38.37 -0.013718346
2007-01-08     38.22     38.31    37.17      37.50     6783000         37.50 -0.022934971
2007-01-09     37.60     38.06    37.34      37.78     5703000         37.78  0.007438929
2007-01-10     37.49     37.70    37.07      37.15     6527500         37.15 -0.016816091
于 2013-10-28T05:51:11.300 回答
1

我从网上的xts包pdf中找到了,

AA$AAPL.change2<-AA[,"AAPL.Adjusted"]/lag(AA[,"AAPL.Adjusted"], k=1, na.pad = TRUE)-1

让我感到困惑的是如何区分电流与滞后,但事实证明,只需调用对象就足够了,换句话说,如果对象是 x,那么如果你想用滞后 1 划分电流,那么它只是 x/lag(x , k=1) - 这可能很明显,但对于新手来说真的很酷;)

于 2013-10-26T02:16:48.390 回答
0

这个xtsdiff.xts现在有一个功能。

您可以指定滞后期以及差分顺序。对于股票回报,我建议使用 lag=1、difference=1 和 log=TRUE。

于 2019-07-22T16:29:17.167 回答