4、做市商风控体系:风控系统的三层架构与指标设计原则

做市商的风控系统,说白了就是你的「刹车系统」。

我见过不少团队,策略写得漂亮,交易执行也快,但风控这块就是个空壳子。结果呢?一次极端行情,几分钟就把几个月的利润全吐回去了。嗯,这可不是危言耸听。

今天我们就来聊聊风控系统的三层架构——策略层、执行层、监控层,以及风控指标该怎么设计。

4.1 为什么需要三层架构?

你想想看,做市商每天要处理成千上万笔订单。如果所有风控逻辑都揉在一起,出问题的时候你根本不知道是哪里崩了。

我个人习惯把风控拆成三层,每层各司其职:

  • 策略层:管「该不该做」—— 决定交易方向、仓位大小
  • 执行层:管「能不能做」—— 检查订单合法性、资金余额
  • 监控层:管「做得怎么样」—— 实时盯盘、异常报警

这样分层的好处是:某一层出问题,不会牵连其他层。我在项目中遇到过,执行层因为交易所API超时卡住了,但策略层和监控层依然正常工作,能及时发出警报并暂停交易。

4.2 策略层风控

策略层是风控的第一道防线。它决定的是「要不要开这个仓」。

核心指标包括:

指标 说明 我的经验值
最大持仓量 单个品种最多持有多少张 建议不超过总资金的20%
最大敞口 净头寸的绝对值上限 我一般设总资金的5%
最大订单数 同时挂单数量上限 超过1000单就要小心了
最大撤单率 撤单次数/总订单数 超过30%说明策略有问题

重要原则:策略层的风控参数,必须写在配置文件里,不能硬编码。我曾经见过有人把最大持仓量写死在代码里,结果想改参数还得重新编译部署——太坑了。

4.3 执行层风控

执行层是「守门员」。策略层说「可以开仓」,但执行层还要再检查一遍。

执行层主要做这几件事:

  • 资金检查:账户余额够不够?保证金够不够?
  • 价格检查:订单价格是否偏离市场太远?我一般设偏离不超过0.5%
  • 频率检查:同一品种每秒最多下几单?超过阈值直接拒绝
  • 重复检查:同样的订单是不是已经发过了?防止重复提交

避坑指南:我曾经遇到过一个bug,因为网络延迟,同一个订单被重复提交了3次。结果交易所那边成交了3笔,我们这边只记录了一笔。后来我加了个「订单指纹」机制——每个订单生成一个唯一哈希值,执行层先查哈希表,重复的直接丢弃。

4.4 监控层风控

监控层是「瞭望塔」。它不直接干预交易,但负责实时盯盘和报警。

监控层需要关注这些指标:

  1. 延迟监控:从策略生成订单到交易所确认,耗时超过500ms就要报警
  2. 成交率监控:挂单成交率突然下降,可能是流动性出了问题
  3. 盈亏监控:实时计算PnL,亏损超过阈值自动暂停
  4. 连接状态:交易所API、数据库、网络,任何一个断开都要立刻通知

监控层还有一个重要功能——熔断。当某个指标连续触发报警,监控层可以直接切断交易链路。我习惯设三级熔断:

  • 一级:发邮件+短信通知
  • 二级:暂停该品种交易
  • 三级:全品种暂停,人工介入

4.5 风控指标设计原则

指标设计不是拍脑袋。我总结了几条原则:

原则 解释 反面案例
可量化 每个指标必须有明确的数值 「不要下太多单」—— 这叫废话
可观测 指标值要能实时获取 「市场情绪」—— 你拿什么量化?
可行动 触发阈值后有明确动作 「注意风险」—— 然后呢?
可调整 参数能动态修改 写死在代码里,改一次重启一次

小技巧:指标阈值不要设得太死。我习惯用「动态阈值」——比如最大持仓量,平时是20%,波动率大的时候自动降到10%。说白了,风控也要跟着市场走。

4.6 三层架构的关系图

下面这张图展示了三层架构的协作关系:

策略层 最大持仓量 · 最大敞口 · 最大订单数 · 最大撤单率 决策:该不该做 策略信号 执行层 资金检查 · 价格检查 · 频率检查 · 重复检查 守门:能不能做 订单流 监控层 延迟监控 · 成交率监控 · 盈亏监控 · 连接状态 瞭望:做得怎么样 熔断/暂停信号

你看,策略层往下传信号,执行层做检查,监控层实时盯着。一旦监控层发现问题,可以直接向上反馈熔断信号。这个闭环设计,我用了好几年,基本没出过大问题。

4.7 最后说两句

风控系统不是一锤子买卖。你上线之后还要不断调参数、加指标。我每个月都会复盘一次风控日志,看看哪些指标触发了但没意义,哪些该触发却没触发。

记住一句话:风控不是为了限制你赚钱,而是为了让你活得更久

公众号:蓝海资料掘金营,微信deep3321