第三章:做市策略核心逻辑
做市策略听起来高大上,说白了就是「低买高卖」的升级版。但这里有个关键区别——你不是在赌方向,而是在赚买卖价差。我做了这么多年,见过太多人把做市做成了趋势交易,结果两边打脸。
这一章,我们来拆解做市策略的三个核心支柱:双边报价、库存管理、风险敞口控制。这三者缺一不可,就像三脚架,少一条腿就站不稳。
3.1 双边报价策略
双边报价,就是同时挂买单和卖单。你想想看,如果市场价是100,你挂99.9买、100.1卖,有人卖给你你就赚了0.1,有人买你的你也赚了0.1。这就是最朴素的做市逻辑。
但实际没那么简单。我在项目中遇到过一个问题:报价挂得太近,容易被高频交易者「剥头皮」;挂得太远,又吃不到单子。这里有个平衡点。
报价宽度怎么定?
我个人习惯用这个公式:
报价宽度 = 基础价差 × (1 + 库存偏移系数) + 波动率调整项
其中:
- 基础价差:通常取最近N笔成交的加权平均价差
- 库存偏移系数:根据当前库存偏离目标库存的程度来调整
- 波动率调整项:市场波动大时,适当放宽价差,避免被瞬间吃掉
核心要点:报价宽度不是固定的。它应该随着市场状态动态变化。熊市里价差可以收窄,牛市里反而要放宽——因为波动大了,风险也大了。
报价更新频率
高频做市,更新频率是关键。我个人建议:
- 行情变化时立即更新(比如最新成交价变动超过阈值)
- 定时更新(比如每100毫秒重新计算一次)
- 库存变化时更新(每次成交后立即调整)
小技巧:我曾经用过一个策略——每次成交后,把被吃掉的那一侧报价立即撤单重挂,另一侧保持不变。这样能有效避免「单边成交」后的风险暴露。
3.2 库存管理
库存管理,是做市策略里最容易被忽视、但最重要的一环。你想想看,如果只做双边报价不管库存,市场一波动,你的库存可能瞬间变成「烫手山芋」。
我记得有一次,我在做ETH/USDT的做市,市场突然暴跌,我的买单全被吃了,库存瞬间变成满仓多头。结果呢?后面继续跌,亏得我头皮发麻。从那以后,我把库存管理放在了第一位。
目标库存模型
我常用的库存管理模型是这样的:
目标库存 = 基准库存 + 市场趋势因子 × 风险偏好系数
其中:
- 基准库存:通常设为0,或者一个固定的中性仓位
- 市场趋势因子:根据短期趋势判断,比如最近N笔成交的涨跌方向
- 风险偏好系数:0到1之间,控制你愿意承担多大的方向性风险
警告:千万不要把风险偏好系数设得太大。我见过有人设到0.8,结果一次趋势反转直接爆仓。保守点,0.2到0.3就够用了。
库存偏离的处理
当实际库存偏离目标库存时,需要采取措施:
- 调整报价偏移:把买单和卖单的价格向有利于减少库存的方向偏移
- 主动平仓:如果偏离太大,直接下市价单或限价单平掉部分仓位
- 暂停报价:极端情况下,暂停一侧报价,只保留有利于减仓的那一侧
我个人习惯用「库存偏离度」这个指标:
库存偏离度 = (实际库存 - 目标库存) / 最大允许库存
当偏离度超过0.5时,我会启动主动平仓。超过0.8时,直接暂停所有报价,先处理库存再说。
3.3 风险敞口控制
风险敞口控制,说白了就是「别让自己死得太难看」。做市策略赚的是小钱,但亏起来可能是一笔大的。所以风控必须前置。
三层风控体系
我习惯把风控分成三层:
| 层级 | 控制对象 | 触发条件 | 处理方式 |
|---|---|---|---|
| 第一层 | 单笔报价 | 报价偏离市场价超过阈值 | 自动撤单,重新计算 |
| 第二层 | 库存敞口 | 库存偏离度超过0.5 | 启动主动减仓 |
| 第三层 | 总亏损 | 当日亏损超过限额 | 停止所有交易,人工介入 |
重要:第三层风控是最后的防线。我曾经因为没设这个,一天亏了半个月的利润。现在我的系统里,当日亏损超过2%就自动停机,谁来了都不好使。
实时监控指标
做市系统运行时,我至少会监控这几个指标:
- 成交率:买单和卖单的成交比例,理想状态是1:1
- 库存周转率:单位时间内库存的更新次数,越高说明流动性越好
- 盈亏曲线:实时计算已实现盈亏和未实现盈亏
- 最大回撤:从最高点到当前点的回撤幅度
嗯,这里要注意:成交率不是越高越好。如果成交率太高,说明你的报价太激进,可能被市场「吃干抹净」了。
核心逻辑流程图
下面这张图,是我做市系统的核心逻辑。你看一遍就能明白整个流程:
这张图的核心逻辑就是:先看行情,再算报价,然后检查库存,最后过风控。每一步都不能跳过。我见过有人为了追求速度,跳过了库存检查,结果库存越积越多,最后爆仓。
个人经验:做市策略的成败,80%在风控,20%在报价算法。很多人把精力都花在优化报价上,忽略了风控。结果呢?赚了九次小钱,一次大亏全吐回去。记住,做市不是赌博,是概率游戏。
好了,这一章的内容就到这里。双边报价、库存管理、风险敞口控制,这三块你吃透了,做市策略的骨架就有了。下一章我们会讲具体的系统架构设计,到时候把这些逻辑落地成代码。