首页 文章

使用quantmod 'to.weekly'函数聚合每日数据会创建在星期一而非星期五结束的每周数据

提问于
浏览
3

我正在尝试使用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

1 回答

  • 1

    我想出了一些只产生近似值的东西,也许它可以被黑客攻击以返回OHLC系列 .

    假设 fooxts 对象,首先我们创建星期五的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
    

相关问题