3 votos

Paquetes R para la calibración (optimización/minimización) de modelos de precios

Supongamos que tenemos precios de mercado observados y tratamos de encontrar los parámetros (múltiples) del modelo de tal manera que los precios del modelo se acerquen a los precios reales, es decir, para minimizar la diferencia entre el modelo y los precios observados, cuantificada, por ejemplo, por el error medio absoluto o el error cuadrático medio.

A lo largo del camino, hay que tener en cuenta varias funciones para determinar el precio y, al final, calculamos la medida de elección.

¿Cuáles son los paquetes útiles en R para este tipo de problemas de optimización/minimización? En particular, busco paquetes generales que no estén ligados a un producto específico, por ejemplo, opciones.

0 votos

Hola @edmond, esta es una pregunta bastante general. Incluso se podría decir que se quiere minimizar cualquier una función lo suficientemente bien comportada en R. Podrías dar rdocumentation.org/packages/stats/versions/3.6.2/topics/optim un intento.

0 votos

DEoptim puede ser más lento que los algoritmos basados en el gradiente, pero no se atasca en los mínimos locales.

0 votos

@LisaAnn En un problema similar relacionado con las opciones leí lo siguiente: Resulta que este problema, como muchos otros en finanzas, no es fácil de resolver, y los métodos basados en el gradiente probablemente no harán el trabajo (Gilli et al. 2019), por lo tanto los métodos basados en el gradiente no parecen ser muy adecuados para mi caso de todos modos. Sin embargo, en este momento todavía no he descubierto por qué es así.

2voto

BigCanOfTuna Puntos 210

R le da acceso a un gran número de algoritmos de optimización; consulte el Vista de la tarea de optimización para una lista (probablemente incompleta). El algoritmo adecuado dependerá de su modelo, es decir, de la función objetivo y de las restricciones. Si su modelo se comporta lo suficientemente bien, al menos localmente, incluso un método estándar basado en el gradiente, reiniciado desde diferentes valores iniciales, puede funcionar bien. (Véase Nota sobre los "buenos" valores de partida para ver un ejemplo; revelación: soy uno de los autores). Al final, la única forma de averiguarlo es hacer experimentos.

La rapidez con la que se ejecute el algoritmo de optimización dependerá principalmente de la rapidez de sus algoritmos de valoración. Calibrar significa valorar repetidamente sus operaciones/instrumentos con diferentes valores de los parámetros, por lo que cualquier fracción de segundo que pueda recortar de su función objetivo será de ayuda. Esto implica que, por lo general, no es conveniente utilizar funciones "cómodas" y de alto nivel con un montón de gestión de errores, etc.; en su lugar, hay que optar por rutinas de fijación de precios sencillas. Además, normalmente no calibrará un solo instrumento, sino varios. La tarificación de un conjunto de instrumentos puede acelerarse a menudo almacenando en caché y reutilizando partes del cálculo.

La evolución diferencial, como sugiere @LisaAnn en los comentarios, es, según mi experiencia, un método robusto para este tipo de modelos. Evoluciona varias soluciones a la vez. Si la implementación lo permite, a menudo se puede ganar velocidad vectorizando los cálculos, por ejemplo, evaluando la función objetivo de todas las soluciones a la vez (véase Funciones objetivo vectorizadas para ver ejemplos).

0 votos

Muchas gracias por los diferentes enlaces y la información completa. Entonces, ¿también sugieres empezar con una Evolución Diferencial y luego usar esto para el Levenberg-Marquardt? Supongamos que queremos evaluar los tramos de un índice CDX para tener un ejemplo concreto. ¿O tiene otras sugerencias en este caso?

0 votos

Mi consejo genérico sería 1) implementar el modelo de forma razonablemente eficiente, de modo que se tenga una función objetivo que proporcione una bondad de ajuste para determinados parámetros, y luego 2) realizar experimentos, como lo que ocurre cuando se reinicia un método en optim , digamos, a partir de diferentes valores de partida. Ninguna sugerencia puede sustituir a los experimentos.

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