4. 哨兵模型原理:哨兵监控机制、阈值触发逻辑、告警与阻断流程
哨兵模型是回放验证 Tick 数据坏账率的核心防御层。它不直接参与交易策略的计算,而是作为一个独立的监控守护进程,持续扫描回放过程中的每一笔 Tick 数据,一旦发现坏账率异常,立即触发告警并阻断后续流程。本节将拆解哨兵模型的三大核心模块:监控机制、阈值触发逻辑以及告警与阻断流程。
4.1 哨兵监控机制
哨兵监控机制采用滑动窗口 + 多维度指标的实时扫描模式。在回放验证过程中,哨兵并不等待整个回放结束才计算坏账率,而是以固定大小的窗口(例如 1000 笔 Tick)为单位,逐窗口向前滑动,实时计算当前窗口内的坏账率。
监控核心指标:
- 即时坏账率(Instant Bad Debt Rate, IBDR):当前滑动窗口内坏账 Tick 数量 / 窗口总 Tick 数量。
- 累计坏账率(Cumulative Bad Debt Rate, CBDR):从回放开始到当前时刻的全局坏账率。
- 坏账加速比(Bad Debt Acceleration, BDA):连续两个窗口间坏账率的增长速率,用于捕捉突发性恶化。
哨兵监控机制的工作流程如下表所示:
| 步骤 | 动作 | 说明 |
|---|---|---|
| 1 | 初始化窗口 | 设定窗口大小(如 1000 Tick)和滑动步长(如 100 Tick)。 |
| 2 | 接收 Tick 流 | 从回放引擎逐笔接收 Tick 数据,并标记是否为坏账。 |
| 3 | 填充窗口 | 将 Tick 数据填入当前窗口,直到窗口满。 |
| 4 | 计算指标 | 计算 IBDR、CBDR、BDA 三个核心指标。 |
| 5 | 滑动窗口 | 按步长向前滑动,丢弃旧数据,接收新数据,重复步骤 2-4。 |
4.2 阈值触发逻辑
阈值触发逻辑是哨兵模型的决策引擎。它定义了三级阈值体系,每一级对应不同的响应动作。阈值并非固定不变,而是根据回放场景(如正常行情、极端行情)动态调整。
| 阈值级别 | IBDR 阈值 | CBDR 阈值 | 触发动作 |
|---|---|---|---|
| 绿色(安全) | < 0.5% | < 0.3% | 正常监控,不干预 |
| 黄色(警戒) | 0.5% - 1.5% | 0.3% - 1.0% | 记录日志,发送预警通知 |
| 红色(阻断) | > 1.5% | > 1.0% | 立即阻断回放,触发告警 |
阈值动态调整策略:在极端行情回放(如闪电崩盘)中,哨兵模型会自动将红色阻断阈值上调至 3.0%,避免因市场剧烈波动导致误阻断。调整逻辑基于回放开始前传入的“市场波动率因子”。
触发逻辑的伪代码如下:
def check_thresholds(window_ibdr, cumulative_cbdr, volatility_factor):
# 动态调整阈值
red_ibdr_threshold = 1.5 * (1 + volatility_factor)
red_cbdr_threshold = 1.0 * (1 + volatility_factor)
if window_ibdr > red_ibdr_threshold or cumulative_cbdr > red_cbdr_threshold:
return "RED" # 阻断
elif window_ibdr > 0.5 or cumulative_cbdr > 0.3:
return "YELLOW" # 预警
else:
return "GREEN" # 安全
4.3 告警与阻断流程
当哨兵模型触发红色阻断阈值时,立即进入告警与阻断流程。该流程确保坏账风险不会扩散到后续回放环节,同时保留完整的现场数据用于事后分析。
完整的告警与阻断流程包含以下步骤:
- 冻结回放引擎:立即暂停 Tick 数据流的继续发送,防止更多坏账数据被处理。
- 生成告警事件:记录触发阻断的窗口 ID、IBDR、CBDR、时间戳、当前 Tick 序号等信息。
- 持久化现场快照:将当前窗口内的所有 Tick 数据(包括坏账标记)导出为 JSON 文件,保存到
alerts/目录。 - 发送通知:通过回调函数或消息队列,向风控中心发送告警信号。
- 等待人工确认:阻断后,回放流程进入暂停状态,等待风控人员确认是否继续、跳过或终止回放。
重要提醒:阻断流程一旦触发,回放引擎不会自动恢复。风控人员必须手动确认以下三种操作之一:
继续 — 忽略本次告警,继续回放;跳过 — 跳过当前窗口,从下一个窗口继续;终止 — 彻底终止本次回放验证。
继续 — 忽略本次告警,继续回放;跳过 — 跳过当前窗口,从下一个窗口继续;终止 — 彻底终止本次回放验证。
通过哨兵监控机制、阈值触发逻辑与告警阻断流程的紧密配合,哨兵模型能够在回放验证过程中实时捕捉坏账率异常,将风险控制在最小范围内,为后续的坏账分析与策略优化提供可靠的保障。