7.1 市场风险与技术风险防线 一笔订单从策略引擎出发到交易所落地,只需要几百纳秒——这段时间够风控做什么?答案是:如果检查项设计得当,够做完整的一次体检。高频风控与普通风控的根本差异就在这里:它没有"事后分析、人工处置"的余地,每一道防线都必须是热路径上的纳秒级代码。本节把市场风险与技术风险两道防线逐项拆开:每项检查拦什么、拦下之后怎么办、误杀如何恢复。这是全章最贴代码的一节,也是 3.1 节那句"风控是内联闸门不是旁路服务"的完整展开。 目标清单 列出前置检查的四大类:头寸限额、肥指检测、频率限制、自成交防范,并写出检查逻辑; 说明每类检查的拦截后果与恢复流程,区分"软拦截"与"硬熔断"; 处置三类技术故障:错单风暴、行情断线、时钟漂移,给出自动化预案;
一笔订单从策略引擎出发到交易所落地,只需要几百纳秒——这段时间够风控做什么?答案是:如果检查项设计得当,够做完整的一次体检。高频风控与普通风控的根本差异就在这里:它没有"事后分析、人工处置"的余地,每一道防线都必须是热路径上的纳秒级代码。本节把市场风险与技术风险两道防线逐项拆开:每项检查拦什么、拦下之后怎么办、误杀如何恢复。这是全章最贴代码的一节,也是 3.1 节那句"风控是内联闸门不是旁路服务"的完整展开。
头寸限额是第一道:当前持仓加这笔订单的方向量,不得超过该标的的限额。限额分两级——软限额(策略级,接近时触发报价收缩)与硬限额(账户级,超出直接拒绝)。肥指检测是第二道:订单价格远离当前盘口(比如偏离最优价数个百分点)或数量异常放大,多半是参数错误或小数点事故,拦下转人工确认。频率限制是第三道:单位时间报单撤单笔数封顶,它既是自我保护(防止失控循环),也是合规义务(监管对报撤单比有明确监控线)。自成交防范是第四道:同一账户的反向订单在交易所撮合相遇是违规行为,系统必须在发出前检查未撤的己方挂单。
四道检查的实现要点是原子与预计算:所有阈值在加载时解析成比较指令直接可用的形态,所有状态(持仓、计数器)用无锁原子变量维护,整组检查在数十纳秒内完成。骨架如下:
def allow(order, state): # state 均为热路径原子快照,检查全程无锁 if abs(state.position + order.qty) > state.hard_limit: return REJECT, "HARD_POSITION" if abs(order.price - state.best_mid) > state.fatfinger_bps: return REVIEW, "FAT_FINGER" # 转人工确认队列,不自动撤 if state.msg_count_in_window > state.rate_cap: return THROTTLE, "RATE_LIMIT" # 延迟发送而非丢弃 if state.has_open_opposite(order): return CANCEL_FIRST, "SELF_MATCH" return PASS, None
四类后果值得细看:拒绝(HARD)直接打回,策略收到原因码;人工确认(REVIEW)订单挂起,交易员一秒内放行或撤销;节流(THROTTLE)不丢单但延迟发送,给失控循环踩刹车;先撤后发(CANCEL_FIRST)是自成交的标准解法。每种后果都要有配套的恢复语义——拦下来只是开始,让系统以已知状态继续才是完整的风控。

错单风暴是最凶险的剧本:策略或参数 bug 导致系统高速发出大量错误订单。处置靠两层:本机的频率闸门先踩刹车,交易所端的报单速率限制与订单状态异常告警兜底。演练方法是把频率闸门阈值临时调低跑正常流量,验证触发路径与恢复流程——真出事时没空读文档,肌肉记忆只能来自演练。行情断线的处置分秒级与分钟级两段:秒级动作是撤掉所有被动挂单(没有行情庇护的挂单是逆向选择的免费午餐),把策略切到观察态;分钟级动作是快照重对齐(2.2 的修复回路)与恢复报价的确认流程。时钟漂移最隐蔽:本机时钟与交易所偏差累积后,时间戳全部失真,归因与合规审计都会说谎。防线是持续比对(PTP 同步加偏离告警),漂移超限时标记当前时段数据不可信。
三类剧本共同的设计原则:处置动作本身必须简单到不需要判断。断线撤单不需要人工确认——少撤的损失远大于误撤的成本;时钟偏离标记不需要讨论——宁可废掉一段数据不可污染整个归因。故障场景里,犹豫比错误昂贵。
成熟市场的交易所端提供多层保护:报单速率上限、订单价格保护带(偏离盘口过多的订单拒收)、斩线机制(异常高频撤单自动断开会话)、整市熔断。这些机制免费但粗糙——阈值按全市场统一设定,保护的是市场不是你。本机防线恰好相反:精细但只覆盖已知的故障模式。两者的正确关系是本机在前、交易所兜底、互为冗余:设计时假设交易所端机制存在但不依赖它,因为它触发的那一刻,你的声誉损失已经发生。
背景:某团队的肥指检测按"价格偏离最优中间价超过阈值即转人工"实现,运行半年拦截十余次参数事故,口碑良好。
操作:某日策略的公允价计算模块异常,输出的公允价本身漂移了两个百分点。肥指检测拿这笔异常订单与同样异常的"当前盘口中间价"比较——两者一致,检查通过。连发的错误订单在交易所端价格保护带被拒收,账户无实际损失,但报单速率被交易所记录为异常,触发了监管问询。
结果:修复方案是给肥指检测换锚:价格参照改为"本时段慢速均值价"(由冷路径每秒更新一次的独立数据源),而非热路径自己的中间价——热路径内部的一致性检查无法发现热路径整体的异常,必须引入独立参照系。
解读:这个案例揭示的风险模式有个名字:自证检查。用可能同样出错的数据检查另一个可能出错的输出,等于让嫌疑人给嫌疑人作证。风控检查项设计时要对每个参照系问一句:它与被检查对象共享哪些故障模式?
变式:参照系的选取因标的流动性而异:活跃标的用慢速均值价足够;冷门标的盘口本来就稀疏,参照系要退化到上一交易日结算价加当日波动带。阈值同理不是常数——波动大的时段自动放宽,否则开盘十分钟全是误报,交易员开始习惯性放行,检查就名存实亡了。