Professional Documents
Culture Documents
zhushw@em.tsinghua.edu.cn
20.1
7704
1
2
3
4
2 000
2 000
2 500
4 000
%macro a(y);
data;
p=2000/(1+&y)+2000/(1+&y)**2+2500/(1+&y)**3+4000/(1+&y)**4;
y=100*&y;
put y= p=;
%mend a;
%a(0.1);
%a(0.14);
%a(0.12);
run;
y=10 p=8081.4152039
y=14 p=7349.0709218
y=12 p=7701.624974
7704 12%
20.2
6 $50 10
6.5%;
1243.82
%macro a(y);
data;
p1=50/(1+&y)+50/(1+&y)**2+50/(1+&y)**3+50/(1+&y)**4+50/(1+&y)**5
+50/(1+&y)**6+50/(1+&y)**7+50/(1+&y)**8+50/(1+&y)**9+50/(1+&y)**10;
p2=1000/(1+&y)**10;
p=p1+p2;
put p1=;
put p2=;
y=100*&y;
put y= p=;
%mend a;
%a(0.03);
%a(0.0275);
y=3, p=1170.6040567
%a(0.025);
%a(0.0225);
y=2.75,p=1194.4017137
%a(0.0325);
y=2.5, p=1218.8015983
run;
y=2.2, p=1243.8209496
y=3.25, p=1147.3919139
1243.82
2.25%2=4.5%
%macro a(y);
data;
p1=50/(1+&y)+50/(1+&y)**2+50/(1+&y)**3+50/(1+&y)**4+50/(1+&y)**5
+50/(1+&y)**6+50/(1+&y)**7+50/(1+&y)**8+50/(1+&y)**9+50/(1+&y)**10;
p2=1000/(1+&y)**10;
p=p1+p2;
put p1=;
put p2=;
y=100*&y;
put y= p=;
y=4.5, p=1039.5635909
%mend a;
y=4.75, p=1019.5408692
%a(0.045);
y=5, p=1000
%a(0.0475);
y=5.25, p=980.92789882
%a(0.05);
y=5.5, p=962.31187086
%a(0.0525);
y=5.75, p=944.13959857
%a(0.055);
%a(0.0575);
944.14 5.75%2=11.5%
run;
20.4 30 50000
349.60
360
43449
%macro a(y);
data;
p=0;
do n=1 to 360 ;
p=p+349.6/(1+&y)**n;
output;
end;
y=100*&y;
put y= p=;
%mend a;
%a(0.00625);
%a(0.006667);
%a(0.007083);
%a(0.0075);
run;
y=0.625, p=49998.962511
y=0.6667, p=47642.898994
y=0.7083, p=45468.430053
y=0.75, p=43448.940241
43449 0.75%
%macro a(y);
data;
p1=0;
do n=1 to 30 ;
p1=p1+1000000/(1+&y)**n;
output;
end;
p2=20000000/(1+&y)**30;
p=p1+p2;
put p1=;
put p2=;
y=100*&y;
put y= p=;
%mend a;
%a(0.05);
%a(0.0505);
%a(0.051);
run;
y=5, p=20000000
y=5.05, p=19847147.788
y=5.1, p=19696024.811
19696024 5.10%
1 1
m
20.6 4% 1.042-1=8.16%
2% 8.24%
%macro a(y,m);
data;
i=(1+&y)**&m-1;
y=100*&y;
put y= i=;
%mend a;
%a(0.02,4);
run;
y=2 , i=0.08243216
20.7 6% 700.89
1000 6 30 36
data a;
delete;
%macro a(y);
data a1;
p1=0;
do n=1 to 36 ;
p1=p1+30/(1+&y)**n;
output;
end;
data a1;
set a1 end=lasobs;
if lasobs;
p2=1000/(1+&y)**36;
p=p1+p2;
y=200*&y;
y1=100*&y;
data a;
set a a1;
%mend a;
%a(0.0325);
%a(0.035);
%a(0.0375);
%a(0.04);
%a(0.0425);
%a(0.045);
%a(0.0475);
put p=;
run;
p=947.39977388
p=898.54753094
p=853.14448488
p=810.91718046
p=771.61525276
p=735.00939134
p=700.88949018
700.89 9.5%
data a;
%a(0.0325);
delete;
%a(0.035);
%macro a(y);
%a(0.0375);
data a1;
%a(0.04);
p1=0;
%a(0.0425);
do n=1 to 36 ;
%a(0.045);
p1=p1+30/(1+&y)**n;
%a(0.0475);
output;
proc print data=a;
run;
end;
data a1;
set a1 end=lasobs;
Obs
P1 N
P2
P
Y Y1
if lasobs;
1 631.203 36 316.197 947.400 6.5 3.25
p2=1000/(1+&y)**36;
2 608.715 36 289.833 898.548 7.0 3.50
3 587.422 36 265.722 853.144 7.5 3.75
p=p1+p2;
4 567.248 36 243.669 810.917 8.0 4.00
y=200*&y;
5 548.123 36 223.492 771.615 8.5 4.25
y1=100*&y;
6 529.981 36 205.028 735.009 9.0 4.50
data a;
7 512.761 36 188.129 700.889 9.5 4.75
set a a1;
%mend a;
data a;
delete;
%macro a(y);
%a(0.03);
data a1;
%a(0.0325);
p1=0;
%a(0.035);
do n=1 to 38 ;
%a(0.0375);
p1=p1+55/(1+&y)**n;
%a(0.04);
output;
%a(0.0425);
end;
proc print data=a;
data a1;
set a1 end=lasobs;
Obs P1
N
p2
P
Y Y1
if lasobs;
1 1237.09 38 325.226 1562.31 6.0 3.00
p2=1000/(1+&y)**38;
2 1190.36 38 296.604 1486.97 6.5 3.25
p=p1+p2;
3 1146.26 38 270.562 1416.82 7.0 3.50
y=200*&y;
4 1104.60 38 246.861 1351.46 7.5 3.75
y1=100*&y;
5 1065.23 38 225.285 1290.52 8.0 4.00
data a;
6 1027.99 38 205.641 1233.64 8.5 4.25
set a a1;
%mend a;
c
c
c
c
t p (1 y ) (1 y ) (1 y ) ........ (1 y )
w
1 w
2 w
t
p
c
y
w=
n
M
n 1 w
M
(1 y )
n 1 w
0.2444410.2444 5
11.2444
105
data;
date0='01mar1997'd;
date1='17jul1997'd;
date2='01sep1997'd;
days02=datdif(date0, date2, '30/360'); /* 30/360 */
days12=datdif(date1, date2, '30/360');
n=2*(2003-1997)-1;
put days02= days12= n=;
w=days12/days02;
put w=;
run;
data a;
delete;
%macro a(y,z);
data a1;
p1=0;
do n=1 to 11 ;
p1=p1+5/((1+&y)**(n-1+&z));
output;
end;
data a1;
set a1 end=lasobs;
if lasobs;
p2=105/((1+&y)**(11-1+&z));
p=p1+p2;
y=200*&y;
y1=100*&y;
data a;
set a a1;
%mend a;
%a(0.0363, 0.2444444444);
proc print data=a;
run;
P= 118.780
3.63%
118.78
7.26% 23.63%
20.10 20.9
0.2510.25
11.25
5
105
data;
date0='01mar1997'd;
date1='17jul1997'd;
date2='01sep1997'd;
days02=datdif(date0, date2, 'act/act'); /* */
days12=datdif(date1, date2, 'act/act');
n=2*(2003-1997)-1;
put days02= days12= n=;
w=days12/days02;
put w=;
run;
data a;
delete;
%macro a(y,z);
data a1;
p1=0;
do n=1 to 11 ;
p1=p1+5/((1+&y)**(n-1+&z));
output;
end;
data a1;
set a1 end=lasobs;
if lasobs;
p2=105/((1+&y)**(11-1+&z));
p=p1+p2;
y=200*&y;
y1=100*&y;
data a;
set a a1;
%mend a;
%a(0.03627, 0.25);
proc print data=a;
run;
P= 118.785
7.254% 23.627%
==
<<
>>
data a;
delete;
%macro a(y);
data a1;
p1=0;
do n=1 to 10 ;
p1=p1+30/(1+&y)**n;
output;
end;
data a1;
set a1 end=lasobs;
if lasobs;
p2=1030/(1+&y)**10;
p=p1+p2;
y=200*&y;
y1=100*&y;
data a;
set a a1;
%mend a;
%a(0.056);
%a(0.0585);
%a(0.061);
%a(0.0635);
%a(0.066);
%a(0.0685);
%a(0.071);
%a(0.0735);
%a(0.076);
proc print data=a;
run;
Obs P1
N
P2
P
Y
Y1
1 225.048 10 597.308 822.356 11.2 5.60
2 222.380 10 583.349 805.729 11.7 5.85
3 219.760 10 569.749 789.509 12.2 6.10
4 217.187 10 556.496 773.683 12.7 6.35
5 214.659 10 543.582 758.241 13.2 6.60
6 212.176 10 530.997 743.173 13.7 6.85
7 209.737 10 518.731 728.468 14.2 7.10
8 207.340 10 506.777 714.117 14.7 7.35
9 204.985 10 495.125 700.110 15.2 7.60
15.2%
20.12 7% 1233.64
19
6 1055
, 6 55
12
data a;
delete;
%macro a(y);
data a1;
p1=0;
do n=1 to 12 ;
p1=p1+55/(1+&y)**n;
output;
end;
data a1;
set a1 end=lasobs;
if lasobs;
p2=1055/(1+&y)**12;
p=p1+p2;
y=200*&y;
y1=100*&y;
data a;
set a a1;
%mend a;
%a(0.0255);
%a(0.028);
%a(0.0305);
%a(0.033);
%a(0.0355);
%a(0.038);
proc print data=a;
run;
Obs P1
N
P2
P
Y Y1
1 562.473 12 779.874 1342.35 5.1 2.55
2 554.064 12 757.417 1311.48 5.6 2.80
3 545.840 12 735.659 1281.50 6.1 3.05
4 537.794 12 714.576 1252.37 6.6 3.3
5 529.923 12 694.147 1224.07 7.1 3.55
6 522.221 12 674.348 1196.57 7.6 3.80
7.6%
;
;
20.13
57259000
20.5
A
B
C
1
350 000 1 050 000
900 000 2 300 000
2
350 000 1 050 000
900 000 2 300 000
3
350 000 1 050 000
900 000 2 300 000
4
350 000 1 050 000
900 000 2 300 000
5
350 000 1 050 000
900 000 2 300 000
6
350 000 1 050 000 30 900 000 32 300 000
7
350 000 1 050 000
1 400 000
8
350 000 1 050 000
1 400 000
9
350 000 1 050 000
1 400 000
10 10350 000 1 050 000
11 400 000
11
1 050 000
1 050 000
12
1 050 000
1 050 000
13
1 050 000
1 050 000
14
21 050 000
21 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=21050000/(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%)
= +
;
;
3 ,
, 2
20.14 6
99.3098 , 80 ( )
10% 6
5.4% 100
1
10
5.4
2
10
5.4
3
10
5.4
4
10
5.4
5
10
5.4
6
10
5.4
7
10
5.4
8
10
5.4
9
10
5.4
10
10
5.4
11
10
5.4
12
10
5.4
=
80
84
88
96
5.1233 5.1224 5.1214 5.1195
4.8609 4.859
4.8572 4.8535
4.6118 4.6092 4.6066 4.6013
4.3755 4.3722 4.3689 4.3623
4.1514 4.1474 4.1435 4.1356
3.9387 3.9342 3.9297 3.9208
3.7369 3.7319 3.727
3.7171
3.5454 3.5401 3.5347 3.524
3.3638 3.358
3.3523 3.3409
3.1914 3.1854 3.1794 3.1673
3.0279 3.0216 3.0153 3.0028
56.0729 55.9454 55.8182 55.5647
100
99.8269 99.6541 99.3098
100
5.1185
4.8516
4.5987
4.359
4.1317
3.9163
3.7122
3.5186
3.3352
3.1613
2.9965
55.4385
99.1381
data a ;
set a;
delete;
%macro a(y,z,x);
data a1;
do n=1 to 12 ;
if n<12 then p&x=5.4/(1+&y+&z)**n;
else p&x=105.4/(1+&y+&z)**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
D
D
D
Par
PV
...
1 r (1 r ) 2
(1 r ) n (1 r ) n
PV ( )
D ( )
r
n 2
Par ( )
20.15 12% 20
9% 1000
40
40 1000
data;
p1=45*(1-(1/1.06**40))/0.06;
p2=1000*(1/1.06**40);
p=p1+p2;
put p1= p2= p=;
run;
p=774.30554693
20.16 20.15 7%
3.5% 7%2
40 3.5% 960.98
data;
p1=45*(1-(1/1.035**40))/0.035;
p2=1000*(1/1.035**40);
p=p1+p2;
put p1= p2= p=;
run;
20.17 1000 9% 16
12%
6% 12%2
32 ;
32 1000
data;
p1=45*(1-(1/1.06**32))/0.06;
p2=1000*(1/1.06**32);
p=p1+p2;
put p1= p2= p=;
run;
p=788.73934917
20.18 20.7 5%~14% 20
9%
1502.06
1346.72
1213.55
1098.96
1000
914.2
839.54
774.31
717.09
666.71
%
5
6
7
8
9
10
11
12
13
14
data 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;
%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;
proc gplot data=a ;
plot p*y=1;
symbol1 v=none i=join r=1 c=black;
title2 ' ';
label
p=' '
y=' ';
run;
20.19 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 P1 P2
P
20 677.083
97.22 774.31
19 668.071 109.24 777.31
18 657.944 122.74 780.69
17 646.566 137.91 784.48
16 633.782 154.96 788.74
15 619.417 174.11 793.53
14 603.277 195.63 798.91
13 585.142 219.81 804.95
12 564.766 246.98 811.74
11 541.871 277.51 819.38
10 516.146 311.80 827.95
9
487.242 350.34 837.59
8
454.765 393.65 848.41
7
418.274 442.30 860.58
6
377.273 496.97 874.24
5 331.204 558.39 889.60
4 279.441 627.41 906.85
3 221.280 704.96 926.24
2 155.930 792.09 948.02
1
82.503 890.00 972.50
0
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;
title2 ' ';
label
p=' '
year=' ';
run;
20.20 1000 20 9% 7%
data a;
do n=40 to 0 by -2 ;
p1=45*(1-(1/(1+0.035)**n))/0.035;
p2=1000*(1/(1+0.035)**n);
p=p1+p2;
year=n/2;
output;
end;
proc print data=a noobs;
var year p1 p2 p;
run;
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;
label
p=' '
year=' ';
title2 '
';
run;
Year
P1
P2
P
20 960.978 252.57 1213.55
19 937.849 270.56 1208.41
18 913.072 289.83 1202.90
17 886.531 310.48 1197.01
16 858.099 332.59 1190.69
15 827.642 356.28 1183.92
14 795.016 381.65 1176.67
13 760.066 408.84 1168.90
12 722.627 437.96 1160.58
11 682.521 469.15 1151.67
10 639.558 502.57 1142.12
9 593.536 538.36 1131.90
8 544.235 576.71 1120.94
7 491.423 617.78 1109.21
6 434.850 661.78 1096.63
5 374.247 708.92 1083.17
4 309.328 759.41 1068.74
3 239.785 813.50 1053.29
2 165.289 871.44 1036.73
1
85.486 933.51 1019.00
0
0.000 1000.00 1000.00
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.47387508
20.22 4% 5 7683
10000 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=' '
data b;
t=' '
c=' '
set a;
b=' '
options nocenter;
p=' ';
proc print data=b label noobs;
run;
var year t c b p;
title ' ';
title;
options;
run;
0.5
1.0
1.5
2.0
2.5
3.0
3.5
4.0
4.5
5.0
384.150
393.358
403.025
413.177
423.835
435.027
446.779
459.118
472.073
485.677
200
200
200
200
200
200
200
200
200
200
184.150
193.358
203.025
213.177
223.835
235.027
246.779
259.118
272.073
285.677
7867.15
8060.51
8263.53
8476.71
8700.54
8935.57
9182.35
9441.47
9713.54
9999.22
Rp
V1V0 D
V0
Rp
V1
V0
D
20.23 1
1.12 500
%macro r(v1,v0,d);
data;
r=(&v1-&v0+&d)/&v0;
put r=;
%mend r(v1,v0,d);
%r(112000000,100000000,5000000);
run;
r=0.17
20.24 1 4
12% 25% -15% -2%
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,-0.15,-0.02,4);
run;
r=0.039185933
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
Macaulay
1 PVCF1 2 PVCF2 3 PVCF3 ..... n PVCFn
=
TPV
= ( )/k
PVCF t t
t
n
TPV ;
k
=
1 Y
TPV
PVCFt t t
n
TPV
Y
= W D L W D
1 1
k k
i
W D L W D
Wi
i
Di
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;
4.05391
3.86087
%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;
output;
c2=c2+c/((1+&y)**n);
drop n tc2 c2;
tc2=tc2+t*c/((1+&y)**n);
end;
if n=&period then
d=tc2/(c2*2);
%mend d;
md=D/(1+&y);
%d(0.05,7,10,100) ;
put d= md= ;
run;
D=3.8526637075
MD=3.6692035309
d=7.7056792499
d=8.1078216756
V V
= 2V (y )
0
V- y
V+ y
V0
y
20.30 7% 10% 20
74.26 20
V-= 75.64468623
V+= 72.917291682
V0= 74.261370469
y =0.002 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,0.05,0.035,100);
%a(40,0.052,0.035,100);
%a(40,0.048,0.035,100);
run;
%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;
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(0.05,3.5,40,100) ;
run;
md=9.1802370384
=
1 2 PVCF1 +2 3 PVCF2 +3 4 PVCF3 + L +n(n+1)PVCFn
(1+Y) 2 PVTCF
2
k
= /
n(n 1)
= (1 y ) 2
PVCFt t t
n
Y
PVTCF
k
20.31 100 5 8% ,
10%
%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);
output;
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
drop n tc2 c2;
concave=tc2/(c2*((1+&y)**2));
yearlyconcave=concave/4;
put concave= ;
put yearlyconcave=;
end;
proc print data=a;
%mend d;
%d(0.05,4,10,100) ;
run;
20.32 100 5
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
%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(0.05,7,10,100) ;
run;
0.5 2
20.34 100 15 8%
10% 10% 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 %
= .
= 0.5
2
=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 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.627548973 );
%anlaye(94.36,0.02 , 84.627548973);
run;
concave==7985.4555211
100 vp=0.3992727761
200 vp=1.5970911042
V- +V+ -2V0
=
V0 (DY) 2
V- y
V+ y
V0
y
20.36 100 20 7%
10% 20
V-=75.64
V+=72.92
V0=74.26
Y=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);
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;
end;
proc print data=a;
1
r1, H=e2r1, L
r0
r1, L
1 10%
r
1,L 1 1
r
1,H 1 1
e 2.71828
20.37 5.25% 3
100 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)));
p2hl=(&c+100)/(1+&r2*(2.71828**(2*&d)));
p2ll=(&c+100)/(&r2+1);
p1h=((&c+p2hh)/(1+&r1*(2.71828**(2*&d)))+(&c+p2hl)/
(1+&r1*(2.71828**(2*&d))))/2;
p1l=((&c+p2hl)/(1+&r1)+(&c+p2hl)/(&r1+1))/2;
p=((p1h+&c)/(1+&r0)+(p1l+&c)/(1+&r0))/2;
put p=;
%mend p;
%p(0.035,0.04074,0.0453,5.25,0.1);
run;
p=101.85163205
NHHH
NHH
NH
V=99.461
C=5.25
rH=4.976%
V=102.075
C=0
r0=3.500%
NHL
NL
V=98.588
C=5.25
rHH=6.757%
NHHL
V=100
C=5.25
NHLL
V=100
C=5.25
V=99.732
C=5.25
rhL=5.532%
V=101.333
C=5.25
rL=4.074%
NLL
V=100
C=5.25
V=100.689
C=5.25
rLL=4.530%
NLLL
V=100
C=5.25
20.38 5.25% 3
100 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=min(p2hh,100);
p2hl=(&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;
%p(0.035,0.04074,0.0453,5.25,0.1);
run;
p=101.43021083
=
-
=101.85163205-101.4302108
=0.42142122
NHHH
NHH
NH
V=101.432
C=0
r0=3.500%
V=99.461
C=5.25
rH=4.976%
NHL
NL
V=98.588
C=5.25
rHH=6.757%
NHHL
V=100
C=5.25
NHLL
V=100
C=5.25
V=99.732
C=5.25
rhL=5.532%
V=100
C=5.25
rL=4.074%
NLL
V=100
C=5.25
V=100
C=5.25
rLL=4.530%
NLLL
V=100
C=5.25
20.39 5.25%,
100 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=max(p2hh,100);
p2hl=(&c+100)/(1+&r2*(2.71828**(2*&d)));
p2hl=max(p2hl,100);
p2ll=(&c+100)/(&r2+1);
p2ll=max(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=max(p1l,100);
p=((p1h+&c)/(1+&r0)+(p1l+&c)/(1+&r0))/2;
put p=;
p=102.23669817
=
%mend p;
-
%p(0.035,0.04074,0.0453,5.25,0.1);
=102.23669817-101.85163205
run;
=0.38506612
NHHH
NHH
NH
V=102.523
C=0
r0=3.500%
V=100.261
C=5.25
rH=4.976%
NHL
NL
V=100
C=5.25
rHH=6.757%
NHHL
V=100
C=5.25
NHLL
V=100
C=5.25
V=100
C=5.25
rhL=5.532%
V=101.461
C=5.25
rL=4.074%
NLL
V=100
C=5.25
V=100.689
C=5.25
rLL=4.530%
NLLL
V=100
C=5.25
V V
=
2V0 ( y )
V-
y
V+
y
V0
Effective Duration
Option-adjusted Duration
V- +V+ -2V0
= V (y) 2
0
V- y
V+ y
V0
y
y
Effective Convexity
Optional-adjusted Convexity
V+
OAS
OAS
V
+
V- V+ 2
V+=101.21845951
V0=101.43021083
V-=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=(&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;
%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
20.41 4 5
8% 10% 12% 13% 11%
data a;
I=((1+0.08)*(1+0.1)*(1+0.12)*(1+0.13)*(1+0.11))**0.2-1;
Put I=;
run;
I=0.1078658