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

吴氏金融工程第一讲 固定收益证券的Matlab计算

第一讲 固定收益证券的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)

零息票债券是指买卖价格相对布什有较大折让的企业或市政债券。出现大额折让是由于债券并无任何利息,它们在发行时就加入折扣,或由一家银行除去息票,然后包装成为零息票债券发行,投资者在债券到期时以面值赎回。

零息票债券往往由附息债券所”剥离”出来:购买息票国债的经纪人可以要求财政部停止债券的现金支付,使其成为独立证券序列,这时每一证券都具有获得原始债券收益的要求权.

1

吴氏金融工程第一讲 固定收益证券的Matlab计算

如一张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)

可转换债券(简称可转债)是一种具有固定收益的证券,其特点是持有者可以转换为普通股股票,在合约的条款中规定了可转换债

2

吴氏金融工程第一讲 固定收益证券的Matlab计算

券转换为普通股的条件,持有者决定何时转换为股票.

可转换债券介于普通股和普通债券之间,故又称股票类连接证券. 可转债属于次级债券,如果企业破产,满足要求权的次序是:优先债权?次级债?可转债?优先股?普通股.

可见,总体上看,可转债属于权益类证券,其特点是享有先于普通股获得股息偿付的优先权和较高的收益,并且有机会分离公司股份上涨的好处.

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

交易日就是买卖双方达成交易的日期。但实际情况可能比这更复杂。

此部分进PPT不进资料 3

吴氏金融工程第一讲 固定收益证券的Matlab计算

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

