TAQ 数据处理

这个项目是我在UNC为了处理 TAQ 数据所做,也是我从 Matlab 转向 R 之后的第一次实际应用,所以很多地方只做到了可用而已。以下是翻译到中文的 README 文档。

Github链接:https://github.com/wangguansong/TAQDataTreatment

TAQ 数据库包括了股票成交和报价记录。由于电子交易网络的出现,交易量大大地增加了。SAS 用户可以从 TAQ 数据库直接获取数据,但如果从 TAQ 网站直接请求下载交易数据,下载文件常常十分巨大很难直接分析。

这个项目利用 Shell 脚本(主要是 awk)和 R 脚本,把大(压缩)数据文件分割成每日每支股票的小数据文件(RData)。此外还包括了一些基本的数据处理和清理。

文件和脚本如下所列,按功能分类:

基本信息

  • dj30.txt
    包含道琼斯30指数(在 2012 年时)成份股符号列表,用于从 TAQ 数据库请求数据时的股票符号列表。
  • dj30_name.csv
    包含道琼斯30指数成份股的符号、名称和交易列表。
  • halfdays.txt
    包含从 1993 年到 2012 年的所有半交易日列表,格式为 yyyymmdd(例如 20150923)。
  • Overview of TAQ Data.pdf
    TAQ 数据的概览(官方文档)。

分割大文件

  • TAQSplit2gz.sh
    把大文件(csv, gz,或 zip 格式)分割成每日每支股票的小文件,分割后的小文件包含了一支股票在一天内的交易/报价记录。分割后的 csv 文件被压缩为gz文件。
  • TAQSplit2RData.sh
    本项目的核心程序。如同上一个文,只是本脚本分割后的 csv 文件保存成 RData 文件。这个脚本依赖于下面的 R 脚本(和 R 程序)。
  • TAQcsv2RData.R
    读取一个 csv 文档并输出为一个 RData 文件。数据列类型需要指明。
  • SortRDataBySymbol.sh
    当 TAQ 大文件包含很多支股票和日期时,分割后会生成很多小文件。此脚本将这些小文件整理为按股票分类的文件夹。
  • TAQLoop.sh
    在 TAQ 大文件中扫描所有的股票符号和日期,然后生成一个索引文件或者对每一个股票/日期组合运行一个处理小 csv 的脚本。

获取一日一支股票的记录

  • TAQExtract.sh
    给定一个股票符号和一个日期,此脚本在大文件中寻找所有该股票/日期组合的记录。如果存在索引文件,此脚本会利用索引信息提高速度。运行时间会和记录在大文件中所处位置有关,通常为几分钟。
  • TAQExtract.R
    在 R 中引用上个脚本。

无效记录的粗略处理

  • TAQFilter.R
    R 方程,输入一个 R 数据框(data frame)或一个包含数据框的 RData 文件名,返回一个长度为数据框行数的逻辑向量,其中 TRUE 代表正常数据而 FALSE 代表无效数据。
  • TAQError.R
    R 方程,输入一个R数据框(data frame)或一个包含数据框的 RData 文件名,返回一个长度为数据框行数的逻辑向量,其中 FALSE 代表离奇的数据(比如点错小数点的价格)。
  • TAQOutLiersBHLS.R
    R 方程,输入一个价格的向量,返回一个对应长度的逻辑向量,其中 TRUE 代表可能为异常值。
  • TAQSparseSample.R
    R 方程,输入一个R数据框(data frame),给定采集数据的频率(每秒、每10秒等等),返回一个 R 数据框,其中第一列为采集时间,第二列为对应的原数据框的行数。
  • TAQCondPlot
    R 方程,输入一个R 数据框(data frame)或一个包含数据框的 RData 文件名,生成一个价格走势图,其中标示出所有异常的记录点。

生成可用数据

  • TAQApplyFilter.R
    R 方程,给定一个 RData 的文件名,检查其中列的格式,如果需要则更新原 RData 文件。运行指定的过滤程序,把结果保存到新 RData 文件中。
  • TAQCreateSamples.R
    类似于上个文件,但运行更多的过滤程序。另外会报告检查到的格式错误而不会自动改变原文件。
  • TAQCheckData.R
    R 脚本,生成一个数据框,保存所有小 RData 文件的元信息。如果过滤文件已存在,将相应信息填入数据框。
王冠嵩
王冠嵩
数据工作者

Everyone knows it’s Butters.