You are on page 1of 7

UNIVERSIDAD ANDRS BELLO DEPARTAMENTO DE CIENCIAS FSICAS

Curso: Econofsica y nanzas Alumno: Eduardo Jeraldo

Trabajo Econofsica 2013-II


1. Preguntas

a) Considere una opcin call, con valor mximo para de tiempo de madurez T. Sea

S = Sm ax ,

strike price

E =

diferencia nita en la regin


y sea

Cnum (S, t)

el valor de la opcin obtenida por

mtodo de

1 S ax y 2 m

0 S Sm ax CBS (S, t)

0tT C (S, t)
como la diferencia de ambas

la solucin analtica de la ecuacin de Black-Scholes para el call anterior en

la misma regin del plano S-t. Dena ahora la funcin funciones

C (S, t) = Cnum (S, t) CBS (S, t)


Es decir, de la Considere y je algunos valores numricos para

C (S, t) es el error que se comete en cada punto entre la solucin exacta y la numrica. Sm ax y T. Estudie ahora el comportamiento funcin C (S, t) cuando el ancho de la red discreta numrica disminuye para al menos

10 casos distintos (es decir, 10 redes ordenadas por tamao de ancho de red decreciente). Graque

C (S, t) en cada caso. Disminuye siempre C (S, t) cuando el ancho de la red decrece?, existe un ancho de red para el cual la funcin C (S, t) tiene el menor valor posible?, es decir,
si se dene

Existe un ancho

C = m ax{|C (S, t)| / 0 S Sm ax C es mnimo? de red para el cual O(S, t)

0 t T}

b) Considere ahora una opcin cticia

con funcin contrato

(S ).

C en el problema (a) obtenga una solucin Utilizando la misma red que minimiza CN (S, t) por medio del mtodo de Crank-Nicholson. numrica para O CN Graque O (S, t) en este caso tambin.

num

num

(S) 6
h=

1 S ax 2 m 3 S 4 max 1 S ax 4 m

\  \  \  \  \ h  \  \  \  \
a b

b=

a=

Figura 1: Funcin de Contrato (S)


1

2.

Respuestas

a) Primero revisamos la solucin exacta de un call en la ecuacin de Black-Scholes.

CBS = S N1 (d1) K er(T t) N2 (d2) x u2 1 N (x) = e 2 du 2 S + ( r + 0 ,5 2 ) ln K d1(S ) = T t d2(S ) = d1(S ) T t

(2.1) (2.2)

(2.3) (2.4)

Como vamos a trabajar con Matlab transformamos la ecuacin 2.2 para trabajar con facilidad, para esto usamos la funcin error

2 erf (x) =

x 0

eu du

(2.5)

Esta ecuacin 2.5 nos ayudara a describir una distribucin normal, y es nativa de Matlab. Por lo tanto se escribe 2.2 de la siguiente manera

N ( x) =

1 1 + erf 2

x 2

(2.6)

Ahora escribimos el cdigo para gracar 2.1, usando los siguientes valores: Parmetro Valor 0.02 0.25 100 2 50 Descripcin Taza de inters Volatilidad Valor mximo Tiempo de expiracin Strike Price

r Sm ax T K

Cuadro 1: Valores usados en la simulacin


Luego mostraremos todo el cdigo, por ahora nos centramos en la solucin por diferencias nitas. En clases hablamos de 3 mtodos que implican diferencias nitas, en este trabajo utilizaremos el mtodo con que obtuvimos la solucin, es decir, usaremos el mtodo de diferencias nitas explicito, cuya solucin para la ecuacin de Black-Scholes es la siguiente:

Vst+1 = As Vst1 + Bs Vst + Cs Vst+1

(2.7)

Los parmetros

As , Bs

Cs

estn a continuacin:

As = 0,5 dt ( 2 s2 r s) Bs = [1 ( 2 s2 )] Cs = 0,5 dt ( 2 s2 + r s)
Para iterar est funcin necesitamos condiciones de borde para

Vst+1

VsT = m ax(s K, 0) t V0 = 0
t r(T t) VS = Sm ax K e m ax
Finalmente el cdigo para obtener la solucin exacta y la solucin numrica es:

%Parmetros Iniciales r=0.02; sigma=0.25; Smax=100; T=2; K=Smax/2; dT=1000; % Puntos para el tiempo dS=100; % Puntos para el valor dt=(T/dT); % Paso para el tiempo ds=(Smax)/dS; % Paso para los valores t=0; S=0; for i=1:dS % Solucin exacta d1(i) = (log(S/K) + (r + 0.5sigma^2)(Tt))/(sigmasqrt(Tt)); d2(i) = d1(i) sigmasqrt(Tt); N1(i) = 0.5(1+erf(d1(i)/sqrt(2))); N2(i) = 0.5(1+erf(d2(i)/sqrt(2))); val(i) = S.N1(i) K.exp(r(Tt)).N2(i); S=S+ds;

end

