6、库存管理模型:库存风险度量(VaR、CVaR)、库存周转率、最优库存水平

做市商的库存管理,说白了就是管好你手里的“货”。

我刚开始做结构化产品做市那会儿,总觉得只要报价够快、价差够窄就能赚钱。结果呢?有一次市场突然异动,我手里攒了一大堆某个奇异期权的多头,流动性瞬间枯竭,想平仓都平不掉。那天的亏损,直接把我前三个月的利润全吞了。

从那以后我明白了一个道理:做市商的核心竞争力,不是预测方向,而是管理库存。今天我们就来聊聊库存管理的三个核心问题:风险怎么量、货转得快不快、以及到底该囤多少货。

6.1 库存风险度量:VaR 与 CVaR

先问个问题:你手里有一篮子结构化产品,怎么衡量它今天可能亏多少钱?

业界最常用的两个指标:VaR(Value at Risk)和 CVaR(Conditional VaR)。

6.1.1 VaR:最坏情况下的“底线”

VaR 回答的是:在给定的置信水平(比如 95%)下,未来一段时间内,最大可能亏损是多少。

举个例子:你持仓的日 VaR(95%)是 100 万。意思是,有 95% 的把握,明天亏损不会超过 100 万。但剩下 5% 的情况呢?VaR 不管了。

我个人习惯用历史模拟法来计算 VaR,因为它不需要假设收益率服从正态分布——金融数据哪有那么乖?

# 伪代码:历史模拟法计算 VaR
import numpy as np

def calculate_var(returns, confidence_level=0.95):
    # returns: 历史收益率序列
    sorted_returns = np.sort(returns)
    index = int((1 - confidence_level) * len(sorted_returns))
    var = -sorted_returns[index]  # 取正值表示亏损
    return var

# 假设我们有过去 500 天的组合日收益率
daily_returns = np.random.normal(0, 0.02, 500)  # 模拟数据
var_95 = calculate_var(daily_returns, 0.95)
print(f"95% VaR: {var_95:.4f}")
⚠️ 避坑指南
我曾经吃过 VaR 的亏。有一次 VaR 显示风险可控,结果市场发生了“肥尾事件”——就是那 5% 的情况。VaR 完全没告诉我,一旦亏损超过阈值,到底会亏多少。所以后来我引入了 CVaR。

6.1.2 CVaR:尾部风险的“真实代价”

CVaR 也叫 Expected Shortfall。它计算的是:当亏损超过 VaR 阈值时,平均亏损是多少。

你想想看,VaR 只告诉你“最坏情况的下限”,但 CVaR 告诉你“最坏情况到底有多坏”。对于做市商来说,后者才是真正要命的。

def calculate_cvar(returns, confidence_level=0.95):
    sorted_returns = np.sort(returns)
    index = int((1 - confidence_level) * len(sorted_returns))
    # 取尾部所有损失的均值
    tail_losses = -sorted_returns[:index]
    cvar = np.mean(tail_losses)
    return cvar

cvar_95 = calculate_cvar(daily_returns, 0.95)
print(f"95% CVaR: {cvar_95:.4f}")
指标 含义 优点 缺点
VaR 给定置信水平下的最大可能亏损 计算简单,业界标准 忽略尾部风险,不满足次可加性
CVaR 超过 VaR 后的平均亏损 考虑尾部风险,数学性质好 计算稍复杂,需要更多数据
💡 我的经验
在实际做市系统中,我同时监控 VaR 和 CVaR。VaR 用来设定日常止损线,CVaR 用来做压力测试和资本金预留。两个指标一起看,心里才有底。

6.2 库存周转率:货转得快,风险才小

库存周转率,说白了就是你手里的货多久能卖出去一遍。

公式很简单:

库存周转率 = 一段时间内的成交量 / 平均库存量

比如你一个月成交了 1000 张合约,平均库存是 200 张,那周转率就是 5 次/月。意味着平均每 6 天,你的库存就完全换了一遍。

为什么这个指标重要?

  • 周转率高:说明你持仓时间短,暴露在市场风险下的时间短。这是好事。
  • 周转率低:说明货压在手里卖不出去,要么是定价不合理,要么是流动性太差。

我记得有一次,我接手一个团队的做市业务,发现某个结构化票据的周转率只有 0.3 次/月。一查才发现,他们的报价价差太宽,客户根本不愿意交易。后来把价差收窄了 30%,周转率直接翻了三倍,虽然单笔利润少了,但总利润反而上去了。

🔑 关键点
库存周转率不是越高越好。如果周转率过高,说明你可能在频繁交易,交易成本(手续费、滑点)会吃掉利润。找到一个平衡点,才是做市商的功夫所在。

6.3 最优库存水平:到底该囤多少货?

这个问题,其实是一个经典的“库存-风险”权衡。

  • 库存太少:客户要买的时候你没货,丢单;或者你要从市场上高价补货,亏钱。
  • 库存太多:市场一波动,你手里的货可能大幅贬值,风险敞口太大。

那怎么找到最优库存水平?我一般用以下框架:

6.3.1 基于 VaR/CVaR 的库存上限

先设定一个你能承受的最大亏损金额,比如每天最多亏 50 万。然后根据当前持仓的 CVaR,反推最大库存量。

举个例子:

  • 你设定的日亏损上限:50 万
  • 当前每张合约的日 CVaR(95%):500 元
  • 那么最大持仓量 = 500,000 / 500 = 1000 张

这就是你的硬性库存上限。超过这个数,不管市场多好,都必须减仓。

6.3.2 基于周转率的目标库存

另一个角度:根据你的目标周转率,倒推合理库存。

比如你希望每周周转 2 次,而你的日均成交量是 200 张,那么:

目标库存 = 日均成交量 / 目标周转率 = 200 / (2/5) = 500 张

(注:2 次/周,相当于 0.4 次/天,所以 200 / 0.4 = 500)

6.3.3 动态调整:市场波动率的影响

市场波动率大的时候,库存要降;波动率小的时候,库存可以适当提高。

我习惯用一个简单的公式:

最优库存 = 基准库存 × (基准波动率 / 当前波动率)

波动率翻倍,库存减半。这个逻辑很直观:市场越动荡,你越要轻装上阵。

💡 实战技巧
我建议把库存水平分成三个区间:
绿色区间(0~60% 上限):正常做市,积极报价。
黄色区间(60%~85% 上限):收窄报价,优先减仓。
红色区间(85%~100% 上限):只出不进,强制平仓。
这个分级机制,帮我避免了好几次大亏。

知识体系总览

下面这张图,把库存管理的核心逻辑串起来了:

库存管理模型核心逻辑 风险度量 • VaR:最大可能亏损 • CVaR:尾部平均亏损 • 设定止损上限 • 压力测试 周转效率 • 成交量 / 平均库存 • 持仓时间 • 交易成本 • 报价策略调整 最优库存 • VaR/CVaR 上限 • 周转率目标 • 波动率调整 • 三区间管理 输出:库存上下限 + 动态调整策略 用于日常做市决策、风险限额、资本金管理 三个模块相互影响,共同决定最优库存水平 风险度量定上限,周转效率定目标,波动率做动态调整

嗯,库存管理这块,说到底就是三个字:控风险、提效率、定仓位。没有完美的模型,只有不断迭代的框架。我自己的系统里,这些指标每 5 分钟重新计算一次,一旦触发阈值,系统会自动报警甚至强制减仓。

做市商不是赌徒,我们是风险的管理者。把库存管好了,利润自然就来了。


交易系统化学习资料 微信Strategy888888