34 : bsProcess_(
std::move(bsProcess)), cirProcess_(
std::move(cirProcess)),
35 solverDesc_(
std::move(solverDesc)), schemeDesc_(schemeDesc), rho_(
rho),
strike_(strike) {
41 ext::shared_ptr<FdmLinearOpComposite> op(
42 ext::make_shared<FdmCIROp>(
54 return solver_->interpolateAt(std::log(
s),
r);
64 const Real x = std::log(
s);
ext::shared_ptr< Fdm2DimSolver > solver_
const Handle< CoxIngersollRossProcess > cirProcess_
void performCalculations() const override
Real thetaAt(Real s, Real v) const
const Handle< GeneralizedBlackScholesProcess > bsProcess_
const FdmSolverDesc solverDesc_
Real gammaAt(Real s, Real v) const
Real valueAt(Real s, Real v) const
Real deltaAt(Real s, Real v) const
FdmCIRSolver(Handle< CoxIngersollRossProcess > process, Handle< GeneralizedBlackScholesProcess > bsProcess, FdmSolverDesc solverDesc, const FdmSchemeDesc &schemeDesc=FdmSchemeDesc::Hundsdorfer(), Real rho=1.0, Real strike=1.0)
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< YieldTermStructure > r
const ext::shared_ptr< FdmMesher > mesher