20#include <ql/methods/finitedifferences/operators/fdmhestonhullwhiteop.hpp>
21#include <ql/methods/finitedifferences/solvers/fdm3dimsolver.hpp>
22#include <ql/methods/finitedifferences/solvers/fdmhestonhullwhitesolver.hpp>
23#include <ql/methods/finitedifferences/utilities/fdmquantohelper.hpp>
30 Rate corrEquityShortRate,
33 : hestonProcess_(hestonProcess), hwProcess_(hwProcess),
34 corrEquityShortRate_(corrEquityShortRate), solverDesc_(
std::move(solverDesc)),
35 schemeDesc_(schemeDesc) {
42 const ext::shared_ptr<FdmLinearOpComposite> op(
54 const Real x = std::log(s);
55 return solver_->interpolateAt(x, v, r);
72 const Real x = std::log(s);
73 return solver_->thetaAt(x, v, r);
const Real corrEquityShortRate_
void performCalculations() const override
Real gammaAt(Real s, Real v, Rate r, Real eps) const
Real thetaAt(Real s, Real v, Rate r) const
Real valueAt(Real s, Real v, Rate r) const
const FdmSolverDesc solverDesc_
const Handle< HullWhiteProcess > hwProcess_
const Handle< HestonProcess > hestonProcess_
FdmHestonHullWhiteSolver(const Handle< HestonProcess > &hestonProcess, const Handle< HullWhiteProcess > &hwProcess, Rate corrEquityShortRate, FdmSolverDesc solverDesc, const FdmSchemeDesc &schemeDesc=FdmSchemeDesc::Hundsdorfer())
ext::shared_ptr< Fdm3DimSolver > solver_
Real deltaAt(Real s, Real v, Rate r, Real eps) const
const FdmSchemeDesc schemeDesc_
Shared handle to an observable.
virtual void calculate() const
std::pair< iterator, bool > registerWith(const ext::shared_ptr< Observable > &)
const ext::shared_ptr< FdmMesher > mesher