// Mod`ele de Ho et Lee  TPL3MASS11 HO&LEE13.sce
clear ;Nmax=8 ;Tmax=Nmax;delta_t=Tmax/Nmax;
pi=0.5 ;delta=1.01;r=0.02;
function z0=Z0(k); z0=(1+r)^(-k*delta_t) ; endfunction;
plot(0 :Nmax,Z0(0 :Nmax)) ;
//Introduction de la fonction èta du modèle
function ee=eta(l,x);
if x==0
ee=(1^l)./(pi+(1-pi)*delta^l);
else ee=delta^l./(pi+(1-pi)*delta^l);
end ;
endfunction;
// repr´esentation des eta extr`emes
xset("window",1);clf(1) ;
Nprime=1000;for x=0 :1 plot(0 :Nprime,eta(0 :Nprime,x)); end ;

//calcul des valeurs du zero coupons: la fonctions 
//Z(n,j,k)=ZZ(n+1,j+1,k+1) où t=n*delta_t, j est le nombre 
//de up et T=k*delta_t. 
ZZ=ones(Nmax+1,Nmax+1,Nmax+1);
for k=0 :Nmax
ZZ(0+1,1,k+1)=Z0(k);
end ;
for n=1 :Nmax
for k=n :Nmax
ZZ(n+1,0+1,k+1)=eta(k-n,0)*ZZ(n-1+1,0+1,k+1)/ZZ(n-1+1,0+1,n+1);
for j=1 :n
ZZ(n+1,j+1,k+1)=eta(k-n,1)*ZZ(n-1+1,j-1+1,k+1)/ZZ(n-1+1,j-1+1,n+1);
end ;
end ;
end ;
// pour s'affranchir de "+1" dans les 3 arguments de ZZ, 
//on introduit la fonction Z:
function z=Z(n,j,k) //t=n*delta_t et T=k*delta_t
z=ZZ(n+1,j+1,k+1);
endfunction;

// Dessins : repr´esentation des ´evolutions possibles de 
//Z(n,j,N) pour N=Nmax
xset("window",2);clf(2) ; N=Nmax ;
//courbes "down"
for j=0:N plot(j :N,Z(j:N,j,N),"-b"); end ;
//courbes "up"
for n1=0 :N
Vecteur=zeros(N-n1+1);
for nn=0 :N-n1
Vecteur(nn+1)=Z(n1+nn,nn,N);
end ;
plot(n1 :N,Vecteur,"--r");
end ;
//pour garder la figure obtenue dans un fichier postcript: 
xs2eps(2,"arbHoLee.eps");

// Calcul du taux actuariel A(t,T) associé au zéro coupon Z(t,T): 
function a=A(n,j,k)
a=exp(-log(Z((n),j,k))'./((k)-(n)))-1 // attention: n<k
endfunction;

//Dessins : repr´esentation des ´evolutions possibles 
//de A(n,j,N) pour N=Nmax
xset("window",3);clf(3) ; N=Nmax ;
//courbes "down"
for j=0:N-1 plot(j:N-1,A((j:N-1),j,N),"-b"); end ;
//courbes "up"
for n1=0 :(N-1)
Vecteur=zeros(N-n1);
for nn=0 :N-n1-1
Vecteur(nn+1)=A(n1+nn,nn,N);
end ;
plot(n1 :N-1,Vecteur,"--r");
end ;
//pour garder la figure obtenue dans un fichier postcript: 
xs2eps(3,"arbHoLee_taux.eps");

//Dessins : repr´esentation des ´evolutions possibles 
//de JJ=A(n,j,n+1) 
//
xset("window",5);clf(5) ; N=Nmax ;
//courbes "down"
for j=0:N-1 
    VecteurA=zeros(N-j);
    for n=j:N-1
        VecteurA(n-j+1)=A(n,j,n+1);
    end;
    plot(j:N-1,VecteurA,"-y");
end;
//courbes "up"
for n1=0 :(N-1)
Vecteur=zeros(N-n1);
for nn=0 :N-n1-1
Vecteur(nn+1)=A(n1+nn,nn,n1+nn+1);
end ;
plot(n1 :N-1,Vecteur,"--g");
end ;
//pour garder la figure obtenue dans un fichier postcript: 
xs2eps(5,"arbHoLee_JJ.eps");



