7 votos

Calibración de un modelo Hull-White de dos factores mediante redes neuronales

Así que tengo el siguiente modelo de tasa corta $$dX_t = a_1X_tdt + \sigma_1dW_t$$ $$dY_t = a_2Y_tdt + \sigma_2dB_t$$ $$r_t = X_t + Y_t + f(t)$$ con $X_0 = Y_0 = 0$ donde $W$ y $B$ son movimientos brownianos con correlación $\rho$ y $f(t)$ es una función determinista elegida para ajustarse a la estructura de plazos actual.

Quiero calibrar este modelo ajustando los precios observados de las cápsulas a un vector de parámetros $(a_1,a_2,\sigma_1,\sigma_2,\rho)$ . Mi enfoque es el siguiente. Primero genero un vector de parámetros aleatorios y calculo los precios correspondientes de los caplets para diferentes vencimientos, strikes y fechas de tenor. A continuación, entreno una red neuronal (en Matlab, si eso importa) que toma este vector de precios como entrada y produce el vector de parámetros correspondiente. Espero que la función que va del vector de precios al vector de parámetros sea suave, por lo que una red neuronal de una sola capa con un número suficiente de neuronas debería ser capaz de aproximar esta función.

Pero este método no parece funcionar. Los valores ajustados de $a_1$ y $a_2$ coinciden con sus valores reales (los que di a la red neuronal) razonablemente bien, pero $\sigma_1,\sigma_2,\rho$ están por todas partes. Si arreglo $\sigma_2$ y $\rho$ entonces los valores ajustados de $a_1,a_2$ y $\sigma_1$ son bastante buenos. Por otro lado si arreglo $a_1$ y $a_2$ entonces los valores ajustados de $\rho$ son buenos mientras que los valores ajustados de $\sigma_1$ y $\sigma_2$ son simplemente terribles. Si arreglo $a_1,a_2$ y $\rho$ entonces los valores ajustados de $\sigma_1$ y $\sigma_2$ son casi perfectas. ¿Hay algún tipo de problema de identificabilidad inherente a este modelo?

Genero alrededor de $10000$ muestras. Mi vector de entrada es de 280 dimensiones con vencimientos que van de 1 semana a 10 años, y con strike que van de $-2\%$ a $1\%$ y el tenor va de 3 meses a 3 años. Llegué hasta las 100 neuronas sin ninguna mejora visible. Probé los diferentes algoritmos de optimización de redes neuronales de Matlab, pero de nuevo ninguna mejora. De hecho se deterioró. Agradecería si alguien pudiera dar alguna opinión sobre este enfoque.

0 votos

Intente encontrar una fórmula analítica de fijación de precios de los bonos, y entonces podrá tener un valor analítico de captación.

0 votos

@Gordon Yo sí tengo una fórmula analítica de precios de las cápsulas. Lo que pretendo encontrar con una NN es la inversa de esa función. Genero los precios con mi fórmula y entreno la red dándole los precios como entradas y los parámetros como salidas.

0 votos

@Calculon Tengo curiosidad, ¿por qué necesitas NN para esto?

7voto

ccsv Puntos 506

Me parece que tu enfoque de la calibración (entrenar una RNA para que aprenda la función inversa f-1 a partir de un conjunto de entrenamiento de 'precios_del_mercado = f(parámetros_del_modelo)' es interesante, novedoso (al menos es la primera vez que oigo hablar de él) y definitivamente merece la pena seguir investigando. Si lo haces funcionar, tienes una calibración casi instantánea y una metodología aplicable a muchos modelos. Si no funciona, entender exactamente por qué es una experiencia valiosa.

Un defecto aparente es que los precios del modelo de caps y swaptions (obviamente) también dependen de la curva inicial, por lo que la función inversa que aprendes hoy se vuelve irrelevante cuando los tipos cambian. Para mitigar esto, yo utilizaría vols implícitos de Black-Scholes (o vols implícitos de Bachelier para tratar los tipos negativos) en lugar de los precios de mercado, es decir, un modelo del tipo 'vols_implícitos = f(parámetros_modelo)'.

La información sobre la huelga es redundante para la calibración del modelo de Hull y White. Este es un modelo gaussiano, su sesgo es siempre gaussiano y no depende de los parámetros. Por esta razón, sería mejor calibrar sólo los instrumentos ATM y dejar el problema de la estructura de la huelga para más adelante, cuando se generalice a las extensiones de volatilidad local/estocástica de HW a la Cheyette.

Por el contrario, yo recomendaría calibrar tanto las swaptions como los caplets, especialmente en el caso multifactorial, porque los valores de mercado (o vols implícitos) de las swaptions en relación con los caplets reflejan una información de correlación (efecto cesta).

Resumiendo, yo intentaría calibrar el 2FHW con una matriz (por vencimiento y subyacente) de vols implícitos ATM Bachelier. Las fórmulas analíticas exactas se derivaron en la década de 1990, utilícelas cuando genere su conjunto de entrenamiento para obtener precisión.

Dicho esto, yo empezaría con un modelo de un factor y pasaría a la extensión de dos factores una vez que lo hiciera funcionar. Siempre es mejor empezar con el ejemplo más sencillo cuando se intentan cosas nuevas.

Cuando genere su conjunto de entrenamiento, asegúrese de que los parámetros del modelo muestrean correctamente el espacio de parámetros. Yo recomendaría la secuencia de Sobol, ideal para este propósito.

En cuanto a la arquitectura de la RNA, yo no utilizaría una red poco profunda, ya que podría necesitar un número insano de unidades para representar correctamente la función inversa. Esperaría mejores resultados con un pequeño número de capas ocultas activadas por RELU, cada una con un pequeño número de unidades, seguidas de una capa de salida sigmoidal con tantas unidades como parámetros tengas.

Por último, y quizás más importante para responder a su pregunta, parece que puede tener un grave problema de sobreajuste: con 280 entradas y 100 neuronas en su capa oculta, tiene 28.000 parámetros que aprender sólo para esta matriz de pesos, con sólo 10.000 ejemplos de entrenamiento. Para confirmar la sobreadaptación, compare la pérdida en su conjunto de entrenamiento y en su conjunto de prueba. Una RNA sobreadaptada funciona bien en el conjunto de entrenamiento, pero generaliza mal.

Para resumir (en lo que respecta a la RNA), yo intentaría entrenar una RNA razonablemente profunda con un pequeño número de unidades, con un conjunto de entrenamiento (mucho) mayor, en el que el espacio de los parámetros se muestree con Sobol, y los vols implícitos correspondientes se calculen con HW analytics. Al principio, respeta la "regla de los 10" (10 veces más ejemplos que pesos en la RNA) y luego, quizás, intenta relajarte y aplicar alguna regularización.

Le deseo éxito. Por favor, no te rindas a menos que encuentres una buena razón por la que no debería funcionar, y por favor hazme saber cómo va.

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