Al ejecutar mi código de diferencias finitas, observo algo extraño.
Aunque implemento un modelo SABR clásico (no reversible), inicialicé las variables de tal manera que debería ser igual a Black-Scholes.
Condiciones límite para
-
Límite inferior del precio
-
Límite inferior de la volatilidad
-
Límite superior de la volatilidad
son de tipo Dirichlet (simplemente se ponen iguales a un valor).
Para el límite superior del precio a plazo ( $F$ ), quiero establecer la condición de Neumann de $\Gamma=0$ , ya que creo que esto es cierto para todas las opciones (put y call) para un precio subyacente grande. Esta condición produce:
$\dfrac{\partial^2 V}{\partial x^2}(\dfrac{\partial x}{\partial F})^2+\dfrac{\partial V}{\partial x}\dfrac{\partial^2 x}{\partial F^2}=\Gamma=0$
Tenga en cuenta que los términos adicionales con $x$ y $F$ se deben a mi transformación de la variable $F$ a $x$ .
Edita el 19 de junio: @Yian_Pap Estoy de acuerdo, olvidémonos de la condición de suavizado y centrémonos en conseguir que la condición de Neumann funcione. Permítanme ser específico con respecto a mis pasos aplicando su enfoque :) Así es como lo implementaría actualmente, pero una vez más no estoy muy familiarizado con FD (este es mi primer caso de uso):
-
En primer lugar, no me queda claro con qué EDP hay que empezar (¿ecuación de precios? o sólo la $\Gamma=0$ ecuación?). Si partimos de $\Gamma=0$ ¿por qué preocuparse de que el término de la derivada cruzada sea 0 o no?
-
Si empiezo con $\Gamma=0$ , no hay transformaciones en F, entonces
$\dfrac{\partial^2 V}{\partial F^2} = 0$
discretizar mediante FD central de 2º orden aprox,
$\dfrac{1}{\Delta F^2} (V_{N-1,j} - 2V_{N,j} + V_{N+1,j}) = 0$ ,
$V_{N,j}=\dfrac{1}{2}(V_{N-1,j}+V_{N+1,j})$ (1),
que contiene el punto de la cuadrícula exterior $V_{N+1,j}$ ¿a qué supongo que se refiere en su respuesta?
Entonces, según entiendo su comentario respecto a que la primera derivada en $F \to \infty$ es conocido y constante, ¿quieres decir que el delta es 1 (0) para una call (put)?
$\dfrac{\partial V}{\partial F} = \Delta = 1$ ,
$V_{N,j} = \Delta F + V_{N-1,j}$ ,
utilice esto para sustituir $V_{N+1,j}$ en (1),
$V_{N,j} = \Delta F + V_{N-1,j}$ ,
con $\Delta F$ tamaño de paso en F. Entonces puedo incorporar esto en la matriz de coeficientes como sigue. (Pregunta al margen: ¿por qué no utilizar $\Delta=1$ directamente).
Digamos que tengo un esquema implícito $V_{i,j,k} = z_1V_{i-1,j,k+1} + z_2V_{i,j,k+1} + z_3V_{i+1,j,k+1}$ . Entonces, para algún i (es decir, en algunos lugares de la matriz) $V_{i+1,j}$ es un límite, por lo que la entrada de la matriz se establece $0$ . Incorpore la ligadura añadiendo $z_3$ a $z_2$ en cada lugar de la matriz donde $i=N-1$ . Además, añada $z_3\Delta F$ . Matemáticamente,
$V_{N-1,j,k} = z_1V_{N-2,j,k+1} + (z_2+z_3)V_{N-1,j,k+1} + z_3\Delta F$ .
¿Sería esta una comprensión correcta de cómo debe implementarse la condición F Neumann de límite superior?