1. 课程导入与误报排障框架
盘口异常检测的目标,是从逐笔委托、逐笔成交与快照行情中识别出真正值得关注的异常行为,例如虚假挂单、瞬时撤单、对倒成交、盘口价格跳变等。但在真实生产环境中,检测系统每天输出的告警里,往往有相当比例并非真正的市场异常,而是由数据、规则、参数或环境因素引发的误报。本课程用 30 个案例,系统梳理盘口异常检测中常见的误报来源与排障方法。在进入具体案例之前,先把"检测什么、误报是什么、怎么排、按什么路径学"这四件事建立成统一框架,后续每一例才能定位到框架中的具体位置。
一、盘口异常检测的核心对象
排障的第一步是明确"被检测的对象"到底是什么。盘口异常检测的输入通常由三层数据构成:逐笔委托(含委托编号、方向、价格、数量、到达时间)、逐笔成交(含成交编号、买卖委托编号、成交价、成交量、成交时间)以及快照行情(十档或五档买卖盘、最新价、累计成交量、快照时间戳)。检测规则在这三层数据上计算特征,例如某价位挂单量在 200ms 内的撤单比例、买一卖一价差相对历史分位的偏离、同一委托编号的成交与撤单时序关系等。
因此,一个告警至少关联四类对象:标的与交易时段(哪只股票、集合竞价还是连续竞价)、触发规则与阈值(哪条规则、参数取值)、特征计算所依赖的原始记录(具体委托号、成交号、快照序号)、输出通道与下游动作(告警落库、推送、人工复核)。排障时若不能把告警还原到这四个对象上,就只能凭经验猜测。建议在告警体中固定携带 rule_id、symbol、session、trigger_ts、feature_value、threshold、raw_ref 字段,让每条告警天然可回溯。
二、误报的定义与分类
本课程对误报采用可操作的定义:告警所指向的"异常"在业务语义上不成立,或虽成立但不具备关注价值。前者是"假异常",后者是"真异常但无意义"。据此把误报分为五类,这也是 30 例案例地图的分类主轴:
- 数据类误报:行情缺失、重复推送、乱序到达、时间戳精度不足、复权或代码映射错误,导致特征被算错。
- 规则逻辑类误报:规则本身对市场机制理解有偏差,如把集合竞价的正常撤单、ETF 申赎引起的盘口变化判为异常。
- 参数阈值类误报:逻辑正确但阈值过松或过紧,未按流动性、波动率、板块分层设定。
- 环境与状态类误报:开收盘、停复牌、除权除息、熔断、临时停牌等状态切换期间,盘口形态本就特殊。
- 下游处置类误报:检测正确,但去重、聚合、优先级或推送环节把同一事件放大成多条告警,形成"告警风暴"。
三、排障流程总览
排障不是从头重跑模型,而是沿数据链反向定位第一个出错的环节。下图给出本节的核心排障框架:从告警出发,依次经过告警复现、原始数据核验、特征重算、规则与参数审查、市场状态核对,最终归入五类误报之一并给出处置动作。
流程的关键在于顺序不可跳:先复现再核数据,先核数据再改规则。实践中常见的错误是看到告警直接调阈值,结果把真实异常一起压掉。正确做法是先用同一份原始数据、同一套参数重算特征值,若重算结果与告警记录不一致,问题在计算或数据链路;若一致,再检查规则在当前市场状态下是否适用。
四、30 例案例地图与学习路径
30 个案例按上述五类误报组织,每例都包含"现象—复现—定位—修复—回归"五个要素,但详略按案例复杂度自然分布。学习路径建议按类别推进:
| 案例区间 | 误报类别 | 典型排障切入点 | 建议投入 |
|---|---|---|---|
| 例 1–8 | 数据类 | 逐笔与快照对齐、时间戳精度、重复推送去重 | 打牢数据核验基本功 |
| 例 9–15 | 规则逻辑类 | 集合竞价撤单、ETF 申赎、做市商报价机制 | 理解市场机制再改规则 |
| 例 16–21 | 参数阈值类 | 按流动性/波动率分层设阈、回测验证 | 掌握调参与回归方法 |
| 例 22–26 | 环境状态类 | 开收盘、停复牌、除权除息的状态门控 | 建立状态机意识 |
| 例 27–30 | 下游处置类 | 告警去重、聚合窗口、优先级排序 | 从单条告警走向告警治理 |
建议的学习方法是:每学一例,先在框架图中标出它落在哪个环节、属于哪一类,再尝试用自己熟悉的标的复现一次。例如数据类案例中,可以取某只股票连续竞价时段的逐笔委托与快照,检查快照序号是否单调、逐笔时间戳是否落在快照区间内;参数类案例中,可以对比高流动性大盘股与小盘股在同一阈值下的告警密度差异。只有把案例放回框架,30 例才不是 30 个孤立故事,而是一张可迁移的排障地图。
掌握这套框架后,后续每一例都可以按"它属于哪类误报、卡在流程哪一步、修复后如何验证"三个问题来阅读,从而把个案经验转化为可复用的排障能力。