8 votos

Mejorar el esquema de diferencias finitas

Entiendo cómo derivar e implementar esquemas de diferencias finitas estándar. Me pregunto cómo mejorar un esquema de FD tan estándar. Por ejemplo, al resolver la ecuación estándar de Black-Scholes, se suelen sugerir los siguientes pasos

  • La transformación $x_t=\ln(S_t)$ convierte la EDP de Black-Scholes en una EDP con coeficientes constantes
  • Elija el tamaño de los escalones $\Delta S$ y $\Delta t$ tal que $\sqrt{\Delta t} \sim\Delta S$
  • Diferencia central ( $O(\Delta S^2)$ ) son mejores para las derivadas espaciales que las diferencias finitas hacia atrás/adelante ( $O(\Delta S)$ )

¿Qué otros consejos puede dar? ¿Qué otras mejoras conoces que ayuden a la precisión, la velocidad y la estabilidad?

¿Utiliza la diferencia hacia atrás/hacia delante/central para la derivada temporal? ¿Recomienda usted explícita, implícita, Crank Nicolson? ¿Cómo puedes verificar rápidamente si tu solución final es realmente correcta y resuelve la EDP?

6voto

oliversm Puntos 515

No resuelvas la EDP de Black-Scholes, resuelve la ecuación del calor

Uno de los principales resultados de las finanzas matemáticas es la demostración de que la EDP de Black-Scholes puede trasladarse a la ecuación del calor. La ecuación del calor es matemáticamente más agradable de manejar y analizar, y computacionalmente tiene mucho mejores solucionadores que otros solucionadores genéricos de EDP. No resuelvas la EDP de Black-Scholes, ¡resuelve la ecuación del calor! Si esto termina con condiciones de contorno un poco más incómodas, entonces los beneficios seguirán superando con creces las pérdidas.

Hay mucho que aprender

¿Qué otros consejos puede dar? ¿Qué otras mejoras conoces que ayuden a la precisión, la velocidad y la estabilidad?

Hay demasiadas para enumerarlas, y hay un equilibrio entre crear el mejor solucionador del mundo y el tiempo que se tarda en programar algo. Si te pasas 6 meses construyendo un solucionador de nivel de producción optimizado para un tipo de condición de contorno/problema que se ejecuta en 1s, cuando una simple implementación preparada en un día podría haber funcionado en 1 hora o de la noche a la mañana, y ambos se utilizan sólo una vez, entonces lo último es más favorable.

Aprender cómo hacer que estos solucionadores sean mejores, más estables, más precisos, más rápidos, etc. es muy complicado, y se necesitan grados para aprender/comprender todos los trucos (varios de ellos todavía se están desarrollando). Algunas buenas referencias son:

y el libro de texto estándar es:

Un truco fácil

Uno de los mejores trucos que aprendí/veí fue que ya sabes que debes elegir un paso de tiempo pequeño (o discretización espacial) tal que $\mathcal{O}(\Delta t) \sim \mathcal{O}(\Delta x^2)$ que, si no recuerdo mal, hace que el esquema tenga precisión $\mathcal{O}(\Delta x^2)$ . Sin embargo, creo que es para un esquema de Euler de tiempo hacia adelante y de diferencias espaciales centrales que si se escoge $\Delta t = \frac{\Delta x^2}{4}$ entonces los errores espaciales y temporales se cancelan exactamente en el orden principal, y por lo tanto se obtiene una precisión $\mathcal{O}(\Delta x^4)$ . Sin embargo, no tengo mis libros de texto conmigo, así que tendría que volver a comprobar el coeficiente y las precisiones que he citado. No obstante, por una elección inteligente de este coeficiente se obtiene un esquema mucho más preciso sin coste adicional, lo que me parece un truco muy útil.

0 votos

Muchas gracias por esta increíble respuesta. El truco $\Delta t=\frac{\Delta x^2}{4}$ es muy útil. ¿Sólo funciona para la ecuación del calor y no para la ecuación discreta de la BS con coeficiente constante? ¿Y requiere una diferencia directa para aproximar la derivada temporal? ¿Tienes algún consejo para esquemas FD bidimensionales? Como en el caso de Heston o similares donde hay dos variables de estado. Sé que Monte Carlo se vuelve mejor para muchos factores, pero dos dimensiones espaciales más la dimensión del tiempo parece todavía factible con FD. ¿Algún consejo en particular para mejorar dicha aproximación de orden superior?

1 votos

¡@Alex Tengo que repetirlo, la ecuación BS es la ecuación del calor (bajo un cambio apropiado de variables), así que nunca intentes resolver la BS, sino que resuelve la ecuación del calor y transforma la solución de nuevo a la forma BS después! Creo que el truco que he mencionado supone una diferencia directa explícita. Las alternativas incluyen esquemas implícitos o Crank Nicolson, pero en tales circunstancias la precisión es sólo un factor, mientras que la convergencia y la estabilidad son otros factores a considerar. Para una malla 2D con un entramado cuadrado quizás se pueda utilizar el mismo truco. Recomiendo la lectura de los apuntes de la conferencia que he enlazado.

0 votos

Gracias por las referencias. He empezado a leer con las notas de Oxford y está muy bien escrito. Muchas gracias. Entiendo que la ecuación de la BS = ecuación del calor bajo otras sustituciones. La transformación logarítmica da coeficientes constantes, una sustitución adicional elimina la primera derivada, $\left(r-\delta-\frac{1}{2}\sigma^2\right)\frac{\partial V}{\partial x}$ y el propio valor, $-rV$ . Un último cambio de tiempo da los valores iniciales. ¿Es un enfoque Crank Nicolson en general mejor que un esquema implícito simple (hacia atrás)? ¿Porque tenemos que resolver un sistema de ecuaciones de todos modos?

5voto

Dean Puntos 456

En este documento se mencionan algunos de los trucos habituales, Esquemas de diferencias finitas con recuperación exacta de los precios de las opciones vainilla

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3530561

que también muestra cómo configurar el esquema de diferencias finitas para que todas las vainillas con huelgas y vencimientos en la red coincidan exactamente.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X