// Mod`ele de Ho et Lee TP0910MMDFA.sce clear ;Nmax=8 ;Tmax=Nmax;delta_t=Tmax/Nmax; pi=0.5 ;delta=1.01;r=0.02; //Une fonction Z0 avec taux actuariel initial independant de T // function z0=Z0(k); z0=(1+r)^(-k*delta_t) ; endfunction; // // une fonction Z0 plus réaliste: smirk de maturité // rr=zeros(Nmax+1);ZZ0=zeros(Nmax+1); for k=0:Nmax; rr(k+1)=r*(1+(1/(30*Nmax))*k*(k-Nmax*3/2)); ZZ0(k+1)=(1+rr(k+1))^(-(k)*delta_t); end; //function z0=Z0(k); z0=ZZ0(k+1) ; endfunction; xset("window",1); 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; //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; // 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