1. 课程导入与问题界定
在日内交易与微观结构研究中,盘口买卖价差(Bid-Ask Spread)是最容易被观察到、也最容易被误读的指标之一。很多初学者会把它简单理解为“买一价与卖一价之差”,然后据此判断流动性好坏。但真正决定交易成本与成交质量的,不只是价差的大小,而是价差在什么时点、以什么形态、伴随怎样的成交行为出现。本课程要研究的核心对象,正是“盘口买卖价差”与“成交时点”之间的关联特征:价差在时间轴上的变化,如何与逐笔成交的发生时刻、方向、规模相互对应。
先把研究对象界定清楚。盘口数据通常指 Level-1 或 Level-2 行情中的买一至买N、卖一至卖N的价格与挂单量,以及最新价、累计成交量等字段;成交时点则指逐笔成交记录中的时间戳,精确到毫秒甚至更细。二者本是两套数据流:盘口是“挂单意图”的快照,成交是“意图被撮合”的事件。本课程关注的关联特征,就是在这两套流之间建立可量化、可复现的对应关系,例如:价差收窄的瞬间是否伴随成交放量?价差突然走阔后,成交时点的间隔是否被拉长?大单成交是发生在价差较窄的时点还是较宽的时点?
为了把上述关系讲清楚,先建立整体分析框架。下图展示了从原始盘口数据到成交时点分析的完整链路:左侧是盘口快照流,右侧是逐笔成交流,二者在时间轴上对齐后,形成“成交—价差”配对样本,再进入特征提取与判断环节。
框架中有两个容易被忽略、却直接决定分析成败的细节。其一是时间对齐口径。盘口快照通常是按固定频率(例如每 3 秒一笔)或事件触发采样,而成交是逐笔事件,两者时间戳并不天然一一对应。若简单取“成交时刻之前最近的一笔快照”,在行情剧烈波动时可能引入明显滞后。实务中常用两种处理:一是取成交时刻前后最近快照中时间更近者,二是对快照价差做线性插值。无论选哪种,都必须在全文保持一致,并在结果中说明口径。其二是价差的定义方向。本文统一采用“卖一价减买一价”为正,价差越大表示流动性越差、即时成交成本越高;若某市场存在负价差(交叉盘口),需单独标注,不能与正常价差混算。
再看业务场景。价差与成交时点的关联,最典型的应用有三类。第一类是交易成本评估:一笔主动买单若在价差较宽时点成交,其隐含的即时成本更高,长期累积会显著侵蚀收益。第二类是流动性时点选择:开盘后、午间休市前后、收盘前,价差往往呈现规律性变化,成交时点的选择应避开价差异常走阔的窗口。第三类是异常识别:当价差突然走阔而成交间隔同时拉长,往往意味着做市意愿下降或信息事件冲击,可作为风控信号。
为了让后续章节有统一的“分析单元”,这里给出一个可直接使用的配对样本字段设计。假设我们处理某只股票的某交易日数据,盘口快照每 3 秒一笔,逐笔成交按交易所时间戳记录。对每笔成交,我们构造如下记录:
配对样本字段(示例结构)
t_t 成交时间戳(毫秒)
price 成交价
volume 成交量(股)
side 主动方向(B/S,按成交价与买卖一价关系判定)
spread 该时点价差 = 卖一价 − 买一价(元)
spread_bp 价差(基点)= spread / 中间价 × 10000
dt_prev 与上一笔成交的时间间隔(毫秒)
snap_lag 所用快照与成交的时间差(毫秒,用于质量标记)
其中 spread_bp 用基点表示,便于跨股票、跨价格水平比较;snap_lag 是质量标记,若某笔成交匹配到的快照时间差超过一个采样周期,应在分析时降权或剔除。这些字段不是装饰,而是后续所有关联特征计算的输入。例如判断“宽价差时点成交是否更少”,就是对 spread_bp 分箱后统计各箱内的成交笔数与平均 dt_prev;判断“主动买单是否集中在窄价差时点”,就是按 side 分组比较 spread_bp 的分布。