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

这段代码的逻辑很简单:库存偏离目标越多,对冲比例就越高。同时,市场波动大的时候,也要多对冲一些。我在实盘里用这个逻辑,效果还不错。

小技巧:对冲不是越多越好。对冲太多,成本就上去了。我一般把对冲比例控制在0.3到0.7之间,留一些敞口去赚方向性的钱。

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,也就是回归速度。速度太快,报价会频繁跳动,增加交易成本。速度太慢,库存风险会累积。我一般用历史数据来拟合这个参数。

我记得有一次,我把回归速度设得太快,结果报价来回跳,手续费吃掉了一大块利润。后来我改成用波动率来动态调整速度,情况就好多了。

关键点:均值回归模型不是万能的。如果市场出现趋势性行情,库存可能不会回归,反而会越偏越远。这时候就要结合趋势判断来调整模型。

下面这张图,是我自己画的库存管理流程,你可以看看整体逻辑:

库存风险管理流程 报价策略 市场成交 库存变化 风险评估 对冲/调整 反馈调整报价

从图里可以看到,库存管理是一个闭环。报价导致成交,成交产生库存,库存触发风险评估,评估结果指导对冲或调整,调整后的策略再反馈到报价中。这个循环每时每刻都在运行。

最后说一句,库存管理没有银弹。不同的市场、不同的品种,适合的策略都不一样。我建议你从简单的均值回归模型开始,慢慢加入对冲逻辑,逐步完善自己的体系。

专注资料整理