通胀是固定收益里最难被直接交易的变量之一。你买一只普通国债,拿到手的收益率其实是一锅浑水:里面煮着真实利率、通胀预期、还有通胀风险溢价和流动性溢价。你没办法单独把「通胀」这一味挑出来买卖。但有一个工具能做到——通胀掉期(Inflation Swap),更标准的形式是零息通胀掉期(Zero-Coupon Inflation Swap, ZCIS)。它把「未来 N 年的累计通胀」打包成一笔到期一次结算的现金流,让你可以纯粹地做多或做空通胀,而不必同时押注真实利率的涨跌。正因如此,ZCIS 的报价被中央银行和市场参与者当成通胀预期的「温度计」——虽然这温度计的读数里也夹着别的东西。
结论先放这:ZCIS 的平价固定端利率,就是你能在市场上观察到的最纯粹的「通胀预期」读数,也就是盈亏平衡通胀率(Breakeven Inflation, BEI)。 它等于名义零息曲线与真实(通胀挂钩)零息曲线之差的指数形式:BEI = exp(z_nom − z_real) − 1。本文用一组自洽的名义/真实曲线把 BEI 拆出来,对比朴素利差讲清凸度调整,再由 BEI 期限结构反推出远期通胀曲线,最后诚实指出 BEI 并不是「纯净的通胀预期」——它还裹着风险溢价与流动性溢价。

一、ZCIS 的交易结构与无套利定价#
ZCIS 的两端:
- 固定端:在到期日 支付 (占名义本金),其中 是约定的固定通胀利率;
- 浮动端:在到期日支付 ,即期初到到期日消费者价格指数的累计涨幅。
两笔都在到期日一次性轧差结算(零息结构的特点),所以图上看不到期间现金流,只看到期净值。
无套利的核心在于:「名义债券 + 收浮动端的通胀掉期」 与 「真实债券(TIPS)」 在到期日都只跟实际购买力挂钩,二者必须等价。直觉上,如果你持有名义债、又通过掉期把名义债的「通胀部分」换成了固定补偿,那么你最终手里就等价于一只通胀挂钩债——而市场上的通胀挂钩债(TIPS)有自己独立的价格。两个构造出来的「真实收益」如果存在价差,套利者会立刻同时买卖两边把缝抹平。这个抹平过程,正是 BEI 能被当作通胀预期的原因:它不是某个模型揣测出来的,而是市场用真金白银套利出来的均衡价格。用零息曲线写就是:
其中 是名义零息债券的折现因子, 是通胀挂钩(真实)零息债券的折现因子。于是平价固定端利率——也就是 BEI——直接解出:
import numpy as np
# 名义零息曲线 z_nom 与真实零息曲线 z_real (TIPS)
T = np.array([1, 2, 3, 4, 5, 7, 10], dtype=float)
z_nom = np.array([0.030, 0.033, 0.035, 0.036, 0.037, 0.038, 0.039])
z_real = np.array([0.010, 0.012, 0.014, 0.015, 0.016, 0.017, 0.018])
P_nom = np.exp(-z_nom * T)
P_real = np.exp(-z_real * T)
# ZCIS 平价固定端利率 = 盈亏平衡通胀率
BEI = (P_real / P_nom) ** (1.0 / T) - 1
naive = z_nom - z_real # 朴素利差(忽略凸度)
print("BEI (%): ", (BEI * 100).round(3))
print("naive (%): ", (naive * 100).round(3))
# BEI%: [2.02 2.122 2.122 2.122 2.122 2.122 2.122]
# naive%: [2.0 2.1 2.1 2.1 2.1 2.1 2.1 ]python注意 BEI 永远略高于朴素利差 z_nom − z_real——这不是数值误差,而是下面要讲的凸度调整。
二、凸度调整:为什么 BEI 高于朴素利差#
朴素利差 z_nom − z_real 来自对 的一阶近似:把 代入,得到 。但真实关系是 这种复利凸函数,指数展开会多出二阶项:
即 BEI 与朴素利差之差,近似等于通胀不确定性带来的凸度溢价(所以通胀越不确定,BEI 高出朴素利差越多)。在我们的自洽曲线上,这个调整项稳定在约 2 个基点——很小,但方向永远为正,且随期限几乎不变(因为输入曲线是平行平移结构)。

# 凸度调整项 = BEI - 朴素利差
convexity_adj = BEI - naive
print("凸度调整 (bps):", (convexity_adj * 1e4).round(2))
# 约 2 bps, 方向恒正python三、到期 payoff 与「盈亏平衡」的含义#
把 ZCIS 的到期净 payoff 画出来(收浮动端一方):
其中 是实际实现的年化通胀。当 时净 payoff 恰好为零——这就是「盈亏平衡」的字面含义:实现通胀恰好等于 BEI 时,做通胀掉期不赚不赔;实现通胀高于 BEI,收浮动端(做多通胀)赚钱;低于 BEI 则亏。

