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
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í.
0 votos
@edmond, puedes utilizar DEoptim con una tolerancia muy amplia para hacerte una idea de la región factible, y luego introducir esos parámetros como valor inicial de Levenberg-Marquardt.
0 votos
@LisaAnn Gracias, le echaré un vistazo. Crees que este método también es adecuado para problemas muy intensivos en términos computacionales, donde la programación eficiente será la clave.