3、持仓成本模型:持有成本理论(Cost of Carry)与期货理论价格推导

做期现套利,你首先得搞清楚一个问题:期货到底值多少钱?

很多人上来就盯着盘面看价差,觉得价差大了就能套。嗯,这其实是个误区。你想想看,如果不知道期货的“合理价格”在哪里,你怎么判断价差是大了还是小了?

我个人习惯,每次做策略之前,先拿持有成本模型算一遍理论价格。这就像开车前先看油表——你不一定非得精确到小数点后两位,但心里得有个底。

3.1 持有成本理论:一句话讲透

持有成本理论(Cost of Carry),说白了就是:期货价格 = 现货价格 + 持有到期的所有成本

为什么?

假设你现在想买一吨铜,但不想立刻拿货,想三个月后再要。你有两个选择:

  • 方案A:现在买现货,租仓库放着,付仓储费、保险费,占用资金付利息。三个月后拿到货。
  • 方案B:现在买期货,三个月后直接拿货。

这两个方案的结果是一样的——三个月后你手里都有一吨铜。所以它们的成本应该相等。这就是持有成本理论的底层逻辑。

核心公式:

F = S × e^(r + c - y) × T

其中:

  • F = 期货理论价格
  • S = 现货价格
  • r = 无风险利率(年化)
  • c = 仓储费率(年化)
  • y = 便利收益率(年化)
  • T = 剩余期限(年)

我在项目中遇到过不少新手,拿着这个公式就往里套,结果算出来的价格跟盘面对不上。为什么?因为参数没取对。利率用哪个?仓储费怎么算?便利收益率又是什么鬼?

别急,我们一个一个拆。

3.2 各成本项详解

3.2.1 资金成本(r)

这是最大头的一块。你买现货要占用资金,这笔钱如果不买现货,存银行能吃利息。所以资金成本就是机会成本

我建议用SHIBOR 3个月或者国债回购利率作为无风险利率的参考。别用央行基准利率,那个太滞后,跟实际融资成本差得远。

实战小技巧:

如果你是自有资金做套利,可以用货币基金收益率替代。如果是融资做,那就直接用你的实际融资成本。我曾经见过一个团队,用3%的利率算模型,结果实际融资成本是5%,亏得一塌糊涂。

3.2.2 仓储费(c)

这个简单,就是你把货放在仓库里,每天要交的钱。不同品种差别很大:

品种 仓储费(元/吨/天) 年化成本占比
0.4 - 0.6 约1.5% - 2%
螺纹钢 0.15 - 0.3 约3% - 5%
豆粕 0.5 - 1.0 约4% - 8%
原油 0.8 - 1.5(桶/天) 约2% - 4%

你看,螺纹钢的仓储费占比其实挺高的。这也是为什么螺纹钢的期货经常贴水——持有成本太高,多头不愿意长期持有。

3.2.3 便利收益率(y)

这个最抽象,也最容易被人忽略。

便利收益率,说白了就是持有现货带来的额外好处。比如你手里有铜,突然下游客户要货,你马上就能卖。但如果你手里只有期货合约,你得先平仓、再买现货、再交货,黄花菜都凉了。

便利收益率怎么量化?

嗯,说实话,没有标准公式。我个人习惯用库存水平来反推:

  • 库存低 → 现货紧缺 → 便利收益率高 → 期货相对便宜(贴水)
  • 库存高 → 现货充裕 → 便利收益率低 → 期货相对贵(升水)

注意:

便利收益率是持有成本模型里最“软”的参数。我建议你把它当作一个调节变量,而不是固定值。先用其他参数算出一个基准价格,然后看盘面价差,反推出市场隐含的便利收益率。如果这个值在合理范围内,说明定价没问题;如果离谱,那可能就有套利机会了。

3.3 期货理论价格推导(连续复利版)

好,现在我们把这些参数串起来,做个完整的推导。

假设:

  • 现货价格 S = 5000
  • 无风险利率 r = 3.5%(年化)
  • 仓储费率 c = 2%(年化)
  • 便利收益率 y = 1%(年化)
  • 剩余期限 T = 0.5 年(6个月)
# Python 示例:计算期货理论价格
import math

S = 5000       # 现货价格
r = 0.035      # 无风险利率
c = 0.02       # 仓储费率
y = 0.01       # 便利收益率
T = 0.5        # 剩余期限(年)

# 持有成本率 = 资金成本 + 仓储 - 便利收益
carry_rate = r + c - y

# 理论期货价格
F = S * math.exp(carry_rate * T)

print(f"持有成本率: {carry_rate*100:.2f}%")
print(f"理论期货价格: {F:.2f}")
print(f"理论价差: {F - S:.2f}")

输出结果:

持有成本率: 4.50%
理论期货价格: 5113.83
理论价差: 113.83

也就是说,在这个参数下,6个月后的期货理论价格应该是5113.83,比现货贵113.83个点。

如果现在盘面上期货价格是5150,那说明期货高估了,你可以考虑卖期货、买现货,做正向套利。反过来,如果期货只有5080,那就是低估了,可以考虑买期货、卖现货,做反向套利。

3.4 知识体系框架

下面这张图,是我自己整理的一个框架。每次做新品种之前,我都会对着这个图过一遍,确保没有遗漏。

持有成本模型知识框架 F = S × e^(r + c - y) × T S: 现货价格 r: 资金成本 c: 仓储费率 y: 便利收益率 市场实时报价 直接可获取 无需估算 SHIBOR/国债回购 实际融资成本 货币基金收益率 交易所公布标准 按品种/仓库不同 年化后使用 最难量化 通过库存反推 作为调节变量 输出:期货理论价格 F F > 盘面价 → 反向套利 F < 盘面价 → 正向套利

3.5 避坑指南

最后,分享几个我踩过的坑:

  1. 别把年化和日化搞混。 仓储费通常是按天收的,但利率是年化的。一定要统一口径。我见过有人直接把每天0.5元的仓储费当成年化0.5元用,结果算出来的价差差了十倍。
  2. 交割规则会影响定价。 有些品种最后交易日和交割日之间有好几天间隔,这期间还有资金成本。我建议把T算到实际交割日,而不是最后交易日。
  3. 便利收益率不是常数。 它会随着市场情绪、库存变化剧烈波动。我曾经在2016年做螺纹钢套利,库存从高位骤降,便利收益率从0.5%飙到3%,模型直接失效。后来我加了滚动窗口,每两周重新校准一次参数。
  4. 别忘了交易成本。 理论价差算出来是113个点,但手续费、冲击成本加起来可能就有20个点。如果实际价差只有130个点,那利润空间其实只有17个点,还不够塞牙缝的。

我的习惯:

每次建模型之前,我会先拉过去3年的数据,把理论价格和实际价格做个回归。如果R²低于0.7,说明这个品种的持有成本模型解释力不够,可能是便利收益率波动太大,或者有政策干预。这时候我会更谨慎,不会单纯依赖模型信号。

好了,持有成本模型就讲到这里。记住,它不是一个精确的定价工具,而是一个思考框架。它能帮你理解价差从哪里来,也能帮你判断价差是否合理。但最终下不下单,还得结合市场情绪、流动性、资金管理一起看。


公众号:蓝海资料掘金营,微信deep3321