三、库存度量指标:库存周转率、库存天数、库存价值波动
做市商这行,说白了就是靠库存吃饭的。库存管得好不好,直接决定了你是赚钱还是亏钱。我见过太多团队,策略模型跑得漂亮,但库存管理一塌糊涂,最后利润全被库存风险吃掉了。
今天咱们聊聊三个核心指标:库存周转率、库存天数、库存价值波动。这三个指标,就像汽车的仪表盘——转速表、油表、速度表,缺一个你都开不稳。
3.1 库存周转率
先问个问题:你手里的币,多久能卖一轮?
库存周转率,就是衡量这个速度的指标。公式很简单:
库存周转率 = 期间成交量 / 平均库存价值
举个例子。假设你一个月成交了1000万U,平均库存价值是200万U。那周转率就是5次。这意味着你一个月把库存"翻新"了5遍。
周转率高了,说明什么?
- 你的做市策略活跃,买卖频繁
- 库存占用资金少,资金效率高
- 但也要小心——周转太快,可能意味着你在频繁吃单,滑点成本高
周转率低了,又说明什么?
- 库存积压,资金被锁死
- 策略可能不够积极,或者市场流动性太差
- 嗯,还有一种情况——你故意囤货等涨,但那不是做市商的活
我的经验:我个人习惯把周转率控制在5-15次/月。低于5次,说明策略太保守;高于15次,交易成本会吃掉利润。当然,不同币种、不同市场环境,这个区间会变。你想想看,比特币和山寨币的周转率能一样吗?
3.2 库存天数
库存天数,是周转率的"亲戚"。它告诉你:按现在的交易速度,库存里的货要多少天才能卖完。
库存天数 = 30天 / 库存周转率
还是刚才的例子。周转率5次,库存天数就是6天。也就是说,你手里的货,平均6天就能轮一遍。
这个指标有什么用?
- 判断库存压力。天数越长,风险越大
- 辅助仓位管理。比如,库存天数超过10天,我就考虑减仓
- 对比不同币种。有些币天生流动性差,库存天数自然高
避坑指南:我曾经犯过一个错——只看库存天数,不看市场深度。有一次某个币的库存天数只有3天,看起来挺健康。结果市场突然暴跌,深度瞬间消失,那3天的货硬是卖了2周才出完。所以,库存天数要结合订单簿深度一起看,别被数字骗了。
3.3 库存价值波动
这个指标,是我最看重的。它衡量的是:你的库存价值,一天之内能波动多少。
库存价值波动 = 库存价值 × 价格波动率
更精确的做法,是用VaR(在险价值)来算:
VaR = 库存价值 × 价格波动率 × Z值 × √时间
其中Z值取决于置信水平。95%置信度下,Z=1.65;99%置信度下,Z=2.33。
为什么要关注这个?
- 库存价值波动直接决定了你的风险敞口
- 波动太大,一个黑天鹅事件就能让你爆仓
- 波动太小,说明你做的币种太"死",做市利润也薄
实战案例:我记得有一次,团队做ETH的做市。库存价值500万U,ETH日波动率4%。算下来,一天之内库存价值可能波动20万U。这个数字,已经超过了我们当天的做市利润。我建议立即减仓,同时加了对冲。结果第二天ETH真的跌了6%,但因为提前做了对冲,库存损失被控制住了。要是没管这个指标,那天就得亏掉一个月的利润。
3.4 三个指标怎么配合用?
单独看一个指标,意义不大。三个指标放一起,才能看出门道。
| 场景 | 周转率 | 库存天数 | 价值波动 | 建议操作 |
|---|---|---|---|---|
| 健康状态 | 高 | 低 | 适中 | 维持现状 |
| 库存积压 | 低 | 高 | 高 | 立即减仓+对冲 |
| 过度交易 | 极高 | 极低 | 低 | 降低频率,减少滑点 |
| 风险暴露 | 适中 | 适中 | 极高 | 加对冲,或换币种 |
说白了,这三个指标就是帮你回答三个问题:
- 我的资金效率高不高?(周转率)
- 我的库存压力大不大?(库存天数)
- 我的风险敞口能不能承受?(价值波动)
我的习惯:每天开盘前,我会花5分钟扫一眼这三个指标。如果任何一个指标偏离了正常范围,我就知道今天得盯紧点。你想想看,做市商最怕什么?不是亏钱,而是亏了钱还不知道怎么亏的。这三个指标,就是你的"预警雷达"。
3.5 代码实现
最后,给一个简单的Python代码,帮你自动计算这三个指标。我建议你把它集成到你的监控系统里。
import pandas as pd
import numpy as np
def inventory_metrics(trades_df, inventory_df, confidence=0.95):
"""
计算库存管理核心指标
参数:
trades_df: 交易记录DataFrame,包含'time', 'volume', 'price'
inventory_df: 库存快照DataFrame,包含'time', 'value'
confidence: VaR置信水平,默认95%
返回:
dict: 包含周转率、库存天数、价值波动
"""
# 1. 库存周转率
total_volume = trades_df['volume'].sum()
avg_inventory = inventory_df['value'].mean()
turnover = total_volume / avg_inventory if avg_inventory > 0 else 0
# 2. 库存天数
days = 30 / turnover if turnover > 0 else float('inf')
# 3. 库存价值波动 (VaR)
# 计算日收益率
inventory_df = inventory_df.sort_values('time')
inventory_df['return'] = inventory_df['value'].pct_change()
vol = inventory_df['return'].std()
# Z值
z = 1.65 if confidence == 0.95 else 2.33
# 当前库存价值
current_value = inventory_df['value'].iloc[-1]
# 日VaR
var_daily = current_value * vol * z
return {
'turnover': round(turnover, 2),
'days': round(days, 1),
'var_daily': round(var_daily, 2),
'volatility': round(vol, 4)
}
# 使用示例
# metrics = inventory_metrics(trades, inventory)
# print(f"周转率: {metrics['turnover']} 次/月")
# print(f"库存天数: {metrics['days']} 天")
# print(f"日VaR: {metrics['var_daily']} U")
嗯,代码不长,但很实用。我建议你跑一下历史数据,看看自己的库存管理到底怎么样。很多时候,数据会告诉你一些你没想到的东西。
好了,这一章就到这里。下一章咱们聊聊库存对冲的具体策略——怎么用期货、期权来保护你的库存。到时候我会分享几个我踩过的坑,保证让你少走弯路。