3 votos

QuantLib C++: Motor Monte Carlo con SequenceStatistics

Estoy tratando de implementar un Monte Carlo PricingEngine que almacena estadísticas multidimensionales.

He hecho lo siguiente:

  1. 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 .
  2. Implementar una clase que derive de ambas McSimulation<MyMCTrait,PseudoRandom,SequenceStatistics> y VanillaOption::engine .
  3. 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.

3voto

Brad Tutterow Puntos 5628

Sí, su solución es correcta, dada la implementación de McSimulation y la interfaz de SequenceStatistics . Probablemente deberíamos haber definido SequenceStatistics como instancias de retorno de Array ...

Como habrás visto, intentar devolver std::vector<Real> del pricer de la ruta no funcionaría; el tipo de resultado necesita definir operaciones aritméticas como la suma y la resta.

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