35 ext::shared_ptr<LocalVolTermStructure> leverageFct,
36 const Real mixingFactor)
37 : process_(
std::move(process)), solverDesc_(
std::move(solverDesc)), schemeDesc_(schemeDesc),
38 quantoHelper_(
std::move(quantoHelper)), leverageFct_(
std::move(leverageFct)),
39 mixingFactor_(mixingFactor) {
46 ext::shared_ptr<FdmLinearOpComposite> op(
47 ext::make_shared<FdmHestonOp>(
50 : ext::shared_ptr<FdmQuantoHelper>(),
58 return solver_->interpolateAt(std::log(
s),
v);
68 const Real x = std::log(
s);
82 const Real x = std::log(
s);
ext::shared_ptr< Fdm2DimSolver > solver_
void performCalculations() const override
Real thetaAt(Real s, Real v) const
FdmHestonSolver(Handle< HestonProcess > process, FdmSolverDesc solverDesc, const FdmSchemeDesc &schemeDesc=FdmSchemeDesc::Hundsdorfer(), Handle< FdmQuantoHelper > quantoHelper=Handle< FdmQuantoHelper >(), ext::shared_ptr< LocalVolTermStructure > leverageFct=ext::shared_ptr< LocalVolTermStructure >(), Real mixingFactor=1.0)
Real meanVarianceDeltaAt(Real s, Real v) const
const FdmSolverDesc solverDesc_
const ext::shared_ptr< LocalVolTermStructure > leverageFct_
Real gammaAt(Real s, Real v) const
const Handle< HestonProcess > process_
Real valueAt(Real s, Real v) const
Real deltaAt(Real s, Real v) const
const Handle< FdmQuantoHelper > quantoHelper_
Real meanVarianceGammaAt(Real s, Real v) const
const FdmSchemeDesc schemeDesc_
Shared handle to an observable.
virtual void calculate() const
std::pair< iterator, bool > registerWith(const ext::shared_ptr< Observable > &)
Heston stochastic process.
ext::shared_ptr< BlackVolTermStructure > v
const ext::shared_ptr< FdmMesher > mesher