三、报价价差与库存管理:价差的决定因素、库存风险与库存平衡策略
做市的核心,说白了就是两件事:怎么定买卖价差,以及怎么管手里的货。
价差是你赚的钱,库存是你扛的雷。这两者就像跷跷板的两头——价差太宽,你赚得多但没人跟你交易;价差太窄,单子倒是多,但库存风险一下就上来了。我刚开始做市那会儿,就吃过这个亏,价差设得太激进,结果库存方向跟市场反着走,一晚上亏掉半个月的利润。
今天咱们就把这两件事彻底讲透。
3.1 价差(Bid-Ask Spread)的决定因素
价差不是拍脑袋定的。它背后有清晰的逻辑,我总结为三个核心因素:
- 市场波动率——波动越大,价差越宽
- 流动性深度——流动性越差,价差越宽
- 库存状态——库存偏离目标,价差会不对称调整
咱们一个一个说。
3.1.1 波动率驱动的价差模型
波动率是价差最直接的驱动力。你想想看,如果市场每秒都在剧烈跳动,你报出去的买单可能下一秒就变成亏损单。所以波动率越高,你必须用更宽的价差来保护自己。
我常用的一个基础公式是这样的:
# 基础价差 = 波动率系数 * 预期波动 + 固定成本
spread = k * sigma * sqrt(T) + fixed_cost
# 其中:
# sigma = 近期波动率(比如5分钟收益率的标准差)
# T = 持仓时间预期(通常取1-5分钟)
# k = 风险厌恶系数(我一般设1.5-2.5)
# fixed_cost = 手续费、滑点等固定成本
嗯,这里要注意:sigma 的计算窗口不能太短,也不能太长。我踩过的坑是用了1分钟窗口,结果被一次大单砸穿,价差瞬间缩到零。后来我改成5分钟窗口加指数加权,效果稳定多了。
3.1.2 流动性深度的影响
流动性深度,说白了就是盘口上挂了多少单。深度越浅,你成交后对市场的影响越大,价差自然要更宽。
我习惯用订单簿不平衡度来调整价差:
def adjust_spread_by_depth(bid_volume, ask_volume, base_spread):
# 计算买卖深度比
depth_ratio = bid_volume / (bid_volume + ask_volume + 1e-8)
# 深度不平衡时,价差扩大
imbalance = abs(depth_ratio - 0.5) * 2 # 0到1之间
# 调整系数
spread_multiplier = 1 + imbalance * 0.5
return base_spread * spread_multiplier
这个逻辑很简单:当买单深度远大于卖单深度时,说明市场偏向买方,你的卖单风险更大,价差要调宽。反过来也一样。
3.1.3 库存状态驱动的非对称价差
这是做市的核心技巧之一。当你的库存偏离目标时,价差不能是对称的。
举个例子:你手里囤了100个ETH,但目标库存是0。这时候你的卖单报价应该比正常价差更窄(赶紧卖出去),买单报价应该比正常价差更宽(别让我再买了)。
我管这个叫库存偏移调整:
def asymmetric_spread(base_spread, inventory, target_inventory, max_inventory):
# 库存偏离度,范围 -1 到 1
deviation = (inventory - target_inventory) / max_inventory
# 买单价差调整
bid_spread = base_spread * (1 + deviation * 0.3)
# 卖单价差调整
ask_spread = base_spread * (1 - deviation * 0.3)
return bid_spread, ask_spread
这个0.3的系数是我反复调出来的。系数太大,价差扭曲严重,容易被套利者盯上;系数太小,库存回正速度太慢。
核心原则:库存偏离越大,价差越不对称。但不对称度不能超过一个阈值,否则你会变成市场的"提款机"。
3.2 库存风险:做市商最大的敌人
做市商亏钱,十有八九是因为库存管理出了问题。价差赚的那点小钱,一次方向性亏损就能全部吐回去。
库存风险分两种:
- 方向性风险——市场朝你库存的反方向走,你扛着亏损
- 基差风险——你持有的资产和基准资产之间的价差变化
我见过最惨的案例:一个做市商在LUNA崩盘前囤了大量UST,以为价差稳赚,结果一夜归零。这就是方向性风险的极端体现。
3.2.1 库存风险的量化指标
我每天盯盘时,会关注三个核心指标:
| 指标 | 公式 | 含义 |
|---|---|---|
| 库存价值 | Σ(持仓量 × 当前价格) | 总敞口大小 |
| 库存偏离度 | (当前库存 - 目标库存) / 最大容忍库存 | 偏离程度,-1到1 |
| 库存VaR | 库存价值 × 波动率 × Z值 | 一定置信度下的最大亏损 |
我个人最看重的是库存偏离度。只要这个值超过0.6,我就会启动紧急减仓程序——不管价差多窄,先把库存打回安全区再说。
3.3 库存平衡策略:实战中的三种打法
库存平衡不是理论问题,是实战问题。我总结了三套打法,分别对应不同的市场环境。
3.3.1 策略一:价差偏移法(最常用)
这就是前面讲的不对称价差。通过调整买卖报价,让市场帮你平衡库存。
具体做法:
- 设定目标库存区间(比如 [-10, +10] 个ETH)
- 库存超出区间时,不对称调整价差
- 库存回到区间内,恢复对称价差
我习惯加一个衰减因子:库存偏离越久,调整力度越大。这样可以防止库存长期偏离。
def inventory_skew_adjustment(inventory, target, max_inv, time_decay):
deviation = (inventory - target) / max_inv
# time_decay 是库存偏离持续的时间(分钟)
adjustment = deviation * (1 + time_decay * 0.1)
return max(-0.5, min(0.5, adjustment)) # 限制最大调整幅度
3.3.2 策略二:对冲法(适合大资金)
当库存规模太大,靠价差调整回正太慢时,我会用对冲。
比如你囤了大量BTC,可以在永续合约上开等量空单。这样库存的方向性风险就被对冲掉了,你可以安心赚价差。
我的经验:对冲比例不要100%。我一般只对冲70-80%,留一部分敞口吃方向性收益。完全对冲的话,你的收益就只剩下价差,资金利用率太低。
3.3.3 策略三:时间切片法(适合高频做市)
这个方法比较进阶。我把一天分成多个时间窗口,每个窗口独立管理库存。
比如:
- 09:00-10:00 窗口,目标库存为0
- 10:00-11:00 窗口,目标库存为0
- ...以此类推
每个窗口结束时,强制清仓到目标库存。这样能避免库存风险跨窗口累积。
我曾在某个交易所用这个方法,把库存风险降低了80%。代价是交易频率高了,手续费支出也多了。嗯,这是个取舍问题。
3.4 知识体系总览
下面这张图,是我做这套策略时的核心框架。你看一眼就能明白价差和库存是怎么联动的。
这张图的核心逻辑是:市场数据驱动计算,计算结果决定报价,报价执行后更新库存,库存状态再反馈回计算模块。这是一个闭环,每秒钟都在循环。
3.5 避坑指南
最后,分享几个我踩过的坑,希望能帮你少走弯路。
坑一:价差调整太激进
我曾经把库存调整系数设到0.8,结果价差严重不对称,被套利机器人反复收割。后来我改成0.3,虽然库存回正慢了点,但整体收益反而更高。
坑二:忽略手续费对价差的影响
做市不是零成本的。每笔交易都有手续费,如果价差覆盖不了手续费,你就是在给交易所打工。我建议把手续费纳入固定成本,在计算基础价差时就扣掉。
坑三:库存目标设得太死
目标库存不是一成不变的。市场趋势明显时,适当偏离目标反而能赚趋势的钱。我现在会根据市场状态动态调整目标库存——震荡市严格归零,趋势市允许一定偏离。
好了,价差与库存管理这块,核心内容就这些。记住一句话:价差是你的利润来源,库存是你的风险来源。管好库存,价差自然就稳了。
公众号:蓝海资料掘金营,微信deep3321