halo 的技术博客

返回

通胀是固定收益里最难被直接交易的变量之一。你买一只普通国债,拿到手的收益率其实是一锅浑水:里面煮着真实利率、通胀预期、还有通胀风险溢价和流动性溢价。你没办法单独把「通胀」这一味挑出来买卖。但有一个工具能做到——通胀掉期(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 的两端:

  • 固定端:在到期日 TT 支付 (1+K)T1(1+K)^T - 1(占名义本金),其中 KK 是约定的固定通胀利率;
  • 浮动端:在到期日支付 I(T)I(0)1\frac{I(T)}{I(0)} - 1,即期初到到期日消费者价格指数的累计涨幅。

两笔都在到期日一次性轧差结算(零息结构的特点),所以图上看不到期间现金流,只看到期净值。

无套利的核心在于:「名义债券 + 收浮动端的通胀掉期」「真实债券(TIPS)」 在到期日都只跟实际购买力挂钩,二者必须等价。直觉上,如果你持有名义债、又通过掉期把名义债的「通胀部分」换成了固定补偿,那么你最终手里就等价于一只通胀挂钩债——而市场上的通胀挂钩债(TIPS)有自己独立的价格。两个构造出来的「真实收益」如果存在价差,套利者会立刻同时买卖两边把缝抹平。这个抹平过程,正是 BEI 能被当作通胀预期的原因:它不是某个模型揣测出来的,而是市场用真金白银套利出来的均衡价格。用零息曲线写就是:

Preal(T)=Pnom(T)(1+K)TP_{\text{real}}(T) = P_{\text{nom}}(T)\,(1+K)^T

其中 Pnom(T)=eznomTP_{\text{nom}}(T)=e^{-z_{\text{nom}}T} 是名义零息债券的折现因子,Preal(T)=ezrealTP_{\text{real}}(T)=e^{-z_{\text{real}}T} 是通胀挂钩(真实)零息债券的折现因子。于是平价固定端利率——也就是 BEI——直接解出:

K=BEI(T)=(PrealPnom)1/T1=exp(znomzreal)1K = \text{BEI}(T) = \left(\frac{P_{\text{real}}}{P_{\text{nom}}}\right)^{1/T} - 1 = \exp(z_{\text{nom}} - z_{\text{real}}) - 1

注意 BEI 永远略高于朴素利差 z_nom − z_real——这不是数值误差,而是下面要讲的凸度调整

二、凸度调整:为什么 BEI 高于朴素利差#

朴素利差 z_nom − z_real 来自对 (1+K)T(1+K)^T一阶近似:把 (1+K)TeKT(1+K)^T \approx e^{KT} 代入,得到 KznomzrealK \approx z_{\text{nom}} - z_{\text{real}}。但真实关系是 (1+K)T(1+K)^T 这种复利凸函数,指数展开会多出二阶项:

BEI(znomzreal)12TVar[通胀]\text{BEI} - (z_{\text{nom}} - z_{\text{real}}) \approx \frac{1}{2}\,T\,\text{Var}[\text{通胀}]

即 BEI 与朴素利差之差,近似等于通胀不确定性带来的凸度溢价(所以通胀越不确定,BEI 高出朴素利差越多)。在我们的自洽曲线上,这个调整项稳定在约 2 个基点——很小,但方向永远为正,且随期限几乎不变(因为输入曲线是平行平移结构)。

盈亏平衡通胀率 vs 名义-真实利差:凸度调整

# 凸度调整项 = BEI - 朴素利差
convexity_adj = BEI - naive
print("凸度调整 (bps):", (convexity_adj * 1e4).round(2))
# 约 2 bps, 方向恒正
python

三、到期 payoff 与「盈亏平衡」的含义#

把 ZCIS 的到期净 payoff 画出来(收浮动端一方):

Net(g)=(1+g)T1[(1+K)T1]=(1+g)T(1+K)T\text{Net}(g) = (1+g)^T - 1 - \big[(1+K)^T - 1\big] = (1+g)^T - (1+K)^T

其中 gg实际实现的年化通胀。当 g=K=BEIg = K = \text{BEI} 时净 payoff 恰好为零——这就是「盈亏平衡」的字面含义:实现通胀恰好等于 BEI 时,做通胀掉期不赚不赔;实现通胀高于 BEI,收浮动端(做多通胀)赚钱;低于 BEI 则亏。

ZCIS 固定端 vs 浮动端 payoff,在 g=K 处相交

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 反推远期通胀:

f(t0,t1)=((1+BEI(t1))t1(1+BEI(t0))t0) ⁣1/(t1t0)1f(t_0,t_1) = \left(\frac{(1+\text{BEI}(t_1))^{t_1}}{(1+\text{BEI}(t_0))^{t_0}}\right)^{\!1/(t_1-t_0)} - 1

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

由 BEI 反推的远期通胀曲线

这里有个诚实的怪象:1y→2y 远期通胀(2.22%)明显高于其余年份(2.12%)。原因是输入曲线在 1 年期名义-真实利差(2.0%)比后续年份(2.1%)略窄,BEI 在 1y 处被拉低到 2.02%,于是 1y 到 2y 这段「补涨」被压缩成了更高的远期。这说明:远期曲线对输入曲线首段极其敏感,首期 pillar 的报价质量直接决定整条远期形态。

五、四类真实陷阱(中阶必须知道)#

  1. BEI ≠ 纯净通胀预期:它 = 通胀预期 + 通胀风险溢价 + (TIPS 流动性/richness 偏差)。紧缩期 TIPS 常因避险需求被买贵(真实利率被压低),BEI 会低估真实预期;反之流动性危机时 TIPS 被抛售,BEI 又可能高估。把它当「预期」用之前,先想清楚溢价方向。
  2. 凸度调整的双向性:上面算出 BEI 高于朴素利差,是因为 (1+g)T(1+g)^T 凸性为正。但如果你在算真实债券 vs 名义债券的相对价值,凸度方向会因头寸而反转,别机械套用「BEI 永远偏高」。
  3. 指数滞后(Indexation Lag):CPI 公布有滞后,ZCIS 到期付的是累计指数比,但指数水平对应的是到期前某个月的读数。做跨期通胀产品(如 YoY inflation swap)时,滞后会让现金流和日历对不上,需要显式建模。
  4. 单一货币假设:以上全部是单货币框架。跨境通胀掉期(Cross-currency inflation swap)还要叠一层 FX 对冲成本,BEI 会被汇率隐含通胀预期污染,不能直接比两国「真实」通胀预期之差。

六、BEI 怎么变成一笔交易:盈亏平衡交易的实操#

理解了 BEI 是「让多空通胀打平的临界通胀」,它就能直接变成交易信号。最常见的玩法是盈亏平衡交易(breakeven trade):当你判断「真实未来通胀会高于当前 BEI」时,就做多通胀——买入 ZCIS 浮动端(或做多通胀挂钩债券 + 做空名义债券);当判断「通胀会低于 BEI」时反向。

举个例子:假设 5y BEI = 2.12%,而你基于宏观判断认为未来 5 年实际年均通胀会到 2.5%。那么做多通胀掉期,到期净 payoff 约为 (1.025)5(1.0212)51.31%(1.025)^5 - (1.0212)^5 \approx 1.31\%(占名义本金)——这就是你的通胀观点被「定价」出来的样子。反过来,如果实际通胀只有 1.8%,这笔交易就亏约 (1.0212)5(1.018)51.59%(1.0212)^5 - (1.018)^5 \approx 1.59\%BEI 既是定价锚,也是盈亏分界线,观点偏离 BEI 多少,头寸就赚或亏多少。

需要注意,ZCIS 是零息结构,payoff 在到期日才结算,中间没有现金流,因此对交易对手信用风险(CSA、抵押品)的依赖比期初期末两次现金流的产品更高——这又回到首段说的:BEI 里那层流动性/信用风险溢价,部分就是为这段「漫长等待」付的保险费。

小结#

ZCIS 把「通胀」这个没法单独交易的变量,变成了一个可报价的固定端利率,也就是市场隐含的通胀预期 BEI。它用一条无套利等式 BEI = exp(z_nom − z_real) − 1 从名义/真实零息曲线里拆出来,比朴素利差多一层凸度调整,再经相邻期限反推得到远期通胀曲线。但记住最后一道防线:BEI 是预期、溢价、流动性的混合体,用它做宏观判断前,先把溢价和流动性偏差剥掉。

下一篇我们用同样的折现曲线语言,讲清利率互换(IRS)自己的定价——如何用一条 bootstrap 出来的折现曲线,把固定端与浮动端的现值都钉死。

通胀掉期与盈亏平衡通胀率:用互换价差拆出通胀预期
https://blog.halo26812.eu.org/blog/inflation-swap-breakeven
Author halo
Published at 2026年7月20日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