He estado mirando la abrir-fuente de la biblioteca de Estratos (mantenida por OpenGamma), que está escrito en Java.
Ahora, tras la inspección de la FX Forward encargado del precio y el Pago encargado del precio me di cuenta de dos cosas:
- Todos los de su bajo nivel de los cálculos y de los resultados (valor presente, PV01, etc.) se hace uso de clases como CurrencyAmount o MultiCurrencyAmount. ¿Cuál es el coste computacional de este en comparación con el doble de los números de la primera y la mejora de los resultados con la Moneda de Datos de Metadatos después de los cálculos se ha completado? E. g. cada vez que un nuevo CurrencyAmount se crea uno pasa por el interior de la Moneda de la propiedad, que en sí mismo contiene un 3-letra símbolo representado como una cadena. Así que parece que las cadenas son repetidamente copiado.
- El valor presente de la llamada a la función recibe el comercio en sí mismo y un mercado proveedor de datos. El comercio de la moneda que se utiliza a continuación para obtener el factor de descuento de la curva a partir de los datos del mercado proveedor, a partir de la cual el último factor de descuento a continuación, se consulta. De nuevo, me estoy preguntando lo que el costo de esta constante "de la curva de look-up" es en una escala más grande. ¿Por qué no incorporar una referencia directa en el comercio (o encargado del precio, dependiendo de la aplicación) a la correspondiente curva de descuento? Así repetidas llamadas a la función (de valor presente o pv01) no tiene que buscar constantemente la curva en el mercado de mapa de datos. Tal vez de manera similar a tener un
shared_ptr
a la curva en C++.
QuantLib en comparación incorpora la necesaria en el mercado de datos punteros de objeto en la fijación de precios de los motores cuando el motor está en la instalación, y sólo opera en el doble de los números, que aparece más eficientes en el primer vistazo. Obviamente, no se puede compaginar la QuantLib enfoque, considerando que esto es posible mediante el uso de los Estratos.