|
Valeur de N :
Courbe du modèle Black et Scholes pour différentes valeurs de N
(où par exemple sol.N.50 représente la solution quand N=50)
Courbe du modèle Black et Scholes pour différentes valeurs de N
(où par exemple sol.N.50 représente la solution quand N=50)
D'après le graphique, plus on augmente N, plus les courbes se rapprochent les unes des autres. En effet plus N est grand, plus le maillage est serré (c'est a dire h est petit) donc on a une meilleure approximation.
Pour notre programme nous prendrons N=800, elle donne apparemment une bonne approximation sans pour autant avoir un maillage très serré.
Valeur de L :
Courbe du modèle Black et Scholes pour différentes valeurs de L
(où par exemple sol.L.2K représente la solution quand L=2K)
Courbe du modèle Black et Scholes pour différentes valeurs de L
(où par exemple sol.L.2K représente la solution quand L=2K)
Nous rappelons que L représente la limite du domaine de calcul et que K est le prix que l'on payera l'action le jour de l'échéance de l'option. Donc logiquement la valeur de L doit être plus grande que la valeur de K.( Ce que nous indique également le graphique pour la valeur L=0,5K.) On voit graphiquement que L=2K est la meilleure. Donc dans notre programme nous prendrons L=2K.
Programme en Fortran77:
program blackscholes
parameter (N=800)
real u(N), X(N), u1(N)c Commande pour demmander la valeur de sigma
write(6,*)'donner sigma'
read (5,*)
c Definir les X
r=0.02
c sigma=0.05
XK=35
XL=2*XK
dX=(XL)/(N-1)
T=2.
do i=1,N
X(i)=(i-1)*dX
u(i)=max(0., X(i)-XK)
enddodt=-dX**2/(sigma**2*XL**2 + r*XL*dX)
temps=T
do KT=1,1000000
dt=-min(abs(dt),temps)
temps=temps+dt
do i=2,N-1
P=sigma**2*X(i)**2/2*(u(i+1) - 2*u(i) + u(i-1))/dX**2
u1(i)=u(i) + dt*(- r*X(i)*(u(i+1) - u(i-1))/(2*dX)-P + r*u(i))
enddoc condition limite
u1(1)=0
c u1(N)=u1(N-1)+dX
u1(N)= - XK*exp (r*(temps - KT)) + XLc pour l'itération suivante
do i=1,N
u(i)=u1(i)
enddoif (temps .le.0) goto 1
enddo
1 continue
print *,temps
do i=1,N
write(1,*) X(i), u(i), max(0.,x(i)-XK)
enddo
stop 'fin'
end