3

我正在尝试使用 quantmod 中的“to.weekly”函数将每日股价数据(仅收盘价)汇总到每周股价数据。xts 对象foo保存从 2011 年 1 月 3 日星期一到 2011 年 9 月 20 日星期一结束的股票的每日股价数据。为了汇总这些每日数据,我使用了:

tmp <- to.weekly(foo)

根据 quantmod 文档,上述方法的成功在于tmp现在拥有一系列每周 OHLC 数据点。问题是该系列从 2011 年 1 月 3 日星期一开始,随后的每个星期也从星期一开始,例如 1 月 10 日星期一、1 月 17 日星期一等等。我原本预计这周会默认在周五结束,因此每周系列从 1 月 7 日星期五开始,到 9 月 16 日星期五结束。

我已经尝试调整数据的开始和结束,并将“endof”或“startof”与 indexAt 参数一起使用,但我无法让它返回周五结束的一周。

我很感激收到的任何见解。(抱歉,我找不到任何附加 dput 文件的方法,因此数据显示在下方)

富:

2011-01-03 2802
2011-01-04 2841
2011-01-05 2883
2011-01-06 2948
2011-01-07 2993
2011-01-10 2993
2011-01-11 3000
2011-01-12 3000
2011-01-13 3025
2011-01-14 2970
2011-01-17 2954
2011-01-18 2976
2011-01-19 2992
2011-01-20 2966
2011-01-21 2940
2011-01-24 2969
2011-01-25 2996
2011-01-26 2982
2011-01-27 3035
2011-01-28 3075
2011-01-31 3020

温度:

           foo.Open foo.High foo.Low foo.Close
2011-01-03     2802     2802    2802      2802
2011-01-10     2841     2993    2841      2993
2011-01-17     3000     3025    2954      2954
2011-01-24     2976     2992    2940      2969
2011-01-31     2996     3075    2982      3020
4

2 回答 2

1

我想出了一些只产生 Close 值的东西,也许可以进一步破解它以返回 OHLC 系列。

假设这foo是一个xts对象,首先我们创建 Fridays 的索引向量:

fridays = as.POSIXlt(time(foo))$wday == 5

然后我们在它前面加上0

indx <- c(0, which(fridays))

并使用period.apply

period.apply(foo, INDEX=indx, FUN=last)

结果:

          [,1]
2011-01-07 2993
2011-01-14 2970
2011-01-21 2940
2011-01-28 3075
于 2011-09-20T13:24:16.567 回答
0

对于星期五(由于市场关闭,偶尔会有星期四),请使用:

tmp = to.weekly(foo, indexAt = "endof") 

对于星期一(由于市场关闭,偶尔会有星期二),请使用:

tmp = to.weekly(foo, indexAt = "startof")`

或者,您可以创建一个Dates 的自定义向量,其中包含要与每周关联的日期。例如,强制每周与周五相关联,而不管市场关闭:

customIdx = seq(from = as.Date("2011-01-07"), by = 7, length.out = nrow(tmp)) index(tmp) = customIdx

于 2020-04-21T19:54:47.920 回答