我正在尝试使用quantmod中的“to.weekly”功能将每日股价数据(仅关闭)汇总到每周股票价格数据。 xts对象foo
保存从2011年1月3日星期一到2011年9月20日星期一结束的股票的每日股价数据。汇总我使用的每日数据:
tmp <- to.weekly(foo)
上述方法成功,tmp
现在拥有一系列每周OHLC数据点,根据quantmod docs。问题是该系列节目于2011年1月3日星期一开始,随后的每周也在星期一开始,例如1月10日星期一,1月17日星期一,依此类推。我原本预计本周将默认在周五结束,以便每周系列于1月7日周五开始,并于9月16日周五结束。
我已经尝试过调整数据的开始和结束,并使用'endof'或'startof'和indexAt参数,但我不能让它返回一个星期五结束的一周。
我很感激收到的任何见解。 (抱歉,我找不到任何附加dput文件的方法,因此数据显示在下面)
FOO:
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
TMP:
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
答案 0 :(得分:1)
我想出了一些只产生近似值的东西,也许它可以被黑客攻击以返回OHLC系列。
假设foo
是xts
个对象,首先我们创建星期五的indeces向量:
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
答案 1 :(得分:0)
在星期五(由于市场休市,偶有星期四),请使用:
tmp = to.weekly(foo, indexAt = "endof")
对于星期一(由于市场休市,偶尔会有星期二),请使用:
tmp = to.weekly(foo, indexAt = "startof")`
或者您可以创建一个Date
的自定义矢量,其中包含与每周相关的日期。例如,无论市场休市如何,都强制每周与星期五相关联:
customIdx = seq(from = as.Date(“ 2011-01-07”),by = 7,length.out = nrow(tmp)) index(tmp)= customIdx