《固定收益证券计算课件》由会员分享,可在线阅读,更多相关《固定收益证券计算课件(103页珍藏版)》请在金锄头文库上搜索。
1、第第3章章 固定收益证券计算固定收益证券计算Resdat样本数据:样本数据:SAS论坛:论坛: 3.1 收益计算收益计算3.2 其它计算其它计算3.3 绩效衡量绩效衡量3.4 二叉树定价模型二叉树定价模型3.5习题习题收益计算收益计算内生收益率内生收益率固定收益证券收益率是一种利率,它能使现金流的现值等于初始投资的价格。内生收益率(内生收益率(Internal Rate of ReturnInternal Rate of Return)计算公式如下:)计算公式如下:其中:其中:P P为价格为价格($)($); 为第为第i i期现金流期现金流($)($); y y为内生收益率;为内生收益率; n
2、 n为期数。为期数。已知已知P P,可以用试错法求内生收益率。试错法计,可以用试错法求内生收益率。试错法计算内生收益率步骤:算内生收益率步骤:1 1给出一个收益率;给出一个收益率;2 2用步骤用步骤1 1给出的收益率计算每笔现金流的现值;给出的收益率计算每笔现金流的现值;3 3加总步骤加总步骤2 2得出的现金流现值;得出的现金流现值;4 4将步骤将步骤3 3得出的现金流总现值与金融工具的价格作得出的现金流总现值与金融工具的价格作比较。比较。当步骤当步骤3 3得出的现金流总现值比金融工具的价格大时,得出的现金流总现值比金融工具的价格大时,选择一个比步骤选择一个比步骤1 1大的收益率重复以上步骤。
3、反之,选大的收益率重复以上步骤。反之,选择一个更小的收益率进行重复。择一个更小的收益率进行重复。例例3.1 3.1 假定一种金融工具有如表假定一种金融工具有如表3.13.1的年金支付,金融的年金支付,金融工具的价格为工具的价格为77047704美元,试求它的内生收益率美元,试求它的内生收益率。表3.1 年金支付情况从现在算起的年数预计年金支付12342 0002 0002 5004 000%macro a(r);data;p=2000/(1+&r)+2000/(1+&r)*2+2500/(1+&r)*3+4000/(1+&r)*4;r=100*&r;put r= p=;%mend a;%a(0
4、.1);%a(0.14);%a(0.12);run;本例计算程序:本例计算程序:计算结果:r=10 p=8081.4152039r=14 p=7349.0709218r=12 p=7701.624974将计算结果与7704相比较,得出12%为该金融工具的内生收益率注:上例也可以直接用SAS函数 yield=irr(1,-7704,2000,2000,2500,4000); 函数irr的用法:IRR(freq,c0,cl,.,cn),freq表示每年产生现金流次数,c0-cn为现金流。或用Excel函数IRR(A1:A5),这里A1:A5记录现金流。计算结果一致。到期收益率到期收益率到期收益率(
5、Yield to Maturity)是与债券联系在一起的术语,指投资者持有债券至到期日时所获得的内生收益率。即到期收益率也是一种内生收益率。到期收益率的计算公式如下:到期收益率的计算公式如下:其中:其中:P P为价格为价格($)($);C C为半年期的票息为半年期的票息($)($);y y为到期收益率的一半;为到期收益率的一半;n n为期数为期数( )( );ParPar为面值为面值( (到期价值到期价值) )。已知已知P P,可以用试错法求到期收益率。,可以用试错法求到期收益率。因此,试错法计算到期收益率步骤:因此,试错法计算到期收益率步骤:1 1给出一个收益率;给出一个收益率;2 2用步骤
6、用步骤1 1给出的收益率计算每笔现金流的现值;给出的收益率计算每笔现金流的现值;3 3加总步骤加总步骤2 2得出的现金流现值;得出的现金流现值;4 4将步骤将步骤3 3得出的现金流总现值与金融工具的价格作得出的现金流总现值与金融工具的价格作比较。比较。当步骤当步骤3 3得出的现金流总现值比金融工具的价格大时,得出的现金流总现值比金融工具的价格大时,选择一个比步骤选择一个比步骤1 1大的收益率重复以上步骤。反之,选大的收益率重复以上步骤。反之,选择一个更小的收益率进行重复。择一个更小的收益率进行重复。试错法计算到期收益率通用程序:试错法计算到期收益率通用程序:data a;delete;Run;
7、%macro a(r, n, d, par);data a1;p1=0;%do i=1 %to &n ;p1=p1+&d/(1+&r)* &i;output;%end;data a1;set a1 end=lasobs;if lasobs;p2=&par/(1+&r)*&n;p=p1+p2;r=200*&r;r1=100*&r;n=&n;data a;set a a1;%mend a;/* %a(r, n, d, par)内的具内的具体参数值体参数值 */proc print data=a ;run;例例3.2 3.2 假定发行者每假定发行者每6 6个月支付个月支付1 000 0001 000
8、 000美元给证券持有美元给证券持有者并连续支付者并连续支付3030次,到期后的支付额为次,到期后的支付额为20 000 00020 000 000美元。美元。发行时,发行者筹得资金为发行时,发行者筹得资金为19 696 02419 696 024美元。计算得知,美元。计算得知,资金总成本率为资金总成本率为5.10%(5.10%(半年期半年期) )。利用通用程序,a(r, n, d, par)取值如下:%a(0.05, 30, 1000000, 20000000);%a(0.0505, 30, 1000000, 20000000);%a(0.051, 30, 1000000, 20000000
9、);计算结果:计算结果:Obs p1 p2 p r r1 n1 15372451.03 4627548.97 20000000.00 10.0 5.00 302 15285221.19 4561926.60 19847147.79 10.1 5.05 303 15198759.44 4497265.37 19696024.81 10.2 5.10 30将计算结果与该金融工具的价格美元比较,5.10%为其到期收益率(半年期)。 注:上例也可以直接用SAS函数yield=yieldp(,/,2,30,0.5,);函数yieldp用法:YIELDP(A,c,n,K,k0,p),其中A表示面值,c为小
10、数形式表示的名义年票息率,n为年付息次数,K为从现在起至到期日生于付息次数,k0为现在到下一个付息日的时间,p为价格。或用Excel函数yield=RATE(30,1000000,-19696024,20000000,0)。RATE用法:RATE(Nper,Pmt,Pv,Fv,Type),其中Nper表示付息次数,Pmt表示票息金额,Pv表示价格(初期现金流出,故为负值),Fv表示期末现金流,Type表示付款时间在期初还是期末,0或忽略表期末。计算结果一致。有效年利率计算有效年利率计算银行存款中有名义年利率和有效年利率,这两种利率中较银行存款中有名义年利率和有效年利率,这两种利率中较高的一个是
11、有效年利率。高的一个是有效年利率。有效年利率与周期性利率之间的换算关系:其中:m为每年支付的频率。例例3.5 3.5 半年期周期性利率为半年期周期性利率为4%4%时有效年收益率为时有效年收益率为1.042-1=8.16%1.042-1=8.16%。如果利息按季支付,那么周期性利。如果利息按季支付,那么周期性利率为率为2%2%时有效年利率为时有效年利率为8.24%8.24%。计算程序:%macro a(r,m);data;i=(1+&r)*&m-1;r=100*&r;put r= i=;%mend a;%a(0.02,4);run;计算结果:r=2 , i=0.08243216注:上例也可以直接
12、用SAS函数 r=compound(1,1.02,.,0.25);函数compound的用法:COMPOUND(a,f,r,n),其中a表示期初值,f表示期末值,r为有效年利率,n为年付息次数。也可以用excel函数r=EFFECT(0.08,4)。EFFECT(nominal_rate, npery)。三种收益率之间的关系三种收益率之间的关系债券当前收益率定义如下:表3.2 三种收益率之间的关系债券券发行方式行方式三种收益率之三种收益率之间的关系的关系平价票息率=当前收益率=到期收益率折价票息率当前收益率当前收益率到期收益率例例3.6 3.6 计算一种票息率为计算一种票息率为6%, 6%,
13、价格为价格为700.89700.89美元的美元的1818年期债年期债券的当前收益率和到期收益率。假定这种债券券的当前收益率和到期收益率。假定这种债券5 5年内第一次被年内第一次被赎回的价格为赎回的价格为10301030美元美元, , 该债券的票息为每该债券的票息为每6 6个月支付个月支付3030美元,美元,连续支付连续支付1010次。求该债券第一个赎回日的收益率。次。求该债券第一个赎回日的收益率。利用通用程序,a(r, n, d, par)取值如下: %a(0.056, 10, 30, 1030);%a(0.0585, 10, 30, 1030);%a(0.061, 10, 30, 1030)
14、;%a(0.0635, 10, 30, 1030);%a(0.066, 10, 30, 1030);%a(0.0685, 10, 30, 1030);%a(0.071, 10, 30, 1030);%a(0.0735, 10, 30, 1030);%a(0.076, 10, 30, 1030);第一个赎回日收益率计算第一个赎回日收益率计算计算结果计算结果:Obs p1 p2 p r r1 n1 225.048 597.308 822.356 11.2 5.60 102 222.380 583.349 805.729 11.7 5.85 103 219.760 569.749 789.509 1
15、2.2 6.10 104 217.187 556.496 773.683 12.7 6.35 105 214.659 543.582 758.241 13.2 6.60 106 212.176 530.997 743.173 13.7 6.85 107 209.737 518.731 728.468 14.2 7.10 108 207.340 506.777 714.117 14.7 7.35 109 204.985 495.125 700.110 15.2 7.60 10比较得出,债券第一个赎回日的收益率为15.2%。清算日处于两个付息日之间的到期收益率计清算日处于两个付息日之间的到期收益率
16、计算算清算日处于两个付息日之间的到期收益率计算公式:其中:P为全价;C为半年的票息支付;y为到期收益率的一半;w= ;n为票息支付的次数;Par为到期价值。例例3.7 3.7 假设有一种票息率为假设有一种票息率为10%10%的公司债券在的公司债券在20032003年年3 3月月1 1日到期。日到期。该债券的全价为该债券的全价为118.788118.788美元,清算日在美元,清算日在19971997年年7 7月月1717日。计算日。计算该债券的到期收益率。该债券的到期收益率。表表3.33.3为该债券的日期与对应现金流,计算程序的第一段有相关为该债券的日期与对应现金流,计算程序的第一段有相关数据的
17、输出。数据的输出。 表3.3 日期与对应的现金流日期日期现金流金流(美元美元)从0.24444到10.244411.24445.00105.00 计算程序:计算程序:data ;date0=01mar1997d;date1=17jul1997d;date2=01sep1997d;days02=datdif(date0, date2, 30/360); /*美国公司债适合30/360标准 */days12=datdif(date1, date2, 30/360); n=2*(2003-1997);w=days12/days02;put days02/days12/n/w;call symput(
18、n, n); /*创建一个值来自data步的宏变量n*/call symput(w, w); /*创建一个值来自data步的宏变量w*/data a;delete;%macro a(r);data a1;p1=0;do i=1 to &n ;p1=p1+5/(1+&r)*(i-1+&w);output;end;data a1;set a1 end=lasobs;if lasobs;p2=100/(1+&r)*(&n-1+&w);p=p1+p2;r=200*&r;r1=100*&r;data a(drop=i);set a a1;w=&w;n=&n;%mend a;%a(0.0363);%a(0
19、.03735);proc print data=a;run; 计算结果:计算结果:Obs p1 p2 p r r1 w n1 49.2584 66.9691 116.227 7.26 3.630 0.24444 112 48.9940 66.2108 115.205 7.47 3.735 0.24444 11于是,当该公司债券半年期利率为3.63%时,能使其现金流的现值等于其全价118.78美元。所以这种债券的到期收益率为7.26%,即23.63%。注:上例也可以直接用SAS函数YIELD=YIELDP(100,0.1,2,12,0.12222,118.788);或EXCEL函数YIELD(D
20、ATE(1997,7,17),DATE(2003,3,1),0.1,115.010,100,2),函数yield用法:YIELD(settlement,maturity,rate,pr,redemption,frequency,basis),其中Settlement为成交日,Maturity为到期日,Rate为年票息率,Pr价格,Redemption为净价,Frequency为年付息次数,Basis为日计数基准类型(0或省略为30/360,1为实际天数/实际天数,2为实际天数/360,3为实际天数/365,4为欧洲30/360)。投资组合到期收益率计算投资组合到期收益率计算投资组合到期收益率的
21、计算步骤:1确定投资组合中所有证券的现金流;2找出一个利率;3用第二步利率得到的现金流现值和与投资组合的市场价值进行比较;4根据第三步的比较结果决定是否重复上述计算。例例3.9 3.9 现有三种债券,假定每种债券的票息支付日相现有三种债券,假定每种债券的票息支付日相同。投资组合的市场价值为美元。投资组合中每种债同。投资组合的市场价值为美元。投资组合中每种债券的现金流及整个投资组合的现金流由表券的现金流及整个投资组合的现金流由表3.53.5列出。列出。表3.5 三种债券投资组合的现金流时期期债券券A债券券B债券券C投投资组合合1350 0001 050 000900 0002 300 00023
22、50 0001 050 000900 0002 300 0003350 0001 050 000900 0002 300 0004350 0001 050 000900 0002 300 0005350 0001 050 000900 0002 300 0006350 0001 050 00030 900 00032 300 0007350 0001 050 0001 400 0008350 0001 050 0001 400 0009350 0001 050 0001 400 0001010350 0001 050 00011 400 000111 050 0001 050 000121 0
23、50 0001 050 000131 050 0001 050 0001421 050 00021 050 000%macro a(y);data a;ap1=0;do n=1 to 9 ;ap1=ap1+350000/(1+&y)*n;output;end;data a;set a end=lasobs;if lasobs;ap2=10350000/(1+&y)*10;ap=ap1+ap2;data b;bp1=0;do n=1 to 13 ;bp1=bp1+1050000/(1+&y)*n;output;end;data b;set b end=lasobs;if lasobs;bp2=2
24、1050000/(1+&y)*14;bp=bp1+bp2;data c;cp1=0;do n=1 to 5 ;cp1=cp1+900000/(1+&y)*n;output;end;data c;set c end=lasobs;if lasobs;cp2=30900000/(1+&y)*6;cp=cp1+cp2;%mend a;%a(0.0476966);data abc;merge a b c;p=ap+bp+cp;put p=;run;输出结果:p=57259006.946比较得知,该投资组合的到期收益率为9.53932%(即24.76966%)。注:本例程序与本章开始的计算到期收益率通用
25、程序的功能相同,但算法设计不同 其它计算其它计算浮动利率证券的贴现差额计算公式:浮动利率证券的贴现差额计算公式:浮动利率=参考利率+指数利差贴现差额计算步骤:贴现差额计算步骤:1 1在假定参考利率在证券到期前保持不变的条件下在假定参考利率在证券到期前保持不变的条件下, , 计算现金流;计算现金流;2 2选出一个差额选出一个差额; ;3 3将现金流贴现将现金流贴现; ;4 4将步骤将步骤3 3计算出来的现金流现值与证券的价格作计算出来的现金流现值与证券的价格作比较比较, , 如果现金流的现值等于证券的价格如果现金流的现值等于证券的价格, , 则贴现则贴现差额等于步骤差额等于步骤2 2中假定的差额
26、。中假定的差额。 例例3.10 3.10 假定有一假定有一6 6年期的浮动利率证券。该证券的价年期的浮动利率证券。该证券的价格为格为99.309899.3098美元美元, , 按参考利率加上按参考利率加上8080个基本点个基本点( (指数指数利差利差) )向外支付,参考利率的当前值是向外支付,参考利率的当前值是10%10%。这种证券。这种证券的票息率每的票息率每6 6个月调整一次,票息率为个月调整一次,票息率为5.4%5.4%,到期价值,到期价值为为100100美元。美元。 表3.6 不同贴现差额的计算结果现金流的金流的现值(美元美元)假定的年差价假定的年差价(基本点基本点)时期参考利率现金流
27、808488961001105.45.12335.12245.12145.11955.11852105.44.86094.85904.85724.85354.85163105.44.61184.60924.60664.60134.59874105.44.37554.37224.36894.36234.35905105.44.15144.14744.14354.13564.13176105.43.93873.93423.92973.92083.91637105.43.73693.73193.72703.71713.71228105.43.54543.54013.53473.52403.51869
28、105.43.36383.35803.35233.34093.335210105.43.19143.18543.17943.16733.161311105.43.02793.02163.01533.00282.99651210105.456.072955.945455.818255.564755.4385总现值=100.00099.826999.654199.309899.1381data a ;delete;%macro a(y,z,x);data a1;do n=1 to 12 ;if n12 then p&x=5.4/(1+&y+&z)*n;else p&x=105.4/(1+&y+&z
29、)*n;output;end;data a1;set a1;sump&x+p&x;data a;merge a a1;%mend a;%a(0.05, 0.004,80);%a(0.05, 0.0042,84);%a(0.05, 0.0044,88);%a(0.05, 0.0048,96);%a(0.05, 0.005,100);proc print data=a noobs;run;计算程序:计算程序:由计算结果得出,贴现差额应为96个基本点。债券价格与必要收益率债券价格与必要收益率例例3.11 3.11 表表3.73.7给出了票面价值为给出了票面价值为10001000美元、必要收益率从美元
30、、必要收益率从5%14%5%14%的的2020年年期、票息率为期、票息率为9%9%的债券价格。的债券价格。表3.7 必要收益率与债券价格关系债券价格券价格(美元美元)必要收益率必要收益率(%)1502.06 51346.72 61213.55 71098.96 81000.00 9 914.2010 839.5411 774.3112 717.0913 666.7114data a;delete;%macro a(y);data a1;p1=45*(1-(1/(1+&y)*40)/&y;p2=1000*(1/(1+&y)*40);p=p1+p2;y=200*&y;data a;set a a1
31、;%mend a;%a(0.025);%a(0.03);%a(0.035);%a(0.04);%a(0.045);%a(0.05);%a(0.055);%a(0.06);%a(0.065);%a(0.07);proc print data=a;run;结果:结果: Obs p1 p2 p y 1 1129.62 372.431 1502.06 5 2 1040.16 306.557 1346.72 6 3 960.98 252.572 1213.55 7 4 890.67 208.289 1098.96 8 5 828.07 171.929 1000.00 9 6 772.16 142.046
32、 914.20 10 7 722.08 117.463 839.54 11 8 677.08 97.222 774.31 12 9 636.55 80.541 717.09 13 10 599.93 66.780 666.71 14不含期权债券价格与收益率关系图:不含期权债券价格与收益率关系图:proc gplot data=a ;plot p*y=1;symbol1 v=none i=join r=1 c=black; title2 不含期权债券价格与收益率关系图;labelp=价格y=必要收益率;run;不含期权债券价格与收益率关系图价格60070080090010001100120013
33、00140015001600必要收益率567891011121314债券价格时间轨迹债券价格时间轨迹例例3.12 列出面值为1000美元,期限为20年,票息率为9%,必要收益率为12%的债券逼近到期日时的债券价格情况。title2;data a;do n=40 to 0 by -2 ;p1=45*(1-(1/(1+0.06)*n)/0.06;p2=1000*(1/(1+0.06)*n);p=p1+p2;year=n/2;output;end;proc print data=a noobs;var year p1 p2 p;run;生成图表程序:生成图表程序:打印列表结果:打印列表结果:Year
34、 P1 P2 P20 677.083 97.22 774.3119 668.071 109.24 777.31 1 82.503 890.00 972.500 0.000 1000.00 1000.00假定必要收益率不变的情况下假定必要收益率不变的情况下, , 贴水债券时间轨迹图程序:贴水债券时间轨迹图程序:data a;set a;p0=1000;proc gplot data=a ;plot p*year=1 p0*year=2/overlay;symbol1 v=none i=join r=1 c=black; symbol2 v=none i=join r=1 c=black;titl
35、e2 假定必要收益率不变的情况下,贴水债券时间轨迹;labelp=价格year=剩余到期年数;run;例例3.14 3.14 假设有一种票息率为假设有一种票息率为10%10%的公司债券,的公司债券,20032003年年3 3月到期,到月到期,到期价值为期价值为100100美元,清算日在美元,清算日在19971997年年7 7月月1717日,若必要收益率为日,若必要收益率为6.5%6.5%,求债券价格,求债券价格( (适用适用30/360)30/360)。 data a;delete;%macro a(y);data a1;date1=17jul1997d;date2=01sep1997d;da
36、ys1=datdif(date1, date2, 30/360);w=days1/180;call symput(x, w); /*创建一个值来自data步的宏变量x*/p1=0;do n=1 to 12 ;p1=p1+5/(1+&y)*(n-1+w);output;end;data a1;set a1 end=lasobs;if lasobs;p2=105/(1+&y)*(12-1+&x);p=p1+p2;y=200*&y;y1=100*&y;data a;set a a1;%mend a;%a(0.0325);proc print data=a;run;计算结果:p=123.51 注:可以
37、用SAS函数直接计算:pv=pvp(100,0.1,2,12,0.1222,0.065)。函数PVP用法:PVP(A,c,n,K,k0,y),其中A表示面值,c表示名义年票息率,n为年付息次数,K为生于付息次数,k0为现在到下一次付息日的间隔,y为必要收益率。也可以用EXCEL函数PRICE(DATE(1997,7,17),DATE(2003,3,1),0.1,0.065,100,2)。PRICE(settlement,maturity,rate,yld,redemption,frequency,basis),注意,这里计算的是净价,需要进行调整得到全价。首次发行贴水债券的债务处理首次发行贴水
38、债券的债务处理若首次发行的债券是贴水债券,则随着若首次发行的债券是贴水债券,则随着时间接近到期日,债券价格就接近票面时间接近到期日,债券价格就接近票面价格,即价格有一个上升的趋势。在税价格,即价格有一个上升的趋势。在税收申报时,为了准确计算资本利得,有收申报时,为了准确计算资本利得,有必要区分价格的上升是由于接近到期日必要区分价格的上升是由于接近到期日还是由于市场行为引起的。因此,必须还是由于市场行为引起的。因此,必须对发行价格进行调整,以便计算资本利对发行价格进行调整,以便计算资本利得,原则上采用持续收益法。得,原则上采用持续收益法。首次发行贴水债券的债务处理过程:首次发行贴水债券的债务处理
39、过程:1. 1. 计算年利息,即申报的毛收入,为调整后计算年利息,即申报的毛收入,为调整后的发行价格与发行时到期收益率的乘积;的发行价格与发行时到期收益率的乘积;2. 2. 计算票面利息;计算票面利息;3. 3. 计算当年摊还的发行贴水额,为年利息计算当年摊还的发行贴水额,为年利息( (毛收入毛收入) )与票面利息之差;与票面利息之差;4. 4. 计算调整后的发行价格,为当年摊还的首计算调整后的发行价格,为当年摊还的首次发行贴水额与原发行价格之和。次发行贴水额与原发行价格之和。例例3.15 3.15 票息率为票息率为4%(4%(半年付一次息半年付一次息) )的的5 5年期债券,以年期债券,以7
40、6837683美元的价格发行,赎回价值为美元的价格发行,赎回价值为1000010000美元。假设该债券的到美元。假设该债券的到期收益率为期收益率为10%10%,求调整后的发行价格。,求调整后的发行价格。data a;p=7683;do n=1 to 10;year=n/2;t=p*0.05;c=10000*0.02;b=t-c;p=b+p;put year= p= t= c= b=;output;end;label year=持有年限t=申报的毛收入 c=票面利息b=调整的发行贴水p=调整后的发行价格; run;data b;set a; options nocenter;proc print
41、 data=b label noobs;var year t c b p;title 以持续收益法调整发行价格;title;options;run;输出结果:输出结果:持有年限 年利息(毛收入) 票面利息 当期摊还的发行贴水 调整后的发行价格 0.5 384.150 200 184.150 7867.151.0 393.358 200 193.358 8060.511.5 403.025 200 203.025 8263.532.0 413.177 200 213.177 8476.712.5 423.835 200 223.835 8700.543.0 435.027 200 235.027
42、 8935.573.5 446.779 200 246.779 9182.354.0 459.118 200 259.118 9441.474.5 472.073 200 272.073 9713.545.0 485.677 200 285.677 9999.22债券久期计算债券久期计算 久期是反映债券价格波动的一个指久期是反映债券价格波动的一个指标。它对到期时间进行加权平均,权重标。它对到期时间进行加权平均,权重等于各期现金流的现值占总债券现金流等于各期现金流的现值占总债券现金流现值的比例。久期实际表示的是投资者现值的比例。久期实际表示的是投资者收回初始投资的实际时间。收回初始投资的实际时间
43、。久期与修正久期计算久期与修正久期计算麦考雷麦考雷(Macaulay)(Macaulay)久期的计算公式:久期的计算公式:麦考雷久期(以期间计)=麦考雷久期(年)=麦考雷久期(以期间计)/k其中:PVCFt为以t期对应的市场普遍收益率进行贴现得到的债券在第t期的现金流现值;n为债券持有期内现金流的期间总数;TPV为债券各期现金流的总现值;k为每年支付现金流的次数。 修正久期=其中:PVCFt为以t期对应的市场普遍收益率进行贴现而得债券在第t期的现金流现值;n为债券持有期内现金流的期间总数;TPV为债券各期现金流的总现值;Y为到期收益率的一半。债券组合的久期计算公式:债券组合的久期计算公式:债券
44、组合的久期=其中:债券i市值总和在债券组合市值总和中所占的比重;债券i的修正久期; 债券组合中债券的个数。例例3.16 3.16 面值为面值为100100美元,票息率为美元,票息率为10%10%的的5 5年期债券年期债券, , 收益率收益率为为10%, 10%, 计算久期计算久期( (以年计以年计) )及修正久期。及修正久期。data a;c2=0;tc2=0;do n=1 to 10;t=n;if n10 then c=5 ;else if n=10 then c=105 ;a=1/(1+0.05)*n);c1=c/(1+0.05)*n);tc1=t*c1;c2=c2+c/(1+0.05)*
45、n);tc2=tc2+t*c/(1+0.05)*n);if n=10 then d=tc2/(c2*2); md=d/(1+0.05);output;end;data b;set a;drop c2 tc2 n;labelt=时间 c=现金流a=1美元的现值 c1=现金流的现值 tc1=t*pvcf d=久期(以年计)md=修正久期;proc print data=b label noobs;title 久期及修正久期;var d md;run; 输出结果:久期(以年计) 修正久期4.05391 3.86087注:修正久期可直接用SAS函数计算:Modifdur=DURP(100,0.1,2,
46、10,0.5,0.1);函数DURP用法:DURP(A,c,n,K,k0,y),其中A表示面值,c表示名义年票息率,n为年付息次数,K为生于付息次数,k0为现在到下一次付息日的间隔,y为收益率。或用EXCEL函数,久期=DURATION(DATE(1995,1,1),DATE(2000,1,1),0.1,0.1,2)函数duration的用法:DURATION(settlement,maturity,coupon,yld,frequency,basis)。 修正久期=MDURATION(DATE(1995,1,1),DATE(2000,1,1),0.1,0.1,2),mduration用法同d
47、uration.例例3.19 3.19 面值为面值为100100美元,票息率为美元,票息率为10%10%,到期收益率为,到期收益率为10%10%的的5 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(0.10,0.10,100);run;输出结果:d=8.1078216756修正久期的近似计算
48、修正久期的近似计算 近似久期=其中:V-为收益率下降 证券的估计价格;V+为收益率上升 证券的估计价格;V0为证券初始价格; 为证券收益率的变化。例例3.20 3.20 票息率为票息率为7%7%,到期收益率为,到期收益率为10%10%的的2020年期债券,年期债券,以以74.2674.26美元的价格出售,收益率上升或下降美元的价格出售,收益率上升或下降2020个基本个基本点的价格变化如下所示,试计算近似修正久期。点的价格变化如下所示,试计算近似修正久期。V-= 75.64468623V+= 72.917291682V0= 74.261370469 =0.002(半年变化10个基本点)收益率上升
49、或下降收益率上升或下降2020个基本点的债券初始价格计算程序:个基本点的债券初始价格计算程序: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,0.05,0.035,100);%a(40,0.052,0
50、.035,100);%a(40,0.048,0.035,100);run;p=74.261370469p=71.611134614p=77.068604183近似久期计算程序:近似久期计算程序:%macro md(Vu,Vd,V,y);data a;md=(&vu-&vd)/(2*&v*&y);put md=;%mend md;%md(75.64,72.92,74.26,0.002);run;输出结果:MD=9.15701589结果接近精确值md=9.1802370384精确值计算程序:精确值计算程序:%macro d(y,cupon,period,p0);data a;c2=0;tc2=0;
51、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 thend=tc2/(c2*2);md=D/(1+&y);put d= md= ;output;drop n tc2 c2;end;%mend d;%d(0.05,3.5,40,100) ;run;输出结果为:md=9.1802370384债券凸度计
52、算债券凸度计算凸度(分期限计算)= 凸度(按年计算)=凸度(分期限计算)/零票息债券的凸度=其中:PVCFt为以第t期对应的收益率贴现得到的第t期现金流现值;n为总的时期数;Y为到期收益率的一半;PVTCF为以到期收益率贴现得到的各期现金流总现值; 为每年付息的次数。例例3.21 3.21 假设面值为假设面值为100100美元,美元,5 5年期的票息率为年期的票息率为8%8%的债券的债券, , 每半年付息。假设该债券的初始收益率为每半年付息。假设该债券的初始收益率为10%10%,计算该债券,计算该债券的凸度。的凸度。%macro d(y,cupon,period,p0); data a; c2
53、=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=;outp
54、ut; drop n tc2 c2; end; proc print data=a; %mend d; %d(0.05,4,10,100) ;run;计算结果:凸度(以半年记)concave=78.29424228凸度(以年计)yearlyconcave=19.57356057注:也可以用SAS函数直接计算:convx=convxp(100,0.08,2,10,0.5,0.1);函数convxp的用法:CONVXP(A,c,n,K,k0,y),其中A表示面值,c表示名义年票息率,n为年付息次数,K为生于付息次数,k0为现在到下一次付息日的间隔,y为收益率。例例3.22 3.22 假设面值为假设
55、面值为100100美元,美元,5 5年期的零息票债券,年收年期的零息票债券,年收益率为益率为10%10%,计算凸度。,计算凸度。%macro concave(n,y);data a;concave=&n*(&n+1)/(1+&y)*2);put concave=;%mend concave;%concave(10,0.05);run;计算结果:凸度concave=99.77324263计算凸度引起的价格变化计算凸度引起的价格变化 凸度引起价格变化百分比的估计值= 例例3.24 3.24 面值为面值为100100美元,期限为美元,期限为1515年的票息率为年的票息率为8%8%的债的债券,每半年付
56、息,其初始收益率为券,每半年付息,其初始收益率为10%10%。若收益率由。若收益率由10%10%增长到增长到13%13%,计算凸度引起的价格变化。,计算凸度引起的价格变化。 首先计算年凸度:只需要将上面凸度计算程序中的宏参数值改为%d(0.05,4,30,100) 即可求得年凸度为94.3571。 %macro vp(x,y);data a;caused=0.5*&x*(&y*2)*100;put caused =%;%mend vp;%vp(94.3571,0.03);run;计算结果:凸度引起的价格变化为caused=4.2460695 % 美元凸度美元凸度 美元凸度=凸度初始价格.为确定
57、美元引起的价格变化幅度,可以利用以下公式:凸度解释的价格变化幅度=例例3.25 3.25 期限为期限为1515年的票息率为年的票息率为8%8%的债券,收益率为的债券,收益率为10%10%,计算每计算每100100美元面值债券的美元凸度。美元面值债券的美元凸度。首先计算凸度和初始价格:凸度=94.36 初始价格= 84.627548973凸度前面已经计算过,初始价格的计算程序为: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
58、 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,0.05,0.04,100);put p=;run;计算的初始价格为p=84.627548973计算美元凸度程序:计算美元凸度程序:%macro anlaye(x,y ,p );data a;concave=&x*&p;vp=0.5*concave*(&y*2);put concave=;put vp=;%mend anlaye;%anlaye(94.36,0.01 , 84.627
59、548973 );%anlaye(94.36,0.02 , 84.627548973);run;计算结果:美元凸度concave=7985.4555211100基点的价格变化vp=0.3992727761200基点的价格变化vp=1.5970911042近似凸度近似凸度 近似凸度=其中:V-为收益率下降 证券的估计价格;V+为收益率上升 证券的估计价格;V0为证券初始价格; 为证券收益率的变化。例例3.26 3.26 面值为面值为100100美元,期限为美元,期限为2020年,票息率为年,票息率为7%7%的债券,到的债券,到期收益率为期收益率为10%10%,假设发生,假设发生2020个基点的变
60、化,计算凸度。个基点的变化,计算凸度。已知条件:V-=75.64 V+=72.92 V0=74.26 =0.002%macro concave(Vu,Vd,V,y);data a;yearlyconcoave=(&vu+&vd-2*&v)/(&v*(&y*2);put yearlyconcoave=;%mend concave;%concave(75.64,72.92,74.26,0.002);run;计算结果:concoave=134.66199838精确计算凸度(以年计)yearlyconcave =132.077精确计算凸度的程序:%macro d(y,cupon,period,p0);
61、 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 yearlyco
62、ncave=;output; drop n tc2 c2; end; proc print data=a; %mend d; %d(0.05,3.5,40,100) ;run;结果:精确计算凸度(以年计)yearlyconcave =132.077抵押支持债券贷款利率计算抵押支持债券贷款利率计算例例3.27 3.27 一宗一宗4 4年期抵押贷款,设未来年期抵押贷款,设未来5 5年每年的贷年每年的贷款利率分别为款利率分别为8%8%,10%10%,12%12%,13%13%,11%11%。计算抵。计算抵押贷款利率。押贷款利率。data a;I=(1+0.08)*(1+0.1)*(1+0.12)*(
63、1+0.13)*(1+0.11)*0.2-1;Put I=;run;抵押贷款利率I=0.1078658绩效衡量绩效衡量债券组合的到期收益率债券组合的到期收益率其中:Rp为组合到期收益率;V1为期末组合市价;V0为期初组合市价;D为评估期内组合对客户的现金分配。 例例3.28 3.28 一个债券投资组合期初与期末市场价格分别为一个债券投资组合期初与期末市场价格分别为1 1亿美元和亿美元和1.121.12亿美元,在评估期内分给投资人亿美元,在评估期内分给投资人500500万美万美元的利息收入。元的利息收入。收益率计算:%macro r(v1,v0,d);data;r=(&v1-&v0+&d)/&v
64、0;put r=;%mend r(v1,v0,d);%r(112000000,100000000,5000000);run;计算结果: r=0.17例例3.29 3.29 第第1 1至至4 4月的组合子期收益率分别为月的组合子期收益率分别为12%12%,25%25%,-15%-15%和和-2%-2%,则月平均收益率为,则月平均收益率为5%5%。 算术平均时序收益率程序:%macro r(r1,r2,r3,r4,n);data a;r=(&r1+&r2+&r3+&r4)/&n;put r=;%mend R(r1,r2,r3,r4,n);%r(0.12,0.25,-0.15,-0.02,4);ru
65、n;计算结果:r=0.05几何平均时序收益率程序:%macro r(r1,r2,r3,r4,n);data a;r=(&r1+1)*(&r2+1)*(&r3+1)*(&r4+1)*(1/&n)-1;put r=;%mend R(r1,r2,r3,r4,n);%r(0.12,0.25,-0.15,-0.02,4);run;计算结果:r=0.039185933 美元权重收益率美元权重收益率美元权重收益率就是内生收益率。例例3.30 3.30 一个一个7 7月初市价为月初市价为100 000100 000美元的组合,美元的组合,7979月月每月抽回资金每月抽回资金5 0005 000美元,没有客户的
66、追加现金投入,美元,没有客户的追加现金投入,9 9月底组合市价为月底组合市价为110 000110 000美元。美元。计算程序:data;do n=0.07 to 0.10 by 0.001;p=5000/(1+n)+5000/(1+n)*2)+115000/(1+n)*3);r=n;if abs(p-100000)100 then put p= r=;end;run;计算结果:p=99941.704989 r=0.081算术平均收益率算术平均收益率 算术平均收益率计算简单,不同时间段的权重都相同。算术平均收益率指标有时不太合理,会产生误解,参考下面例子。 例3.31 一年中,前四个月的收益情
67、况分别是一月50,二月50,三月50,四月50。如果只关注这四个月的投资收益情况,算术平均收益率=(50505050)/40。换句话说,平均收益率是0。但是看一下数据会知道,在这四个月中该投资者是亏损的。所以,算术收益率带来的是错误的结论。如果在十二月底投资$1,000,000,根据前四个月收益数据,四月底的资本剩余为$562,500,计算公式如下:算术平均收益率存在的问题可以由几何平均收益率解决。 几何平均收益率几何平均收益率实际中几何收益率常常有两种形式:价值加权(value-weighted)几何平均,时间加权(time-weighted)几何平均。价值加权收益率(或者称作美元加权收益率
68、 dollar-weighted rate of return),是在一系列现金流中找到一个公共的收益率。一般情况下,可以用下面的公式计算收益率r: 这里 是在t时刻来自证券组合的净现金流量(收益现金流减去支出现金流),t=1,.T。 是组合一开始的市场价值。 是结束时刻的市场价值。例例3.32 3.32 分别计算下面两个投资的价值加权和时间加权收益率。分别计算下面两个投资的价值加权和时间加权收益率。1. 1. 起始投资额为起始投资额为50(50(即投资组合起始时的市场价值为即投资组合起始时的市场价值为50)50);一;一年后,投资组合的价值为年后,投资组合的价值为100100。首先计算年度价
69、值加权收益率,以 表示: 解为 100。现在计算年度时间加权收益率,以 表示,则: 2. 2. 起始投资额为起始投资额为5050;六个月后,净现金流为;六个月后,净现金流为25(25(现金现金流出流出) ),一年后投资组合的价值为,一年后投资组合的价值为100100。首先计算年度价值加权收益率,以 表示:解为 40.69。现在计算年度时间加权收益率,以 表示,则:其中 和 分别是前六个月和后六个月的时间加权收益率。于是,得到年度时间加权收益率 为: 例例3.33 3.33 第第1 1至至4 4月的组合子期收益率分别为月的组合子期收益率分别为12%12%,25%25%,-15%-15%和和-2%
70、-2%,则月平均收益率为,则月平均收益率为5%5%。算术平均时序收益率程序:%macro r(r1,r2,r3,r4,n);data a;r=(&r1+&r2+&r3+&r4)/&n;put r=;%mend R(r1,r2,r3,r4,n);%r(0.12,0.25,-0.15,-0.02,4);run;计算结果: r=0.05时间加权几何平均时序收益率程序:%macro r(r1,r2,r3,r4,n);data a;r=(&r1+1)*(&r2+1)*(&r3+1)*(&r4+1)*(1/&n)-1;put r=;%mend R(r1,r2,r3,r4,n);%r(0.12,0.25,-
71、0.15,-0.02,4);run;计算结果:r=0.039185933二叉树定价模型二叉树定价模型第1年利率二叉树状结构如下:其中:为1年期远期利率的波动率,本节假设为10%;r1,L为第1年年末较低的1年期远期利率;r1,H为第1年年末较高的1年期远期利率;e为自然对数的底数(2.71828)。 r0r1, H=e2r1, Lr1, L不含期权债券的二叉树定价模型不含期权债券的二叉树定价模型例例3.34 3.34 有一票息率为有一票息率为5.25%5.25%的还有的还有3 3年到期的不含权的年到期的不含权的债券,到期价格为债券,到期价格为100100美元,利率结构为:美元,利率结构为:r0
72、=3.5%, r0=3.5%, r1=4.074%, r2=4.53%r1=4.074%, r2=4.53%。计算债券的初始价格。计算债券的初始价格。计算程序:%macro p(r0,r1,r2,c,d);data a;p2hh=(&c+100)/(1+&r2*(2.71828*(4*&d); /* p2hh=98.587492675 */p2hl=(&c+100)/(1+&r2*(2.71828*(2*&d); /* p2hl=99.731881142 */p2ll=(&c+100)/(&r2+1); /* p2ll=100.68879747 */p1h=(&c+p2hh)/(1+&r1*(
73、2.71828*(2*&d)+(&c+p2hl)/(1+&r1*(2.71828*(2*&d)/2;/* p1h=99.460536418 */p1l=(&c+p2hl)/(1+&r1)+(&c+p2hl)/(&r1+1)/2; /* p1l=100.87234193 */p=(p1h+&c)/(1+&r0)+(p1l+&c)/(1+&r0)/2; /* p=101.85163205 */put p2hh= p2hl= p2ll= p1h= p1l= p=;%mend p;%p(0.035,0.04074,0.0453,5.25,0.1);run;债券的初始价格为p=101.85163205V
74、=100.689C=5.25rLL=4.530%V=99.732C=5.25rhL=5.532%V=98.588C=5.25rHH=6.757%V=100C=5.25V=100C=5.25V=100C=5.25V=100C=5.25V=101.851C=0r0=3.500%V=99.461C=5.25rH=4.976%V=100.872C=5.25rL=4.074%NHNHHNLNNHLNLLNHHHNHHLNHLLNLLL图3.1 不含期权债券的二叉树定价图内含买权债券的二叉树定价模型内含买权债券的二叉树定价模型例例3.35 3.35 票息率为票息率为5.25%5.25%的还有的还有3 3年
75、到期的可回收债年到期的可回收债券,一年以后可以券,一年以后可以100100美元的价格回收,利率结构美元的价格回收,利率结构为:为:r0=3.5%, r1=4.074%, r2=4.53%r0=3.5%, r1=4.074%, r2=4.53%。计算债券的。计算债券的初始价值及买权价格。初始价值及买权价格。 计算程序:%macro p(r0,r1,r2,c,d);data a;p2hh=(&c+100)/(1+&r2*(2.71828*(4*&d); /* p2hh=98.587492675 */p2hh=min(p2hh,100); /* p2hh=98.587492675 */p2hl=(&
76、c+100)/(1+&r2*(2.71828*(2*&d); /* p2hl=99.731881142 */p2hl=min(p2hl,100); /* p2hl=99.731881142 */p2ll=(&c+100)/(&r2+1); /* p2ll=100.68879747 */p2ll=min(p2ll,100); /* p2ll=100 */p1h=(&c+p2hh)/(1+&r1*(2.71828*(2*&d)+(&c+p2hl)/(1+&r1*(2.71828*(2*&d)/2;/* p1h=99.460536418 */p1h=min(p1h,100); /* p1h=99.4
77、60536418 */p1l=(&c+p2hl)/(1+&r1)+(&c+p2hl)/(&r1+1)/2; /* p1l=100.87234193 */p1l=min(p1l,100); /* p1l=100 */p=(p1h+&c)/(1+&r0)+(p1l+&c)/(1+&r0)/2; /* p=101.4302108 */put p2hh= p2hl= p2ll= p1h= p1l= p=;%mend p;%p(0.035,0.04074,0.0453,5.25,0.1);run;债券的初始价值为p=101.43021083买权价格=不含期权债券初期价格-可回收债券初期价值=101.85
78、163205-101.4302108=0.42142122V=100C=5.25rLL=4.530%V=99.732C=5.25rhL=5.532%V=98.588C=5.25rHH=6.757%V=100C=5.25V=100C=5.25V=100C=5.25V=100C=5.25V=101.432C=0r0=3.500%V=99.461C=5.25rH=4.976%V=100C=5.25rL=4.074%NHNHHNLNNHLNLLNHHHNHHLNHLLNLLL图3.2 内含期权债券的二叉树定价图(买权)内含期权债券的有效久期和凸度内含期权债券的有效久期和凸度本部分介绍利用二叉树模型计算
79、内含期权本部分介绍利用二叉树模型计算内含期权债券的有效久期和有效凸度。债券的有效久期和有效凸度。 久期是利率风险的量度。在假设未来预期现金流不随利率变化的条件下,修正久期反映的是债券价格对利率变化的敏感度。 任何公式债券的久期都可用下面公式:久期近似值= 其中:V- 为收益率下降 证券的估计价格;V+ 为收益率上升 证券的估计价格;V0 为证券初始价格; 为证券收益率的变化。同样,任何公式债券的凸度都可用下面公式:有效凸度= 其中:V- 为收益率下降 证券的估计价格;V+ 为收益率上升 证券的估计价格;V0 为证券初始价格; 为证券收益率的变化。 若公式中用的变量不随收益率的变化而变化,则得出
80、来的凸度是不含期权债券凸度的近似值。当公式中的价格随收益率的变化而变化时,计算所得的凸度称为有效凸度(Effective Convexity)或期权调整凸度(Optional-adjusted Convexity)。 利用二叉树模型计算有效久期和有效凸度公式中变利用二叉树模型计算有效久期和有效凸度公式中变量值的求解方法量值的求解方法:确定V+的值:1计算债券的期权调整价差(OAS);2将债券的收益率曲线进行小幅度的平行上移;3根据移动后的收益率曲线构造一个利率二叉树;4将利率二叉树上的各远期利率加上OAS,构造一个调整后的二叉树;5用新的利率二叉树模型确定证券的价值V+。V-值的确定与V+值相
81、同,只不过在第2步将债券的收益率曲线进行小幅度的平行下移。例例3.37 3.37 条件如例条件如例3.333.33所列:票息率为所列:票息率为5.25%5.25%,3 3年到期,年到期,一年以后可以一年以后可以100100美元的价格回收,利率结构为:美元的价格回收,利率结构为:r0=3.5%, r1=4.074%, r2=4.53%r0=3.5%, r1=4.074%, r2=4.53%。 于是,于是,V0V0为为101.432101.432美元,收益率曲线上升和下降美元,收益率曲线上升和下降1010个基本点时,得到个基本点时,得到V-V-和和V+V+的值分别为的值分别为101.628101.
82、628美元和美元和101.234101.234美元。试计算有效美元。试计算有效久期和有效凸度。久期和有效凸度。 此处假设市场对该债券的定价是合理的,即计算的理论价格101.432,因此OAS为0。直接在例3.33利率二叉树图的基础上,将每个节点的远期利率各或减0.1%(即10个基本点)得出相应债券的估计价格如下:V+=101.21845951V0=101.43021083V-=101.64278786相应计算程序:%macro p(r0,r1,r2,c,d);data a;p2hh=(&c+100)/(1+&r2*(2.71828*(4*&d);p2hh=min(p2hh,100);p2hl=
83、(&c+100)/(1+&r2*(2.71828*(2*&d);p2hl=min(p2hl,100);p2ll=(&c+100)/(&r2+1);p2ll=min(p2ll,100);p1h=(&c+p2hh)/(1+&r1*(2.71828*(2*&d)+(&c+p2hl)/(1+&r1*(2.71828*(2*&d)/2;p1h=min(p1h,100);p1l=(&c+p2hl)/(1+&r1)+(&c+p2hl)/(&r1+1)/2;p1l=min(p1l,100);p=(p1h+&c)/(1+&r0)+(p1l+&c)/(1+&r0)/2;put p=;%mend p;%mend p
84、;%p(0.036,0.04174,0.0463,5.25,0.1);%p(0.035,0.04074,0.0453,5.25,0.1);%p(0.034,0.03974,0.0443,5.25,0.1);run;有效久期计算程序:%macro ed(Vu,Vd,V,y);data a;ed=(&vu-&vd)/(2*&v*&y);put ed=;%mend ed;%ed(101.64278786, 101.21845951, 101.43021083,0.001);run;有效久期ed=2.091725663有效凸度计算程序:%macro concave(Vu,Vd,V,y);data a;concave=(&vu+&vd-2*&v)/(&v*(&y*2);put concave=;%mend concave;%concave(101.64278786, 101.21845951, 101.43021083,0.001);run;有效凸度concave=8.1406712385