债券的风险度量
• 久期的介绍
• 凸度的介绍
• 程序实现方法
• 上机实验检查内容
债券的久期
• 久期的概念
• 久期的概念最早是马考勒(Macaulay)在1938年提出来的,
所以又称马考勒久期(简记为D)。马考勒久期是使用加
权平均数的形式计算债券的平均到期时间。它是债券在未
来产生现金流的时间的加权平均,其权重是各期现金值在
债券价格中所占的比重。
• 保罗·萨缪尔森、约翰·斯克斯和瑞丁敦在随后的若干年
独立地发现了久期这一理论范畴,特别是保罗·萨缪尔森
和瑞丁敦将久期用于衡量资产/负债的利率敏感性的研究,
使得久期具有了第二种含义,即:资产针对利率变化的价
格变化率。
免疫策略
• 久期是债券投资管理中的一个极其重要的
策略----“免疫策略”的理论基础,根据
该策略,当交易主体债券组合的久期与债
权的持有期相等的时候,该交易主体短期
内就实现了“免疫”的目标,即短期内的
总财富不受利率波动的影响。
麦考雷(Macaulay)久期的计算公式:
麦考雷久期(以期间计)=
麦考雷久期(年)=麦考雷久期(以期间计)/k
其中:
PV(C_t)为以t期对应的市场普遍收益率进行贴
现得到的债券在第t期的现金流现值;
n为债券持有期内现金流的期间总数;
TPV为债券各期现金流的总现值;
k为每年支付现金流的次数。
• 久期是反映债券价格波动的一个指标。它对到期
时间进行加权平均,权重等于各期现金流的现值
占总债券现金流现值的比例。久期实际表示的是
投资者收回初始投资的实际时间。
久期计算举例
• 假设面额为1000元的3年期变通债券,每年支付一次息票,
年息票率为10%,此时到期收益率分别为为12%,5%,20%
,则该种债券的久期为:
久期的一些特点
• 从上面的计算结果可以发现,久期随着市场利率
的下降而上升,随着市场利率的升而下降,这说
明两者存在反比关系。
• 在持有期间不支付利息的金融工具,其久期等于
到期期限或偿还期限。
• 分期付息的金融工具,其久期总是短于偿还期限,
是由于同等数量的现金流量,早兑付的比晚兑付
的现值要高。
• 金融工具到期期限越长其久期也越长;金融工具
产生的现金流量越高,其久期越短。
修正久期=
修正久期本质上是债券的对数关于到期收益率的
导数的绝对值,反映了债券关于到期收益率的变
化强度,其近似的表达关系是:
需要注意的是,另一种理解是债券作为风险项
目,其价格过程视为变化的,则此时,久期和
凸度的概念就类似于股票的模型。这是值得注
意的地方。
债券组合的久期计算公式:
债券组合的久期=
其中:
债券i市值总和在债券组合市值总和中所占的比重;
债券i的修正久期;
债券组合中债券的个数。
数学上的问题
• 久期可以视作债券定价函数的导数(除去定价初
值),而导数反映了一个函数的变化强度,因此,
从线性近似的程度来说,以价格-到期收益率曲线
而言,存在导数最小和最大的点,这样的点具有
什么样的特点,这种理解是否一定正确?
• 如何寻找这样的点?
• 回想到期收益率的初衷,如何平衡风险和项目的
可靠性之间的关系?如何确定最优的项目的到期
收益率?
• 上面的问题一和问题二是要检查的内容。
凸 度
• 凸性是指在某一到期收益率下,到期收益率发生变
动而引起的价格变动幅度的变动程度。凸性是对
债券价格曲线弯曲程度的一种度量。因为在利率
变化比较大的情况下久期就不能完全描述债券价
格对利率变动的敏感性。凸性越大,债券价格曲线
弯曲程度越大,用修正久期度量债券的利率风险所
产生的误差越大。
凸度的数学原理
债券价格—收益率曲线
凸度的性质
• 凸性随久期的增加而增加。若收益率、久期不变,
票面利率越大,凸性越大。利率下降时,凸性增
加。
• 对于没有隐含期权的债券来说,凸性总大于0,即
利率下降,债券价格将以加速度上升;当利率上
升时,债券价格以减速度下降。
• 含有隐含期权的债券的凸性一般为负,即价格随
着利率的下降以减速度上升,或债券的有效持续
期随利率的下降而缩短,随利率的上升而延长。
因为利率下降时买入期权的可能性增加了。
债券定价定理4:
若债券期限一定,同等收益率变化下,债券收益
率上升导致价格下跌的量,要小于收益率下降导致价
格上升的量。
例:三债券的面值都为1000元,到期期限5年,
息票率7%,当到期收益率变化时。
到期收益率(%) 6 7 8
价格 1000
债券价格变化率(%) 0
但是从久期和凸度的近似并不能看出这一点。
这是值得关注的地方。
债券凸性投资价值的评估
假设我们面对两个不同期次,具有相同存续期间的政
府公债(无信用风险),两者的市场到期收益率也正好相
同,投资人对这两张债券是否会有不同的偏好呢?基于债
券凸性的特质,如果两者有着不同的债券凸率,理性投资
人应该会偏好债券凸率较高的公债。因此,在市场供给需
求的调整下,我们可以预期两公债的到期收益率必将有所
调整,以反应投资人对高凸率公债的偏好。投资人对于高
凸率债券的到期收益率要求将会低于凸率较小的债券,也
就是说,在其他条件相同的情况下,高凸率债券的价格应
该比低凸率债券为高,以反应债券凸性的价值,由此衍生
的问题是凸度的价值问题。
一些诡异的结论
• 然而,市场中的债券价格果真有反应出债券凸性的价
值吗?Kahn and Lochoff(1990)使用1981年至1986年
的美国公债为样本,发现债券凸性在某些情况下会给
投资人带来超额投资报酬,也就是说即使投资人以较
高的价格购入具有高债券凸率的债券,其投资报酬仍
然要比投资于低凸率债券为佳,这显示出交易市场对
于债券凸性的定价并不正确,因此存在有超额获利空
间。
• Lacey and Nawalkha(1993)则提出了不同的结论。这
两位学者以1976到1987年的美国公债为样本作分析,
结果并未发现高债券凸性会带给投资人超额的报酬,
表示其已被市场正确的定价。
中国的情况
• 林聪钦(1995)以国内公债及公司债为样本,发现债券
凸性对于超额投资报酬有解释能力。
• 李耀宗(1995)针对国内公司债作分析,也发现债券凸
性是超额投资报酬的解释因子之一,显示出针对债券
凸性的操作策略是值得投资人重视的 。
• (1997)使用1992到1996年国内所发行之35期次的政府
公债来测试债券凸性以及其他因子解释债券超额报酬
的能力。发现债券凸性在解释国内公债超额报酬的能
力上并不显著,再度验证国内公债市场投资人对于债
券凸性并未做出合理定价,这表示市场投资人或可针
对债券凸性找出套利机会。
我们可以做的工作
• 从前面的几件比较乌龙的事件可以看出,对
于债券凸度的价值的定价并不同意,检验方
法也有很大的差别,因此在这个领域存在很
多有价值的课题。
• 这些课题及时本科生也可以做出很有意思的
成果。
• 已经有相关的工作可以做这件事情,但是很
多的开问题值得关注。
久期的计算例子
例 面值为100美元,票息率为10%的5年
期债券, 收益率为10%, 计算久期(以年计)
及修正久期。
data a;
c2=0;
tc2=0;
do n=1 to 10;
t=n;
if n<10 then c=5 ;
else if n=10 then c=105 ;
a=1/((1+)**n);
c1=c/((1+)**n);
tc1=t*c1;
c2=c2+c/((1+)**n);
tc2=tc2+t*c/((1+)**n);
if n=10 then
d=tc2/(c2*2);
md=d/(1+);
output;
end;
data b;
set a;
drop c2 tc2 n;
label
t='时间'
c='现金流'
a='1美元的现值'
c1='现金流的现值'
tc1='t*pvcf'
d='久期(以年计)'
md='修正久期';
proc print data=b label
noobs;
title '久期及修正久期';
var d md;
run;
输出结果:
久期(以年计) 修正久期
注:修正久期可直接用SAS函数计算:
Modifdur=DURP(100,,2,10,,);
函数DURP用法:DURP(A,c,n,K,k0,y),其中A表示面值,c表示
名义年票息率,n为年付息次数,K为生于付息次数,k0为现在
到下一次付息日的间隔,y为收益率。
本章开始时所提出的问题,能否集合这个函数来实现?
例 面值为100美元,票息率为10%,到期收益
率为10%的5年期债券,以平价出售,计算久期。
%macro d(i,y,p);
data a;
x=100*(&i/2)*((1-1/((1+&y/2)**10))/(&y/2));
h=x/&p;
d=((1+(&y/2))/(&y/2))*h+(((&y/2)-(&i/2))/(&y/2))*10*(1-
h);
put d=;
%mend d(i,y,p);
%d(,,100);
run;
输出结果:d=,这是否说明久期比发行
期限来的大 ?
修正久期的近似计算
• 近似久期=
• 其中:
• V-为收益率下降 证券的估计价格;
• V+为收益率上升 证券的估计价格;
• V0为证券初始价格;
• 为证券收益率的变化。
例 票息率为7%,到期收益率为10%的20年期债
券,以美元的价格出售,收益率上升或下降20
个基本点的价格变化如下所示,试计算近似修正久
期。
V-=
V+=
V0=
=(半年变化10个基本点)
收益率上升或下降20个基本点的债券初始价格计算
程序:
data a;
delete;
%macro a(n,y,cupon,par);
data a1;
p1=0;
%do i=1 %to &n;
p1=p1+&cupon*&par/(1+&y)
**&i;
output;
%end;
data a1;
set a1 end=lasobs;
if lasobs;
p2=&par/(1+&y)**&n;
p=p1+p2;
y=200*&y;
y1=100*&y;
data a;
set a a1;
put p=;
%mend a;
%a(40,,,100);
%a(40,,,100);
%a(40,,,100);
run;
p=
p=
p=
近似久期计算程序
%macro md(Vu,Vd,V,y);
data a;
md=(&vu-&vd)/(2*&v*&y);
put md=;
%mend md;
%md(,,,);
run;
输出结果:
MD=
结果接近精确值md=
精确值计算程序:
%macro d(y,cupon,period,p0);
data a;
c2=0;
tc2=0;
do n=1 to .
t=n;
if n<&period then c=&cupon;
else if n=&period then
c=&cupon+&p0;
a=1/((1+&y)**n);
c1=c/((1+&y)**n);
tc1=t*c1;
c2=c2+c/((1+&y)**n);
tc2=tc2+t*c/((1+&y)**n);
if n=&period then
d=tc2/(c2*2);
md=D/(1+&y);
put d= md= ;
output;
drop n tc2 c2;
end;
%mend d;
%d(,,40,100) ;
run;
输出结果为:
md=
债券凸度计算举例
例 假设面值为100美元,5年期的票息率为8%的
债券, 每半年付息。假设该债券的初始收益率为10%
,计算该债券的凸度。
if n=&period then
concave=tc2/(c2*((1+&y)**2));
yearlyconcave=concave/4;
put concave= ;
put yearlyconcave=;
output;
drop n tc2 c2;
end;
proc print data=a;
%mend d;
%d(,4,10,100) ;
run; 计算结果:
凸度(以半年记)
concave=
凸度(以年计)
yearlyconcave=
%macro
(y,cupon,period,p0);
data a;
c2=0;
tc2=0;
do n=1 to .
t=n;
if n<&period then c=&cupon;
else if n=&period then
c=&cupon+&p0;
a=1/((1+&y)**n);
c1=c/((1+&y)**n);
tc1=t*(t+1)*c1;
c2=c2+c/((1+&y)**n);
tc2=tc2+t*(t+1)*c/((1+&y)**n)
;
注:也可以用SAS函数直接计算:
convx=convxp(100,,2,10,,);
同久期一样,能否结合这个函数,实现求凸度最大
的点?
例 假设面值为100美元,5年期的零息票债券,年收
益率为10%,计算凸度。
%macro concave(n,y);
data a;
concave=&n*(&n+1)/((1+&y)**2);
put concave=;
%mend concave;
%concave(10,);
run;
计算结果:
凸度concave=
计算凸度引起的价格变化
• 凸度引起价格变化百分比的估计值
=
例 面值为100美元,期限为15年的票息率为8%
的债券,每半年付息,其初始收益率为10%。若收益
率由10%增长到13%,计算凸度引起的价格变化。
首先计算年凸度:只需要将上面凸度计算程序中的宏
参数值改为%d(,4,30,100) 即可求得年凸度为。
%macro vp(x,y);
data a;
caused=*&x*(&y**2)*100;
put caused =’%’;
%mend vp;
%vp(,);
run;
计算结果:凸度引起的价格变化为caused= %
美元凸度
• 美元凸度=凸度×初始价格.
• 为确定美元引起的价格变化幅度,可以利
用以下公式:
• 凸度解释的价格变化幅度=
例 期限为15年的票息率为8%的债券,收益率为10%,
计算每100美元面值债券的美元凸度。
首先计算凸度和初始价格:
凸度= 初始价格=
凸度前面已经计算过,初始价格的计算程序为:
data a;
delete;
%macro a(n,y,cupon,par);
data a1;
p1=0;
%do i=1 %to &n;
p1=p1+&cupon*&par/(1+&y)*
*&i;
output;
%end;
data a1;
set a1 end=lasobs;
if lasobs;
p2=&par/(1+&y)**&n;
p=p1+p2;
y=200*&y;
y1=100*&y;
data a;
set a a1;
%mend a;
%a(30,,,100);
put p=;
run;
计算的初始价格为p=
计算美元凸度程序:
%macro anlaye(x,y ,p );
data a;
concave=&x*&p;
vp=*concave*(&y**2);
put concave=;
put vp=;
%mend anlaye;
%anlaye(, , );
%anlaye(, , );
run;
计算结果:
美元凸度concave==
100基点的价格变化vp=
200基点的价格变化vp=
近似凸度
• 近似凸度=
• 其中:
• V-为收益率下降 证券的估计价格;
• V+为收益率上升 证券的估计价格;
• V0为证券初始价格;
• 为证券收益率的变化。
例 面值为100美元,期限为20年,票息率为7%的债券,到
期收益率为10%,假设发生20个基点的变化,计算凸度。
已知条件:V-= V+= V0= =
%macro concave(Vu,Vd,V,y);
data a;
yearlyconcoave=(&vu+&vd-2*&v)/(&v*(&y**2));
put yearlyconcoave=;
%mend concave;
%concave(,,,);
run;
计算结果:
concoave=
精确计算凸度(以年计)yearlyconcave =
能否结合程序实现
求V+,V-等,能否
结合这个程序实现
最大的凸度求解?
到期收益率函数的
源程序的
A(n,d,p,Par)值得学
习和借鉴
精确计算凸度的程序:
%macro d(y,cupon,period,p0);
data a;
c2=0;
tc2=0;
do n=1 to .
t=n;
if n<&period then c=&cupon;
else if n=&period then
c=&cupon+&p0;
a=1/((1+&y)**n);
c1=c/((1+&y)**n);
tc1=t*(t+1)*c1;
c2=c2+c/((1+&y)**n);
tc2=tc2+t*(t+1)*c/((1+&y)**n);
if n=&period then
concave=tc2/(c2*((1+&y)**2));
yearlyconcave=concave/4;
put concave= ;
put yearlyconcave=;
output;
drop n tc2 c2;
end;
proc print data=a;
%mend d;
%d(,,40,100) ;
run;
结果:精确计算凸度(以年计)
yearlyconcave =