4、做市策略核心逻辑:报价生成逻辑、库存管理逻辑、风险控制逻辑

做市策略听起来高大上,其实核心就三件事:怎么报价、怎么管库存、怎么控风险。这三件事做好了,策略基本就稳了。我做了这么多年回测,发现很多人把精力全花在报价算法上,结果库存管理一塌糊涂,最后亏得莫名其妙。

今天咱们就把这三个逻辑拆开揉碎了讲。你想想看,一个做市商每天面对成千上万笔订单,如果没有清晰的逻辑框架,那就是在赌博。

做市策略核心逻辑 报价生成逻辑 价差、深度、更新频率 库存管理逻辑 目标库存、偏移、再平衡 风险控制逻辑 止损、敞口、熔断 三者联动,缺一不可

4.1 报价生成逻辑:你的订单凭什么被吃掉?

报价生成是做市策略的「门面」。你挂出去的买单卖单,能不能被市场吃掉,全看报价合不合理。我个人习惯把报价生成拆成三个维度来考虑。

4.1.1 价差设定

价差就是你的买一价和卖一价之间的距离。价差太小,你赚不到钱;价差太大,没人理你。我在项目中遇到过一种情况:某个流动性极好的币种,价差设了0.01%,结果一整天都在被高频交易者来回收割。后来我把价差调到0.03%,配合适当的订单深度,反而稳定盈利了。

价差设定的核心公式其实很简单:

价差 = 基础价差 × (1 + 波动率调整因子) + 库存偏移量

这里的基础价差通常取市场平均价差的80%-120%。波动率调整因子我一般用最近N笔交易的收益率标准差来计算。库存偏移量后面会讲。

💡 我的经验: 别把价差设成固定值。市场波动大的时候,价差要放大;波动小的时候,价差可以收窄。动态调整才是王道。

4.1.2 订单深度

订单深度指的是你在每个价位上挂多少量。挂太少,大单一来你就被吃穿;挂太多,风险敞口太大。

我常用的方法是分层挂单:

  • 第一层(最优价): 挂基础量的30%,用来吸引散户
  • 第二层(偏移1个tick): 挂基础量的50%,用来承接稍微大点的单子
  • 第三层(偏移2个tick): 挂基础量的100%,作为安全垫

说白了,就是让订单像阶梯一样铺开。这样既能保证流动性,又不会因为一个大单就把你打穿。

4.1.3 报价更新频率

报价更新太快,容易被交易所限频;更新太慢,你的报价就成了「死单」。我记得有一次回测时,我把更新频率设成了100ms一次,结果实盘时被交易所直接限制了API调用。后来我改成根据市场事件触发更新——有成交或价格变动超过阈值时才更新,效果好了很多。

⚠️ 注意: 不同交易所的限频规则不一样。做回测时一定要把限频因素考虑进去,否则回测结果会严重失真。

4.2 库存管理逻辑:别让货砸在手里

库存管理,说白了就是控制你手里有多少货。做市商最怕什么?最怕市场暴跌时你手里全是货,或者暴涨时你手里全是现金。我见过太多人因为库存管理不当,一天亏掉一个月的利润。

4.2.1 目标库存设定

每个策略都应该有一个目标库存水平。这个目标可以是固定的(比如持有100个ETH),也可以是动态的(比如总资产的20%)。我个人更倾向于动态目标,因为它能适应市场变化。

目标库存的计算方式:

目标库存 = 基准库存 + 趋势因子 × 市场动量

基准库存根据你的风险偏好设定。趋势因子我一般取0.3-0.5,市场动量用最近N分钟的涨跌幅来计算。

4.2.2 库存偏移机制

当实际库存偏离目标库存时,你需要通过调整报价来「纠正」这个偏差。这就是前面提到的库存偏移量。

举个例子:假设你的目标库存是100个ETH,现在你手里有120个。那你就应该把卖单的价格调低一点,把买单的价格也调低一点,整体偏向卖出。反过来,如果手里只有80个,那就偏向买入。

偏移量的计算公式:

偏移量 = (实际库存 - 目标库存) × 偏移系数

偏移系数我一般取0.1-0.3,具体看你对库存偏差的容忍度。

核心要点: 库存偏移不是让你一次性把库存调平,而是通过报价的微调,让市场帮你慢慢调整。急不得。

4.2.3 再平衡策略

当库存偏差超过某个阈值时,就需要主动再平衡了。再平衡的方式有两种:

  • 被动再平衡: 通过调整报价,等待市场成交来调整库存
  • 主动再平衡: 直接下市价单或吃单来快速调整库存

我建议优先用被动再平衡。只有在库存偏差超过20%或者市场出现极端行情时,才考虑主动再平衡。主动再平衡的成本很高,容易吃大亏。

4.3 风险控制逻辑:活下来比赚钱更重要

做市商这个行当,活得久比赚得多重要。风险控制不是锦上添花,而是保命符。我见过太多策略,回测时收益曲线漂亮得不行,实盘一周就爆仓了。为什么?风控没做好。

4.3.1 止损机制

止损不是散户才用的东西,做市商一样需要。只不过做市商的止损逻辑更复杂一些。

我常用的止损方式:

  • 单笔止损: 某笔订单亏损超过一定金额时,立即撤单
  • 时段止损: 某个时间段内累计亏损超过阈值时,暂停做市
  • 波动率止损: 市场波动率超过设定上限时,缩小报价规模或暂停

我曾经在一次回测中忽略了波动率止损,结果遇到黑天鹅事件,策略在10分钟内亏掉了3个月的利润。从那以后,我把波动率止损放在了风控的第一位。

4.3.2 敞口限制

敞口就是你暴露在市场风险中的头寸大小。做市商不能无限度地持有头寸,必须设定上限。

敞口类型 定义 建议上限
净敞口 多头 - 空头 总资产的10%-20%
总敞口 多头 + 空头 总资产的50%-80%
单币种敞口 单个币种的头寸 总资产的5%-10%

这些数字不是拍脑袋定的。我一般会根据历史回测的最大回撤来反推敞口上限。你想想看,如果历史最大回撤是20%,那你的敞口就不能超过这个数。

4.3.3 熔断机制

熔断是最后一道防线。当市场出现极端情况时,直接停止做市,保护本金。

我设计的熔断条件通常包括:

  1. 价格在1分钟内涨跌超过5%
  2. 累计亏损达到当日利润的50%
  3. 交易所出现异常(如延迟、断连)
  4. 库存偏差超过30%且无法在1分钟内恢复

熔断之后不是直接结束,而是进入「观察模式」。等市场恢复正常后,再逐步恢复做市。嗯,这里要注意:恢复做市时不要一下子把订单全挂上去,要分批恢复,防止二次冲击。

⚠️ 血的教训: 熔断条件不能设得太宽松,否则等于没有。但也不能设得太严格,否则频繁熔断会影响收益。我建议用历史数据回测一下,找到最优的阈值。

小结

报价生成、库存管理、风险控制,这三个逻辑就像三脚架,缺一个都不稳。报价生成决定了你能不能赚钱,库存管理决定了你能赚多久,风险控制决定了你能不能活下来。我个人建议,在做回测时,先把这三个逻辑分别测试,再组合测试。这样出了问题,你能快速定位是哪个环节的锅。

好了,这一章的内容就到这里。记住,做市策略不是写代码,是写逻辑。逻辑对了,代码自然就对了。


专注资料整理