Estoy implementando mi preciador de volatilidad local utilizando el método de diferencias finitas en MATLAB. Parametrizo la superficie de volatilidad implícita utilizando la parametrización SSVI ( Gatheral & Jacquier ), lo que me permite obtener una superficie de volatilidad local bastante suave:
Utilizo la fórmula de Dupire en términos de varianza total implícita $w(k,T)$ , donde $k=\log(K/F_{0,T})$ y interpSsviStineman
se encarga de interpolar la curva de varianza total ATMF y devolver el nivel de varianza total implícito para cualquier $k$ y $T$ :
delta_k = 0.0001;
delta_t = 1e-6;
w_k_t = interpSsviStineman(k, t_, ssvi_param_);
w_k_tm = interpSsviStineman(k, t_-delta_t, ssvi_param_);
w_k_tp = interpSsviStineman(k, t_+delta_t, ssvi_param_);
dwdt = (w_k_tp-w_k_tm)/(2*delta_t);
w_km_t = interpSsviStineman(k-delta_k, t_, ssvi_param_);
w_kp_t = interpSsviStineman(k+delta_k, t_, ssvi_param_);
dwdk = (w_kp_t-w_km_t)/(2*delta_k);
d2wdk2 = (w_kp_t+w_km_t-2*w_k_t)/(delta_k^2);
[kg, ~] = ndgrid(k, t_);
local_var = dwdt./(1-kg./w_k_t.*dwdk+1/4*(-1/4-1./w_k_t+...
kg.^2./w_k_t.^2).*(dwdk).^2 + 1/2*d2wdk2);
local_vol = sqrt(local_var);
Para validar mi implementación, estoy revalorizando las opciones vainilla que utilicé para calibrar la superficie de volatilidad en primer lugar. Si mi implementación fuera correcta, esperaría poder retroceder las mismas volatilidades implícitas utilizadas para generar la superficie de volatilidad local. Este no es el caso y parece que sólo puedo igualar los precios de las opciones AMTF mientras que mi implementación está sobrevalorando las opciones en las alas:
Agradecería cualquier sugerencia que me pueda indicar el error.
¡Salud!
2 votos
¿Puede mostrar el código, por favor?
0 votos
¿Funciona si se fija la superficie de volatilidad implícita en un 10%? ¿Y si es plana al 40%?
0 votos
Sí, tanto con el 10% plano como con el 40% de vol. plano estoy echando atrás los mismos IVs.
0 votos
Creo que puedes tener un error en la fórmula de Dupire. Puedes editar la pregunta con la fórmula que utilizas y cómo la discretizas (tanto el tiempo como el espacio de la huelga). Además, ¿qué esquema de pasos utilizas y cuántos puntos de tiempo y espacio?
0 votos
He editado la pregunta con la fórmula de Dupire. Creo que es correcta, de lo contrario supongo que también los precios ATMF no serían correctos. Por ahora sigo utilizando una malla uniforme muy densa (600 puntos para el precio de la acción y 1000 para la dimensión temporal). Se utiliza el método de diferencias finitas de Crank-Nicolson.
4 votos
Tu fórmula de LV parece estar bien a primera vista, ¿quizás un problema en la EDP (cuál estás resolviendo) o en el solucionador? Ejecutar una rápida simulación MC debería ser suficiente para determinar si tienes un problema en la EDP o en la propia superficie de BT. Haz exactamente lo mismo que harías en el caso de la BS (por ejemplo, Euler en los retornos logarítmicos) y simplemente interpola la volatilidad instantánea a partir de la superficie de vol local. A continuación, valore una opción OTM y compruebe el resultado.
1 votos
Muchas gracias por la sugerencia @Quantuple. La implementación de MC muestra efectivamente que tengo un error en el solucionador de PDE.
0 votos
Me alegro de haber podido ayudar a @ffbzona