Estoy familiarizado con la teoría de las técnicas de Monte-Carlo en la integración numérica, y recientemente he comenzado mis experimentos con estos métodos aplicados a la fijación de precios de los derivados. Estoy utilizando el libro de Glasserman como referencia.
He empezado por calcular simplemente el precio de la llamada de vainilla de los cajeros automáticos. Mi configuración es muy básica: tengo 100 pasos de tiempo, utilizo el modelo Black-Scholes (para poder comprobar la validez de los resultados) y los esquemas de integración numérica Euler-Maryuama, Runge Kutta y Milstein. Parece que necesito unos $10^6$ muestras para obtener resultados estables, y en Python eso lleva unos 6 minutos. Tengo una máquina bastante rápida, y esta velocidad me parece realmente baja. Inicialmente pensé que la razón está en el muestreador aleatorio. Sin embargo, por lo que he comprobado, el muestreo de variables aleatorias normales sí lleva algo de tiempo, pero $80\%$ del tiempo de cálculo proviene de las operaciones aritméticas (suma y multiplicación), incluso en el caso del esquema básico de Euler-Maryuama. Entiendo que en el caso del Movimiento Browniano Geométrico hay técnicas de simulación mucho más inteligentes disponibles, pero me gustaría mantenerlo genérico ya que en última instancia me gustaría trabajar con difusiones más generales.
Quizá sea sólo un problema de Python, pero ese problema me hizo pensar en acelerar mis simulaciones de Monte-Carlo. En el libro de Glasserman hay dos tipos de procedimientos de aceleración:
-
Reducción de la varianza, incluidas las variantes de control, el muestreo antitético y el muestreo de importancia. Ya he utilizado este último, y mi mejor opción es esa.
-
Quasi Monte Carlo (secuencias de baja discrepancia). Nunca lo he utilizado, y ahora me parece que sólo puede aplicarse para calcular integrales en la forma habitual, digamos que cuando las densidades se dan explícitamente sólo se desconoce la fórmula analítica de la integral.
Hasta ahora, mi objetivo es ser capaz de fijar el precio de las opciones exóticas con Monte-Carlo. Digamos que el modelo es unidimensional, y el pago exótico es extremadamente dependiente de la trayectoria. Tal vez más adelante necesite valorar también una versión americana de dicha opción. Mis preguntas son las siguientes:
-
¿A cuál de los métodos de reducción de la varianza debo prestar especial atención?
-
¿Es posible aplicar QMC en un problema de este tipo, o realmente necesito tener una expresión integral (sobre un dominio de dimensión finita) para el precio de la opción?
Para aclarar mi pregunta sobre QMC. Veo tres formas de aplicar (Q)MC en la fijación de precios.
- para muestrear incrementos de componentes de movimiento browniano/salto sobre la línea real
- para muestrear trayectorias enteras del espacio de trayectorias
- si el valor de la opción se han encontrado tener forma $$ \tag{1} \int_D p(S_1,\dots,S_n)f(S_1,\dots,S_n)\;\mathrm dS_1\dots \mathrm dS_n $$ donde $p$ es una función de pago, $S_1,\dots, S_n$ son variables de pago (múltiples acciones o múltiples medidas de tiempo de las acciones o cualquier otra cosa), entonces (Q)MC también se puede utilizar para muestrear de $D$ para calcular la integral en $(1)$ numéricamente.
Por lo que he entendido del libro de Glasserman, sólo considera el QMC como una buena solución para el último método, en el que aporta algunas pruebas de que supera al MC aleatorio habitual. En cambio, para los dos primeros métodos habla de MC habitual y de técnicas de reducción de la varianza. Por lo tanto, mi pregunta con respecto a QMC es: ¿puede aplicarse con éxito en los dos primeros métodos, o no está bien diseñado para ellos y no debo esperar muchos beneficios del uso de QMC en los dos primeros métodos?