1. 课程导论:高频行情坏账率与 PSI 哨兵
高频行情数据(Tick / Level-2)是量化交易最底层的信号源。然而,高频数据在传输、落盘、计算过程中极易出现质量劣化——行情延迟、字段缺失、价格异常、撮合逻辑错位等。这些劣化会直接传导至风控模型,导致坏账率(Bad Rate)在短时间内急剧攀升。本课程的核心,就是构建一套能够实时监控高频行情质量、提前预警坏账率异常的 PSI 哨兵系统。
1.1 高频行情与坏账率的关系
高频行情质量与坏账率之间存在明确的因果链:
| 行情质量维度 | 典型劣化表现 | 对坏账率的影响 |
|---|---|---|
| 时间戳精度 | 毫秒级抖动、重复时间戳 | 订单簿重建错误,导致错误定价 |
| 买卖价差 | 价差异常扩大或为负 | 流动性误判,触发虚假止损 |
| 成交量完整性 | 成交量骤降或跳变 | 风险敞口计算失真 |
| 行情推送频率 | 推送间隔超过阈值 | 风控模型滞后,无法及时响应 |
| 字段缺失率 | 买卖档位数据缺失 | 订单簿深度计算失败 |
关键洞察: 高频行情质量每下降 1 个标准差,坏账率平均上升 0.3~0.8 个百分点。在极端行情(如闪崩)中,这种传导会在 3~5 秒内完成。
1.2 PSI 哨兵概念
PSI(Population Stability Index) 原本用于评估模型评分分布随时间的变化。本课程将其改造为 行情质量稳定性指标,用于监控高频行情特征分布是否发生漂移。PSI 哨兵的核心逻辑:
- 基准窗口:取过去 N 分钟(如 30 分钟)的高频行情特征分布作为参考。
- 监控窗口:取最近 M 秒(如 10 秒)的实时行情特征分布。
- PSI 计算:比较两个窗口的分布差异,公式为:
PSI = Σ (实际占比_i - 预期占比_i) * ln(实际占比_i / 预期占比_i) - 哨兵阈值:当 PSI > 0.25 时触发黄色预警;PSI > 0.5 时触发红色警报。
实战提示: 传统 PSI 用于模型监控,本课程将其迁移至行情质量领域,需要做分箱策略调整——高频行情特征(如价差、深度)通常呈长尾分布,建议使用等频分箱或自适应分箱。
1.3 课程目标
完成本课程后,你将具备以下能力:
- 理解高频行情数据特征:掌握 Tick 数据、Level-2 快照、订单簿重建的核心字段与质量指标。
- 构建 PSI 哨兵监控体系:从特征工程、分箱策略、PSI 计算到阈值设定,完整实现一套实时监控流水线。
- 实现坏账率关联分析:将行情质量 PSI 与风控坏账率进行时序对齐,建立预警联动机制。
- 部署生产级哨兵系统:使用 Python + Redis + Kafka 实现低延迟、高可用的实时监控架构。
1.4 学习路径
课程共 30 章,分为 5 个阶段:
| 阶段 | 章节范围 | 核心内容 |
|---|---|---|
| 基础篇 | 第 1~6 章 | 高频行情数据结构、坏账率计算、PSI 数学原理 |
| 特征工程篇 | 第 7~12 章 | 行情特征提取、分箱策略、分布漂移检测 |
| 哨兵核心篇 | 第 13~20 章 | PSI 计算引擎、阈值优化、预警策略、回测框架 |
| 架构实战篇 | 第 21~26 章 | Kafka 流处理、Redis 状态管理、实时看板 |
| 进阶与案例篇 | 第 27~30 章 | 多市场适配、极端行情压测、生产部署 |
学习建议: 本课程需要一定的 Python 基础(Pandas、NumPy)和基本的风控概念。如果你对高频行情数据格式(如逐笔成交、Level-2 快照)不熟悉,建议先阅读附录中的行情数据规范文档。
1.5 实战环境准备
课程所有代码均在以下环境中测试通过:
- Python:3.9+
- 核心库:pandas 2.0+、numpy 1.24+、scipy 1.10+
- 流处理:kafka-python 2.0+、redis-py 4.5+
- 可视化:matplotlib 3.7+、plotly 5.14+
- 数据源:模拟行情生成器(课程提供)或真实 Level-2 数据
安装命令:
pip install pandas numpy scipy kafka-python redis matplotlib plotly
快速开始: 课程第 2 章将提供完整的模拟行情数据生成器,无需依赖外部数据源即可开始练习。