val=val'; % Transpuesta de la matriz v(1:dS,1:dT) = 0.0; % Iniciar matriz de valores %Condiciones iniciales v(1:dS,1)=max(((0:dS1)dsK),zeros(size(1:dS)))'; v(dS,2:dT)=(dSds)Kexp(r(T((1:dT1)dt))); %Clculo de parmetros A, B y C, para todo s aa=0.5dt(sigma^2(1:dS2).(1:dS2)(r)(1:dS2))'; bb=1dt(sigma^2(1:dS2).(1:dS2)+r)'; cc=0.5dt(sigma^2(1:dS2).(1:dS2)+(r)(1:dS2))';

for i=2:dT, %Solucin numrica end v=iplr(v); % Reejar matriz

v(2:dS1,i)=bb.v(2:dS1,i1)+cc.v(3:dS,i1)+aa.v(1:dS2,i1);

El paso en que se transponen la matrices es solo para trabajar los datos de una manera cmoda, por ejemplo, para la solucin exacta Matlab la entrega como una matriz de y es mejor trabajarla como un vector de

dS 1,

1 dS .

Luego se obtiene el error punto a punto y el error mximo:

theta=abs(val(1:dS)v(1:dS,1)); gure, plot(theta), title('Grfico del error punto a punto') maxthe=max(theta)


Finalmente cambiamos el valor de

dS

dT ,

para ver cual entrega el menor

C .

En la tabla se

observan los tamaos de distintas grillas y sus errores mximos.

Puntos de precio 95 130 100 900 50 62 30 62 62 100

Puntos del tiempo 1000 2000 2000 90 2000 2000 500 1000 399 9000

C
1.0876 1.3683 1.1405 1.0297 0.7291 0.5474 1.5288 0.5464 0.5431 1.1413

Cuadro 2: Tamaos de grilla y sus errores para diferencia nita explicita


Los grcos obtenidos para las distintas grillas son los siguientes:

(a) Tamao de grilla 1000 x 95

(b) Tamao de grilla 2000 x 130

(a) Tamao de grilla 2000 x 100

(b) Tamao de grilla 900 x 90

(a) Tamao de grilla 50 x 2000

(b) Tamao de grilla 62 x 2000

(a) Tamao de grilla 30 x 500

(b) Tamao de grilla 62 x 1000

(a) Tamao de grilla 62 x 399

(b) Tamao de grilla 100 x 9000

Para nalizar se ve claramente que el tamao de grilla para el cual es error mximo es mnimo es para

dS = 62

dT = 399.

b) Implementar un algoritmo de Crank-Nicholson es un poco complicado ya que hay que invertir una matriz y muchas veces se hace difcil escribir el algoritmo que lo haga, para el caso de Crank-Nicholson la ecuacin para iterar es:

j 1 1 j j j 1 i Vij i Vij 1 + (1 i )Vi +1 = i Vi1 + (1 + i )Vi + i Vi+1


Donde las constantes son:

(2.8)

dt 4

S S2 r ds ds

dt 2

S2 +r ds

dt 4

S S2 +r ds ds

El siguiente paso es escribir esto en forma de ecuacin matricial y luego resolver. El cdigo en Matlab es:

K=50; r=0.02; T=2; sig=0.25; Smax=100; N=62; M=399; Ds =Smax/N; Dt=T/M; ME=zeros(N,N); MI=zeros(N,N); S=1Ds:Ds:Smax; V=zeros(N,1); matsol=zeros(N,M); a=round(N/4); b=round(3N/4); V(a:round(N/2))=0:K/(round(N/2)a):K; V(round(N/2):b)=K:K/(round(N/2)b):0; matsol(:,1)=V;

for i=1:1:N

Alpha = 0.5(sig^2)(S(i)^2)(Dt/(Ds^2)); Betha = (r)S(i)(Dt/(2Ds)); Bde = Alpha Betha; De = 1rDt2Alpha; Ade = Alpha + Betha; Bdi= Alpha + Betha; Di= 1+rDt+2Alpha; Adi= Alpha Betha; if i==1 ME(i,i) = 1 + De + 2Bde; ME(i,i+1) = Ade Bde; MI(i,i) = 1 + Di + 2Bdi; MI(i,i+1) = Adi Bdi;
6

elseif i==N else end end

ME(i,i1) = Bde Ade; ME(i,i) = 1 + De + 2Ade; MI(i,i1) = Bdi Adi; MI(i,i) = 1 + Di + 2Adi; ME(i,i1) = Bde; ME(i,i) = 1 + De; ME(i,i+1) = Ade; MI(i,i1) = Bdi; MI(i,i) = 1 + Di; MI(i,i+1) = Adi;

invMI = MI^1;

for k=1:M end

matsol(N,k)=0; matsol(:,k+1)= invMIMEmatsol(:,k);

Finalmente el algoritmo entrega el siguiente grco:

Figura 7: Solucin numrica obtenida por Crank-Nicholson


3. Bibliografa
distribution, error function ,

[1]  Normal

distributions/normal.php.

http://www.alglib.net/specialfunctions/

Diciembre 2013

You might also like