2.结算日(Settlement Date

指买入方支付价格和卖出方交割证券的日期。美国国债交割日为交易之后第一个营业日(T+1)。

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

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

3.到期日(Maturity

指固定收益证券债务合约终止的日期。

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

4.本金(Principal)

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

5.票面利率(Coupon rate)

即发行人支付给持有人的利息,有时也称名义利率(nominal rate).

票面利率一般指按照单利计算的年利息率,利息支付的频率不同,实际利率当然就不同。

6.月末法则(end of month ruler)

指当债券到期日在某有的最后一天,而且该月天数小于30天,

4

吴氏金融工程第一讲 固定收益证券的Matlab计算

这时有两种情况:

① 到期日在每月固定日期支付;②票息在每月的最后一天支付。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):其一般规则是包括交割日而不包括到期日。(这样买方有动力尽早交易,获得当天收益;卖方在交割当天就获得资金的使用权)

5

吴氏金融工程第一讲 固定收益证券的Matlab计算

第二节 应计天数简介

应计天数是指,债券起息日或上一付息日至结算日的天数,在此期间发生的利息称为应计利息,matlab中可用help daysdif代码查看。 >> help daysdif

The element type \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. Valid Basis are:

注意此处SIA标志在matlab的 0 = actual/actual (default) help中没有显 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:按照实际天数计算,分平闰年;

6

吴氏金融工程第一讲 固定收益证券的Matlab计算

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日之间的天数。

代码1:

>> StartDate='27-Mar-2007'; >> EndDate='31-Mar-2007'; >> Basis=0;

>> StartDate='27-Feb-2007';

>> NumDays=daysdif(StartDate,EndDate,Basis) NumDays = 32

12

代码2: >> StartDate='2/27/2007'; >> EndDate='3/31/2007'; >> Basis=0; >> NumDays=daysdif(StartDate,EndDate,Basis) NumDays = 32 代码3: >> daysdif('2/27/2007','3/31/2007',0) ans = 32 ISDA:International Swap Dealers Associations国际互换交易协会 PSA:Public Securities Association美国公众证券协会 3

SIA:Securities Industry Association美国证券业协会

7

吴氏金融工程第一讲 固定收益证券的Matlab计算

请解释下面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计算出下表中的应计天数

按理说行向量(分逗号隔开)也可以,但我运行之后没有显示 8

吴氏金融工程第一讲 固定收益证券的Matlab计算

Start-end date SIA 2007-2-27—4 2007-3-1 2007-2-28—1 2007-3-1 2008-2-28—3 2008-3-1 2008-2-28—363 2009-3-1

Act/360 2 PSA 4 ISDA 30E/360 4 4 1 3 1 3 2 3 3 3 367 363 363 363 参考答案:% 固定收益证券作业1参考代码

% SIA Act/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例即可. 如果你不会用程序控制语句,也可以一步步地求.

9

吴氏金融工程第一讲 固定收益证券的Matlab计算

第三节 应计利息、贴现与现金流

一.应计利息(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;

10

吴氏金融工程第一讲 固定收益证券的Matlab计算

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

二.贴现率计算

尚缺函数,或未找到相应函数.

三、计算内部收益率

内部收益率是使投资现金流现值等于价格的收益率,其计算公式为:

P?C1C3C1?r?C2(1?r)2?(1?r)3???n(1?r)n,其中: Ci为第i年度现金流,P为债券价格,N为年数,r为内部收益率。 Matlab计算函数: irr

调用方式: Return = irr(Cashflow)

例6:一项投资各期现金流如下表,请计算该投资的内部收益率是多少? 第0期 第1期 第2期 第3期 第4期 -5000 1000 2000 3000 4000 解:>> Cashflow=[-5000,1000,2000,3000,4000]; >> irr(Cashflow) ans = 0.2727

如果把这里的-5000改成-4000,那么ans=0.3825,这很容易理解。

四、现金流现值与终值

11

吴氏金融工程第一讲 固定收益证券的Matlab计算

1.现金流现值的计算 现金流现值的计算公式是:

PV?P0P1P2P3Pn????? n0123(1?r)(1?r)(1?r)(1?r)(1?r)matlab命令是:

PesentVal=pvvar(Cashflow, Rte)

PesentVal=pvvar(Cashflow,Rate,IrrCFDates)这里IrrCFDates是指现金流发生的日期,Rate是指的贴现率.

例7:一项投资各年的现金流如下表,贴现率为0.08,求其现值。 年份 当前 第1年 2 000 第2年 1 500 第3年 3 000 第4年 3 800 第5年 5 000 金额/元 -10 000 解:>> 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,投资各时期的现金流如下表,求其再值。

现金发放日期 金额/元 12-Jan-2007 14-Feb-2008 3-Mar-2008 14-Jun-2008 1-Dec-2008 -10 000 2500 200 3 000 4000 请学生思考 解:>> 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'];

12

吴氏金融工程第一讲 固定收益证券的Matlab计算

>> 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'] (错误的写法,写成了行向量)

如果贴现率是变化的,怎么办?如果贴现率是变化的,现金流现值的公式是怎样的?

P?C1C2C3Cn????? n1?r1(1?r2)2(1?r3)3(1?rn)资料上没有现成的函数,我自己编了个函数,经过反复测试,成功运行。注意matlab中函数文件名要和函数名保持一致。 可变贴现率下现金流现值的计算:

function [PreValFlow,PresetVal] = PV_variable(P,r) %可变贴现率下现金流现值的计算 % 计算可变再现率和对应的现金流的现值.

% P为各期现金流,r为贴现率向量,注意第0期的利率一定要设成0对应P第的一期应为负值,

13

吴氏金融工程第一讲 固定收益证券的Matlab计算

表示投资.

% 注意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.现金流终值

14

吴氏金融工程第一讲 固定收益证券的Matlab计算

现金流终值是债券到期时的价值。用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。

五.计算赎回价格

对于可赎回债券,当赎回时间小于等于一个计息周期时,公式较简单:

price?RV1?(DSRY

E?M)当息票赎回时间大于一个息票期间时,公式较繁杂:

price?RV(1?YNq?1?DSC, 其中:

EM)RV:赎回时的价格;DSC:结算日到下一个似息票日的天数 DSR:结算日到赎回日之间的天数 M:每年的息票期间 Nq:似息票期间个数 Y:息票率 调用方式:

Price = zeroprice(Yield, Settle, Maturity, Period, Basis, EndMonthRule) 输入参数: Yield: 票息率 Settle: 结算日

15

吴氏金融工程第一讲 固定收益证券的Matlab计算

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;

16

此例进PPT不进学生资料 吴氏金融工程第一讲 固定收益证券的Matlab计算

>> Price = zeroprice(Yield, Settle, Maturity, Period, Basis) Price = 29.8120

可见债券提前34年左右赎回价格是多么的低。(注:张树德编的课本上的计算结果有误)

17

吴氏金融工程第一讲 固定收益证券的Matlab计算

第四节 计算长期债券到期收益率

HomeWork: 课后第2-4题.

18

吴氏金融工程第二讲:久期与凸度

第二讲 久期与凸度

久期和凸性是衡量债券利率风险的重要指标。很多人把久期简单地视为债券的到期期限,其实是对久期的一种片面的理解,而对凸性的概念更是模糊。在债券市场投资行为不断规范,利率风险逐渐显现的今天,如何用久期和凸性量化债券的利率风险成为业内日益关心的问题。

第一节 久期

1. 久期的概念

久期(也称持续期)是1938年由费德里希·麦考利(Federich R.Macaula)和约翰·西克斯爵士(John Hicks)提出的,用来衡量债券的到期时间。它是以未来收益的现值为权数计算的到期时间。 久期是指收益率变化1%所引起的债券全价变化的百分比。即久期用来衡量债券价格对利率/收益率变化的敏感性。其实就是价格相对于收益率的一阶导数。 所以它实际上是个加权的到期数 这个概念有点像性。 概念虽然简单,但在实际应用中却非常的复杂。国内外资料上给出的公式往往不太一致,所以给许多初学者以迷惑感。本次我本对于久期和凸度的计算,重在用matlab计算,而不是推理其公式。有些地方可能还会用到excel的计算。 (1)麦考利久期的估算法: 将久期表述为债券现金流的时间加权值之和与现金流的总现值的比率。 D??时间加权现值总现值??tPt?11MMt (公式2-1) ?Pt?11tCtt?tt?1(1?i)DM??M?Ct?tt?1(1?i)M?t(1?i)t?1MCttPB??tWt (公式2-2) t?1M 19

吴氏金融工程第二讲:久期与凸度

CtPP(1?i)tWt?M?Mt?t (公式2-3)

CtPBP??ttt?1(1?i)t?1其中i表示市场利率,t表示付息期数,M表示最大期数,Ct表示第t期的现金流, Ct/(1+i)t表示对第t期的现金流进行贴现.PB表示债券的价格. Pt表示第t期现金流的现值.

实际上Ct/(1+i)t表示对第t期的现金流进行贴现是不准确的,我认为应该除以Yi,即第i期的到期收益率. 这样Ct/(1+i)t应表示为Ct/(1+Yi)t. 所以有:

Cttt?1(1?yi) (公式2-4) DM??MCt?tt?1(1?yi)?tM (本公式在《Matlab金融工程与资产管理》P51的计算代码中表此结论要滚瓜烂熟 现出来了。)

由上述定义及公式知:

零息债券的久期就是债券的期限,它是天然具有免疫能力的。

例1:一种债券的的面值为100元,票息额为每年9元。市场利率为8%。债券的到期期限为6年。一年付一次息。计算该债券的久期。

解i=8%,Ct=9,M=6.用excel计算如下:

时间 t 1 2 3 4 5 6 6 票息额 Ct 9 9 9 9 9 9 100 折现因子 1/(1+i) t斜体部分的数据可让学生自己上台操作。 折现值 Ct/(1+i) t时间的加权值 t*Ct/(1+i) ti 0.1 0.92593 0.85734 0.79383 0.73503 0.68058 0.63017 0.63017 8.33333 7.71605 7.14449 6.61527 6.12525 5.67153 63.017 8.333333333 15.43209877 21.43347051 26.4610747 30.62624387 34.02915985 378.1017761 20

吴氏金融工程第二讲:久期与凸度

∑ DM= 104.623 514.4171572 514.42/104.62= 4.91687 ←(麦氏)久期

(2)修正久期(D*)

修正久期是用来衡量债券价格对利率变化的敏感程度的指标。 具体地说,有公式:

D*(修正久期)?这里i指利率。 (3)美元久期(D**)

DM (公式2-5) 1?iD**=D* × PB (公式2-6)

其中:PB指债券现行价格。 △PB=-D*PB△i △PB≈DMPB△i

这里:△PB指债券的价格变动,△i指预期利率的变动。 这个公式告诉我们,债券价格的变动与预期利率的变动方向是反向

的,而修正久期正好相当于一个放大因子。

债券的久期越大,利率的变化对该债券价格的影响也越大,因此风险也越大。在降息时,久期大的债券上升幅度较大;在升息时,久期大的债券下跌的幅度也较大。因此,投资者在预期未来降息时,可选择久期大的债券;在预期未来升息时,可选择久期小的债券。这是重要的风险管理方法。在同等要素条件下,修正久期小的债券较修正久期大的债券抗利率上升风险能力强,但抗利率下降风险能力较弱。

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

21

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,问该项投资的久期是多少? 期限 第1期 第2期 第3期 第4期 第5期 金额/元 2000 2000 3000 4000 5000 解:>> 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可以是向量。. 输出参数中

22

吴氏金融工程第二讲:久期与凸度

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 = 到期收益率是变动的。就不适用bnddury命令 4.3292 了。这时就必须用公式 4.3149 2-4计算。

4.3004 PerDuration = 8.6585 8.6299 8.6007

23

吴氏金融工程第二讲:久期与凸度

(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 = YearDuration = PerDuration = 4.2400 4.3275 8.6549 4.1925 4.3077 8.6154 4.1759 4.3007

8.6014

第二节 凸度的Excel及matlab计算

凸度实际上是债券价格对市场利率的二阶导数关系。

可以这样理解: 凸度=久期变化的百分比/收益率变化的百分比 利用泰勒级数展开,可以得到

24

吴氏金融工程第二讲:久期与凸度

?PdPBdi?1d2PBB?*?i2di2 (公式2-7)把上式同时除以价格PB,

dP2BdP?PBBP?di*?i?1di2(?i)2 (公式2-8) Bdi2PBd2PBCB?di2P (公式2-9)CB表示凸度。 BdPB由于didi??D,所以有:?PBP??D*?i?12CB(?i)2 (公式2-10)

B?P1B?[?D*?i?2CB(?i)2]*PB (公式2-11)

C?1d2PB1?Tt(t?1)CiBP*2?BdiP2B(1?i)(1?i)i (公式2-12)

参考资料:

25

吴氏金融工程第二讲:久期与凸度

(1)EXCEL算法

例7:一种债券的的面值为100元,票息额为每年9元。债券的到期期限为6年。计算市场利率为3%, 5%,8%和10%情况下及市场利率增加0.5%,请用excel计算该债券的久期和凸度以及债券市场价格的估计变化。

解:详细计算见《久期与凸度的计算.xls》 这里给出结果汇总表:

利率 △i i 债券价格PB PB 132.5 修正债券价格的变久期 化 D* 4.9 △PB=-D*PB△i 凸债券价格的变化 度 CB 公式2-11 -3.1883 -2.809 -2.3317 0.03 0.005 0.05 0.005 -3.24625 35 -2.86314 36 -2.380105 37 120.3 4.76 0.08 0.005 104.62 4.55 26

吴氏金融工程第二讲:久期与凸度

0.1 0.005 95.64 4.42 -2.113644 38 -2.0682

凸度的特性:

① 非含权债券的凸性都是正数,这对于持有人而言,当利率上升时,债券价格下跌幅度没有久期估计的那么大,而当市场利率上升时,价格上升的幅度大于久期的估计水平。 (见上面的图) ②凸性会随着到期收益率的增加而降低。因为到期收益率增加,折现因子减小,考虑到债券的现金流是固定的,所以凸度降低。 ③ 当到期收益率与久期不变的情况下,票面利率越低债的凸性越小。

(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)

27

张氏教材上有误,不是0.025是0.024 吴氏金融工程第二讲:久期与凸度

输入参数同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 = PerConvexity = 21.1839 84.7357 21.1839 84.7357 20.8885 83.5541

(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。请计算三种债券的凸度。

28

吴氏金融工程第二讲:久期与凸度

解:>> 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 = PerConvexity = 21.8488 87.3954 21.4469 85.7875 21.3079 85.2314

29

吴氏金融工程第二讲:久期与凸度

第三节 久期匹配管理

回顾:久期在债券投资中的作用。

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

债券的久期越大,利率的变化对该债券价格的影响也越大。因此风险也越大。在降息时,久期大的债券上升幅度也较大;在升息时,久期大的债券下跌的幅度也较大。因此,预期未来升息时,可选择久期小的债券。

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

久期如果同时用在利率敏感性资产与利率敏感性负债方面,就涉及到久期匹配管理的问题。这是利率风险管理的重要方法之一。

一、久期匹配管理的概念

1.基本概念:利率风险缺口(一译敞口,exposure)

利率风险敞口是指利率敏感性资产与利率敏感性负债两者之间的差额。

市场利率的意外变动,引起利率风险敞口的变动,从而导致企业市场价值的盈亏。 (MBA智库百科) 2.商业银行利率风险敞口的规避策略 商业银行利率风险敞口的规避策略:因此,商业银行主要运用利率风险敞口指标作为规避表内利率风险的依据,努力使利率敏感性的资产与负债相匹配,以达到降低风险的目的。

由利率风险敞口衍生出来的利率风险规避策略有:

(1)主动的事先调整策略,即商业银行预期市场利率的变化趋势,事先对利率敏感性缺口进行调整。譬如,预期利率上升,商业银行通过增加敏感性资产或减少敏感性负债,将利率敏感性缺口调整为正值。

可讲可不讲。学生有兴趣就讲一点。 30

吴氏金融工程第二讲:久期与凸度

(2)被动的保守操作策略,即商业银行将利率敏感性缺口保持在零水平,无论利率如何变动均不会对银行净利差收入产生影响。商业银行采取主动型策略不仅可以有效控制利率风险,还有可能从利率变动中获得预期之外的收益。

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

3.久期匹配管理

久期匹配管理是对资金缺口管理的补充,它以久期缺口的调整来实现规避利率风险或实现利率投机。久期缺口公式如下: △D = [PVA × (-DA)] – [PVL × (-DL)] (公式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

31

吴氏金融工程第二讲:久期与凸度

由于该负债相当于一个零息债券,故久期为10。(也可用cfdur算出,注意现金流时要比上面少一个0)

考虑一个20年期面值为1000元的附息国债,每年支付利息70元,其现值如下:

>> pvvar([0 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 1070], 0.1) ans = 744.5931 其久期为:

>> cfdur([70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 1070], 0.1) ans = 10.0018

由于负债与资产的现值与久期都是基本相同的,所以这种组合是符合保守策略的久期匹配的。

例13:多债券的匹配。某金融机构资产包括305个单位的3年期零息债券,面值为11,522.06元,到期收益率如下表。负债为300个单位的20个期附息债券,该债券的面值为10,000元。票面利率为6.162%。该机构希望持有20年期的附息债券,其可以选择3年期零息债券的头寸,也可以购买或者发行20年期的零债券,该债券的面值为34,940.6元。利率期限结构如下表。 利率期限结构与折现因子 期限 到期收益率% 折现因子 期限 到期收益率% 折现因子 1/365 4.2387 0.9999 14 6.1340 0.4345 0.5 4.4181 0.9786 15 6.2067 0.5052 1 4.5056 9.9569 16 6.2718 0.3778 1.5 4.5914 0.9349 17 6.3292 0.3523 2 4.6753 0.9127 18 6.3790 0.3285 2.5 4.7574 0.8903 19 6.4212 0.3065 3 4.8377 0.8679 20 6.4557 0.2862 4 7.9927 0.8229 21 6.4826 0.2674 32

吴氏金融工程第二讲:久期与凸度

5 5.1404 0.7783 22 6.5017 0.2501 6 5.2807 0.7344 23 6.5133 0.2343 7 5.4136 0.6914 24 6.5171 0.2198 8 5.5391 0.6497 25 6.5133 0.2065 9 5.6570 0.6094 26 6.5017 0.1944 10 5.7675 0.5708 27 6.4826 0.1834 11 5.8705 0.5339 28 .1735 资产 30负债 30所有者权益 56.4557 12 5.9659 0.4989 29 6.4212 0.1645 13 6.0537 0.4658 30 6.3790 0.1564 下面计算305个单位3年期零息债券的现值: P3=11 522.06 × 0.8679(折现因子) =10 000; 300个单位20年期零息券的现值: P20=34940.6 × 0.2862=10 000; 20年期付息券的现值:

P20c=∑(t=1:20)616.2 × dt+10000 × 0.2862 =10 000 该金融机构的初始资产负债如下表: 资产 305份3年期零息券,305万元 负债 300分20年期付息券,300万元 所有者权益 5万元 下面计算各个债券的久期: 3年期国债久期d3=3;

20年期零息国债的久期为:d20=20;

20年期附息国债的久期运用公式2-4。下面是代码:

>> Yield=[0.0451, 0.0468, 0.0484,0.0499, 0.0514, 0.0528, 0.0541, 0.0554, 0.0566,0.0577, 0.0587, 0.0597, 0.0605, 0.0613, 0.0621, 0.0627, 0.0633, 0.0638, 0.0642, 0.0646]; % 即yi

33

吴氏金融工程第二讲:久期与凸度

>> Yield=Yield+1; % 即1+yi >> t(:)=1:20 >> am=616.2*ones(1,20)

>> am(20)=am(20)+10000; %am就是现金流 >> dis=1./Yield.^t

>> dur =sum(am.*dis.*t)/sum(am.*dis) dur = 11.7468 资产与负债的缺口为:

△D = [PVA × (-DA)] – [PVL × (-DL)] =-305 × 3+300 × 11.7468=2609.04

即资产与负债之间的缺口为2609.04。

为了实现所有者权益不变,而且资产与负债在久期上的匹配,建立下面的策略:

资产现值-负债现值=5000; 资产久期-负债久期=0。 即:

10 000N3+10 000N20-300 × 10 000 =5 000 3N3+20N20- 300 × 11.7468=0 即

10 N3+10N20=3005 3N3+20N20=3524.04

用矩阵相除法解出N3和N20: >> a=[10,10;3,20]; >> b=[3005;3524.04]; >> x=a\\b x = 146.2329 154.2671

所以N3=146.2,N20=154.3

张氏课本上是11.7487.是因为它的t向量不错的。 不应是t=ones(1,20),那样ti都是1。显然不对。 34

吴氏金融工程第二讲:久期与凸度

所以投资者应当拥有3年期零息券数量为146.2分,价值为146.2万元;应拥有20年期零息券的数量为154.3份,价值为153.5万元。调整后的资产负债表如下: 资产 146.2份3年期零息券,146.2万元 负债 154.3分20年期付息券,154.3万元 所有者权益 5万元

35