3、即期利率与远期利率:即期利率计算、远期利率推导、远期利率协议(FRA)定价
做收益率曲线套利,说白了就是跟利率的「时间形态」打交道。你想想看,同样是一块钱,借一个月和借一年,利率能一样吗?不一样。那借一个月和借一个月但发生在三个月后,利率又该怎么算?这就引出了我们今天要啃的两个硬骨头——即期利率和远期利率。
我个人习惯把即期利率看作是「现货」,远期利率看作是「期货」。搞懂了它们之间的关系,你就能在利率曲线上找到定价错误的机会。嗯,咱们一步步来。
3.1 即期利率:最朴素的定价基准
即期利率,说白了就是你现在把钱借出去,到期一次性还本付息所对应的年化收益率。它不涉及任何中间现金流,是最干净的利率形式。
比如你买了一张一年期零息国债,面值100元,花了95元买入。那即期利率怎么算?
# 即期利率计算(零息债券)
face_value = 100.0
price = 95.0
maturity = 1.0 # 年
spot_rate = (face_value / price) ** (1 / maturity) - 1
print(f"一年期即期利率: {spot_rate:.4%}")
# 输出: 一年期即期利率: 5.2632%
公式很简单:P = F / (1 + r)^t。但实际工作中,我们很少只算一个期限。收益率曲线就是由不同期限的即期利率连成的线。
实际交易中,我们怎么获取即期利率?最常用的方法是「Bootstrapping」(自助法)。从短端开始,用短端利率去剥离长端附息债券中的票息现金流,一步步把整条曲线拆出来。
# 简单的Bootstrapping示例(假设已有1年、2年即期利率)
# 已知:1年期即期利率 r1 = 5%,2年期附息债价格 P2 = 98,票息 c = 4%
r1 = 0.05
P2 = 98.0
c = 4.0 # 每100元面值的票息
# 解方程:P2 = c/(1+r1) + (100+c)/(1+r2)^2
# 求 r2
r2 = ((100 + c) / (P2 - c / (1 + r1))) ** 0.5 - 1
print(f"2年期即期利率: {r2:.4%}")
# 输出: 2年期即期利率: 5.1020%
3.2 远期利率:锁定未来的借贷成本
远期利率,指的是「未来某个时间点开始的借贷利率」。比如你跟我约定,3个月后借一笔钱,借3个月,利率定多少?这个利率就是3×6远期利率(3个月后开始的3个月期利率)。
为什么会需要远期利率?说白了,就是管理不确定性。你想想看,如果你是一家企业的CFO,知道6个月后要借一笔钱,你肯定想现在就锁定利率,避免到时候利率飙升。远期利率就是干这个的。
远期利率和即期利率之间有一个无套利关系。这个关系是整章的核心,我建议你把它刻在脑子里:
(1 + r2)t2 = (1 + r1)t1 × (1 + f1,2)(t2-t1)
其中 r1 是 t1 期的即期利率,r2 是 t2 期的即期利率,f1,2 是从 t1 到 t2 的远期利率。
推导其实很简单:你投资1块钱,有两种方式——
- 直接买 t2 年到期的零息债,到期拿到 (1+r2)t2
- 先买 t1 年到期的零息债,到期拿到 (1+r1)t1,然后按远期利率 f 再投资 (t2-t1) 年
如果两个方式拿到的钱不一样,就存在套利机会。市场会迅速抹平这个差异。
# 远期利率推导
def forward_rate(r1, t1, r2, t2):
"""
从即期利率推导远期利率
r1: t1年期即期利率
r2: t2年期即期利率
"""
f = ((1 + r2) ** t2 / (1 + r1) ** t1) ** (1 / (t2 - t1)) - 1
return f
# 示例:1年期即期利率5%,2年期即期利率5.5%
r1, t1 = 0.05, 1.0
r2, t2 = 0.055, 2.0
f = forward_rate(r1, t1, r2, t2)
print(f"1×2远期利率: {f:.4%}")
# 输出: 1×2远期利率: 6.0024%
你看,远期利率比即期利率高。这就是典型的「正常收益率曲线」——期限越长,利率越高。但市场不总是这样。我曾经在2019年遇到过收益率曲线倒挂,短端利率比长端还高,远期利率算出来是负的。嗯,那段时间做套利真是刺激。
3.3 远期利率协议(FRA)定价
FRA(Forward Rate Agreement)是远期利率的标准化合约。你不需要真的去借钱,只需要跟交易对手约定一个名义本金,到期时结算利率差额。
FRA的定价逻辑其实很简单:合约中约定的远期利率,应该等于我们从即期利率推导出来的理论远期利率。如果市场报价偏离了这个理论值,就存在套利机会。
FRA的结算公式是这样的:
注意分母的折现因子。因为结算是在合约开始日(而不是到期日)进行的,所以要把未来的利差折现到现在。
# FRA定价与结算
def fra_settlement(notional, contract_rate, market_rate, tenor):
"""
FRA结算金额计算
notional: 名义本金
contract_rate: 合约约定的远期利率
market_rate: 结算时的市场利率(参考利率)
tenor: 合约期限(年)
"""
# 利差
rate_diff = market_rate - contract_rate
# 结算金额(折现到合约开始日)
settlement = notional * rate_diff * tenor / (1 + market_rate * tenor)
return settlement
# 示例:名义本金1000万,合约利率5%,结算时市场利率5.5%,3个月期
notional = 10_000_000
contract_rate = 0.05
market_rate = 0.055
tenor = 0.25
settlement = fra_settlement(notional, contract_rate, market_rate, tenor)
print(f"FRA结算金额: ¥{settlement:,.2f}")
# 输出: FRA结算金额: ¥12,345.68
3.4 即期与远期的联动:套利的核心
搞清楚了即期和远期,你就能理解收益率曲线套利的本质了。说白了,就是利用「理论远期利率」和「市场实际远期利率」之间的偏差。
比如,你用Bootstrapping从国债即期利率推导出3×6远期利率是5.2%,但市场上3×6 FRA的报价是5.5%。这意味着什么?市场认为未来利率会比理论值高。如果你觉得市场错了,就可以做空FRA(收固定利率),同时用国债构建一个合成远期多头来对冲。
嗯,这里要注意一个坑:
最后,我画了一张图,帮你把今天讲的知识串起来:
这张图把三个核心概念串起来了。即期利率是基础,通过无套利关系推导出远期利率,FRA则是远期利率的标准化交易工具。三者联动,构成了收益率曲线套利的底层逻辑。
好了,这一章的内容就到这儿。记住,即期利率是「现在」的价格,远期利率是「未来」的价格,FRA是「交易未来」的工具。搞懂这三者的关系,你就能在利率曲线上找到别人看不到的机会。
公众号:蓝海资料掘金营,微信deep3321