to.hourly添加打开和关闭列

时间:2016-05-27 14:38:32

标签: r xts quantitative-finance

我有一个包含OHLC数据的data.frame对象:

head(data,3)
Timestamp           Open   High   Low    Close   Vol
2016-02-05 13:45:00 1161.9 1162.4 1161.7 1161.8  592
2016-02-05 13:50:00 1161.8 1163.2 1161.7 1162.5  643
2016-02-05 13:55:00 1162.5 1164.7 1162.1 1164.5 1072

然后我创建另一个data.frame,提取High和Low cols:

x <- data[,c("High","Low")]

给出了:

head(x,3)
Timestamp           High   Low
2016-02-05 13:45:00 1162.4 1161.7
2016-02-05 13:50:00 1163.2 1161.7
2016-02-05 13:55:00 1164.7 1162.1

然后转换为每小时:

x <- xts::to.hourly(x, indexAt='startof')  

以某种方式加入&#34; Open&#34;和&#34;关闭&#34;列虽然它们不存在于&#34; x&#34;:

head(x,3)
Timestamp           x.Open x.High x.Low   x.Close
2016-02-05 13:45:00 1162.4 1164.7 1162.4  1164.7
2016-02-05 14:00:00 1167.2 1176.7 1167.1  1176.7
2016-02-05 15:00:00 1176.3 1176.3 1174.9  1176.2

“打开”和“关闭”列中的值就好像它们来自data而不是x,但是当我没有将data传递给该函数时,它是如何得到这些值的?

显然这里有一个简单的方法是删除(再次)to.hourly函数后的打开和关闭列,但这是预期的行为,还是我错过了一些非常简单的东西?

1 个答案:

答案 0 :(得分:2)

输出作为预期行为是有意义的。你减少5分钟到小时栏。 to.hourly将尝试根据您的输入以较低的频率制作OHLC时间序列,而不仅仅是每小时HL时间序列。

to.hourly是包to.periodxts的包装器。根据{{​​1}}的文档:

  

将OHLC或单变量对象转换为指定的周期较低值   比给定的数据对象。例如,将每日系列转换为a   每月系列,或每月系列,每年一个或一分钟   系列小时系列。

     

结果将包含给定时间段的打开和关闭,如   以及新时期的最大值和最小值,反映在   分别是新的高点和低点。

你没有在13:55:00之后显示5分钟的酒吧,所以1167.2小时酒吧的1167.2打开是否有意义是不明显的,因为你不知道,只使用HL数据,无论是高价还是低价(首先用作开盘价的代理)。您必须查看源代码,以了解在生成每小时开窗价格时所做的近似操作(仅根据HL条数据在逻辑上无法确定是对还是错)。如果你正在处理日内条形数据,那么至少知道HLC是有帮助的,而不仅仅是HL。