第三节:库存风险管理
库存风险,说白了就是「货砸手里了」。
我做市商这些年,见过太多同行因为库存管理不当翻车。有人囤了一堆期权,结果波动率突然塌陷;有人现货库存太大,流动性一抽干直接爆仓。嗯,库存风险不像方向性风险那么显眼,但它就像慢性病,不疼则已,一疼就是要命。
一、库存模型:你的货到底值多少钱?
先问个问题:你手里有100个BTC,现在市场价30000U。你的库存价值是多少?
300万?不对。你想想看,如果你现在要平掉这100个BTC,市场深度能给你什么价格?可能你卖到第50个的时候,价格已经砸到29000了。这就是库存模型要解决的核心问题——账面价值 ≠ 实际可变现价值。
我个人习惯用LIFO(后进先出)模型来估算库存成本。为什么?因为做市商频繁交易,最新买入的价格最能反映当前市场环境。
# 一个简单的LIFO库存成本计算
class Inventory:
def __init__(self):
self.stack = [] # (数量, 价格)
def buy(self, qty, price):
self.stack.append((qty, price))
def sell(self, qty):
cost = 0
remaining = qty
while remaining > 0 and self.stack:
last_qty, last_price = self.stack.pop()
if last_qty >= remaining:
cost += remaining * last_price
self.stack.append((last_qty - remaining, last_price))
remaining = 0
else:
cost += last_qty * last_price
remaining -= last_qty
return cost / qty # 平均成本
我在项目中遇到过一个问题:用LIFO算出来的成本,在趋势行情里会严重滞后。比如BTC从30000涨到40000,你不断买入,LIFO成本跟着涨,但早期低价库存还在账上。这时候我建议配合加权平均成本法一起看,两个数字取个中间值,更贴近真实情况。
核心观点:库存模型不是越复杂越好。高频做市用LIFO,低频套利用FIFO,混合策略用加权平均。选一个适合你交易频率的,比追求精确更重要。
二、库存成本:你以为只有买入价?
库存成本远不止你花了多少钱买货。我列个清单,你看看漏了多少:
- 资金成本:你占用100万U的库存,如果拿去理财年化5%,一天就是137U的机会成本。别小看这个数,一年下来够买辆特斯拉了。
- 滑点成本:平仓时市场深度不够,多出来的损失。这个我之前吃过亏——有一次ETH库存太大,平仓时直接砸穿了支撑位,多亏了2个点。
- 仓储成本:对于实物交割的品种,比如某些商品期货,仓储费、保险费都是实打实的支出。
- 风险溢价:你持有库存期间,万一出现黑天鹅事件,这部分隐性成本最难量化,但也最致命。
| 成本类型 | 计算方式 | 我的经验值 |
|---|---|---|
| 资金成本 | 库存价值 × 无风险利率 × 持有天数 / 365 | 年化5%基准,币圈可以到8-12% |
| 滑点成本 | 订单簿深度 × 平仓比例 | 一般按0.1-0.5%估算 |
| 风险溢价 | VaR × 风险厌恶系数 | 我习惯用2倍VaR |
一个小技巧:我每天收盘前会算一次「库存总成本率」,公式是(资金成本+滑点成本+风险溢价)/ 库存价值。如果这个比率超过0.5%,我就开始考虑减仓了。
三、最优库存水平:到底该留多少货?
这个问题没有标准答案,但我有一套自己的方法论。
先看一个公式:最优库存 = 预期成交量 × 库存周转天数
举个例子:你每天做市成交量是1000个ETH,你希望库存3天周转一次。那么最优库存就是3000个ETH。多了浪费资金,少了容易断货。
但实际操作中,我会加两个修正因子:
- 波动率修正:波动率越高,库存水平应该越低。为什么?因为波动大意味着方向性风险大,你不想在剧烈波动时手里还捏着一堆货。我一般用ATR(平均真实波幅)来调整——ATR翻倍,库存减半。
- 流动性修正:流动性越差,库存水平应该越高。因为你想平仓的时候可能平不掉,得多留点缓冲。这个我习惯用订单簿深度来衡量——深度每下降10%,库存增加5%。
避坑指南:我曾经在2020年3月12日那天,因为没调低库存水平,手里握着大量BTC现货。结果市场暴跌,我一边被做市亏损,一边还要承受库存减值。那天之后,我给自己定了个规矩:波动率超过历史90%分位数时,库存必须降到正常水平的30%以下。
四、库存对冲策略:别让货成为你的负担
库存对冲,说白了就是「用别人的风险,对冲你的风险」。我常用的策略有几种:
1. 期货对冲
最简单粗暴的方法。手里有100个BTC现货,就做空100个BTC期货。这样价格涨跌都不影响你的净值。但要注意基差风险——期货和现货的价差可能会扩大,导致对冲不完全。
# 动态对冲比例计算
def hedge_ratio(spot_price, futures_price, beta=1.0):
basis = futures_price - spot_price
# 基差越大,对冲比例越低
adjusted_ratio = beta * (1 - basis / spot_price * 0.1)
return max(0.8, min(1.2, adjusted_ratio))
2. 期权对冲
这个更精细。你可以买入看跌期权来保护下行风险,同时卖出看涨期权来降低对冲成本。我管这叫「领口策略」。
举个例子:你持有100个ETH,买入执行价3000的看跌期权(花费50U/个),同时卖出执行价3500的看涨期权(收入30U/个)。净成本20U/个,但你的风险被锁定在3000-3500之间。
3. 跨品种对冲
有时候同品种的对冲成本太高,我会找相关性高的替代品。比如BTC和ETH相关性在0.7以上,可以用ETH期货对冲BTC现货的部分风险。但要注意,相关性不是恒定的——2021年5月那次暴跌,BTC和ETH的相关性一度降到0.3,差点把我坑了。
我的对冲铁律:
- 永远不要100%对冲。留10-20%的风险敞口,因为完全对冲意味着你放弃了所有盈利机会。
- 对冲成本超过预期收益的30%时,宁愿减仓也不对冲。
- 每周重新评估一次对冲比例,市场变了,你的策略也得变。
五、知识体系总览
下面这张图是我自己总结的库存风险管理框架,你可以把它当成一个检查清单:
这张图我每次做库存复盘都会看一遍。四个模块环环相扣——模型算错了,成本就估不准;成本估不准,最优水平就是拍脑袋;水平不对,对冲策略就是白搭。
最后说一句:库存风险管理没有银弹。我做了十年做市商,每年都会遇到新的坑。但只要你把模型、成本、水平、对冲这四个维度都盯住了,至少不会犯致命错误。
公众号:蓝海资料掘金营,微信deep3321