固定收益证券-久期与凸度的matlab计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一讲固定收益证券的matlab计算
第一节固定收益基本知识
固定收益证券: 一组稳定现金流的证券.广义上还包括了债券市场上的衍生产品及优先股.以债券为主.
一. 固定收益的品种
国债是固定收益的重要形式,以贴现债券(discount security)与息票债券(coupon bonds)两种形式发行.
贴现债券: 发行价低于面值,不支付利息,在到期日获取面值金融的收益.
息票:按一定的票息率发行,每隔一段时间支付一次利息,到期按面值金额赎回.
美国的固定收益证券可以分为以下几个品种:
1. (短期)国库券(Treasury bills, T-bills)
期限小于一年,贴现发行,面值usu. 1~10万美元.是流动性最高的债券品种,违约风险小,其利率usu当作无风险利率。

2.政府票据(Treasury notes, T-notes)
即美国中期国债,期限1~10年,是coupon.
3. 长期国债(Treasury bonds, T-bonds)
期限>10年,面值1~10万美元,是coupon.通常每半年付一息,到期偿本息。

4.零息票债券(Zero-coupon bond)
零息票债券是指买卖价格相对布什有较大折让的企业或市政债券。

出现大额折让是由于债券并无任何利息,它们在发行时就加入折扣,或由一家银行除去息票,然后包装成为零息票债券发行,投资者在债券到期时以面值赎回。

零息票债券往往由附息债券所”剥离”出来:购买息票国债的经纪人可以要求财政部停止债券的现金支付,使其成为独立证券序列,这时每一证券都具有获得原始债券收益的要求权.
如一张10年期国债被剥离成20张半年期债券,每张都可视为零息票,它们到期日从6个月到10年不等,最后本多支付是另一张零息证券,所有的支付都单独计算,并配有自己的CUSIP号码(统一由美国证券鉴定程序委员会颁布). 具有这种标识的证券都可以在联邦银行及其分支机构上进行电子交易,财政部仍旧具有支付责任.由于这种债券息票被“剥离”了,因此被称为本息剥离式国债STRIPS(separate trading of registered interest and principal of securities).
1982年麻省海湾运输局发行了免税零息债券,标志着政府开始参与长期零息券的发行.
1987年5月起,美国财政部也允许一个被剥离债券的息票重新组合成息票.
5. 美国CD存单
美国CD存单(certificate deposit): 由银行等金融机构向存款人改选的证券,存单上标有一个到期日和利率,并且以任意面值发行,可以买卖, 偿还期限小于1年.
6. 回购协议(repurchase agreement)
短期抵押贷款,是指一方向另一方出售证券的同时,承诺在未来的某一天按协定的价格将相同的证券买回,通常由借款方发起并贷出证券,回购中涉及的证券通常具有较高的信用质量.
回购协议建立了货币市场和债券市场之间的联系.
回购协议的步骤: (1) 以债券作为抵押借入资金; (2) 经过一段时间,按照约定的价格买回抵押债券.
7. 可转换债券(convertible security)
可转换债券(简称可转债)是一种具有固定收益的证券,其特点是持有者可以转换为普通股股票,在合约的条款中规定了可转换债
券转换为普通股的条件,持有者决定何时转换为股票.
可转换债券介于普通股和普通债券之间,故又称股票类连接证券. 可转债属于次级债券,如果企业破产,满足要求权的次序是:优先债权→次级债→可转债→优先股→普通股.
可见,总体上看,可转债属于权益类证券,其特点是享有先于普通股获得股息偿付的优先权和较高的收益,并且有机会分离公司股份上涨的好处.
8. 浮动利率债券(FRN))
浮动利率债券(FRN, floating rate notes)是偿还期内利率发生变化的债券.
如2010年3月到期,按委付息的浮动利率债券,其基准为3个月libor.
浮动利率债券具有以下几个特征:
①规定了利率上限与利率下限
②基准利率大多为LIBOR,也可为汇率、股票指数、债券指数等;
③利率可以正向浮动,也可以反向浮动。

联邦住房银行(Federal Home Loan Bank, 不是房地美
FreddieMac, 房地美的前称是Federal Home Loan Corp.)曾在1999年3朋发行了反向浮动债券,该债券支付的利率计算公式如下:
18%-2.5 × 三个月的LIBOR。

同时规定反向浮动利率下限为3%,上限为15.5%。

