4. 库存风险管理:库存定义与来源、库存持有成本、库存对冲策略、库存均值回归模型
做市商这行,说白了就是跟库存打交道。你报出去的单子,被市场吃掉,手里就多了一堆货。货多了,风险就来了。今天这一章,咱们就聊聊库存风险这回事。
我个人习惯把库存风险比作「手里捧着一堆烫手山芋」。你想想看,如果市场突然跳水,你手里的货还没出掉,那亏损就是实打实的。所以,管好库存,是做市商活下去的基本功。
4.1 库存定义与来源
先搞清楚什么是库存。在量化做市里,库存就是你当前持有的净头寸。比如你同时挂了买单和卖单,买单成交了1000股,卖单成交了600股,那你的净库存就是400股多头。
库存的来源其实就两个:
- 被动成交:你挂的限价单被市场吃掉。这是最主要的来源。你挂单是为了赚价差,但同时也承担了被成交的风险。
- 主动成交:你为了调整仓位,主动去市场上吃单。比如你发现库存太高了,主动卖出一部分来降低风险。
我在项目中遇到过一种情况:某个流动性很差的币种,我挂了深度很大的单子,结果被一个大户一口气全吃了。瞬间库存从零变成了满仓。嗯,那感觉就像被人硬塞了一堆货,你还不能不要。
4.2 库存持有成本
库存放在手里,不是免费的。持有成本包括几个方面:
| 成本类型 | 说明 | 我的经验 |
|---|---|---|
| 资金成本 | 你买货的钱,本来可以存银行吃利息的 | 在币圈,资金成本尤其高,因为杠杆率大 |
| 风险成本 | 价格波动带来的潜在亏损 | 这个最要命,一个黑天鹅就能让你爆仓 |
| 机会成本 | 资金被占用,没法做其他交易 | 我见过有人为了省手续费,结果错过了大行情 |
你可能会问:「这些成本怎么量化?」我一般用这个公式:
持有成本 = 库存价值 × (资金利率 + 波动率调整因子) × 持有时间
波动率调整因子,说白了就是你对市场风险的预估。市场越动荡,这个因子就越大。我曾经吃过亏,把因子设得太低,结果一波回调直接亏掉了一周的利润。
4.3 库存对冲策略
库存风险不能硬扛,得想办法对冲。常用的对冲策略有几种:
- 期货对冲:持有现货多头,就做空期货。这是最经典的做法。我一般用永续合约来对冲,因为不用考虑交割。
- 期权对冲:买入看跌期权来保护多头库存。成本高一些,但能锁定最大亏损。
- 跨品种对冲:比如你持有BTC,可以做空ETH来对冲。前提是两者相关性高。
- 动态对冲:根据库存变化,实时调整对冲仓位。这个对系统要求高,但效果最好。
我个人比较喜欢动态对冲。为什么呢?因为静态对冲太死板了。你想想看,市场在变,库存也在变,你用一个固定的对冲比例,很容易出现偏差。
举个例子:
# 动态对冲比例计算
def calc_hedge_ratio(inventory, target_inventory, market_vol):
deviation = inventory - target_inventory
# 偏差越大,对冲比例越高
hedge_ratio = min(1.0, abs(deviation) / max_inventory)
# 波动率高时,加大对冲力度
hedge_ratio *= (1 + vol_adjust * market_vol)
return hedge_ratio
这段代码的逻辑很简单:库存偏离目标越多,对冲比例就越高。同时,市场波动大的时候,也要多对冲一些。我在实盘里用这个逻辑,效果还不错。
4.4 库存均值回归模型
库存管理里,有一个很重要的假设:库存会均值回归。什么意思呢?就是你手里的库存,不会一直偏离目标值,最终会回到一个平衡点。
为什么会这样?因为做市商的报价策略本身就有均值回归的特性。你库存多了,就会调低卖价、调高买价,促使库存减少。反过来也一样。所以,库存天然会围绕一个目标值波动。
基于这个假设,我们可以建一个简单的模型:
# 库存均值回归模型
class InventoryMeanReversion:
def __init__(self, target=0, mean_reversion_speed=0.1):
self.target = target
self.speed = mean_reversion_speed
def update(self, current_inventory):
# 计算回归力
force = self.speed * (self.target - current_inventory)
# 根据回归力调整报价偏移
quote_offset = force * price_scale
return quote_offset
这个模型的核心参数是mean_reversion_speed,也就是回归速度。速度太快,报价会频繁跳动,增加交易成本。速度太慢,库存风险会累积。我一般用历史数据来拟合这个参数。
我记得有一次,我把回归速度设得太快,结果报价来回跳,手续费吃掉了一大块利润。后来我改成用波动率来动态调整速度,情况就好多了。
下面这张图,是我自己画的库存管理流程,你可以看看整体逻辑:
从图里可以看到,库存管理是一个闭环。报价导致成交,成交产生库存,库存触发风险评估,评估结果指导对冲或调整,调整后的策略再反馈到报价中。这个循环每时每刻都在运行。
最后说一句,库存管理没有银弹。不同的市场、不同的品种,适合的策略都不一样。我建议你从简单的均值回归模型开始,慢慢加入对冲逻辑,逐步完善自己的体系。