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 能直接标出跳变发生的那个快照,二者结合可以区分“瞬间跳上去又立刻回落”的毛刺与“跳上去并维持”的真实状态切换。前者多为单笔撤单或瞬时撮合造成,后者才更可能是流动性结构变化。
三、骤增事件的初步识别:把候选事件“框”出来
突变点只是“时刻”,骤增事件是“区间”。初步识别的目标是把满足条件的突变点合并成带起止时间的事件段,并给出可复核的字段。一个实用的判定规则是:以稳健 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 区分瞬时冲击与持续性流动性缺失,因为二者的成因往往不同。
完成本节后,应得到三样可直接使用的东西:一份按时段分组的价差分布基线(至少含 P50/P90/P99)、一套带持续性与合并规则的突变点判定参数、以及一份字段完整的骤增候选事件清单。它们共同构成后续“事件定位”的输入,而不是终点。