7.1 市场风险与技术风险防线


文档摘要

7.1 市场风险与技术风险防线 一笔订单从策略引擎出发到交易所落地,只需要几百纳秒——这段时间够风控做什么?答案是:如果检查项设计得当,够做完整的一次体检。高频风控与普通风控的根本差异就在这里:它没有"事后分析、人工处置"的余地,每一道防线都必须是热路径上的纳秒级代码。本节把市场风险与技术风险两道防线逐项拆开:每项检查拦什么、拦下之后怎么办、误杀如何恢复。这是全章最贴代码的一节,也是 3.1 节那句"风控是内联闸门不是旁路服务"的完整展开。 目标清单 列出前置检查的四大类:头寸限额、肥指检测、频率限制、自成交防范,并写出检查逻辑; 说明每类检查的拦截后果与恢复流程,区分"软拦截"与"硬熔断"; 处置三类技术故障:错单风暴、行情断线、时钟漂移,给出自动化预案;

7.1 市场风险与技术风险防线

一笔订单从策略引擎出发到交易所落地,只需要几百纳秒——这段时间够风控做什么?答案是:如果检查项设计得当,够做完整的一次体检。高频风控与普通风控的根本差异就在这里:它没有"事后分析、人工处置"的余地,每一道防线都必须是热路径上的纳秒级代码。本节把市场风险与技术风险两道防线逐项拆开:每项检查拦什么、拦下之后怎么办、误杀如何恢复。这是全章最贴代码的一节,也是 3.1 节那句"风控是内联闸门不是旁路服务"的完整展开。

目标清单

  1. 列出前置检查的四大类:头寸限额、肥指检测、频率限制、自成交防范,并写出检查逻辑;
  2. 说明每类检查的拦截后果与恢复流程,区分"软拦截"与"硬熔断";
  3. 处置三类技术故障:错单风暴、行情断线、时钟漂移,给出自动化预案;
  4. 设计检查项本身的性能预算,理解为什么风控代码要按热路径标准写;
  5. 区分本机风控与交易所端保护机制的分工。

一、前置检查:四道闸门的代码形态

头寸限额是第一道:当前持仓加这笔订单的方向量,不得超过该标的的限额。限额分两级——软限额(策略级,接近时触发报价收缩)与硬限额(账户级,超出直接拒绝)。肥指检测是第二道:订单价格远离当前盘口(比如偏离最优价数个百分点)或数量异常放大,多半是参数错误或小数点事故,拦下转人工确认。频率限制是第三道:单位时间报单撤单笔数封顶,它既是自我保护(防止失控循环),也是合规义务(监管对报撤单比有明确监控线)。自成交防范是第四道:同一账户的反向订单在交易所撮合相遇是违规行为,系统必须在发出前检查未撤的己方挂单。

四道检查的实现要点是原子与预计算:所有阈值在加载时解析成比较指令直接可用的形态,所有状态(持仓、计数器)用无锁原子变量维护,整组检查在数十纳秒内完成。骨架如下:

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 同步加偏离告警),漂移超限时标记当前时段数据不可信。

三类剧本共同的设计原则:处置动作本身必须简单到不需要判断。断线撤单不需要人工确认——少撤的损失远大于误撤的成本;时钟偏离标记不需要讨论——宁可废掉一段数据不可污染整个归因。故障场景里,犹豫比错误昂贵。

三、分工:本机防线与交易所端机制

成熟市场的交易所端提供多层保护:报单速率上限、订单价格保护带(偏离盘口过多的订单拒收)、斩线机制(异常高频撤单自动断开会话)、整市熔断。这些机制免费但粗糙——阈值按全市场统一设定,保护的是市场不是你。本机防线恰好相反:精细但只覆盖已知的故障模式。两者的正确关系是本机在前、交易所兜底、互为冗余:设计时假设交易所端机制存在但不依赖它,因为它触发的那一刻,你的声誉损失已经发生。

案例复盘:一次"几乎完美"的肥指拦截与它的漏洞

背景:某团队的肥指检测按"价格偏离最优中间价超过阈值即转人工"实现,运行半年拦截十余次参数事故,口碑良好。

操作:某日策略的公允价计算模块异常,输出的公允价本身漂移了两个百分点。肥指检测拿这笔异常订单与同样异常的"当前盘口中间价"比较——两者一致,检查通过。连发的错误订单在交易所端价格保护带被拒收,账户无实际损失,但报单速率被交易所记录为异常,触发了监管问询。

结果:修复方案是给肥指检测换锚:价格参照改为"本时段慢速均值价"(由冷路径每秒更新一次的独立数据源),而非热路径自己的中间价——热路径内部的一致性检查无法发现热路径整体的异常,必须引入独立参照系。

解读:这个案例揭示的风险模式有个名字:自证检查。用可能同样出错的数据检查另一个可能出错的输出,等于让嫌疑人给嫌疑人作证。风控检查项设计时要对每个参照系问一句:它与被检查对象共享哪些故障模式?

变式:参照系的选取因标的流动性而异:活跃标的用慢速均值价足够;冷门标的盘口本来就稀疏,参照系要退化到上一交易日结算价加当日波动带。阈值同理不是常数——波动大的时段自动放宽,否则开盘十分钟全是误报,交易员开始习惯性放行,检查就名存实亡了。

本节要点回顾

  • 前置四闸门:限额、肥指、频率、自成交,全部热路径原子实现,数十纳秒完成;
  • 拦截后果分拒绝、节流、人工确认、先撤后发,每种后果的恢复语义必须预先定义;
  • 技术三剧本:错单靠闸门加交易所兜底,断线先撤单再对齐,时钟漂移设偏离熔断;
  • 处置动作要简单到不需要判断,故障场景里犹豫比错误昂贵;
  • 警惕自证检查:肥指参照系必须独立于热路径自身的盘口数据。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U