4、利率互换定价原理:将互换分解为固定端与浮动端债券,净现值定价法。
聊到利率互换的定价,很多新手第一反应就是去算未来每一期现金流的现值,然后加总。嗯,这个思路没错,但实际操作起来会非常繁琐。我个人习惯用另一种视角——把互换拆成两张债券。
说白了,一个普通的利率互换,你作为支付固定利率、收取浮动利率的一方,本质上就是:
- 你发行了一张固定利率债券(你支付固定利息)
- 你持有了一张浮动利率债券(你收取浮动利息)
互换的价值,就是这两张债券净值的差。这个思路我在刚入行时觉得有点绕,但后来发现,它让定价变得异常清晰。
4.1 为什么能这么拆?
你想想看,互换合约里约定的现金流交换,是不是和债券的付息很像?
- 固定端:每期支付固定金额 → 类似固定利率债券的票息
- 浮动端:每期支付浮动金额(基于Libor/SOFR) → 类似浮动利率债券的票息
- 名义本金:虽然互换不交换本金,但我们在定价时,在到期日虚拟一个本金交换,这样就能完美套用债券定价公式
为什么要虚拟本金?因为债券定价公式里必须有本金偿还这一项。而互换在到期时,固定端和浮动端的本金相互抵消,不影响净现值。这个技巧,我在做第一份互换交易台工作时,带我的老交易员教我的——他说这是“金融工程的障眼法”。
Vswap = Vfloat - Vfixed
其中:
Vfloat = 浮动端债券现值
Vfixed = 固定端债券现值
4.2 固定端债券定价
固定端其实很简单。假设名义本金为N,固定利率为c,每半年付息一次,剩余付息次数为n,贴现因子为d(t)。
固定端债券现值:
V_fixed = N * c/2 * Σ d(t_i) + N * d(t_n)
这里Σ是对所有付息日求和。d(t_i)是从今天到第i个付息日的贴现因子。
我在项目中遇到过一个问题:如果互换的固定利率不是标准化的(比如不是整数),计算时一定要精确到小数点后6位以上。有一次我因为四舍五入,导致一笔上亿规模的互换估值差了十几万——被风控部门追着问了一整天。
4.3 浮动端债券定价
浮动端就有点意思了。你可能会想,浮动利率每期都不一样,怎么算现值?
其实有个很巧妙的性质:在付息日,浮动利率债券的价格总是回归面值。为什么?因为浮动利率会重置到市场利率,使得债券的票息恰好等于市场要求的回报率。
所以,浮动端债券的现值可以简化为:
V_float = N * d(t_0) + (浮动利息调整)
其中t_0是下一个付息日。如果当前距离下一个付息日还有一段时间,就需要加上应计利息的调整。
我记得有一次,团队里新来的同事直接用V_float = N来计算,结果在非付息日估值时总是对不上。我告诉他:浮动端债券只有在付息日才等于面值,其他时间要考虑应计利息和贴现。
4.4 净现值定价法完整流程
好了,我们把两部分合起来。净现值定价法就三步:
- 构建贴现曲线:从市场数据(如OIS、FRA、Swap Rate)中提取零息曲线,得到各期限的贴现因子d(t)
- 计算固定端现值:用固定利率和贴现因子,计算所有固定现金流现值
- 计算浮动端现值:利用浮动债券回归面值的性质,简化计算
最终互换价值:
V_swap = V_float - V_fixed
如果V_swap > 0,说明你作为固定支付方是赚钱的(你收的浮动利息比付的固定利息多)。反之亦然。
4.5 一个具体例子
假设有一笔5年期利率互换,名义本金1亿元,你支付固定利率3.5%(年化,半年付息),收取3个月Libor(季度付息)。当前贴现因子如下:
| 期限(年) | 贴现因子 d(t) |
|---|---|
| 0.25 | 0.9950 |
| 0.50 | 0.9900 |
| 0.75 | 0.9845 |
| 1.00 | 0.9790 |
| ... | ... |
固定端计算(简化,只展示前两期):
V_fixed = 1亿 * 3.5%/2 * (0.9900 + 0.9790 + ...) + 1亿 * d(5年)
浮动端计算:
V_float = 1亿 * 0.9950 + 应计利息调整
两者相减,就得到互换的净现值。
4.6 知识体系结构图
下面这张图,把利率互换定价的核心逻辑串起来了。我建议你保存下来,每次做定价时对照着看。
嗯,这张图把整个逻辑串起来了。从互换合约出发,拆成固定端和浮动端两张债券,分别定价,最后相减。你每次做定价时,脑子里过一遍这个流程,基本不会出错。
最后说一句:净现值定价法虽然基础,但它是所有复杂互换定价的基石。不管是利率上限/下限、互换期权,还是跨货币互换,底层逻辑都是这个。把这个吃透了,后面学什么都快。
公众号:蓝海资料掘金营,微信deep3321