2. 行情数据基础
做多源行情交叉校验,第一步不是写比对脚本,而是把“行情数据”本身拆解清楚。只有明确每类数据的产生机制、字段语义、时间口径和复权规则,才能判断两个数据源之间的差异究竟是真实市场差异,还是口径不一致造成的假差异。本节围绕行情数据类型、常见字段、时间戳、复权、快照与逐笔、多市场差异及数据源特点展开,为后续校验与修复建立统一的语义基线。
一、核心原理:行情数据的四种基本形态
从数据产生机制看,行情数据可分为四类:快照(Snapshot)、逐笔成交(Trade/Tick)、逐笔委托(Order)和衍生指标(K线、指标值)。快照是交易所在固定时间间隔(如A股3秒、港股实时、部分源为毫秒级聚合)对盘口买卖档位与最新价的一次“拍照”;逐笔成交记录每一笔撮合成交;逐笔委托记录每一笔报单与撤单;K线则是由前两者按时间窗口聚合而成。
理解这一层,才能理解为什么两个数据源的“最新价”可能不同:一个来自快照的最新成交价,另一个来自逐笔成交的最后一笔,二者在时间切片上天然存在毫秒到秒级的偏移。校验时必须先对齐数据形态,再对齐时间窗口,最后才比较数值。
二、常见字段与时间戳口径
主流行情字段通常包括:证券代码、交易所、最新价、昨收、开盘、最高、最低、成交量、成交额、买卖五档/十档价格与数量、成交笔数、交易状态等。字段名称在不同数据源中差异很大,例如“最新价”可能叫 last、last_price、trade_price、close(盘中误用),必须建立字段映射表。
时间戳是差异的高发区,常见有四种口径:
- 交易所时间(Exchange Time):交易所撮合系统打上的时间,最权威。
- 采集时间(Capture Time):数据商服务器收到报文的时间,含网络延迟。
- 本地接收时间(Local Time):客户端落库时间,受本地时钟与队列影响。
- 业务时间(Business Time):如K线所属的分钟/日切时间,用于聚合对齐。
校验时应优先使用交易所时间;若数据源不提供,则需评估采集时间与交易所时间的偏差分布,必要时做时钟校准。下面是一个字段映射与时间口径配置示例:
{
"source": "vendor_a",
"field_map": {
"symbol": "code",
"last": "last_price",
"volume": "trade_volume",
"bid1": "bid_price_1"
},
"time_field": "exchange_time",
"time_format": "yyyy-MM-dd HH:mm:ss.SSS",
"timezone": "Asia/Shanghai"
}
三、复权、快照与逐笔:三个最容易踩坑的点
复权主要影响日线及以上周期。前复权、后复权、不复权在同一只股票除权日附近会产生显著价格差异。多源校验时,若一方用前复权、另一方用不复权,除权日当天会出现“价格跳变”式差异,这不是数据错误,而是口径不同。修复策略是统一复权方式,或在比对前用复权因子还原为不复权价格。
快照与逐笔的差异常表现为:快照的成交量是累计值,逐笔成交量是单笔值;快照的买卖档位是瞬时状态,逐笔委托是事件流。用逐笔累加去核对快照累计量时,必须注意撤单、集合竞价、盘后固定价格交易等特殊时段的处理规则。
四、多市场差异与数据源特点
不同市场的交易机制直接决定行情数据的形态与校验重点。A股有集合竞价、连续竞价、涨跌停与停牌;港股有收市竞价、暗盘;有盘前盘后、做市商报价与多交易所合并;期货有夜盘与主力合约切换。这些机制会导致同一时刻不同数据源的“最新价”含义不同。
| 市场 | 典型数据形态 | 时间戳特点 | 校验重点 |
|---|---|---|---|
| A股 | 快照3秒 + 逐笔 | 交易所时间精确到毫秒 | 集合竞价、涨跌停、停牌状态 |
| 港股 | 实时快照 + 逐笔 | 含收市竞价时段 | 暗盘、收市竞价、碎股 |
| 多交易所合并 + 逐笔 | 微秒级,含盘前盘后 | 交易所标识、合并规则、延迟 | |
| 期货 | 快照 + 逐笔 + 委托 | 夜盘跨日,时间归属复杂 | 主力合约切换、夜盘日切 |
数据源方面,交易所直连行情最权威但接入成本高;券商柜台行情稳定但可能做过滤;第三方数据商覆盖广但存在清洗与延迟;开源或免费源便于测试但字段缺失多。校验时应根据业务目标选择“基准源”,通常以交易所或权威数据商为基准,其余源作为待校验对象。
五、案例与复盘:一次“最新价不一致”的排查
某策略团队发现A股某标的两数据源最新价相差0.01元,持续数分钟。初步怀疑数据源错误,但排查后发现:源A使用快照最新价,源B使用逐笔成交最后一笔;在成交稀疏时段,快照最新价可能停留在上一笔,而逐笔源已更新到更晚的一笔。二者时间切片不同,属于假差异。修复方式是将两源都归一到“同一时间窗口内的最后一笔逐笔成交价”,差异随即消失。
这个案例说明:多源校验的价值不在于“找出不同”,而在于区分差异性质。建议建立如下排查顺序:
- 确认数据形态是否一致(快照/逐笔/K线)。
- 确认时间戳口径与时区是否一致。
- 确认复权方式与除权日处理是否一致。
- 确认字段映射与单位(手/股、元/分)是否一致。
- 以上都一致后,再判定为真实差异,进入告警与修复流程。
掌握本节内容后,你已经具备判断“差异是否真实”的基础能力。下一阶段的工作,是把这些口径规则转化为可执行的校验配置与修复策略,让多源行情在统一语义下真正可比、可信、可用。