A continuación se muestra una implementación de la solución numérica de la EDE de Heston utilizando la discretización de Euler. Tarda menos de un segundo en ejecutarse en Mathematica.
Los parámetros de calibración dan un buen ajuste a la superficie de volatilidad utilizando la técnica de la función característica/transformación de Fourier.
Estoy tratando de utilizar el siguiente código para fijar el precio de un derivado exótico mediante simulación MC, pero soy incapaz de igualar la superficie de volatilidad como primer paso. Sospecho que el código está simplemente tomando demasiado tiempo para converger.
¿Hay alguna solución rápida que pueda acelerar este código de forma significativa?
\[Rho] = -0.4042;
v0 = 0.2577^2;
\[Kappa] = 0.2656;
vbar = .1851;
\[Sigma]v = 0.2992;
n = 100;
NPaths = 100;
Tmax = 574/365;
dt = Tmax/n;
dw = RandomVariate[
BinormalDistribution[{Sqrt[dt], Sqrt[dt]}, \[Rho]], {NPaths, n}];
HestonPaths[G0_] :=
Module[{XPaths, X, v},
XPaths = {};
Do[
X = {Log[G0]};
v = {v0};
Do[
v = Append[v,
Abs[Last[v] + \[Kappa] (vbar - Last[v]) dt +
Sqrt[Last[v]] \[Sigma]v dw[[idx, i]][[1]]]];
X = Append[X,
Last[X] - 1/2 Last[v] dt + Sqrt[Last[v]] dw[[idx, i]][[2]]];
, {i, 1, n}];
XPaths = Append[XPaths, X];
, {idx, 1, NPaths}];
Exp[XPaths]
]
ListLinePlot[HestonPaths[500]]