(四十二)利率互换与货币互换的定价

利率互换定价

对于互换多头(即支固收浮者,希望利率上升),例如浮动利率债券的多头与固定利率债券的空头的组合,利率互换的价值V = Bfl - Bfix;反之对于互换空头(收浮支固者,希望利率下降),例如固定利率债券的多头与浮动利率债券的空头的组合,利率互换的价值就是V = Bfix - Bfl

其中固定利率债券的价值 Bfix就是未来交换的现金流的贴现和,一般用连续复利的即期利率来贴现。为计算Bfl,注意到浮动债券在付息后等于其面值A(因为其收益率和折现率均为上一支付日的浮动利率如Libor),假定下一次互换现金流的时间为t* 时刻,在t* 时刻支付浮动利息是K*,在支付利息之后的那一时刻Bfl = A+K*,所以浮动利率债券可看作是在t* 时刻提供单一现金流的金融资产,对这一现金流用对应期限的贴现率r* 进行贴现即可得出浮动利率债券的现值为Bfl = (A+K*)×e-r*t*

案例:假设按照某利率互换条款,某一金融机构同意支付6个月期的LIBOR,同时收取每年8%的利率(半年期的年复利),名义本金为1亿美元,该互换还有1.25年时间到期。按照连续复利计算的3个月、6个月、9个月和15个月的相关贴现率分别是10%、10.3%、10.5%和11%。上一支付日所对应的LIBOR为10.2%(半年复利)。计算该利率互换对于该金融机构的价值。
在这里插入图片描述
注意该互换15个月后到期,因此支付日从现在往后推分别是3个月后,9个月后和15个月后。该金融机构支浮收固,是互换空头,V = Bfix - Bfl = -4.267百万美元,对于该金融机构来说互换价值为负。

import numpy as np
def int_swap_long(t,r,A,k,r0):
	Bfix=sum(A*k*0.5*(np.exp(-r*t)))+A*(np.exp(-r[-1]*t[-1]))
	Bfl=(A+0.5*A*r0)*(np.exp(-r[0]*t[0]))
	return Bfl-Bfix
A=100;t=np.array([0.25,0.75,1.25]);k=0.08
r=np.array([0.1,0.105,0.11]);r0=0.102
V=-int_swap_long(t,r,A,k,r0)
V
Out[3]: -4.2671758531406

利率互换中固定利率的计算

互换的固定利率定价要使得互换合约刚签订时的价值为0。假定Libor为6个月期的浮动利率,利息每6个月交换一次。由于付息日浮动利率的确定来自6个月前,因此知道互换的年限后,未来的浮动利率要根据远期利率来计算,而远期利率可以根据零息债券的收益率(利率期限结构)获得,即:(1+ri/2)i (1+fi+1,i/2) = (1+ri+1/2)i+1,ri为第i个半年后到期的零息债券半年付息一次的年收益率。因此使得 Bfix - Bfl = 0的x就是固定利率的定价(下图中左边式子还要×0.5,n为半年期的期数):
在这里插入图片描述
比如要确定一个5年期、名义本金为100万美元、6个月付息一次的利率互换的固定利率,利率的期限结构t=[0.5,1,1.5,2,2.5,3,3.5,4,4.5,5],对应的零息债券收益率分别为r=[0.0614,0.0642,0.066,0.0684,0.0702,0.0726,0.0754,0.0795,0.0827,0.0868]:

t=np.array([1,2,3,4,5,6,7,8,9,10])#5年有10个复利期间
r=np.array([0.0614,0.0642,0.066,0.0684,0.0702,0.0726,0.0754,0.0795,0.0827,0.0868])
f=np.zeros(len(t));f[0]=r[0]
for i in range(len(t)-1):#求远期利率
	f[i+1]=(((2+r[i+1])**t[i+1])/(2+r[i])**t[i])-2
f
Out[6]: 
array([0.0614    , 0.0670038 , 0.06960471, 0.07561674, 0.07741568,
       0.0846418 , 0.09227962, 0.10842769, 0.10847791, 0.12406512])
discount=np.zeros(len(t))
for i in range(len(t)):#求折现因子
	discount[i]=(1+r[i]/2)**t[i]
Bfl=A*0.5*sum(f/discount)#浮动利率债券价格
from scipy import optimize#求解固定利率x
def g(x):
    e=Bfl-A*0.5*sum(x/discount)
    return e
result=optimize.fsolve(g,0.1)
print('固定利率为{:.2%}'.format(float(result)))

固定利率为8.45%

货币互换定价

与利率互换的方式相似,货币互换可以分解为用两种债券表示的情况。假如有两个公司,一个是支付10.8%年利率英镑债券的多头,另一个是支付8.0%年利率美元债券的空头。如果用V表示互换的价值,对支付美元利率的那一方而言,美国为本国,V=S×BF - BD,BF表示在互换中以外币形式衡量的外币债券价值,BD为互换中美元债券的价值,S为即期汇率(以每单位外币等于若干本国货币数量来表示)。因此,互换的价值可以由本国货币的利率期限结构、外币的利率期限结构以及即期汇率来确定。

案例:假设日元和美元的利率期限结构都是平的,日元年利率为4%,美元年利率为9%(连续复利)。一家金融机构进行货币互换,它每年以日元收取年利率为5%的利息,以美元支付年利率为8%的利息,以两种货币表示的本金分别为120000万日元和100万美元,互换将持续3年,每年互换一次。现在的汇率为1美元=110日元,试求该互换对于金融机构的价值。
在这里插入图片描述

def cur_swap(t,k1,k2,A1,A2,r1,r2,ex):
	BF=sum(A2*k2*(np.exp(-r2*t)))+A2*(np.exp(-r2*t[-1]))
	BD=sum(A1*k1*(np.exp(-r1*t)))+A1*(np.exp(-r1*t[-1]))
	return BF/ex-BD
A1,A2=1000,120000
r1,r2=0.09,0.04
k1,k2=0.08,0.05
t=np.array([1,2,3])
ex=110
V=cur_swap(t,k1,k2,A1,A2,r1,r2,ex)
V
Out[7]: 154.29957746883156

该互换对于金融机构的价值为+154.3万美元。

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值