Entonces, esta podría ser una pregunta bastante trivial, pero estoy teniendo problemas con el cálculo del valor de una opción de compra utilizando métodos de Monte Carlo y un método de Ecuaciones en Derivadas Parciales (PDE).
Cuando empecé, primero usé los parámetros:
Precio Spot = 0 a 20
Precio de Ejercicio = 10
Tasa de Interés = 0
Volatilidad = 0.25
Tiempo = 1
Y ambos métodos de Monte Carlo y PDE dieron resultados idénticos. Sin embargo, cuando cambié el rango de precio spot de 90 a 110 y el precio de ejercicio a 100, ¡ahora los métodos de Monte Carlo y PDE dan resultados diferentes! Por ejemplo, con un precio spot de 110, el método de Monte Carlo da (aproximadamente) 16.19 como precio de la opción. Sin embargo, el método de PDE en cambio da 10 como el precio. Y lo curioso es que esto sucede con cada código de Monte Carlo y PDE que pruebo (encontré algunos en internet y los he estado probando). ¿Alguien puede decirme por qué sucede esto?
Gracias de antemano.
Editar: Solo como un pequeño favor, ¿alguien puede decirme qué necesita ser modificado en este código para obtener el resultado correcto? Obtuve el código del enlace que mencioné a continuación
r=0.0; % Tasa de Interés
sigma=0.25; % Volatilidad del activo subyacente
M=1600; % Número de puntos en el tiempo
N=160; % Número de puntos de precio de la acción
Smax=110; % Precio máximo de la acción considerado
Smin=90; % Precio mínimo de la acción considerado
T=1.; % Maduración (vencimiento) del contrato
E=100; % Precio de ejercicio del activo subyacente
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dt=(T/M); % Paso en el tiempo
ds=(Smax-Smin)/N; % Paso en el precio
% Inicializando la matriz del valor de la opción
v(1:N,1:M) = 0.0;
% Condiciones iniciales establecidas por la recompensa de la Opción de Compra Europea en el vencimiento: V(S,T)=máx(S-E,0);
v(1:N,1)=max((Smin+(0:N-1)*ds-E),zeros(size(1:N)))';
%v(1:N,1)=max((Smin+(0:N-1)*ds-E),(5))';
% Condiciones de frontera establecidas por la Opción de Compra Europea:
v(1,2:M)=zeros(M-1,1)'; % V(0,t)=0
v(N,2:M)=((N-1)*ds+Smin)-E*exp(-r*(1:M-1)*dt); % V(S,t)=S-Eexp[-r(T-t)] conforme S -> infinito.
% Determinando los coeficientes de la matriz del algoritmo explícito
aa=0.5*dt*(sigma*sigma*(1:N-2).*(1:N-2)-r*(1:N-2))';
bb=1-dt*(sigma*sigma*(1:N-2).*(1:N-2)+r)';
cc=0.5*dt*(sigma*sigma*(1:N-2).*(1:N-2)+r*(1:N-2))';
% Implementando el algoritmo explícito
for i=2:M,
v(2:N-1,i)=bb.*v(2:N-1,i-1)+cc.*v(3:N,i-1)+aa.*v(1:N-2,i-1);
end
% Reversión de los componentes de tiempo en la matriz ya que la solución de la ecuación de Black-Scholes fue realizada hacia atrás
v=fliplr(v);
0 votos
Debes estar haciendo algo mal. ¿Estás seguro de que utilizas el mismo tipo de datos en la entrada, por ejemplo, tasas anualizadas y volatilidades, tasas expresadas en % y no en valores absolutos, etc.? Además, ¿es el MC el que falla o el PDE, quiero decir, ¿comparaste con el precio analítico de BS?
0 votos
@ThePlowKing ¿Tienes Matlab?
1 votos
Si $S_0=110$, $K=100$, $\tau=1$, $r=0$ y $\sigma=0.25$ y $q=0$ entonces el precio de la opción de compra es de $16.19$. Verificar blsprice$(110,100,0,1,0.25,0)$
0 votos
La estabilidad de tu método numérico no es suficiente.
0 votos
@Behrouz Maleki lo siento por eso, de hecho obtuve alrededor de 16.19 para el método de Monte Carlo, accidentalmente utilicé mi antiguo precio de ejercicio de 98, por eso puse 17.4174, así que editaré mi publicación ahora. Y sí, tengo MATLAB, de hecho descargué dos códigos de EDP de allí (además del que escribí en C ++) y todos parecen darme un valor de 12 para el precio de la opción por alguna razón. Por ejemplo, utilicé el código de EDP de MATLAB de este enlace: ehu.eus/aitor/irakas/fin/apuntes/pde.pdf (como en la página 47) y cuando ingresé los valores anteriores, en lugar de eso obtuve 12 como precio de la opción.
0 votos
@Quantuple Creo que es el código PDE el que falla, por lo que puedo decir los valores están bien (especialmente porque funcionaron en el rango de 0 a 20) así que realmente no estoy seguro...
0 votos
No entiendo tu respuesta. ¿Cómo no puedes estar seguro de cuál falla? Solo tienes que comparar con el precio devuelto por la fórmula BS...