TP 3: Options Americaines 1 Schema d`Euler Explicite

publicité
1
1 SCHEMA D’EULER EXPLICITE
Méthodes Numériques pour les EDP en Finances - ENSTA - M2 - S1-1
TP 3: Options Americaines
18 Novembre 2008
On cherche une approximation numérique de la fonction put américain p = p(t, s),
(t, s) ∈ Ω := (0, T ) × (0, Smax ) solution du système d’inéquation aux dérivées partielles suivant:
min(∂t p + Ap, p − ϕ) = 0,
p(t, Smax ) = 0, t ∈ (0, T ),
p(0, s) = ϕ(s)
dans Ω,
(1a)
(1b)
(1c)
2
avec Av := − σ2 s2 ∂s,s v − rs ∂s v + rv. où σ, r, K sont des constantes strictement
positives. Pour les applications numériques on prendra les paramètres financiers
suivant: K = 100, Smax = 200, T = 1, σ = 0.2 et r = 0.1. On considèrera deux
payoff ϕ1 ou ϕ2 pour les tests: Payoff classique (payoff=1):
ϕ1 (x) := (K − x)+
et un payoff créneau (payoff=2):
ϕ2 (x) :=
(i.e. ϕ2 (x) =
1
K
2
pour
K
2
K
1K
(x)
2 2 ≤x≤K
≤ x ≤ K et ϕ2 (x) = 0 sinon).
Schema d’Euler Explicite
On reprend les notations des precedents TP: maillage sj = jh, j = 0, . . . , M + 1,
h = Smax /(M + 1), et tn = nδt, 0 ≤ n ≤ N, δt = T /N. On cherche Pjn une
approximation de P (tn , sj ). On choisi de travailler avec comme inconnue le vecteur


P0n


P n :=  ...  .
PIn
On considère le schéma explicite décentré à droite (schéma EE), i.e.:

n+1
n −P n
n
n
n
Pj
−Pjn
Pj+1

n+1
j
σ2 2 −Pj−1 +2Pj −Pj+1
n

+ 2 sj
− rsj
+ rPj , Pj − φ(sj ) = 0.
 min
δt
h2
h



0 ≤ j ≤ M,
n+1
PM
+1
=0
2
2 UN SCHÉMA D’EULER IMPLICITE
n
pour n = 0, . . . , N − 1 (et aussi par convention P−1
= 0). On note A la matrice de
discrétisation de A, de taille M + 1, t.q.
(AP )j := +
σ 2 2 −Pj−1 + 2Pj − Pj+1
Pj+1 − Pj
sj
− rsj
+ rPj ,
2
2
h
h
0 ≤ j ≤ M,
(avec la convention P−1 = 0). NB: A est la même matrice que pour le schéma aux
différences finies décentré à droite de l’option europénne correspondante.
Notons aussi g le vecteur de composantes gj := ϕ(sj ). On obtient alors l’écriture
équivalente du schema (EE), dans RM +1 :
P n+1 − P n
+ AP n , P n+1 − g) = 0,
δt
P 0 = g.
min(
n = 0, . . . , N − 1,
(2)
(le ”min” étant pris composante par composante). On vérifie enfin que l’itération
principale s’écrit aussi
P n+1 = max(P n − δtAP n , g).
• Télécharger le programme tp3.sci à complèter. Il s’agit du programme du
précédent TP. Il y a quelques modifications sur la partie graphique puisqu’on ne
possède plus la solution exacte ici. Pour simplifier on travaille avec des matrices
pleines (TYPE=FULL).
• Modifier la variable METHODE à la valeur ’EE-AMER’ (calcul pour l’option américaine),
et programmer le schema (EE) correspondant.
• Vérifier que le programme donne une solution stable avec les paramètres M=20 et
N=20, mais qu’il y a un problème de stabilité avec d’autres paramètres (par ex. M=50
avec N=20).
2
Un schéma d’Euler Implicite
On désire programmer le schéma d’Euler Implicite (EI) en temps qui s’écrit naturellement comme suit:
P n+1 − P n
+ AP n+1 , P n+1 − g) = 0,
δt
P 0 = g.
min(
n = 0, . . . , N − 1,
(3)
Posons B = I +δtA et b = P n : pour chaque n, on doit trouver x solution du système
non linéaire
min(Bx − b, x − g) = 0.
(4)
On prendra alors P n+1 = x. On propose de tester deux algorithmes pour résoudre
(4).
2 UN SCHÉMA D’EULER IMPLICITE
2.1
3
Algorithme de Brennan et Schwartz - ou ”méthode UL”
Il existe une méthode directe pour résoudre min(Bx−b, x−g) = 0, lorsque la solution
cherchée a un ”profil” particulier.1 L’idée est d’écrire une décomposition de type
B = UL (L: matrice triangulaire inférieure et U: matrice triangulaire supérieure
avec Uii = 1), et d’espérer avoir l’équivalence
min(ULx − b, x − g) = 0 ⇔ min(Lx − U −1 b, x − g) = 0.
Enfin, on utilise que la deuxième écriture possède une résolution explicite simple:
(i) résolution de c = U −1 b: algorithme de montée;
(ii) résolution de min(Lx − c, x − g) = 0: algorithme de descente projetée.
• Définir METHODE==’EI-AMER-UL’ dans votre fichier principal.
• Programmer la décomposition B = UL d’une matrice tridiagonale B quelconque:
On pourra télécharger le fichier ul_q.sci (et le renommer en ul.sci), puis compléter
la fonction function [U,L]=ul(B). Tester la décomposition sur la matrice B :=
I + δtA dans le cas M = 10.
On pourra pour cela introduire dans la boucle principale un test à la première
itération n=0:
case METHODE==’EI-AMER-UL’
if n==0
getf ul.sci; // loading functions
// Here decompose B=UL and test the decomposition
end
...
• Programmer l’algorithme de descente et de descente projetée (compléter les fonctions descente et descente_p dans ul.sci). Tester la fonction descente.
• Programmer le schema en utilisant les algorithmes de montée (fourni) et de descente projetée. Tester la méthode avec N = 20, M + 1 = 50 (Payoff classique)
Vérifier on resoud bien min(Bx − b, x − g) = 0 à chaque itération en temps. Pour
cela on pourra rajouter un affichage de || min(Bx − b, x − g)||∞ après le calcul du
nouveau P dans l’itération principale:
Pold=P;
P=...
1
Dans le cas du put américain à 1 actif et pour une approche par éléments finis, voir la Réf. Jaillet, Lamberton, Lapeyre, 1990. L’algorithme a été initialement introduit par Brennan et Schwartz
pour une approche par éléments finis.
4
3 UNE MÉTHODE DE SPLITTING
err=norm(min(B*P-Pold,P-P0(s)));
printf(’Verif: min(B x- b, x-g)= %f\n’, err);
• Reprendre le test avec le payoff particulier correspondant à ϕ2 . Vérifier dans ce
cas qu’on n’a pas min(Bx − b, x − g) 6= 0 (dès n = 0).
2.2
Une méthode de Newton
On veut appliquer une méthode de type Newton pour resoudre F (x) = 0 avec
F (x) := min(Bx − b, x − g).
On considère l’algorithme suivant: itérer sur k ≥ 0 (x0 point de départ à choisir)
xk+1 = xk − F ′ (xk )−1 F (xk ),
jusqu’à ce que F (xk ) = 0 (ou encore xk+1 = xk ). On prendra la définition suivante
de F ′ (xk ) (ligne par ligne):
Bi,j if (Bxk − b)i ≤ (xk − g)i,
′ k
F (x )i,j :=
δi,j otherwise.
• Fixer le paramêtre SCHEMA=’EI-AMER-N’.
• Programmer l’algorithme en complétant la fonction se trouvant dans newton_q.sci
(fichier à télécharger et à renommer en newton.sci).
• Tester la méthode avec N = 20, M = 50 avec le Payoff classique ϕ1 .
• Tester avec le payoff particulier ϕ2 , vérifier que la méthode fonctionne encore.
NB. Il existe d’autres méthodes à peu près équivalentes: Méthode ”Primale-Duale”,
méthode d’itération sur les politiques, algorithme de Howard.
3
Une méthode de splitting
On propose une méthode simplifiée:
P n+1,(1) − P n
+ AP n+1,(1) = 0,
δt
t.q. P n+1 = max(P n+1,(1) , g)
Calculer P n+1,(1) t.q.
(5)
Calculer P n+1
(6)
• Programmer cette méthode (SCHEMA=EI-SPLIT). Quel avantage voyez-vous par
rapport à la méthode de Howard ?
• Proposer une variante de type Crank-Nicolson.
Téléchargement