4、做市策略核心:报价策略、库存风险对冲、订单簿动态平衡
做市策略听起来高大上,说白了就是三件事:怎么报价、怎么管库存、怎么让订单簿保持平衡。我做了这么多年,发现很多人把做市想得太复杂了。其实核心就这三个点,搞懂了,你就入门了。
核心三要素:报价策略决定你赚不赚钱,库存风险对冲决定你活不活得久,订单簿动态平衡决定你稳不稳。
4.1 报价策略:你的利润来源
报价策略,说白了就是决定你挂买单和卖单的价格。我个人习惯把报价策略分成两层:基础价差和动态调整。
基础价差怎么定? 我刚开始做的时候,以为价差越大越好。后来亏了一次才明白——价差太大,没人跟你成交;价差太小,赚的钱不够覆盖手续费。这里有个经验公式:
基础价差 = 手续费 × 2 + 预期利润 + 风险溢价
举个例子,如果交易所手续费是0.01%,你预期每笔赚0.005%,再留0.005%作为风险缓冲,那你的基础价差就是0.03%。
我的经验: 实际项目中,我一般会把价差设为基础值的1.2倍起步,然后根据成交情况慢慢调。别一上来就想着最优价差,先活着比什么都重要。
动态调整怎么做? 市场不是静止的。波动大的时候,价差要拉宽;波动小的时候,价差可以收窄。我常用的一个简单模型:
动态价差 = 基础价差 × (1 + 波动率系数 × 近期波动率)
波动率系数我一般取0.5到2之间,具体看你对风险的容忍度。
4.2 库存风险对冲:别让自己被套牢
做市商最怕什么?不是亏手续费,是库存砸手里。你想想看,如果市场突然暴跌,你手里全是多单,那画面太美我不敢看。
库存上限控制: 我给自己定了个规矩——任何单一资产的库存不超过总资金的5%。超过这个数,必须强制对冲。我曾经有一次没遵守这个规则,结果遇到黑天鹅,一天亏了半个月的利润。嗯,从那以后我再也不敢了。
对冲工具选择: 常用的对冲工具有三种:
- 期货对冲: 适合大资金,流动性好,成本低
- 期权对冲: 适合非线性风险,但成本高,操作复杂
- 现货反向交易: 简单粗暴,但会占用资金
我个人偏好期货对冲,尤其是永续合约。原因很简单——流动性好,而且可以精确控制对冲比例。
核心原则: 库存风险对冲不是要完全消除风险,而是把风险控制在你能承受的范围内。完全对冲意味着你赚不到钱,不做对冲意味着你可能一夜归零。
Delta中性管理: 这是高频做市里常用的方法。简单说,就是让你的持仓对价格变动不敏感。比如你持有100个BTC的多单,那就做空100个BTC的期货,这样无论BTC涨跌,你的净值都不变。
但这里有个坑——Delta中性不是一劳永逸的。随着价格变动,你的Delta会偏移,需要不断调整。我一般每5分钟检查一次Delta,如果偏离超过0.5%,就重新平衡。
避坑指南: 我曾经在流动性差的品种上做Delta中性,结果调整的时候滑点太大,反而亏了更多。记住,对冲也要考虑流动性,别为了对冲而对冲。
4.3 订单簿动态平衡:保持你的存在感
订单簿动态平衡,说白了就是让你的订单始终保持在最优价格附近。市场在动,你的订单也得跟着动。
订单簿重建: 当你的订单被成交或者被市场甩在后面时,需要快速重建。我一般用以下策略:
- 监测当前最优买价和卖价
- 计算你的目标报价位置(基于价差策略)
- 撤销旧订单,提交新订单
- 检查是否成交,重复以上步骤
这个过程要在毫秒级完成。你想想看,如果市场每秒变动100次,你还在用秒级的速度更新订单,那基本就是在送钱。
// 伪代码示例:订单簿动态平衡
while (true) {
bestBid = getBestBid()
bestAsk = getBestAsk()
myBid = bestBid - spread / 2
myAsk = bestAsk + spread / 2
cancelAllOrders()
placeBid(myBid, volume)
placeAsk(myAsk, volume)
sleep(50ms) // 50毫秒更新一次
}
我的习惯: 更新频率不是越快越好。太快了容易被交易所限流,太慢了又跟不上市场。我一般设在20-100毫秒之间,具体看交易所的API限制和网络延迟。
流动性监测: 做市商的核心价值就是提供流动性。如果订单簿上你的订单太少,市场会把你吃掉;如果太多,你又承担了不必要的风险。我一般会监测以下几个指标:
| 指标 | 正常范围 | 预警值 |
|---|---|---|
| 订单簿深度占比 | 5%-15% | <3% 或 >25% |
| 成交率 | 30%-60% | <20% 或 >80% |
| 平均持仓时间 | 30秒-5分钟 | >15分钟 |
撤单与重报: 这是高频做市里最频繁的操作。市场每变动一个tick,你的订单可能就需要调整。我见过一些新手,撤单重报太慢,结果订单全挂在老价格上,被市场来回打脸。
这里有个技巧——不要全部撤单重报,而是只调整偏离最大的那几档。比如你有5档订单,只有第1档偏离了,那就只撤第1档,其他保持不动。这样可以减少API调用次数,也降低被交易所限流的风险。
总结一下: 报价策略决定你赚多少,库存对冲决定你亏多少,订单簿平衡决定你活多久。三者缺一不可。我见过太多人只关注报价策略,结果库存爆仓;也有人只做对冲,结果报价太保守赚不到钱。记住,做市是个系统工程,三个轮子都得转起来。
嗯,这一章的内容就到这里。做市策略的核心其实不复杂,难的是在实战中把这三者结合起来。下一章我们会深入讲具体的代码实现,到时候我会分享一些我踩过的坑和优化技巧。