第十五章:做市策略参数风控

报价宽度、报价深度、报价更新频率、撤单率监控

做市策略跑起来之后,我最怕什么?不是行情暴跌,而是参数失控。

你想想看,一个做市机器人,每天在市场上挂成百上千笔订单。如果某个参数出了问题,比如报价宽度突然收窄到离谱的程度,或者撤单率高得吓人——那后果可能是灾难性的。我见过不止一个团队,策略逻辑写得漂漂亮亮,结果因为参数风控没做好,一夜之间亏掉几个月的利润。

所以今天咱们就来聊聊,做市策略里那几个最关键的参数,到底该怎么监控、怎么设阈值。

核心观点:参数风控不是事后补救,而是事前预防。你得在策略运行之前,就把所有参数的合理范围定死。

一、报价宽度(Spread)监控

报价宽度,说白了就是买一价和卖一价之间的差距。这个参数直接决定了做市商的盈利空间,也决定了你能不能吃到单子。

我个人习惯把报价宽度分成三档来监控:

  • 最小宽度:防止报价过窄导致频繁成交,手续费都覆盖不了。比如在BTC/USDT永续合约上,我一般设最小宽度为0.01%。
  • 最大宽度:防止报价过宽导致长期不成交,资金利用率太低。这个值通常设为市场平均宽度的3-5倍。
  • 动态宽度:根据波动率自动调整。波动大的时候放宽,波动小的时候收窄。

我在项目中遇到过一件事:有个同事把最小宽度设成了0.001%,结果策略在流动性极差的山寨币上疯狂吃单,一晚上手续费亏了十几万。嗯,从那以后我就把最小宽度设成了硬编码,不允许策略动态修改。

避坑指南:我曾经因为没监控报价宽度的瞬时变化,导致策略在行情剧烈波动时,报价宽度瞬间收窄到接近零,被套利机器人疯狂收割。后来我加了一个滑动窗口统计,取过去5秒的平均宽度来做判断,才彻底解决这个问题。

二、报价深度(Depth)监控

报价深度指的是你在每个价位上挂多少量。这个参数直接影响你的风险敞口。

举个例子:你在买一价挂了100个BTC,卖一价挂了100个BTC。如果行情突然暴跌,你的买单全部成交,那你就持有了100个BTC的多头仓位。如果没做好对冲,这风险可不小。

我一般会监控以下几个维度:

监控指标 说明 建议阈值
单边最大深度 同一方向上所有价位挂单的总量 不超过总资金的20%
双边深度比 买盘深度 / 卖盘深度 0.5 ~ 2.0 之间
深度衰减速度 连续撤单后深度下降的速率 每分钟不超过30%

你想想看,如果双边深度比突然变成0.1,说明买盘深度只有卖盘的十分之一。这时候策略其实是在单边做空,风险极大。我建议遇到这种情况,直接暂停策略,等人工确认后再恢复。

三、报价更新频率(Update Frequency)监控

做市策略需要频繁更新报价,来应对市场变化。但更新频率太高,会带来两个问题:

  • 交易所API限频,订单被拒绝
  • 撤单率飙升,影响账户信誉

我记得有一次,一个策略在毫秒级别疯狂撤单重挂,结果被交易所直接封了API权限。那叫一个惨,整整一天没法交易。

所以我的做法是:

  1. 设定最大更新频率,比如每秒不超过5次
  2. 监控实际更新频率,如果连续10秒超过阈值,自动降频
  3. 记录每次更新的原因,方便事后复盘

注意:不同交易所的限频规则不一样。有的按IP限,有的按API Key限,有的按交易对限。一定要仔细看文档,别想当然。

四、撤单率(Cancellation Rate)监控

撤单率可能是最容易被忽视,但后果最严重的参数。

为什么?因为高撤单率会触发交易所的风控机制。轻则降低你的交易限额,重则直接封号。而且,撤单率太高说明你的报价策略有问题——挂上去的单子很快就撤掉,说明你的报价根本不合理。

我一般这样监控:

  • 整体撤单率:过去1小时内,撤单数 / 总挂单数。阈值设为70%。
  • 瞬时撤单率:过去1分钟内,撤单数 / 总挂单数。阈值设为90%。
  • 撤单原因分布:统计是因为价格变动撤单,还是因为超时撤单,还是因为手动干预撤单。

我曾经遇到过一个bug:策略在计算报价时,用了错误的时间戳,导致每次报价都立即过期,然后撤单重挂。撤单率直接飙到99%,交易所的警告邮件一封接一封。还好及时发现,不然账号就废了。

小技巧:我习惯在撤单日志里加上一个字段叫"撤单原因码"。比如01代表价格变动,02代表超时,03代表风控触发。这样复盘的时候,一眼就能看出问题出在哪。

五、参数风控的整体架构

说了这么多,咱们来画个图,把这些参数之间的关系理清楚。

做市策略参数风控架构 参数风控引擎 报价宽度 最小/最大/动态 报价深度 单边/双边/衰减 更新频率 最大/实际/原因 撤单率 整体/瞬时/原因 输出:告警 / 暂停 / 降频 / 记录日志 反馈调整阈值 每个参数模块独立监控,但最终汇总到风控引擎统一决策 告警级别:黄色(警告)→ 橙色(降频)→ 红色(暂停)

这张图展示了我常用的参数风控架构。四个参数模块各自独立监控,但最终都汇总到风控引擎。风控引擎根据告警级别,决定是发警告、自动降频,还是直接暂停策略。

我个人习惯把告警级别分成三档:

  • 黄色警告:参数接近阈值,记录日志,通知运维
  • 橙色降频:参数超过阈值,自动降低更新频率或缩小深度
  • 红色暂停:参数严重超标,直接暂停策略,等人工处理

最后说一句:参数风控不是一劳永逸的事。市场在变,策略在变,阈值也得跟着调。我建议每周复盘一次参数监控日志,看看哪些阈值设得太松,哪些设得太紧。慢慢调整,才能找到最适合你策略的那组参数。

无相订单流研究社 微信Lucian808555