Методы оптимизации портфеля бескупонных облигаций
Страница 7
Q1[N], // нач. портфель
P1[N], // нач. цены
Cush,S; // деньги
float S1,S2;
int k,maxk,i;
T[0]=58;
T[1]=37;
T[2]=72;
T[3]=107;
T[4]=135;
T[5]=163;
T[6]=303;
T[7]=359;
randomize();
Cush=200000; // 2 миллиарда
maxk=0;
clrscr();
for (k=0;k<N;k++) {
D[k]=28+float(random(400))/100;
P[k]=100/pow((D[k]/1200+1),T[k]/30);
P1[k]=P[k];
Q[k]=Q1[k]=0;
if (D[maxk]<D[k]) maxk=k;
printf(" %f %f",D[k],P[k]);
}
Q1[maxk]=Q[maxk]=int(Cush/(P[maxk]*1.001));
Cush=Cush-Q[maxk]*P[maxk]*1.001;
printf(" %d %f %f",maxk,Q1[maxk],Cush);
S=0;
for (k=0;k<N;k++) S+=Q[k]*P[k];
for (i=1;i<=21;i++) {
maxk=0;
for (k=0;k<N;k++) {
D[k]=28-i/10+float(random(200))/100;
P[k]=100/pow((D[k]/1200+1),(T[k]-i)/30);
if (D[maxk]<D[k]) maxk=k;
}
for (k=0;k<N;k++) {
if (Q[k]>0)
if (D[k]+1<D[maxk]) {
Cush+=P[k]*Q[k]*0.999;
Q[maxk]+=int(Cush/(P[maxk]*1.001));
Cush=Cush-Q[maxk]*P[maxk]*1.001;
Q[k]=0;
}
}
printf(" деньги %f",Cush);
for (k=0;k<N;k++) {
printf(" Q[%d]= %f",k,Q[k]);
}
asm {
mov ax,0
int 16h
}
}
S1=S2=0;
for (k=0;k<N;k++) {
S1+=Q1[k]*P[k];
S2+=Q[k]*P[k];
}
printf(" нач.ст-ть :%fбыло бы :%f есть:%f",S,S1,S2);
}
Программа 4.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
const N=8;
void main(void) {
float Q[N], // кол-во
P[N], // цена
T[N], // дней до погашения
D[N], // дох-ть эффективная
Q1[N], // нач. портфель
P1[N], // нач. цены
Cush,QQ,S; // деньги
float S1,S2;
int k,maxk,i;
T[0]=58;
T[1]=37;
T[2]=72;
T[3]=107;
T[4]=135;
T[5]=163;
T[6]=303;
T[7]=359;
randomize();
Cush=0;
maxk=0;
clrscr();
for (k=0;k<N;k++) {
Q1[k]=Q[k]=100;
D[k]=28+float(random(400))/100;
P[k]=100/pow((D[k]/1200+1),T[k]/30);
}
S=0;
for (k=0;k<N;k++) S+=Q[k]*P[k];
for (i=1;i<=21;i++) {
maxk=0;
for (k=0;k<N;k++) {
D[k]=28-i+float(random(400))/100;
P[k]=100/pow((D[k]/1200+1),(T[k]-i)/30);
if (D[maxk]<D[k]) maxk=k;
}
for (k=0;k<N;k++) {
if (Q[k]>0)
if (D[k]+1<=D[maxk]) {
Cush+=P[k]*Q[k]*0.999;
QQ=int(Cush/(P[maxk]*1.001));
Q[maxk]+=QQ;
Cush=Cush-QQ*P[maxk]*1.001;
Q[k]=0;
}
}
printf(" деньги %f",Cush);
for (k=0;k<N;k++) {
printf(" Q[%d]= %f",k,Q[k]);
}
asm {
mov ax,0
int 16h
}
}
S1=S2=0;
for (k=0;k<N;k++) {
S1+=Q1[k]*P[k];
S2+=Q[k]*P[k];
}
printf(" нач.ст-ть :%fбыло бы :%f есть:%f",S,S1,S2);
}
Программа 5.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
const N=8;
void main(void) {
float Q[N], // кол-во
P[N], // цена
T[N], // дней до погашения
D[N], // дох-ть эффективная
Q1[N], // нач. портфель
P1[N], // нач. цены
Cush,S; // деньги
float S1,S2;
int k,maxk,i;
T[0]=58;
T[1]=37;
T[2]=72;
T[3]=107;
T[4]=135;
T[5]=163;
T[6]=303;
T[7]=359;
randomize();
Cush=200000; // 2 миллиарда
maxk=0;
clrscr();
for (k=0;k<N;k++) {
D[k]=28+float(random(400))/100;
P[k]=100/pow((D[k]/1200+1),T[k]/30);
P1[k]=P[k];
Q[k]=Q1[k]=0;
if (D[maxk]<D[k]) maxk=k;
printf(" %f %f",D[k],P[k]);
}
Q1[maxk]=Q[maxk]=int(Cush/(P[maxk]*1.001));
Cush=Cush-Q[maxk]*P[maxk]*1.001;
printf(" %d %f %f",maxk,Q1[maxk],Cush);
S=0;
for (k=0;k<N;k++) S+=Q[k]*P[k];
for (i=1;i<=21;i++) {
maxk=0;
for (k=0;k<N;k++) {
D[k]=28+i+float(random(400))/100;
P[k]=100/pow((D[k]/1200+1),(T[k]-i)/30);
if (D[maxk]<D[k]) maxk=k;
}
for (k=0;k<N;k++) {
if (Q[k]>0)
if (D[k]+1<D[maxk]) {
Cush+=P[k]*Q[k]*0.999;
Q[maxk]+=int(Cush/(P[maxk]*1.001));
Cush=Cush-Q[maxk]*P[maxk]*1.001;
Q[k]=0;
}
}
printf(" деньги %f",Cush);
for (k=0;k<N;k++) {
printf(" Q[%d]= %f",k,Q[k]);
}
asm {
mov ax,0
int 16h
}
}
S1=S2=0;
for (k=0;k<N;k++) {
S1+=Q1[k]*P[k];
S2+=Q[k]*P[k];
}
printf(" нач.ст-ть :%fбыло бы :%f есть:%f",S,S1,S2);
}
Программа 6.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
const N=8;
void main(void) {
float Q[N], // кол-во
P[N], // цена
T[N], // дней до погашения
D[N], // дох-ть эффективная
Q1[N], // нач. портфель
P1[N], // нач. цены
Cush,QQ,S; // деньги
float S1,S2;
int k,maxk,i;
T[0]=58;
T[1]=37;
T[2]=72;
T[3]=107;
T[4]=135;
T[5]=163;
T[6]=303;
T[7]=359;
randomize();
Cush=0;
maxk=0;
clrscr();
for (k=0;k<N;k++) {
Q1[k]=Q[k]=100;
D[k]=28+float(random(400))/100;
P[k]=100/pow((D[k]/1200+1),T[k]/30);
}
S=0;
for (k=0;k<N;k++) S+=Q[k]*P[k];
for (i=1;i<=21;i++) {
maxk=0;
for (k=0;k<N;k++) {
D[k]=28+i+float(random(400))/100;
P[k]=100/pow((D[k]/1200+1),(T[k]-i)/30);
if (D[maxk]<D[k]) maxk=k;
}
for (k=0;k<N;k++) {
if (Q[k]>0)
if (D[k]+1<=D[maxk]) {
Cush+=P[k]*Q[k]*0.999;
QQ=int(Cush/(P[maxk]*1.001));
Q[maxk]+=QQ;
Cush=Cush-QQ*P[maxk]*1.001;
Q[k]=0;
}
}
printf(" деньги %f",Cush);
for (k=0;k<N;k++) {
printf(" Q[%d]= %f",k,Q[k]);
}
asm {
mov ax,0
int 16h
}
}
S1=S2=0;
for (k=0;k<N;k++) {
S1+=Q1[k]*P[k];
S2+=Q[k]*P[k];
}
printf(" нач.ст-ть :%fбыло бы :%f есть:%f",S,S1,S2);
}
Приложение 5. Последние цены и эффективная доходность к погашению на рынке РКО с 1 по 30 апреля 1997 г.
Дата
№ бумаги
Цена посл
Дох-ть эфф-я к погашению
Дата погашения
Налог на ЦБ(в %)
01.04.97
21020
99,25
27,78
10.04.97
0
01.04.97
21021
95,82
29,98
15.05.97
15
01.04.97
22004
97,90
32,90
24.04.97
0
01.04.97
22006
93,00
33,61
19.06.97
0
01.04.97
22007
90,00
28,84
24.07.97
15
01.04.97
22008
86,90
29,47
28.08.97
15
01.04.97
22009
84,10
30,64
25.09.97
15
01.04.97
24001
73,00
28,60
12.03.98
15
02.04.97
21020
99,25
31,30
10.04.97
0
02.04.97
21021
95,69
31,70
15.05.97
15
02.04.97
22004
97,92
34,07
24.04.97
0
02.04.97
22005
94,90
33,47
29.05.97
0
02.04.97
22006
93,19
33,07
19.06.97
0
02.04.97
22007
90,99
26,02
24.07.97
15
02.04.97
22008
86,94
29,57
28.08.97
15
02.04.97
22009
84,00
31,04
25.09.97
15
02.04.97
24001
73,00
28,69
12.03.98
15
03.04.97
21020
99,30
33,14
10.04.97
0
03.04.97
21021
95,60
33,18
15.05.97
15
03.04.97
22004
98,01
34,08
24.04.97
0
03.04.97
22005
95,09
32,74
29.05.97
0
03.04.97
22006
93,31
32,88
19.06.97
0
03.04.97
22007
90,55
27,63
24.07.97
15
03.04.97
22008
87,10
29,38
28.08.97
15
03.04.97
22009
84,00
31,22
25.09.97
15
03.04.97
24001
72,95
28,83
12.03.98
15
04.04.97
21020
99,40
32,45
10.04.97
0
04.04.97
21021
95,80
32,37
15.05.97
15
04.04.97
22004
98,20
32,18
24.04.97
0
04.04.97
22005
95,20
32,55
29.05.97
0
04.04.97
22006
93,39
32,90
19.06.97
0
04.04.97
22007
90,83
27,00
24.07.97
15
04.04.97
22008
86,70
30,59
28.08.97
15
04.04.97
22009
84,06
31,27
25.09.97
15
04.04.97
24001
72,80
29,11
12.03.98
15
07.04.97
21020
99,65
33,98
10.04.97
0
07.04.97
21021
96,00
33,21
15.05.97
15
07.04.97
22004
98,40
33,45
24.04.97
0
07.04.97
22005
95,44
32,64
29.05.97
0
07.04.97
22006
93,64
32,89
19.06.97
0
07.04.97
22007
91,20
26,56
24.07.97
15
07.04.97
22008
88,40
26,91
28.08.97
15
07.04.97
22009
84,30
31,29
25.09.97
15
07.04.97
24001
73,05
29,05
12.03.98
15
08.04.97
21020
99,75
32,40
10.04.97
0
08.04.97
21021
96,65
28,30
15.05.97
15
08.04.97
22004
98,45
34,38
24.04.97
0
08.04.97
22005
95,51
32,75
29.05.97
0
08.04.97
22006
93,84
32,25
19.06.97
0
08.04.97
22007
91,20
26,81
24.07.97
15
08.04.97
22008
87,25
30,04
28.08.97
15
08.04.97
22009
84,70
30,59
25.09.97
15
08.04.97
24001
73,00
29,20
12.03.98
15
09.04.97
21020
99,87
20,27
10.04.97
0
09.04.97
21021
96,20
33,24
15.05.97
15
09.04.97
22004
98,55
34,16
24.04.97
0
09.04.97
22005
95,70
31,93
29.05.97
0
09.04.97
22006
93,60
34,06
19.06.97
0
09.04.97
22007
91,00
27,73
24.07.97
15
09.04.97
22008
87,60
29,35
28.08.97
15
09.04.97
22009
84,85
30,44
25.09.97
15
09.04.97
24001
73,20
29,03
12.03.98
15
11.04.97
21021
97,00
27,45
15.05.97
15
11.04.97
21022
92,08
28,55
10.07.97
15
11.04.97
22004
99,10
23,49
24.04.97
0
11.04.97
22005
96,20
29,21
29.05.97
0
11.04.97
22006
94,25
31,30
19.06.97
0
11.04.97
22007
91,70
25,93
24.07.97
15
11.04.97
22008
88,25
28,09
28.08.97
15
11.04.97
22009
85,39
29,60
25.09.97
15
11.04.97
24001
73,50
28,82
12.03.98
15
14.04.97
21021
97,01
30,04
15.05.97
15
14.04.97
21022
92,39
28,32
10.07.97
15
14.04.97
22004
99,07
31,75
24.04.97
0
14.04.97
22005
96,54
28,26
29.05.97
0
14.04.97
22006
94,50
31,24
19.06.97
0
14.04.97
22007
91,79
26,40
24.07.97
15
14.04.97
22008
88,00
29,38
28.08.97
15
14.04.97
22009
85,50
29,90
25.09.97
15
14.04.97
24001
73,50
29,08
12.03.98
15
15.04.97
21021
97,52
25,49
15.05.97
15
15.04.97
21022
92,50
28,21
10.07.97
15
15.04.97
22004
99,45
19,47
24.04.97
0
15.04.97
22005
96,69
27,59
29.05.97
0
15.04.97
22006
95,05
28,39
19.06.97
0
15.04.97
22007
92,00
25,94
24.07.97
15
15.04.97
22008
88,01
29,57
28.08.97
15
15.04.97
22009
86,08
28,76
25.09.97
15
15.04.97
24001
73,60
29,04
12.03.98
15
16.04.97
21021
97,84
22,79
15.05.97
15
16.04.97
21022
92,86
27,09
10.07.97
15
16.04.97
22004
99,60
14,95
24.04.97
0
16.04.97
22005
96,80
27,25
29.05.97
0
16.04.97
22006
95,10
28,53
19.06.97
0
16.04.97
22007
92,90
23,08
24.07.97
15
16.04.97
22008
88,49
28,50
28.08.97
15
16.04.97
22009
86,80
27,30
25.09.97
15
16.04.97
24001
73,57
29,17
12.03.98
15
17.04.97
21021
97,55
26,98
15.05.97
15
17.04.97
21022
92,43
29,18
10.07.97
15
17.04.97
22004
99,64
14,98
24.04.97
0
17.04.97
22005
96,60
29,75
29.05.97
0
17.04.97
22006
95,19
28,43
19.06.97
0
17.04.97
22007
92,03
26,37
24.07.97
15
17.04.97
22008
88,75
28,02
28.08.97
15
17.04.97
22009
86,70
27,70
25.09.97
15
17.04.97
24001
73,61
29,21
12.03.98
15
21.04.97
21021
97,85
27,47
15.05.97
15
21.04.97
21022
92,45
30,57
10.07.97
15
21.04.97
22004
99,81
14,09
24.04.97
0
21.04.97
22005
96,81
30,78
29.05.97
0
21.04.97
22006
95,20
30,32
19.06.97
0
21.04.97
22008
88,21
30,41
28.08.97
15
21.04.97
22009
86,25
29,47
25.09.97
15
21.04.97
24001
73,51
29,70
12.03.98
15
22.04.97
21021
97,90
27,97
15.05.97
15
22.04.97
21022
92,65
30,09
10.07.97
15
22.04.97
22004
99,90
4,58
24.04.97
0
22.04.97
22005
96,95
30,16
29.05.97
0
22.04.97
22006
95,45
29,16
19.06.97
0
22.04.97
22007
92,55
25,88
24.07.97
15
22.04.97
22008
88,72
29,21
28.08.97
15
22.04.97
22009
86,32
29,50
25.09.97
15
22.04.97
24001
74,00
29,14
12.03.98
15
23.04.97
21021
98,17
25,27
15.05.97
15
23.04.97
21022
93,05
28,72
10.07.97
15
23.04.97
22004
99,91
5,51
24.04.97
0
23.04.97
22005
97,20
28,34
29.05.97
0
23.04.97
22006
95,50
29,33
19.06.97
0
23.04.97
22007
92,61
25,94
24.07.97
15
23.04.97
22008
88,90
28,94
28.08.97
15
23.04.97
22009
86,55
29,14
25.09.97
15
23.04.97
24001
74,05
29,17
12.03.98
15
25.04.97
21021
98,70
19,30
15.05.97
15
25.04.97
21022
93,75
26,35
10.07.97
15
25.04.97
22005
97,60
25,52
29.05.97
0
25.04.97
22006
95,99
26,94
19.06.97
0
25.04.97
22008
89,89
26,58
28.08.97
15
25.04.97
22009
87,55
27,14
25.09.97
15
25.04.97
22010
85,25
27,57
23.10.97
15
25.04.97
24001
75,00
28,09
12.03.98
15
28.04.97
21021
98,70
22,74
15.05.97
15
28.04.97
21022
93,50
28,61
10.07.97
15
28.04.97
22005
97,70
26,79
29.05.97
0
28.04.97
22006
96,40
25,45
19.06.97
0
28.04.97
22007
93,30
24,74
24.07.97
15
28.04.97
22009
88,50
25,40
25.09.97
15
28.04.97
22010
86,50
25,44
23.10.97
15
28.04.97
24001
76,01
27,02
12.03.98
15
29.04.97
21021
98,95
19,18
15.05.97
15
29.04.97
21022
94,04
26,47
10.07.97
15
29.04.97
22005
97,90
25,15
29.05.97
0
29.04.97
22006
96,50
25,20
19.06.97
0
29.04.97
22007
93,80
23,06
24.07.97
15
29.04.97
22009
88,60
25,33
25.09.97
15
29.04.97
22010
86,35
25,89
23.10.97
15
29.04.97
24001
76,48
26,48
12.03.98
15
30.04.97
21021
99,20
15,16
15.05.97
15
30.04.97
21022
94,56
24,38
10.07.97
15
30.04.97
22005
98,50
18,20
29.05.97
0
30.04.97
22006
96,78
23,55
19.06.97
0
30.04.97
22008
90,70
25,33
28.08.97
15
30.04.97
22009
89,45
23,46
25.09.97
15
30.04.97
22010
86,63
25,46
23.10.97
15
30.04.97
24001
77,30
25,50
12.03.98
15