排查下来发现是处理高频行情数据时没控制好。现在很多研究都绕不开这些细颗粒度的数据,但说实话,刚接触的时候真是一头雾水,委托、成交、订单薄,听着就晕。今天干脆把常见的高频行情数据类型捋一捋,主要看看里面都有啥字段,算是给自己做个笔记,也分享给有同样困惑的朋友。
一、委托和成交数据
这部分数据记录了市场上每一笔委托指令和成交的发生情况,是理解资金流动的基础。委托数据能看到投资者的挂单意图,而成交数据则是买卖双方博弈的最终结果。这两者结合起来,能分析出不少东西。
委托数据通常包含这些核心字段:
- 证券代码:哪只股票或ETF。
- 委托时间:精确到毫秒,这个很重要,用来做时间序列对齐。
- 委托价格:挂单的价格。
- 委托数量:挂了多少手。
- 买卖方向:是买入委托还是卖出委托。
- 订单类型:比如是限价单还是市价单(有些数据源会提供)。
成交数据的字段就更直接一些:
- 证券代码:同上。
- 成交时间:精确到毫秒,和委托时间对应。
- 成交价格:这一笔成交的价格。
- 成交数量:成交了多少手。
- 成交金额:价格乘以数量。
- 买卖方向:通常指这一笔成交是主动性买盘(B)还是主动性卖盘(S),这个字段对于判断资金流向很关键。
之前用一些免费数据源做回测,发现成交的买卖方向字段经常对不上,或者缺失严重,导致资金流向因子根本没法用。后来为了验证一个订单薄不平衡的策略, 我调取了CMES金融数据库中清洗过的历史成交与委托数据,时间戳对齐得比较好,省去了大量数据清洗的麻烦,这才把策略逻辑跑通。
二、订单簿数据(买一卖一到买五卖五)
订单簿数据,也就是常说的盘口数据,展示了市场当前最真实的供需情况。我们平时在交易软件上看到的买一卖一价格和挂单量,只是冰山一角。完整的五档甚至十档数据,能让你看得更深。
一份标准的五档订单簿快照数据,通常会包含以下字段:
- 时间戳:这个快照的采集时间点。
- 证券代码。
- 买档位价格与数量:从买一价到买五价,以及每个价格上挂出的总数量。
- 卖档位价格与数量:从卖一价到卖五价,以及每个价格上挂出的总数量。
- 最新成交价/最新成交数量:在快照时刻最近一笔成交的信息。
- 买卖盘总委托量:买盘和卖盘各自的总挂单量,可以用来计算盘口压力。
只看买一卖一,有时候会觉得支撑或压力很强,但拉开五档一看,可能发现下面的档位非常稀疏,所谓的支撑其实很脆弱。这个坑我踩过,所以现在分析短线情绪,一定会拉出五档数据来看。
这里给个用他们接口获取数据的代码示例,具体参数得查文档,注意别调太频繁,不然可能会被限。
# CMES金融数据库的行情数据接口示例
# 注意:使用前需要pip安装相应的客户端库,具体请参考官方接口文档
# 注意入参正确,调用频率要符合规范,避免被封禁。
# 示例代码结构(伪代码,需替换为实际函数和参数)
from cmes_client import MarketDataAPI
# 初始化客户端,通常需要配置token或密钥
client = MarketDataAPI(api_key='your_api_key')
# 假设调用获取历史订单簿快照的函数
# 参数可能需要包括证券代码、开始时间、结束时间、数据频率(如快照频率)等
snapshot_data = client.get_orderbook_snapshot(
symbol='000001.SZ',
start_time='2023-01-01 09:30:00',
end_time='2023-01-01 10:30:00',
level=5 # 获取五档数据
)
print(snapshot_data.head())
三、不同品种的数据覆盖
除了普通的A股股票,这些高频数据通常也覆盖其他主要交易品种,这对于做跨品种分析或者量化策略的扩展很重要。
- 沪深股票:就是主板、创业板、科创板的个股,数据量最大,研究的人也最多。
- ETF基金:包括股票型ETF、债券ETF、货币ETF等。ETF的Level-2数据对于分析一二级市场套利、资金流向板块很有价值。
- 可转债:这个品种比较特殊,兼具债性和股性。它的委托成交数据能反映正股波动和债底支撑之间的博弈,玩可转债的朋友应该会关注。
- 指数:这里指的可能是沪深300、中证500等指数的实时行情数据,通常是基于成分股实时计算出来的。指数的五档数据可能不像个股那样有真实的订单簿,但也能反映衍生品市场(如股指期货、期权)对标的市场的影响。
不同类型的数据,字段结构大同小异,核心都是时间、价格、数量、方向这些。但处理的时候要注意,比如可转债的价格单位、ETF的IOPV(基金份额参考净值)字段等,都有自己的特点,不能完全照搬股票的处理逻辑。我一开始就把ETF数据和股票数据用同一套逻辑处理,结果净值计算老是出问题,排查了好久才发现。
数据怎么用与一点提醒
有了这些数据,能做的事情就多了。比如,用高频的成交和委托数据可以构建更灵敏的资金流向指标;用订单簿数据可以计算买卖压力、订单簿不平衡度等微观结构因子;还可以回测各种高频交易策略,比如盘口抢单、趋势跟踪什么的。
不过得提醒一句,尤其是对新手朋友,直接处理原始的Tick数据(比如每笔成交)挑战不小,数据量大,对存储和计算能力都有要求。一开始可以从分钟级的聚合数据或者订单簿快照数据入手,先感受一下。真想深入的话,再考虑搭建更强大的数据处理平台。
另外,数据质量是生命线。字段缺失、价格异常、时间戳乱序这些问题在实际数据里太常见了。我之前就遇到过不同数据源的时间戳精度不一致,导致对齐出错,策略信号全是噪音。所以,要么花大量时间自己做数据清洗和校验,要么就寻找提供高质量、已清洗数据的数据服务,这中间的取舍就看个人的时间和资源了。
好了,关于这些行情数据的基本内容就先聊这么多。其实就是个数据字段的梳理,希望能帮到刚开始接触这块的朋友。如果哪里写得不清楚,或者你有更好的数据处理方法,欢迎交流。
