使用 R 上的 'highfrequency' 包转换 .csv 文件以进行进一步操作

Convert .csv file for further manipulation using 'highfrequency' package on R

highfrequency 软件包的创建方式是将 .txt.csv 文件分别从 NYSE TAQ 和 WRDS TAQ 转换为 .RData xts 文件 objects,然后可以通过包轻松操作。

问题是我对 WRDS 数据库的访问权限有限,它只能让我从 CRSP(证券价格研究中心)数据库下载 tick-data,但不能从 TAQ(交易和报价)下载数据库。所以我的数据看起来像 this。可下载文件包含 2014-01-01 至 2014-01-05 REIT 指数的 tick-data。我手动更改了 header PRICE 的代码 header,因为它是由主要作者之一 Kris Boudt 提议的。

我使用的代码如下:

 from="2014-03-01"
 to="2014-04-31"
 datasource="C:/Users/aris/Desktop/raw_data"
 datadestination="C:/Users/aris/Desktop/xts_data"
 convert(from = from,to=to,datasource = datasource,datadestination = datadestination,
 trades=TRUE,quotes=FALSE,ticker="REIT",dir=FALSE,extension="csv",header = TRUE,
 tradecolnames = NULL, quotecolnames = NULL,format = "%Y%m%d %H:%M:%S",onefile=TRUE)

我怀疑问题出在 format = "%Y%m%d %H:%M:%S" 行,因为在 .csv 文件中,日期和时间是用逗号分隔的。我试着在 %d and %H 之间放一个逗号,像这样 format = "%Y%m%d,%H:%M:%S" 但什么也没有。

错误显示

 Error in `$<-.data.frame`(`*tmp*`, "COND", value = numeric(0)) :   
 replacement has 0 rows, data has 1048575

欢迎大家提出建议。

highfrequency::convert 函数调用 highfrequency:::makeXtsTrades,它需要文本文件中的以下列:DATE、TIME、PRICE、SIZE、SYMBOL、EX、COND、CORR、G127。

我在你的文本文件中添加了空列,但没有得到你问题中的错误。编辑后的文本文件如下所示:

DATE,TIME,PRICE,SIZE,SYMBOL,EX,COND,CORR,G127
20140102,9:30:00,1123.77,,,,,,
20140102,9:30:01,1122.81,,,,,,
20140102,9:30:02,1122.77,,,,,,

不过我又遇到了一个错误。

Error in gzfile(file, "wb") : cannot open the connection
In addition: Warning message:
In gzfile(file, "wb") :
  cannot open compressed file '/home/josh/Desktop/z_xts/2014-01-02/REIT_trades.RData', probable reason 'No such file or directory'

所以看起来 convert 函数希望所有每日输出目录在您 运行 它之前存在。函数 运行s 并在我创建这些目录后创建输出。

感谢 Joshua Ulrich,我获得了一些额外的直觉并解决了问题。实际上,无需操作 .csv 文件本身并添加额外的列。您可以通过设置 tradecolnames = c("DATE","TIME","PRICE") 让机器知道您的文件中包含哪些列,而不是设置 tradecolnames = NULL。通过设置 dir=TRUE 修复了不存在目录的问题。最终代码如下所示:

from="2014-03-01" 
to="2014-04-31"
datasource="C:/Users/aris/Desktop/raw_data"
datadestination="C:/Users/aris/Desktop/xts_data" 
convert(from,to,datasource,datadestination,trades=TRUE,quotes=FALSE,ticker="REIT",dir=TRUE,extension="csv",header= TRUE,tradecolnames=c("DATE","TIME","PRICE"),format = "%Y%m%d %H:%M:%S",onefile=TRUE)