7 votos

Multithreading Monte-Carlo de precios en QuantLib para un solo producto

He estado usando activamente QuantLib para estructurar los precios de los productos mediante Monte Carlo. Debido al hecho de que en una gran cantidad de rutas de acceso son a menudo necesita y se debe acelerar el proceso de cálculo y todo eso, me encuentro a mí mismo tener que pensar acerca de las formas de multithread de la fijación de precios. Los perfiles que el código que, obviamente, señaló que el mayor cuello de botella no es el producto de la construcción pero la ejecución de la simulación de Monte Carlo.

Por lo tanto, vamos a suponer que si necesitaba 300k caminos para algo exactamente el precio del producto, puede que sólo desovar 10 hilos, construir el producto en cada uno de ellos y hacer que cada hilo de calcular el valor actual neto del producto con 30k todas las rutas de acceso, mientras que el uso de diferentes semillas y, a continuación, el promedio de los 10 Vpn diferentes juntos?

8voto

Brad Tutterow Puntos 5628

Sí, puede funcionar. Sin embargo, tenga en cuenta que:

  • usted estará más seguro si usted no comparte ninguna de objetos entre los hilos; véase mi respuesta aquí, en particular, el último punto;
  • incluso si el uso de semillas diferentes, no hay ninguna garantía de que la generan secuencias no se solapan. Si usted está dispuesto a cambiar el código del motor de modo que usted puede pasar los parámetros pertinentes, una opción más segura sería el uso de una baja discrepancia generador como Sobol, que tiene la capacidad para avanzar en la secuencia. De esta manera, se podría decir que cada generador de arranque en la posición correcta en la secuencia de $2^N-1$ de muestras que va a utilizar.

5voto

lupus Puntos 2955

Añadir a Luigi respuesta del segundo punto: La cuestión de la superposición de Mersenne Twister secuencias pueden ser abordados con la creación dinámica de Mersenne Twister Generadores, cf. http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/DC/dc.html. He creado un contenedor para la dcmt biblioteca, de manera que se adapta más fácilmente en el QuantLib de la biblioteca, ver https://github.com/pcaspers/QuantLib/blob/mtmc/ql/experimental/math/dynamiccreator.hpp. Hay precalculadas instancias para la utilización en paralelo de 8 hilos.

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