第四章:做市策略核心:报价策略、对冲策略、库存风险控制
做市策略听起来高大上,拆开来看其实就三件事:怎么报价、怎么对冲、怎么管库存。这三件事做好了,策略就稳了。我做了这么多年,见过太多人只盯着报价,结果库存爆仓,一夜回到解放前。
今天我们就来聊聊这三个核心模块。我会结合我踩过的坑,给你讲透。
4.1 报价策略:不只是挂单那么简单
报价策略,说白了就是决定你在什么价格挂买单、什么价格挂卖单。很多人以为就是“买一卖一”来回吃价差,其实远不止这些。
4.1.1 固定价差 vs 动态价差
最简单的做法是固定价差。比如你设定买卖价差为0.1%,然后一直挂着。这在波动小的时候还行,但遇到大行情,你可能会被瞬间吃掉。
我个人习惯用动态价差。怎么动态?看波动率。波动率大的时候,价差拉宽;波动率小的时候,价差收窄。这样能有效避免被套。
核心公式:
动态价差 = 基础价差 × (1 + α × 波动率系数)
其中α是调整因子,我一般取0.5到1.5之间。
4.1.2 报价深度与层数
你想想看,如果你只在盘口挂一层,对手一个大单就能把你打穿。所以我们需要多层报价。
我在项目中遇到过这样的情况:只挂两层,结果被一个机构的大单连续吃掉,库存瞬间变成负数。从那以后,我至少挂5层。
| 层数 | 挂单比例 | 说明 |
|---|---|---|
| 第1层 | 20% | 最激进,快速成交 |
| 第2层 | 30% | 中等深度 |
| 第3层 | 25% | 防御性挂单 |
| 第4层 | 15% | 较远价格 |
| 第5层 | 10% | 极端保护 |
4.1.3 报价更新频率
报价不是挂上去就不管了。市场在动,你的报价也得跟着动。但更新太频繁也不行,会被交易所限流。
我建议的节奏是:每100毫秒更新一次。太快了容易被封,太慢了跟不上行情。
小技巧:可以用“价格偏移”的方式更新。比如基准价格变了,你的所有挂单整体平移,而不是逐个撤单重挂。这样能省不少手续费。
4.2 对冲策略:别让风险裸奔
做市商最怕什么?怕库存方向暴露。你手里囤了一堆币,价格跌了,你就亏了。所以必须对冲。
4.2.1 对冲工具的选择
常用的对冲工具有三种:
- 期货合约:最常用,流动性好
- 永续合约:没有到期日,适合长期对冲
- 期权:成本高,但灵活
我个人偏好用永续合约。为什么?因为不用考虑移仓换月,省心。但要注意资金费率,有时候资金费率会吃掉你的利润。
4.2.2 对冲比例怎么定
不是所有库存都要对冲。你想想看,如果你100%对冲,那你还赚什么钱?做市商的利润来自价差,不是方向性投机。
我一般用动态对冲比例:
- 库存小于阈值(比如总资金的20%):不对冲
- 库存超过阈值:按比例对冲,比如50%
- 库存接近上限:100%对冲
注意:对冲不是一锤子买卖。市场在变,你的库存也在变。我建议每5分钟重新计算一次对冲比例。
4.2.3 对冲的时机
什么时候对冲?这个问题我纠结了很久。后来我发现,不要等库存大了再对冲,要提前布局。
我曾经吃过一次亏:库存已经很大了,想着再等等,结果行情突然反转,直接亏了5%。从那以后,我设了一个硬性规则:库存达到阈值,立即对冲,不犹豫。
4.3 库存风险控制:做市商的命门
库存风险控制,说白了就是管好你手里的货。货多了怕跌,货少了怕涨。怎么平衡?
4.3.1 库存上限与下限
每个做市商都应该有明确的库存上下限。我习惯这样设置:
- 上限:总资金的30%
- 下限:总资金的-10%(允许做空)
超过上限,强制平掉一部分库存。低于下限,强制回补。
4.3.2 库存偏离度监控
库存偏离度,就是当前库存与目标库存的差值。目标库存一般是0,但也可以根据市场情况调整。
我写了一个简单的监控脚本:
def check_inventory(current_inv, target_inv=0, threshold=0.1):
deviation = abs(current_inv - target_inv) / max(abs(target_inv), 1)
if deviation > threshold:
print(f"库存偏离度 {deviation:.2%},需要调整")
return True
return False
4.3.3 库存调整策略
发现库存偏离了,怎么调?有两种方式:
- 激进调整:直接市价单平仓,速度快但成本高
- 温和调整:通过报价策略慢慢消化,成本低但慢
我一般用温和调整。除非偏离度超过50%,才会用激进方式。
我的经验:温和调整时,可以把报价往库存方向偏移。比如你手里货多了,就把卖单价格压低一点,吸引买家。这样既能去库存,又能赚价差。
4.4 三者的协同关系
报价、对冲、库存控制,不是孤立的。它们是一个闭环。
我画了一张图,帮你理解这个关系:
你看,报价策略影响库存,库存状态决定对冲比例,对冲结果又反过来影响报价。这是一个持续循环的过程。
我刚开始做的时候,把这三个模块分开开发,结果上线后各种问题。后来我把它们整合成一个系统,用同一个状态机管理,效果好了很多。
避坑指南:我曾经把报价和对冲放在两个不同的进程里,结果报价更新了,对冲没跟上,库存直接爆了。后来我改用同一个事件循环,才解决这个问题。
4.5 实战中的常见问题
最后,分享几个我踩过的坑:
- 报价太激进:价差设得太小,结果被高频交易者反复收割。建议至少留0.05%的缓冲。
- 对冲不及时:库存已经偏离了,还在等更好的价格。结果越等越糟。设好阈值,到了就执行。
- 忽略手续费:频繁撤单重挂,手续费吃掉大部分利润。建议用价格偏移更新,减少撤单次数。
做市策略的核心,说白了就是平衡。平衡报价的激进与保守,平衡对冲的成本与收益,平衡库存的风险与机会。没有完美的策略,只有不断优化的系统。
嗯,这一章就到这里。记住,报价是手段,对冲是保障,库存控制是底线。三者缺一不可。