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分钟内涨跌超过5%
- 累计亏损达到当日利润的50%
- 交易所出现异常(如延迟、断连)
- 库存偏差超过30%且无法在1分钟内恢复
熔断之后不是直接结束,而是进入「观察模式」。等市场恢复正常后,再逐步恢复做市。嗯,这里要注意:恢复做市时不要一下子把订单全挂上去,要分批恢复,防止二次冲击。
小结
报价生成、库存管理、风险控制,这三个逻辑就像三脚架,缺一个都不稳。报价生成决定了你能不能赚钱,库存管理决定了你能赚多久,风险控制决定了你能不能活下来。我个人建议,在做回测时,先把这三个逻辑分别测试,再组合测试。这样出了问题,你能快速定位是哪个环节的锅。
好了,这一章的内容就到这里。记住,做市策略不是写代码,是写逻辑。逻辑对了,代码自然就对了。