35 Real illegalLocalVolOverwrite,
37 : process_(
std::move(process)),
strike_(strike), solverDesc_(
std::move(solverDesc)),
38 schemeDesc_(schemeDesc), localVol_(localVol),
39 illegalLocalVolOverwrite_(illegalLocalVolOverwrite), quantoHelper_(
std::move(quantoHelper)) {
46 const ext::shared_ptr<FdmBlackScholesOp> op(
47 ext::make_shared<FdmBlackScholesOp>(
51 ? ext::shared_ptr<FdmQuantoHelper>()
59 return solver_->interpolateAt(std::log(
s));
64 return solver_->derivativeX(std::log(
s))/
s;
69 return (
solver_->derivativeXX(std::log(
s))
74 return solver_->thetaAt(std::log(
s));
void performCalculations() const override
ext::shared_ptr< Fdm1DimSolver > solver_
const FdmSolverDesc solverDesc_
const Handle< FdmQuantoHelper > quantoHelper_
Real valueAt(Real s) const
Real gammaAt(Real s) const
FdmBlackScholesSolver(Handle< GeneralizedBlackScholesProcess > process, Real strike, FdmSolverDesc solverDesc, const FdmSchemeDesc &schemeDesc=FdmSchemeDesc::Douglas(), bool localVol=false, Real illegalLocalVolOverwrite=-Null< Real >(), Handle< FdmQuantoHelper > quantoHelper=Handle< FdmQuantoHelper >())
Handle< GeneralizedBlackScholesProcess > process_
Real deltaAt(Real s) const
Real thetaAt(Real s) const
const FdmSchemeDesc schemeDesc_
const Real illegalLocalVolOverwrite_
Shared handle to an observable.
virtual void calculate() const
std::pair< iterator, bool > registerWith(const ext::shared_ptr< Observable > &)
Black Scholes linear operator.
const ext::shared_ptr< FdmMesher > mesher