监控与事故复盘
监控的对象不是服务器
Section titled “监控的对象不是服务器”系统监控(进程、内存、API 连通性)只是底线。量化系统真正要监控的是:实盘表现是否偏离回测预期——偏离是策略失效、数据故障或执行问题的最早信号。
每日收盘后自动执行:
- 持仓对账:实盘持仓 vs 策略目标持仓 vs 券商账户记录,三者应一致;
- 滑点对账:每笔成交的成交价 vs 信号时刻的价格(滑点分布);
- 收益对账:策略实盘收益 vs 同期模拟收益(影子回测,见研究到生产的一致性)。
import numpy as npimport pandas as pd
def daily_recon(live_pos: pd.Series, target_pos: pd.Series, slippage: pd.Series, baseline: float = 1.0) -> list[str]: """每日对账:返回告警列表""" alerts = [] pos_gap = (live_pos - target_pos).abs() if (pos_gap > 1e-6).any(): alerts.append(f"持仓偏差: {pos_gap[pos_gap > 1e-6].to_dict()}") if slippage.std() > 3 * baseline * slippage.expanding().std().iloc[-2]: alerts.append(f"滑点分布突变: 今日 std={slippage.std():.4f}") return alerts监控指标与告警阈值
Section titled “监控指标与告警阈值”| 指标 | 告警含义 |
|---|---|
| 滑点分布突变(均值/方差跳变) | 执行问题或市场流动性变化,往往先于策略失效 |
| 实盘收益与影子收益的差距扩大 | 信号执行不一致或数据故障 |
| 目标持仓偏差持续未收敛 | OMS 或数据链路问题 |
| 成交量占比异常上升 | 容量问题,见回测引擎设计 |
告警阈值不要用固定值:滑点、偏差的"正常水平"随市场变化,用滚动分布(如 3 倍滚动标准差)判定异常。
复盘:每次事故形成检查清单
Section titled “复盘:每次事故形成检查清单”事故复盘的目的不是追责,是把一次性教训变成永久性检查。模板:
- 发生了什么:时间线、影响金额、影响范围;
- 根因:数据、代码、执行、制度——归因到"哪一层缺失";
- 为什么没有更早发现:监控盲区在哪,哪个指标本可以更早告警;
- 修复:代码/流程修复 + 新的检查清单条目(这是复盘的真正产出)。
量化中的用法
Section titled “量化中的用法”- 每日三类对账自动化,异常即告警;
- 滑点分布突变作为策略失效的领先指标重点监控;
- 每次事故产出检查清单条目,进入风控或监控。
- 每日对账:实盘持仓 vs 目标持仓 vs 券商账户
- 滑点分布突变往往先于策略失效,是最重要的领先指标
- 每次事故写复盘,产出进入检查清单