二.固定收益相关概念
1.交易日(trade date
交易日就是买卖双方达成交易的日期。

但实际情况可能比这更复杂。

如果是通过拍卖方式购入的证券,交易日是拍卖结果被确认、购买者被告知他们分摊数量及价格的日期;如果固定收益证券由一承购集团成员所购买,交易日与牵头者最终将承销证券分配给成员的日期一致。

2.结算日(Settlement Date
指买入方支付价格和卖出方交割证券的日期。

美国国债交割日为交易之后第一个营业日(T+1)。

交割日也可以由交易者之间商定,如果交割日刚好支付利息,则债券当天出售者获得当天的利息支付,而债券的购买者获得其余款项。

有时通过Fed Wine机构交割证券,交易日即为交割日。

3.到期日(Maturity
指固定收益证券债务合约终止的日期。

到期日发行人应还清所有本息。

很多固定收益证券如定期存款、短期国库券、商业票据、再回见协议、外汇掉期、零息票债券等,只有一个到期日,日期计算都以这个到期日为基准。

4.本金(Principal)
本金有时称面值(par value),是指固定收益票面金额。

5.票面利率(Coupon rate)
即发行人支付给持有人的利息,有时也称名义利率(nominal rate).
票面利率一般指按照单利计算的年利息率,利息支付的频率不同,实际利率当然就不同。

6.月末法则(end of month ruler)
指当债券到期日在某有的最后一天,而且该月天数小于30天,
这时有两种情况:
①到期日在每月固定日期支付;②票息在每月的最后一天支付。

Matlab默认的是第②种情况。

如:今天2011年2月28日,半每付息制,下一次发息日可能是2011年8月28日,也可能是2011年8月31日,如果不用月末法则就是前者,如果用月末法则就是后者。

7.起息日到交割日的天数(DSM)
DSM:days from coupon to settlement):指从计息日(令)到交割日(不含)之间的天数。

注意,注意付息日作为下一个利息期限的第一天而不计入DCS。

8.交割日距离到期日的天数(DSM)
DSM:days from settlement to maturity):其一般规则是包括交割日而不包括到期日。

(这样买方有动力尽早交易,获得当天收益;卖方在交割当天就获得资金的使用权)
第二节应计天数简介
应计天数是指,债券起息日或上一付息日至结算日的天数,在此期间发生的利息称为应计利息,matlab中可用help daysdif代码查看。

>> help daysdif
The element type "name" must be terminated by the matching end-tag "</name>". Could not parse(从语法上描述)the file:
d:\matlab7\toolbox\ccslink\ccslink\info.xml
DAYSDIF Days between dates for any day count basis.
DAYSDIF returns the number of days between D1 and D2 using the given
day count basis. Enter dates as serial date numbers or date strings.
D = daysdif(D1, D2)
D = daysdif(D1, D2, Basis)
Optional Inputs: Compounding, Basis
Inputs:
D1 - [Scalar or Vector] of dates.
D2 - [Scalar or Vector] of dates.
Optional Inputs:
Basis - [Scalar or Vector] of day-count basis.
0 = actual/actual (default)
1 = 30/360 (SIA)
2 = actual/360
3 = actual/365
(NEW) 4 - 30/360 (PSA compliant)
(NEW) 5 - 30/360 (ISDA compliant)
(NEW) 6 - 30/360 (European)
(NEW) 7 - act/365 (Japanese)
实务中计算方法如下:
1.Act/Act:按照实际天数计算,分平闰年;
2.Act/360:一年360天;
3.Act/365:一年365天;
4.30/360(European):每月30天,每年360天,起始日或到期日为31日的改为30日;
5.30/360(ISDA1):每月30日,每年360天,起始日或到期日为31日改为30日,到期日为31日,起始日不为30日、31日,则不变;
6.30/360(PSA2):每月30日,每年360天,起始日或到期日为31日改为30日,到期日为31日,起始日不为30日、31日,则不变,2月最后一天为30日;
7.30/360(SIA3):每月30日,每年360天,起始日或到期日为31日改为30日,到期日为31日,起始日不为30日、31日,则不变,不是闰年,起始日到期日都为2月28日,则都改为30日,闰年,起始日到期日都为2月29日,则改为30日;
8.Act/365(Japanese):每月30天,每年365天,不考虑闰年;
由于各计数法则之间太难区别,我们只考matlab的用法:
格式:NumDays: = daysdiff(StrateDate, EndDate, Basis)
日期的格式可以是:纯数字‘月/日/年’的形式,如3/1/1999表
示1999年3月1日,也可以是数字加英文月份的前三个字母,
这时按日-月-年来排,如1-Mar-1999。

例1:计算Act/Act法则之下2007年2月27日至2007年3月
31日之间的天数。

>> StartDate='27-Mar-2007';
>> EndDate='31-Mar-2007';
>> Basis=0;
>> StartDate='27-Feb-2007';
>> NumDays=daysdif(StartDate,EndDate,Basis)
NumDays =
32
1ISDA:International Swap Dealers Associations国际互换交易协会
2PSA:Public Securities Association美国公众证券协会
3SIA:Securities Industry Association美国证券业协会
请解释下面matlab计算天数的结果的原因:
例2:请分别用30E/360,ISDA,PSA,SIA法计算例1中的应计天数。

解:
30E/360,ISDA,PSA,SIA对basis代码分别是:
E_Days=daysdif('2/27/2007','3/31/2007',6)
E_Days = 33
>> ISDA_Days=daysdif('2/27/2007','3/31/2007',5)
ISDA_Days = 34
>> ISDA_Days=daysdif('2/27/2007','3/31/2007',5)
ISDA_Days = 34
>> PSA_Days=daysdif('2/27/2007','3/31/2007',4)
PSA_Days = 34
>> SIA_Days=daysdif('2/27/2007','3/31/2007',1) SIA_Days = 34
特别注意:由于matlab
实际上是矩阵的计算,所以变量多可为向量形式,如我们可以把StrateDate和EndDate写成列向量,一次输入多个起始日和到期日。

在此,一般用列向量,列的间隔符号是英语分号。

例3:计算1998-03-01分别至2001-03-01,2002-03-01和2003-03-01之间的应计天数(ACT/ACT)。

解:>> StartDate=['3/1/1998'; '3/1/1998'; '3/1/1998'];
EndDate=['3/1/2001'; '3/1/2002';'3/1/2003'];
NumDays=daysdif(StartDate,EndDate)
NumDays =
1096
1461
1826
***作业1:请用matlab计算出下表中的应计天数
参考答案:% 固定收益证券作业1参考代码
% SIA A ct/360 PSA ISDA 30E/360的basis代码分别为1,2,4,5,6
>> StartDate=['2/27/2007'; '2/28/2007';'2/28/2008';'2/28/2008'];
>> EndDate=['3/1/2007';'3/1/2007';'3/1/2008';'3/1/2009'];
>> for Basis=1:1:6
if Basis==3
NumDays=[0;0;0;0]
else NumDays=daysdif(StartDate,EndDate,Basis)
end
end
% 将除0000之外的那几例依次填入表的1-5例即可. 如果你不会用程序控制语句,也可以一步步地求.
第三节应计利息、贴现与现金流
一.应计利息(Accrued interest)
公式略。

调用方式:
AccruInterest = acrubond(IssueDate, Settle, FirstCouponDate, Face, CouponRate, Period, Basis)
Period和Basis是可选项。

Period指付息频率。

Period=n表示一年付n次息。

例4:公司债券发行日是2000年3月1日,到期日为2006年3月1日,每年支付两次利息,交割日是2000年7月17日,息票率10%,面值100元,交割日和下一付息日(2000-09-01)之间的天数按30/360(European)计息。

请计算应计利息。

解法一:
30E/360E制度下,半年是180天,交割日和下一付息日之间的天数,由于每月只算30天,所以是44天.
那么该债券在本次结算时,应算从上一个付息日到交割日之间的天数,即从2000-03-01至2000-7-17之间的天数,显然这是180=44=136天。

由于每半年付一次息,其利率实为10%/2=5%,
所以应该利息AI为:
AI= 100 × 5% × 136/180 =3.7778
解法二:
>>IssueDate='3/1/2000';
>> Settle = '17-jul-2000';
>> FirstCouponDate='1-sep-2000';
>> Face=100;
>> CouponRate=0.1;
>> Period= 2;
>> Basis=6;
AccruInterest=acrubond(IssueDate, Settle, FirstCouponDate, Face, CouponRate, Period, Basis)
出来的是错误信息。

我查了一下help 原来是这个7.0版的matlab 这里的basis 最高只支持到3。

无赖之下,basis=6只好用1来代。

因为1是30/360,与6的30E/360较接近。

AccruInterest=acrubond(IssueDate, Settle, FirstCouponDate, Face, CouponRate, Period,1) AccruInterest = 3.7778
二.贴现率计算
尚缺函数,或未找到相应函数.
三、计算内部收益率
内部收益率是使投资现金流现值等于价格的收益率,其计算公式为:
n r C r C r C r C P n )
1()1()1(13
322
1++++++++=
,其中: C i 为第i 年度现金流,P 为债券价格,N 为年数,r 为内部收益率。

Matlab 计算函数: irr
调用方式: Return = irr(Cashflow)
例6:一项投资各期现金流如下表,请计算该投资的内部收益率是多少?
解:>> Cashflow=[-5000,1000,2000,3000,4000]; >> irr(Cashflow) ans = 0.2727
如果把这里的-5000改成-4000,那么ans=0.3825,这很容易理解。

四、现金流现值与终值
1.现金流现值的计算 现金流现值的计算公式是:
n r P r P r P r P r P PV n
)
1()1()1()1(1)1(3
322100+++++++++=
matlab 命令是:
PesentVal=pvvar(Cashflow, Rte)
PesentVal=pvvar(Cashflow,Rate,IrrCFDates)这里IrrCFDates 是指现金流发生的日期,Rate 是指的贴现率.
例7:一项投资各年的现金流如下表,贴现率为0.08,求其现值。

解:
>> cashflow=[-10000,2000,1500,3000,3800,5000]; >> rate =0.08; >> pvvar(cashflow,rate)
ans = 1.7154e+003 即:现值为1715.4。

请说说这项投资划得来吗?
(划得来,因为现值在超过了投资10000元,1715.4就是超过投资的部分)
例8: 已知贴现率为0.09,投资各时期的现金流如下表,求其再值。

解:>> cashflow=[-10000, 2500, 2000, 3000, 4000]; >> rate=0.09;
>> irrcfdates=['01/12/2007' '02/14/2008' '03/03/2008' '06/14/2008' '12/01/2008'];
>> PresentVal=pvvar(cashflow,rate, irrcfdates) PresentVal = 142.1648
注意:irrcfdates 这个向量应写成列向量,列向量的写法是用分号分隔或用回车符分隔。

此外,月和年要写成2位数,如3月1日不能写成1/3,只能写成01/03,这是因为列向量的各元素要保持一致。

判断下列写法是否正确:
>> irrcfdates=['01/12/2007'; '02/14/2008';'03/03/2008'; '06/14/2008'; '12/01/2008'] (正确的写法) irrcfdates=['1/12/2007';
'2/14/2008';
'3/3/2008';
'7/14/2008';
'12/1/2008'] (错误的写法,格式不统一) irrcfdates=['1/12/2007' '2/14/2008' '3/3/2008' '7/14/2008'
'12/1/2008'] (错误的写法,格式不统一) >> irrcfdates=['1/12/2007', '2/14/2008', '3/3/2008', '7/14/2008', '12/1/2008'] (错误的写法,写成了行向量)
如果贴现率是变化的,怎么办?如果贴现率是变化的,现金流现值的公式是怎样的?
n
n n
r C r C r C r C P )
1()1()1(133322211++++++++=
资料上没有现成的函数,我自己编了个函数,经过反复测试,成功运行。

注意matlab 中函数文件名要和函数名保持一致。

可变贴现率下现金流现值的计算:
function [PreValFlow,PresetVal] = PV_variable(P,r) %可变贴现率下现金流现值的计算 % 计算可变再现率和对应的现金流的现值.
% P 为各期现金流,r 为贴现率向量,注意第0期的利率一定要设成0对应P 第的一期应为负值
,
表示投资.
% 注意P为行向量,r也为行向量,此二向量的元素要一样多.否则计算会出错. [a,b]=size(r);
for i=1:1:b
C(i)=P(i)/((1+r(i))^(i-1)); % 再变成1/(1+ri)i(次方)
end
PV_variable=sum(C); % 注意要转置
PresetVal =PV_variable
'各期现值为:'
PreValFlow=C
(见PV_variable.m文件)
也可以用excel来计算,也很方便。

见文件:可变贴现率情况下
的现金流现值计算.xls
无论是自编函数PV_variable.m还是excel,最后算出来的结果都一样。

例9 已知一项5000元的投资在其后的第1-4年的现金流分别为:1000, 2000, 3000, 4000元,贴现率分别为5%,6%,7%,8%,求这四年的现金流的现值是多少?
解:利用我自编的可变现金流现值的函数PV_variable进行计算。

cashflow=[-5000,1000,2000,3000,4000];
rate=[0,0.05,0.06,0.07,0.08]
PV_variable(cashflow,rate)
PresetVal =
3.1214e+003
各期现值为:
PreValFlow =
1.0e+003 *
-5.0000 0.9524 1.7800 2.4489 2.9401
2.现金流终值
现金流终值是债券到期时的价值。

用fvvar 函数。

调用方式:FutureVal= fvvar(CashFlow, Rate, IrrCFDates) 例10:题干同例7。

求该现金流的终值。

解:>> CashFlow=[-10000, 2000, 1500, 3000, 3800, 5000]; Rate=0.08;
>> FutureVal=fvvar(CashFlow, Rate) FutureVal = 2.5205e+003
如果将FutureVal 贴现到当前时刻就是现值。

代码如下: FresentValue=FutureVal/(1+Rate)^5 FresentValue = 1.7154e+003 贴现后的结果同例7。

五.计算赎回价格
对于可赎回债券,当赎回时间小于等于一个计息周期时,公式较简单:
)
(1M
Y E DSR RV
price ⨯+=
当息票赎回时间大于一个息票期间时,公式较繁杂:
E
DSC Nq M
Y RV price +
-+
=
1)1(, 其中:
RV :赎回时的价格;DSC :结算日到下一个似息票日的天数 DSR :结算日到赎回日之间的天数 M :每年的息票期间 Nq :似息票期间个数 Y :息票率 调用方式:
Price = zeroprice(Yield, Settle, Maturity, Period, Basis, EndMonthRule) 输入参数: Yield: 票息率 Settle: 结算日
Maturity: 到期日
Period: (optional)付息频率
Basis: (optional)应计天数法则
EndMonthRule: (optional)月末法则
输出参数:
Price: 零息券价格
例11某债券结算日是1993年6月24日,到期日是1993年11月1日,每年付息2次,应计利息法则为ACT/ACT,票息为4%,试计算其价格。

解:该债券到期日小于一个计息周期,也可以视为一个赎回(注意默认的赎回价格是100),在赎回期之前没有支付票息,距离到期日小于一个计算期间,所以按公式算可用上述第一式。

下面用matlab解。

>> Settle ='24-Jun-1993';
>> Maturity ='1-Nov-1993';
>> Period =2;
>> Basis =0;
>> Yield = 0.04;
>> Price = zeroprice(Yield, Settle, Maturity, Period, Basis)
Price = 98.6066
这就是说到期时付100元的债券,现在提前赎回只要98.6066元。

例12 多个计息期间的赎回价格。

如果某债券结算日是1993年6月24日,到期日是2024年1月15日,每年付息2次,应计利息法则为ACT/ACT,票息为10%,到期时的赎回价默认是100试计算其价格。

解:>> Settle ='24-Jun-1993';
>> Maturity ='15-Jan-2024';
>> Period = 2;
>> Basis =0;
>> Price = zeroprice(Yield, Settle, Maturity, Period, Basis)
Price = 29.8120
可见债券提前34年左右赎回价格是多么的低。

(注:张树德编的课本上的计算结果有误)
第四节计算长期债券到期收益率
HomeWork:
课后第2-4题.
第二讲久期与凸度
久期和凸性是衡量债券利率风险的重要指标。

很多人把久期简单地视为债券的到期期限,其实是对久期的一种片面的理解,而对凸性的概念更是模糊。

在债券市场投资行为不断规范,利率风险逐渐显现的今天,如何用久期和凸性量化债券的利率风险成为业内日益关心的问题。

第一节久期
1. 久期的概念
B
t M t t t M t t
t t
t
t P P P P i C i C W ==++=∑∑==1
1)1()1( (公式2-3)
其中i 表示市场利率,t 表示付息期数,M 表示最大期数,Ct 表示第t 期的现金流, Ct/(1+i)t 表示对第t 期的现金流进行贴现.P B 表示债券的价格. P t 表示第t 期现金流的现值.
实际上C t /(1+i)t 表示对第t 期的现金流进行贴现是不准确的,我认为应该除以Y i ,即第i 期的到期收益率. 这样C t /(1+i)t 应表示为C t /(1+Y i )t . 所以有
:
(公式2-4) (本公式在《Matlab 金融工程与资产管理》P51的计算代码中表
现出来了。

)
由上述定义及公式知:
零息债券的久期就是债券的期限,它是天然具有免疫能力的。

例1:一种债券的的面值为100元,票息额为每年9元。

市场利率为8%。

债券的到期期限为6
年。

一年付一次息。

计算该债券
的久期。

解i=8%,Ct=9,M=6.用excel
计算如下:
∑ 104.623 514.4171572 D M = 514.42/104.62= 4.91687 ←(麦氏)久期
(2)修正久期(D *)
修正久期是用来衡量债券价格对利率变化的敏感程度的指标。

具体地说,有公式:
i
D D M +=
1)(*修正久期 (公式2-5) 这里i 指利率。

(3)美元久期(D**) D**=D* × P B (公式2-6)
其中:P B 指债券现行价格。

△P B =-D*P B △i
△P B ≈D M P B △i
这里:△P B 指债券的价格变动,△i 指预期利率的变动。

这个公式告诉我们,债券价格的变动与预期利率的变动方向是反向的,而修正久期正好相当于一个放大因子。

债券的久期越大,利率的变化对该债券价格的影响也越大,因此风险也越大。

在降息时,久期大的债券上升幅度较大;在升息时,久期大的债券下跌的幅度也较大。

因此,投资者在预期未来降息时,可选择久期大的债券;在预期未来升息时,可选择久期小的债券。

这是重要的风险管理方法。

在同等要素条件下,修正久期小的债
券较修正久期大的债券抗利率上升风险能力强,但抗利率下降风
险能力较弱。

例2:已知某种债券当前的市场价格为125美元,当前的市场年
利率为5%,债券的久期为4.6年,求:如果市场利率上升40个
基点,债券的市场价格将发生怎样的市场变化?
解:PB=125, i=5%, D M =4.6年, △i=+0.004
所以△P B ≈D M P B △i=-4.6 × 125 × 0.004 = -2.19美元。

即债券的价格将要下降2.19美元。

07级王鑫说:利率上升风险是债券价格下降的风险,这时,修正久期小的债券下降就小所以 修正久期小的债券较修正久期大的债券抗利率上升风险能力强,
下面介绍应用matlab来计算久期。

(4)现金流久期的计算
调用方式:[Duration, ModDuration] = cfdur (Cashflow, Yeild) Yeild:the periodic yield可以理解为贴现率。

先来看一个matlab的cfdur中举的例子:
例3:Nine payments of $2.50 and a final payment of $102.50 with a yield of 2.5% returns a duration of 8.97 periods and a modified duration of 8.75 periods.
验算一下:
>> cashflow= [2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,102.50]
>> [Durartion, ModDuration]=cfdur(cashflow,0.025)
Durartion = 8.9709 ModDuration = 8.7521 例4:一项投资各期现金流如下表,贴现率为0.025,问该项投资的久期是多少?
解:>> cashflow= [2000 2000 3000 4000 5000];
>> [Durartion, ModDuration]=cfdur(cashflow,0.025)
Durartion = 3.4533
(5)根据债券收益率和息票率计算久期
调用方式:[ModDuration, YearDuration, PerDuration] = bnddury(Yield, CouponRate, Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FisrtCouponDate, LastCouponDate, StartDate, Face)
其中从Period到Face都是可选项。

Face的默认票面值是100。

Period是指每年付息的次数。

注意Yield可以是向量。

.
输出参数中
ModDuration 指修正久期,每半年支付一次票息
YearDurationr 指根据年为单位计算的麦考利久期
PerDuration 指以半年为单位的麦考利久期,为YearDuration 的2
倍。

这样看来bnddury 指的是bond duration on yield
例5:三种债券到期收益率分别为5%,5.5%和6%,票息率都为
5.5%,结算日为1999年8月2日,到期日为2004年6月15日,每年付2次息,应计天数法则为ACT/ACT 。

求上修正久期,年
和半年麦考利久期。

解:>> Yield=[0.04, 0.05, 0.06];
>> CouponRate = 0.055; >> Settle = '02-Aug-1999'; >> Maturity='15-Jun-2004'; >> Period =2;
>> Basis=0;
>> [ModDuration, YearDuration, PerDuration] = bnddury(Yield, CouponRate, Settle, Maturity, Period, Basis)
ModDuration = 4.2444 4.2097 4.1751 YearDuration = 4.3292 4.3149 4.3004
PerDuration =
8.6585
8.6299
8.6007
特别注意,这里每组算
出来的是三个久期而不
是一个久期。

也就是说,
一个收益率和一个票息
率对应一个久期。

如果
到期收益率是变动的。

就不适用bnddury 命令
了。

这时就必须用公式
2-4计算。

(6)根据债券价格计算久期
调用方式:[ModDuration, YearDuration, PerDuration] = bnddurp (Price, CouponRate, Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FisrtCouponDate, LastCouponDate, StartDate, Face)
显然,bnddurp 指bond duration on price.
Price: 债券的净价,即不含利息的价格。

Price 可以是向量。

其它参数同bnddury.
例6:已知三种债券的价格分别为106元,100元,98元,票息
率为5.5%,结算日为1999年8月22日,到期日为2004年6月
15日,每年支付2次票息,应计天数法则为ACT/ACT ,请分别
计算上述三个久期。

>> Price =[106;100; 98];
>> CouponRate =0.055;
>> Settle='2-Aug-1999';
>> Maturity ='15-Jun-2004';
>> Period=2;
>> Basis =0;
>> [ModDuration, YearDuration, PerDuration] = bnddurp (Price, CouponRate, Settle, Maturity, Period, Basis)
ModDuration = 4.2400 4.1925 4.1759 第二节 凸度的Excel 及matlab 计算
凸度实际上是债券价格对市场利率的二阶导数关系。

可以这样理解: 凸度=久期变化的百分比/收益率变化的百分比
利用泰勒级数展开,可以得到
YearDuration = 4.3275 4.3077 4.3007 PerDuration =
8.6549
8.6154
8.6014
2221*di P
d
i di dP P B B
B +∆≈∆ (公式2-7)把上式同时除以价格P B ,
222
)(21*i P di P
d i di di dP P P B
B
B B B
∆+∆≈∆ (公式2-8)
B
B
B P di P d
C 2
2= (公式2-9)C B 表示凸度。

由于D di di
dP B
-=,所以有:2)(21
*i C i D P P B B
B
∆+∆-≈∆ (公式2-10)
B B B P i
C i
D P *])(21
*[2∆+∆-≈∆ (公式2-11)
∑+++=
=T i i
B B B B i
C t t i P di P d P C )1()1()1(1*12
22 (公式2-12)
参考资料:
(1)EXCEL算法
例7:一种债券的的面值为100元,票息额为每年9元。

债券的到期期限为6年。

计算市场利率为3%, 5%,8%和10%情况下及市场利率增加0.5%,请用excel计算该债券的久期和凸度以及债券市场价格的估计变化。

解:详细计算见《久期与凸度的计算.xls》
这里给出结果汇总表:
利率△i 债券价
格PB
修正
久期
债券价格的变



债券价格的变化
i P B D* △P B=-D*P B△i C B公式2-11
0.03 0.005 132.5 4.9 -3.24625 35 -3.1883 0.05 0.005 120.3 4.76 -2.86314 36 -2.809 0.08 0.005 104.62 4.55 -2.380105 37 -2.3317
凸度的特性:
① 非含权债券的凸性都是正数,这对于持有人而言,当利率上
升时,债券价格下跌幅度没有久期估计的那么大,而当市场利率
上升时,价格上升的幅度大于久期的估计水平。

(见上面的图)
②凸性会随着到期收益率的增加而降低。

因为到期收益率增加,折现因子减小,考虑到债券的现金流是固定的,所以凸度降低。

③ 当到期收益率与久期不变的情况下,票面利率越低债的凸性
越小。

(2)计算现金流凸度
调用方式:Convexity =cfconv(CashFlow, Yield)
例8:nine payments of $2.50 and a final payment of $102.50 with a yield of 2.5% returns a convexity of 90.45 periods.(Matlab
原例)
解:>> Cashflow=[2.50, 2.50, 2.50,2.50, 2.50, 2.50,2.50, 2.50, 2.50, 102.50]; >> Convex=cfconv(Cashflow, 0.025)
Convex = 90.4493
例9:一种债券的的面值为100元,票息额连续9年为每年2.4
元。

第10年还本付息。

求该现金流凸度。

解:>> Cashflow=[2.40, 2.40, 2.40,2.40, 2.40, 2.40,2.40, 2.40, 2.40, 102.40]; >> Convex=cfconv(Cashflow, 0.024)
Convex = 91.1452
(3)根据债券收益率计算凸度
调用方式:[YearConvexity, PerConvexity] = bndcony(Yield, CouponRate, Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FisrtCouponDate, LastCouponDate, StartDate, Face)
输入参数同bnddury.
其中:YearConvexity 指根据年为单位的凸度,PerConvexity 是以半年为单位的债券凸度,为YearConvexity 的4倍。

例10:三种债券到期收益率分别为5%,5.5%和6%,票息率都为5.5%,结算日为1999年8月2日,到期日为2004年6月15日,每年付2次息,应计天数法则为ACT/ACT 。

求凸度。

解:
>> Yield=[0.05, 0.05, 0.06];
>> CouponRate = 0.055; >> Settle = '02-Aug-1999'; >> Maturity='15-Jun-2004'; >> Period =2;
>> Basis=0;
>> [YearConvexity, PerConvexity] = bndconvy(Yield, CouponRate, Settle, Maturity, Period, Basis)
YearConvexity = 21.1839 21.1839 20.8885
(4)根据债券价格计算凸度
调用方式:[YearConvexity, PerConvexity] = bndconvp(Yield, CouponRate, Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FisrtCouponDate, LastCouponDate, StartDate, Face) 输入参数同bnddurp
例11:假设有三种债券,其价格分别为106元,100元、98元,票息率都为5%,结算日都为1999年8月2日,到期日为2004年6月15日。

半年付一次息,ACT/ACT 。

请计算三种债券的凸度。

PerConvexity =
84.7357
84.7357
83.5541
解:>> Price=[106; 100;, 98];
>> CouponRate = 0.05;
>> Settle = '02-Aug-1999';
>> Maturity='15-Jun-2004';
>> Period =2;
>> Basis=0;
>> [YearConvexity, PerConvexity] = bndconvp(Price, CouponRate, Settle, Maturity, Period, Basis)
YearConvexity =
21.8488
21.4469
21.3079 PerConvexity =
87.3954
85.7875
85.2314
第三节久期匹配管理
回顾:久期在债券投资中的作用。

利用久期可以控制债券或债券组合的利率风险。

债券的久期越大,利率的变化对该债券价格的影响也越大。

因此风险也越大。

在降息时,久期大的债券上升幅度也较大;在升息时,久期大的债券下跌的幅度也较大。

因此,预期未来升息时,可选择久期小的债券。

修正久期越大,债券价格对收益率的变动就越敏感,收益率上升所引起的债券价格下降幅度就越大,而收益率下降所引起的债券价格上升幅度也越大。

久期如果同时用在利率敏感性资产与利率敏感性负债方面,就涉及到久期匹配管理的问题。

这是利率风险管理的重要方法之一。

一、久期匹配管理的概念
1.基本概念:利率风险缺口(一译敞口,exposure)
利率风险敞口是指利率敏感性资产与利率敏感性负债两者之间的差额。

商业银行利率风险敞口的规避策略:因此,商业银行主要运用利率风险敞口指标作为规避表内利率风险的依据,努力使利率敏感性的资产与负债相匹配,以达到降低风险的目的。

由利率风险敞口衍生出来的利率风险规避策略有:
(1)主动的事先调整策略,即商业银行预期市场利率的变化趋势,事先对利率敏感性缺口进行调整。

譬如,预期利率上升,商业银行通过增加敏感性资产或减少敏感性负债,将利率敏感性缺口调整为正值。

(2)被动的保守操作策略,即商业银行将利率敏感性缺口保持在零水平,无论利率如何变动均不会对银行净利差收入产生影响。

商业银行采取主动型策略不仅可以有效控制利率风险,还有可能从利率变动中获得预期之外的收益。

相对而言,后种策略过于稳健保守,因此会令银行失去获取超额利润的市场机会。

3.久期匹配管理
久期匹配管理是对资金缺口管理的补充,它以久期缺口的调整来实现规避利率风险或实现利率投机。

久期缺口公式如下:
△D = [PV A × (-D A)] – [PV L × (-D L)] (公式2-13)
PV表示现值,A表示资产(Asset),L表示负债(Liability)
由于无论资产还是负债,久期越大对利率变化越敏感,所以久期制品管理的策略为:
①当久期缺口为正时,利率上升,资产比负债的现值下降快,导
致净现值下降,所以应减少久期缺口;
②当久期缺口为负时,利率上升时资产的现值比负债的现值下降慢,净资产现值上升,所以应扩大久期缺口;
③久期缺口为0时,净资产的现值不受利率变化的影响,这就是被动型策略(保守策略)。

二.久期匹配的计算
下面按保守策略,举二例说明久期如何匹配。

例12:单一债券的匹配。

假定一个投资者10年后必须偿还1931元,假设收益率曲线是10%。

首先计算负债的现值:
>> pvvar([0 0 0 0 0 0 0 0 0 0 1931],0.1)
ans =
744.4841 划线部分启发学生猜。

期末可出题。

相关文档
最新文档