库存管理核心概念:库存定义、库存成本、库存风险敞口

做市商的核心业务,说白了就是「低买高卖」赚差价。但这里有个坑——你不可能每次买卖都刚好平掉头寸。手里总会留一些存货,这就是库存。

库存管理,我个人的理解是:你手里有多少货,这些货让你花了多少钱,以及这些货可能让你亏多少钱。这三个问题,对应了三个核心概念:库存定义、库存成本、库存风险敞口。

嗯,咱们一个一个来拆解。

1. 库存定义:你到底持有了什么?

先别笑,很多人做量化做了一两年,连库存的定义都没搞清楚。

库存,在金融做市里,指的是当前持仓的净头寸。比如你同时挂了买单和卖单,买入了100股,卖出了80股,那你的库存就是+20股。反过来,卖出多于买入,库存就是负数。

我见过一个团队,把「累计成交量」当库存算,结果风控模型全错了。你想想看,那得多危险。

库存的定义,其实分三个维度:

  • 数量维度:你持有多少单位?是正数(多头)还是负数(空头)?
  • 价值维度:按当前市价算,这些库存值多少钱?
  • 时间维度:这些库存持有了多久?是刚建仓还是已经过夜了?

我个人习惯用Python定义一个库存对象,大概长这样:

class Inventory:
    def __init__(self, symbol, quantity, avg_price):
        self.symbol = symbol        # 品种代码
        self.quantity = quantity    # 净头寸(正=多头,负=空头)
        self.avg_price = avg_price  # 平均建仓成本
        self.hold_time = 0          # 持仓时间(秒)
    
    def market_value(self, current_price):
        return self.quantity * current_price
    
    def pnl(self, current_price):
        return self.quantity * (current_price - self.avg_price)

你看,这个类把库存的核心信息都封装了。quantity是净头寸,avg_price是平均成本。这两个字段,是做市商库存管理的基石。

避坑指南:我曾经在实盘里犯过一个低级错误——把不同交易所的同一品种库存分开算。结果总库存看起来是平的,实际上每个交易所都有单边风险。后来我统一用一个全局的Inventory对象来汇总,才解决了这个问题。

2. 库存成本:持有库存到底要花多少钱?

很多人以为库存成本就是「买入价减去卖出价」。其实没那么简单。

库存成本,我把它拆成三块:

  1. 资金成本:你买股票/期货的钱,如果是借来的,要付利息。就算是你自己的钱,也有机会成本——这笔钱本来可以存银行吃利息的。
  2. 交易成本:建仓和平仓时产生的手续费、印花税、滑点等。这部分成本是实打实扣掉的。
  3. 库存持有成本:比如期货的隔夜仓储费、股票的融券利息、加密货币的资金费率。这些费用会随着持仓时间累积。

为什么会这样?因为做市商不是做趋势交易的。我们赚的是买卖价差,不是方向性收益。库存持有时间越长,成本越高,利润就被蚕食得越厉害。

我建议用下面的公式来估算每日库存成本:

daily_inventory_cost = abs(inventory.quantity) * (
    funding_rate + 
    transaction_cost / expected_holding_days +
    opportunity_cost
)

其中funding_rate是资金费率,transaction_cost是单边交易成本,opportunity_cost是无风险利率。

举个例子:假设你持有1000股某股票,每股100元,年化资金费率5%,单边交易成本0.1%,预期持有3天。那每天的库存成本大约是:

daily_cost = 1000 * 100 * (0.05/365 + 0.001/3 + 0.03/365)
           = 100000 * (0.000137 + 0.000333 + 0.000082)
           = 100000 * 0.000552
           = 55.2 元/天

嗯,每天55块钱,一个月就是1650。如果你做的是高频做市,这个成本可能吃掉你一半的利润。

核心观点:库存成本不是静态的,它和时间强相关。持仓越久,成本越高。所以做市商的核心目标之一,就是「快进快出」,把库存周转率做上去。

3. 库存风险敞口:你最多可能亏多少?

这个才是做市商最怕的东西。

库存风险敞口,指的是由于市场价格不利变动,库存可能造成的最大损失。说白了,就是「如果行情突然反向,你会亏多少钱」。

我把它分成两类:

  • 瞬时风险敞口:下一秒价格波动造成的损失。通常用VaR(Value at Risk)来衡量。
  • 持续风险敞口:如果市场流动性枯竭,你无法平仓,库存会暴露在更长时间的价格波动中。

我记得有一次做加密货币做市,手里攒了50个BTC的多头库存。突然一条负面新闻出来,BTC三分钟内跌了8%。那一瞬间,我的库存敞口直接亏了十几万美金。还好我提前设了止损,不然更惨。

从那以后,我对风险敞口的计算就格外重视。常用的指标是:

# 计算库存风险敞口
def calculate_risk_exposure(inventory, current_price, volatility, confidence=0.95):
    """
    volatility: 日波动率(标准差)
    confidence: 置信水平
    """
    position_value = abs(inventory.quantity) * current_price
    # 假设价格服从正态分布,计算VaR
    z_score = 1.645  # 对应95%置信水平
    daily_var = position_value * volatility * z_score
    
    # 极端情况下的最大损失(假设3个标准差)
    max_loss = position_value * volatility * 3
    
    return {
        'var_95': daily_var,
        'max_loss': max_loss,
        'position_value': position_value
    }

你想想看,如果计算出来的VaR是10万,而你的总资金只有100万,那意味着你有5%的概率一天亏掉10%。这个风险能不能接受?

我个人习惯设定一个库存敞口上限

  • 单个品种的库存价值不超过总资金的20%
  • 所有品种的总库存价值不超过总资金的50%
  • 如果VaR超过总资金的5%,立即减仓
警告:千万不要以为库存小就安全。我曾经见过一个做市商,库存只有总资金的5%,但因为持仓方向和市场趋势完全相反,加上杠杆,最后爆仓了。风险敞口不是看绝对值,而是看相对值和方向。

4. 三者之间的关系

库存定义、库存成本、库存风险敞口,这三者不是孤立的。它们构成了一个三角关系:

概念 核心问题 管理目标
库存定义 我持有什么?持有了多少? 准确记录,实时更新
库存成本 持有这些货要花多少钱? 降低资金占用,提高周转率
库存风险敞口 行情不利时我会亏多少? 控制最大损失,设置止损线

举个例子你就明白了:

假设你库存定义是+1000股,成本是每天55元,风险敞口是每天最多亏3万。那你的决策逻辑应该是:

  • 如果库存成本太高(比如超过预期利润),就主动减仓
  • 如果风险敞口太大(比如VaR超过阈值),就立刻对冲
  • 如果库存定义不准确(比如漏算了某个账户),那成本和敞口都是错的

嗯,这里要注意:库存定义是基础,库存成本是约束,库存风险敞口是底线。三者缺一不可。

实战建议:我建议你在做回测时,把这三个指标都记录下来。每天跑完策略后,看看库存成本占利润的比例,看看风险敞口有没有突破阈值。如果成本占比超过30%,说明你的策略需要优化了。

好了,这一章的内容就到这里。库存管理听起来简单,但真正做好的人不多。下一章我们会讲「库存管理策略」,包括如何主动减仓、如何对冲、如何设置库存目标区间。到时候我会分享一些我在实盘里用过的具体参数和代码。

记住一句话:做市商赚的是管理库存的钱,不是赌方向的钱。把库存管好了,利润自然就来了。