在做量化时,经常会用到下面格式的金融数据。
这条数据 (后文称作 bar) 包含 6 个属性:
- 日期时间 (date_time) 是 2013 年 9 月 1 日 19 时 32 分 23 秒 387 毫秒
- 起始价 (open) 是 1640.25
- 最高价 (high) 是 1642.00
- 最低价 (close) 是 1639.00
- 结束价 (high) 是 1642.00
- 成交量 (volume) 为 28031
注意我并有把 open 和 close 翻译成开盘价和收盘价,因为这条数据并不是按日来收集的,而它对应的时间精确到 387 毫秒。
另外为什么在一个时点上有四种不同的价格,即市场常见的 OHLC? (每个字母代表 open, high, low, close 四个单词的首个字母)。原因是 OHLC 数据是在一段时间内 (上面 09/01/2013 19:32:23.387 是这段时间的终点) 收集很多 tick 数据的价格而决定的它们的 open, high, low, close,这段时间可以是
- 一天
- 一小时
- 一分钟
- 一秒
- 包含 1000 笔交易的那段时间
- 包含成交 100 个合约的那段时间
- 包含成交 10000 美元的那段时间
收集 tick 数据而生成某些统计量的操作叫抽样 (sample),这些统计量可以是这些 tick 数据的
- 起始值、最大值、最小值、终止值 (OHLC)
- 简单平均值 (下面要介绍的 TWAP)
- 成交量加权平均值 (下面要介绍的 VWAP)
上完本节后,你就会从大量「tick 级别」的高频数据,选出有代表性「bar 类型」的样本。你会彻底理解 tick 级别的高频数据和各种预处理技巧,以及从 tick 数据采样到 bar 数据的四种方法:等时采样、等笔采样、等量采样和等额采样。本贴即从零开始介绍如何实现上述四种采样方法,也介绍硬核量化交易工具包 mlfinlab 的实现方法。用到的数据包括:
- 比特币/美元永续掉期 tick 数据
- 标普 500 价值股 ETF tick 数据