三、报价价差与库存管理:价差的决定因素、库存风险与库存平衡策略

做市的核心,说白了就是两件事:怎么定买卖价差,以及怎么管手里的货

价差是你赚的钱,库存是你扛的雷。这两者就像跷跷板的两头——价差太宽,你赚得多但没人跟你交易;价差太窄,单子倒是多,但库存风险一下就上来了。我刚开始做市那会儿,就吃过这个亏,价差设得太激进,结果库存方向跟市场反着走,一晚上亏掉半个月的利润。

今天咱们就把这两件事彻底讲透。

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 策略一:价差偏移法(最常用)

这就是前面讲的不对称价差。通过调整买卖报价,让市场帮你平衡库存。

具体做法:

  1. 设定目标库存区间(比如 [-10, +10] 个ETH)
  2. 库存超出区间时,不对称调整价差
  3. 库存回到区间内,恢复对称价差

我习惯加一个衰减因子:库存偏离越久,调整力度越大。这样可以防止库存长期偏离。

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 知识体系总览

下面这张图,是我做这套策略时的核心框架。你看一眼就能明白价差和库存是怎么联动的。

报价价差与库存管理核心逻辑 市场数据输入 订单簿状态 当前库存数据 核心计算模块 波动率计算 (sigma, VaR) 价差生成 (基础价差 + 调整) 库存评估 (偏离度, 风险) 报价决策输出 买单报价 卖单报价 库存调整指令 风控 库存反馈循环

这张图的核心逻辑是:市场数据驱动计算,计算结果决定报价,报价执行后更新库存,库存状态再反馈回计算模块。这是一个闭环,每秒钟都在循环。

3.5 避坑指南

最后,分享几个我踩过的坑,希望能帮你少走弯路。

坑一:价差调整太激进

我曾经把库存调整系数设到0.8,结果价差严重不对称,被套利机器人反复收割。后来我改成0.3,虽然库存回正慢了点,但整体收益反而更高。

坑二:忽略手续费对价差的影响

做市不是零成本的。每笔交易都有手续费,如果价差覆盖不了手续费,你就是在给交易所打工。我建议把手续费纳入固定成本,在计算基础价差时就扣掉。

坑三:库存目标设得太死

目标库存不是一成不变的。市场趋势明显时,适当偏离目标反而能赚趋势的钱。我现在会根据市场状态动态调整目标库存——震荡市严格归零,趋势市允许一定偏离。

好了,价差与库存管理这块,核心内容就这些。记住一句话:价差是你的利润来源,库存是你的风险来源。管好库存,价差自然就稳了。


公众号:蓝海资料掘金营,微信deep3321