K = BEI[4] # 取 5 年期 ZCIS 平价利率
TT = 5.0
g = np.linspace(0.0, 0.05, 200)
fixed_leg = (1 + K) ** TT - 1
float_leg = (1 + g) ** TT - 1
net = float_leg - fixed_leg
# g == K 时 net == 0
print("K =", round(K*100, 3), "% => net(K)=", round(net[np.argmin(np.abs(g-K))]*100, 4), "%")python这正是 BEI 被叫作「盈亏平衡通胀率」的原因:它是让多/空通胀头寸打平的临界通胀。
四、由 BEI 反推远期通胀曲线#
BEI 是平均通胀预期(几何平均)。要看出「市场认为第 3 到第 4 年通胀会是多少」,得用相邻 BEI 反推远期通胀:
Ts = np.concatenate([[0.0], T])
Bs = np.concatenate([[0.0], BEI])
forwards, mids = [], []
for k in range(1, len(Ts)):
t0, t1 = Ts[k-1], Ts[k]
fwd = ((1 + Bs[k])**t1 / (1 + Bs[k-1])**t0) ** (1.0/(t1 - t0)) - 1
forwards.append(fwd); mids.append((t0 + t1) / 2.0)
print("远期通胀 (%):", (np.array(forwards)*100).round(3))
# [2.02 2.224 2.122 2.122 2.122 2.122 2.122]python
这里有个诚实的怪象:1y→2y 远期通胀(2.22%)明显高于其余年份(2.12%)。原因是输入曲线在 1 年期名义-真实利差(2.0%)比后续年份(2.1%)略窄,BEI 在 1y 处被拉低到 2.02%,于是 1y 到 2y 这段「补涨」被压缩成了更高的远期。这说明:远期曲线对输入曲线首段极其敏感,首期 pillar 的报价质量直接决定整条远期形态。
五、四类真实陷阱(中阶必须知道)#
- BEI ≠ 纯净通胀预期:它 = 通胀预期 + 通胀风险溢价 + (TIPS 流动性/richness 偏差)。紧缩期 TIPS 常因避险需求被买贵(真实利率被压低),BEI 会低估真实预期;反之流动性危机时 TIPS 被抛售,BEI 又可能高估。把它当「预期」用之前,先想清楚溢价方向。
- 凸度调整的双向性:上面算出 BEI 高于朴素利差,是因为 凸性为正。但如果你在算真实债券 vs 名义债券的相对价值,凸度方向会因头寸而反转,别机械套用「BEI 永远偏高」。
- 指数滞后(Indexation Lag):CPI 公布有滞后,ZCIS 到期付的是累计指数比,但指数水平对应的是到期前某个月的读数。做跨期通胀产品(如 YoY inflation swap)时,滞后会让现金流和日历对不上,需要显式建模。
- 单一货币假设:以上全部是单货币框架。跨境通胀掉期(Cross-currency inflation swap)还要叠一层 FX 对冲成本,BEI 会被汇率隐含通胀预期污染,不能直接比两国「真实」通胀预期之差。
六、BEI 怎么变成一笔交易:盈亏平衡交易的实操#
理解了 BEI 是「让多空通胀打平的临界通胀」,它就能直接变成交易信号。最常见的玩法是盈亏平衡交易(breakeven trade):当你判断「真实未来通胀会高于当前 BEI」时,就做多通胀——买入 ZCIS 浮动端(或做多通胀挂钩债券 + 做空名义债券);当判断「通胀会低于 BEI」时反向。
举个例子:假设 5y BEI = 2.12%,而你基于宏观判断认为未来 5 年实际年均通胀会到 2.5%。那么做多通胀掉期,到期净 payoff 约为 (占名义本金)——这就是你的通胀观点被「定价」出来的样子。反过来,如果实际通胀只有 1.8%,这笔交易就亏约 。BEI 既是定价锚,也是盈亏分界线,观点偏离 BEI 多少,头寸就赚或亏多少。
需要注意,ZCIS 是零息结构,payoff 在到期日才结算,中间没有现金流,因此对交易对手信用风险(CSA、抵押品)的依赖比期初期末两次现金流的产品更高——这又回到首段说的:BEI 里那层流动性/信用风险溢价,部分就是为这段「漫长等待」付的保险费。
小结#
ZCIS 把「通胀」这个没法单独交易的变量,变成了一个可报价的固定端利率,也就是市场隐含的通胀预期 BEI。它用一条无套利等式 BEI = exp(z_nom − z_real) − 1 从名义/真实零息曲线里拆出来,比朴素利差多一层凸度调整,再经相邻期限反推得到远期通胀曲线。但记住最后一道防线:BEI 是预期、溢价、流动性的混合体,用它做宏观判断前,先把溢价和流动性偏差剥掉。
下一篇我们用同样的折现曲线语言,讲清利率互换(IRS)自己的定价——如何用一条 bootstrap 出来的折现曲线,把固定端与浮动端的现值都钉死。