【发布时间】:2019-02-02 09:51:59
【问题描述】:
我有一个逐笔报价的股票价格数据集,我想将高频、不规则间隔的数据转换为频率较低、间隔规则的时间序列,以便以后进行数据分析。我在这里使用 R。
数据以 1 秒的频率跟踪每笔交易/报价的特定股票价值。因此,例如,在日期时间2009-07-16 13:30:01(参考下面的数据),在这一秒内有两个报价为145.88 和145.89。
Date Value
2009-07-16T13:30:01.000 145.88
2009-07-16T13:30:01.000 145.89
2009-07-16T13:30:02.000 145.57
2009-07-16T13:30:02.000 145.75
2009-07-16T13:30:03.000 145.65
2009-07-16T13:30:03.000 145.84
2009-07-16T13:30:03.000 145.776
2009-07-16T13:30:04.000 145.74
2009-07-16T13:30:04.000 145.68
2009-07-16T13:30:04.000 145.68
2009-07-16T13:30:04.000 145.76
2009-07-16T13:30:04.000 145.68
.
.
.
首先我想将数据转换成一个有规律的间隔时间序列,它只显示股票每秒的最新价值:
Date Value
2009-07-16T13:30:01.000 145.89
2009-07-16T13:30:02.000 145.75
2009-07-16T13:30:03.000 145.776
2009-07-16T13:30:04.000 145.68
2009-07-16T13:30:05.000 145.76
2009-07-16T13:30:06.000 145.85
2009-07-16T13:30:07.000 145.8
2009-07-16T13:30:08.000 145.62
2009-07-16T13:30:09.000 145.85
2009-07-16T13:30:10.000 145.64
.
.
.
但最重要的是,我想将数据转换为定期间隔且频率较低的时间序列,例如 1 分钟,其中显示每分钟股票的最新价值:
Date Value
2009-07-16T13:31:00.000 145.89
2009-07-16T13:32:00.000 145.53
2009-07-16T13:33:00.000 145.68
2009-07-16T13:34:00.000 145.14
2009-07-16T13:35:00.000 145.7
2009-07-16T13:36:00.000 145.83
2009-07-16T13:37:00.000 145.88
2009-07-16T13:38:00.000 145.62
2009-07-16T13:39.00.000 145.84
2009-07-16T13:40:00.000 145.63
.
.
.
我尝试使用 highfrequency 包中的 aggregatets(),但它没有返回我想要的结果。即使我在代码中指定了 1 分钟,日期时间也不是规则间隔且频率较低。
library(lubridate)
library(dplyr)
data$Date <- ymd_hms(data$Date)
library(xts)
data_xts <- as.xts(data[,"Value"], order.by=data[,"Date"])
library(highfrequency)
data_new <- aggregatets(data_xts, on="minutes", k=1)
我如何在 R 中做到这一点?
【问题讨论】:
-
到目前为止你有什么尝试?
-
@jay.sf 我在高频库下尝试过 aggregatets() 命令,但它没有给出我想要的结果......日期时间都混乱了,它不是规则间隔的,而不是低频
-
感谢您添加代码,这是一个很好的问题!请参阅下面的答案。