Estoy tratando de implementar un Monte Carlo PricingEngine que almacena estadísticas multidimensionales.
He hecho lo siguiente:
- Definido un rasgo de Montecarlo que, entre otras cosas, almacena como el tipo_de_precio_de_la_senda
PathPricer<MultiPath,Array>
(mi proceso es unidimensional pero tiene 2 factores). llamemos a esto estructura MyMCTrait . - Implementar una clase que derive de ambas
McSimulation<MyMCTrait,PseudoRandom,SequenceStatistics>
yVanillaOption::engine
. - Implementado un
PathPricer<MultiPath,Array>
en el que el primer elemento del Array devuelto por el operador() es el precio de la opción.
Estoy recibiendo errores de compilación porque en los métodos value() y valueWithSamples() de la clase McSimulation tenemos las siguientes inicializaciones:
a. result_type(mcModel_->sampleAccumulator().mean());
b. result_type error(mcModel_->sampleAccumulator().errorEstimate());
que están tratando de lanzar desde std::vector<Real>
(devuelto por los métodos SequenceStatistics) a Array (tipo_resultado).
Dudo que el camino correcto sea implementar el reparto (si es que es posible), ¿alguien podría indicarme la dirección correcta? Gracias.
EDITAR
Conseguí que el motor de precios funcionara utilizando una clase derivada de SequenceStatistics
. Acabo de sobrescribir los inspectores mean() y errorEstimate() y los he hecho devolver un Array. Para ello he utilizado los métodos de la clase base + el constructor Array que toma iteradores de inicio y fin.
Sin embargo, todavía me pregunto si esta es la forma correcta de proceder. Gracias por cualquier opinión.