试图了解如何计算xts对象中的滞后

时间:2013-10-26 01:22:57

标签: r xts quantmod

目前我有以下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?谢谢。

3 个答案:

答案 0 :(得分:1)

我从xts包pdf online,

中找到了它

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

xts包如今具有diff.xts功能。

您可以指定滞后时间以及微分顺序。 对于股票收益,我建议使用lag = 1,difference = 1和log = TRUE。