4. 盘口价差时序特征分析

盘口价差骤增事件定位的第一步,不是急着找“哪一笔成交出了问题”,而是先把价差本身当作一条时间序列来刻画。价差(Spread)通常定义为最优卖价减最优买价,即 Spread = Ask1 − Bid1,单位与报价一致(例如元或最小变动价位的倍数)。这个定义隐含了一个方向约定:价差恒为非负,数值越大表示盘口越“薄”、流动性越差。本节所有分析都基于这一约定,若切换到买卖价差率 (Ask1 − Bid1) / Mid,需在全文明确说明,避免与绝对价差混用。

价差时序特征分析要回答三个递进的问题:价差在正常状态下长什么样(分布)、什么时候它偏离了正常状态(突变点)、哪些偏离构成了值得进一步排查的骤增事件(初步识别)。三者是“基线—偏离—候选”的关系,而不是三个彼此独立的指标。

一、价差分布:先建立“正常”的参照系

价差序列的第一个特征是它高度离散且右偏。多数标的在大部分时间里价差停留在 1 个最小变动价位(tick),偶尔跳到 2、3 个 tick,极端时可能放大到十几甚至几十个 tick。因此用均值和标准差描述价差是危险的:均值会被少数极端值拉高,标准差会被右尾放大,导致“正常”区间被错误地放宽,真正的骤增反而被淹没。更稳妥的做法是用分位数刻画分布,例如取 P50、P90、P99 与最大值,并统计各价差档位的停留时长占比。

实际操作中,建议按“标的 × 交易时段”分组建立分布基线。同一标的在开盘集合竞价后、午间前后、收盘前的价差分布差异明显,若不分时段,基线会被时段效应污染。一个可用的示例参数是:以 500ms 快照为采样粒度,取连续 20 个交易日的同一时段数据,计算 P50、P90、P99,并把 P99 作为“正常上界”的初始候选。需要强调,这些数值属于教学示例的合理假设,真实基线必须用目标标的自身数据重新计算。

二、突变点检测:从“偏离”到“何时偏离”

分布告诉我们价差“通常多大”,突变点检测则要回答“在哪一刻开始不正常”。对价差这类右偏、含大量重复值的序列,直接套用均值漂移的 CUSUM 效果有限,因为大量 1 tick 的平稳段会让累积和长期贴近零轴。更实用的组合是:先做稳健标准化,再用滑动窗口的稳健 Z 分数或中位数绝对偏差(MAD)判定单点突变,最后用持续时长做过滤。

稳健标准化的做法是 z_t = (Spread_t − Median) / (1.4826 × MAD),其中 Median 与 MAD 取自同时段基线窗口。相比均值/标准差,MAD 对极端值不敏感,能把“1 tick 跳到 5 tick”这类真实突变保留下来而不被自身污染。判定阈值可先取 z_t ≥ 3 作为单点告警,但单点告警噪声大,需再叠加“连续 N 个快照满足条件”或“突变后价差在阈值以上维持不少于 T 毫秒”的持续性条件。示例参数可取 N=3、T=1000ms,仅作演示。

另一个值得同时观察的量是价差的一阶差分 ΔSpread_t = Spread_t − Spread_{t−1}。突变点检测对“跳变”敏感,而 ΔSpread 能直接标出跳变发生的那个快照,二者结合可以区分“瞬间跳上去又立刻回落”的毛刺与“跳上去并维持”的真实状态切换。前者多为单笔撤单或瞬时撮合造成,后者才更可能是流动性结构变化。

价差时序:基线区间 → 突变点 → 骤增事件候选 价差 Spread(tick) 正常区间:P50 ~ P99 时间 毛刺:跳升后快速回落 骤增:跳升并持续维持 稳健 Z 分数(基于同时段 Median / MAD) 阈值 z = 3 时间 持续 ≥ T 平稳段 单点突变(毛刺) 持续突变(骤增候选)

三、骤增事件的初步识别:把候选事件“框”出来

突变点只是“时刻”,骤增事件是“区间”。初步识别的目标是把满足条件的突变点合并成带起止时间的事件段,并给出可复核的字段。一个实用的判定规则是:以稳健 Z 分数首次越过阈值作为事件起点,以价差回落到 P99 以下并维持不少于 T 的时间作为事件终点;若两个候选段间隔小于合并间隔 G(示例取 3 秒),则合并为同一事件,避免把一次流动性冲击拆成多个碎片。

为了让后续定位有据可查,建议为每个候选事件输出一张结构化记录,字段直接对应本节的分析量,而不是套用通用模板:

字段 含义 示例值(教学假设)
event_id 事件编号 SP-20240612-0031
symbol / session 标的与交易时段 示例标的A / 上午连续竞价
start_ts / end_ts 事件起止快照时间 10:23:41.500 / 10:23:47.000
spread_before / peak 事件前价差与峰值价差 1 tick / 9 tick
z_peak 峰值稳健 Z 分数 6.8
duration_ms 事件持续时长 5500
delta_spread 跳变幅度(峰值 − 事件前) +8 tick
candidate_flag 是否进入骤增候选 是(z≥3 且持续≥T)

这张记录的价值在于把“价差变大了”这种模糊判断,转化为可排序、可回溯的候选清单。后续定位环节可以按 z_peak 或 delta_spread 排序,优先排查影响最大的事件;也可以按 duration_ms 区分瞬时冲击与持续性流动性缺失,因为二者的成因往往不同。

分布基线、阈值与持续时长参数必须来自目标标的自身的同时段历史数据,且应定期滚动更新。本节给出的 500ms 采样、z≥3、T=1000ms、G=3s 等数值均为教学示例,直接套用到其他标的可能产生大量误报或漏报。
常见误区:用全样本均值和标准差做标准化。价差右偏且含大量重复值,全样本统计量会被极端段拉偏,导致骤增事件被“正常化”。务必使用同时段、稳健统计量(Median/MAD)建立基线,并保留 ΔSpread 作为跳变方向的辅助判据。

完成本节后,应得到三样可直接使用的东西:一份按时段分组的价差分布基线(至少含 P50/P90/P99)、一套带持续性与合并规则的突变点判定参数、以及一份字段完整的骤增候选事件清单。它们共同构成后续“事件定位”的输入,而不是终点。