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。但实际工作中,我们很少只算一个期限。收益率曲线就是由不同期限的即期利率连成的线。

关键点:即期利率一定是针对「零息债券」或「零息票工具」的。如果债券有票息,那它的到期收益率(YTM)并不等于即期利率。我在项目中遇到过不少新手直接把YTM当即期利率用,结果套利模型跑出来全是假信号。

实际交易中,我们怎么获取即期利率?最常用的方法是「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结算金额 = 名义本金 × (市场利率 - 合约利率) × 期限 / (1 + 市场利率 × 期限)

注意分母的折现因子。因为结算是在合约开始日(而不是到期日)进行的,所以要把未来的利差折现到现在。

# 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
实战小技巧:我在做FRA套利时,习惯同时监控3个期限的FRA报价——1×4、3×6、6×9。如果发现3×6的隐含远期利率和1×4+4×6的复合远期利率不一致,那就是一个典型的「凸性套利」机会。别问我怎么发现的,亏过几次钱就记住了。

3.4 即期与远期的联动:套利的核心

搞清楚了即期和远期,你就能理解收益率曲线套利的本质了。说白了,就是利用「理论远期利率」和「市场实际远期利率」之间的偏差。

比如,你用Bootstrapping从国债即期利率推导出3×6远期利率是5.2%,但市场上3×6 FRA的报价是5.5%。这意味着什么?市场认为未来利率会比理论值高。如果你觉得市场错了,就可以做空FRA(收固定利率),同时用国债构建一个合成远期多头来对冲。

嗯,这里要注意一个坑:

避坑指南:我曾经在2015年做了一次类似的套利,理论模型显示偏差有20个基点,我满仓干进去了。结果忽略了流动性溢价——国债和FRA的信用等级不同,那个偏差根本不是套利空间,而是信用利差。从那以后,我每次做套利都会问自己三个问题:1)这两个工具的信用风险一样吗?2)流动性一样吗?3)税收处理一样吗?

最后,我画了一张图,帮你把今天讲的知识串起来:

即期利率与远期利率知识体系 即期利率 零息债券收益率 Bootstrapping剥离 收益率曲线构建 远期利率 未来借贷成本 无套利推导 隐含远期利率 FRA定价 标准化远期合约 利差结算机制 折现因子应用 无套利推导 标准化合约 核心套利逻辑 理论远期利率 vs 市场远期利率 → 偏差 = 套利机会 注意:信用风险、流动性、税收差异可能导致伪套利

这张图把三个核心概念串起来了。即期利率是基础,通过无套利关系推导出远期利率,FRA则是远期利率的标准化交易工具。三者联动,构成了收益率曲线套利的底层逻辑。

好了,这一章的内容就到这儿。记住,即期利率是「现在」的价格,远期利率是「未来」的价格,FRA是「交易未来」的工具。搞懂这三者的关系,你就能在利率曲线上找到别人看不到的机会。


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