35 Size integroIntegrationOrder,
37 : process_(
std::move(process)), solverDesc_(
std::move(solverDesc)), schemeDesc_(schemeDesc),
38 integroIntegrationOrder_(integroIntegrationOrder), quantoHelper_(
std::move(quantoHelper)) {
44 ext::shared_ptr<FdmLinearOpComposite> op(
49 : ext::shared_ptr<FdmQuantoHelper>()));
51 solver_ = ext::make_shared<Fdm2DimSolver>(
57 return solver_->interpolateAt(std::log(
s),
v);
67 const Real x = std::log(
s);
Bates stochastic process, Heston process plus compound Poisson process plus log-normal jump diffusion...
ext::shared_ptr< Fdm2DimSolver > solver_
void performCalculations() const override
FdmBatesSolver(Handle< BatesProcess > process, FdmSolverDesc solverDesc, const FdmSchemeDesc &schemeDesc=FdmSchemeDesc::Hundsdorfer(), Size integroIntegrationOrder=12, Handle< FdmQuantoHelper > quantoHelper=Handle< FdmQuantoHelper >())
Real thetaAt(Real s, Real v) const
const FdmSolverDesc solverDesc_
const Handle< BatesProcess > process_
Real gammaAt(Real s, Real v) const
Real valueAt(Real s, Real v) const
Real deltaAt(Real s, Real v) const
const Handle< FdmQuantoHelper > quantoHelper_
const Size integroIntegrationOrder_
const FdmSchemeDesc schemeDesc_
Shared handle to an observable.
virtual void calculate() const
std::pair< iterator, bool > registerWith(const ext::shared_ptr< Observable > &)
std::size_t Size
size of a container
ext::shared_ptr< BlackVolTermStructure > v
const FdmBoundaryConditionSet bcSet
const ext::shared_ptr< FdmMesher > mesher