//TP9: Frontière d'exercice du Put Américain
//Corrigé

//Exercice 1 : reprise du code du TP8 pour le calcul de S(i,j) et PPamer)
clear;
n=30;T=1;delta_t=T/n;S0=100;K=S0;sigma=0.4;r=0.05;
up=exp(sigma*sqrt(delta_t));down=exp(-sigma*sqrt(delta_t));
R=exp(r*delta_t);p=(R-down)/(up-down);
//Calcul des valeurs de l'actif sous jacent S
function s=S(i,j);s=S0*up.^j.*down.^(i-j);endfunction;
//Calcul par récurrence retrograde de la matrice PPamer du Put américain
PPamer=zeros(n+1,n+1); 
for j=0:n, PPamer(n+1,j+1)=max(K-S(n,j),0); end;
for i=n-1:-1:0
    for j=0:i
      PPamer(i+1,j+1)=max(max(K-S(i,j),0),(p*PPamer(i+2,j+2)+(1-p)*PPamer(i+2,j+1))/R);
    end;
end;
//La valeur de S à l'instant t=2/3 s'il y a eu 15 down est 
S(20,5)
//et donc la valeur du Put américain et K-S seront égaux respectivement à 
PPamer(21,6) 
K-S(20,5)
//On constate qu'ils ont la même valeur, ce qui signifie que c'est un point où il faut exercer le Put, si ce n'est déja fait.

//Exercice 2
EPA=-ones(n+1,n+1);// EPA = "Exercer le Put Americain"
for j=0:n
   if S(n,j)<=K then EPA(n+1,j+1)=1; 
   else EPA(n+1,j+1)=0; 
   end;
end;
for i=n-1:-1:0
  for j=0:i
    if max(K-S(i,j),0)>(p*PPamer(i+2,j+2)+(1-p)*PPamer(i+2,j+1))/R then EPA(i+1,j+1)=1;
      else EPA(i+1,j+1)=0;
    end
   end
end;
//On voit dans le code que la matrice EPA est d'abord remplie de "-1" et les coefficients tels que j<=i, sont ensuite remplacés par des "0" si le payoff est plus petit que l'espérance actualisée des 2 valeurs suivantes et par des 1 sinon. 

//Exercice 3:
//Tracé de l'arbre CRR en représentant de façon différente les points en dessous et au dessus de la frontière d'exercice.
scf(1);
for i=0:n
  for j=0:i
    if S(i,j)<2*S0 
        plot2d(i,S(i,j),-2*EPA(i+1,j+1)-2)
    end;
  end;
end;
//Le 3e argument de plot2d est optionnel. Un nombre négatif conduit à un symbole particulier et ici il sera différent selon que EPA est égal à 0 ou 1, et donc selon qu'on se trouve en dessous ou au dessus de la frontière d'exercice.

//Exercice 4
//Par définition de la frontière d'exercice, lorsqu'on se trouve au dessus, il est préférable pour le détenteur d'un Put d'attendre plutôt que d'exercer. C'est le cas dans la région remplie de croix car dans cette région, la valeur du Put américain est strictement supérieure au payoff (que l'on pourrait obtenir en exerçant). Par contre, si 'lon se trouve en dessous, dans la région remplie de losanges, il est préférable d'exercer, plutôt que d'attendre car le payoff est strictement supérieur à l'espérance.

//exercice 5
i=0;
for ii=1:n+1
    if max(EPA(ii,1:ii))==1 then i=i+1 ;
    Frontiere_t(i)=ii-1;
    Frontiere_S(i)=S(ii-1,sum(EPA(ii,1:ii))-1);
    end;
end;
//scf(2)
plot(Frontiere_t,Frontiere_S)
// Une courbe en dents de scie, la frontière d'exercice se superpose au dessin de l'arbre CRR tracé avant et elle marque la frontière entre les croix et les losanges, plus présisément, elle relie les losanges les plus haut.

//Exercice 6 
// 
