FDDividendEngineMerton73< Scheme > Class Template Reference

Finite-differences pricing engine for dividend options using escowed dividends model. More...

#include <ql/pricingengines/vanilla/fddividendengine.hpp>

Inheritance diagram for FDDividendEngineMerton73< Scheme >:

Public Member Functions

 FDDividendEngineMerton73 (const boost::shared_ptr< GeneralizedBlackScholesProcess > &process, Size timeSteps=100, Size gridPoints=100, bool timeDependent=false)
 
- Public Member Functions inherited from FDDividendEngineBase< Scheme >
 FDDividendEngineBase (const boost::shared_ptr< GeneralizedBlackScholesProcess > &process, Size timeSteps=100, Size gridPoints=100, bool timeDependent=false)
 
- Public Member Functions inherited from FDVanillaEngine
 FDVanillaEngine (const boost::shared_ptr< GeneralizedBlackScholesProcess > &process, Size timeSteps, Size gridPoints, bool timeDependent=false)
 
const Arraygrid () const
 

Additional Inherited Members

- Protected Types inherited from FDMultiPeriodEngine< Scheme >
typedef FiniteDifferenceModel
< Scheme< TridiagonalOperator > > 
model_type
 
- Protected Types inherited from FDVanillaEngine
typedef BoundaryCondition
< TridiagonalOperator
bc_type
 
- Protected Member Functions inherited from FDDividendEngineBase< Scheme >
virtual void setupArguments (const PricingEngine::arguments *) const
 
Real getDividendAmount (Size i) const
 
Real getDiscountedDividend (Size i) const
 
- Protected Member Functions inherited from FDMultiPeriodEngine< Scheme >
 FDMultiPeriodEngine (const boost::shared_ptr< GeneralizedBlackScholesProcess > &process, Size timeSteps=100, Size gridPoints=100, bool timeDependent=false)
 
virtual void setupArguments (const PricingEngine::arguments *args, const std::vector< boost::shared_ptr< Event > > &schedule) const
 
virtual void setupArguments (const PricingEngine::arguments *a) const
 
virtual void calculate (PricingEngine::results *) const
 
virtual void executeIntermediateStep (Size step) const =0
 
virtual void initializeStepCondition () const
 
virtual void initializeModel () const
 
Time getDividendTime (Size i) const
 
- Protected Member Functions inherited from FDVanillaEngine
virtual void setGridLimits (Real, Time) const
 
virtual void initializeInitialCondition () const
 
virtual void initializeBoundaryConditions () const
 
virtual void initializeOperator () const
 
virtual Time getResidualTime () const
 
void ensureStrikeInGrid () const
 
- Protected Attributes inherited from FDMultiPeriodEngine< Scheme >
std::vector< boost::shared_ptr
< Event > > 
events_
 
std::vector< TimestoppingTimes_
 
Size timeStepPerPeriod_
 
SampledCurve prices_
 
boost::shared_ptr
< StandardStepCondition
stepCondition_
 
boost::shared_ptr< model_typemodel_
 
- Protected Attributes inherited from FDVanillaEngine
boost::shared_ptr
< GeneralizedBlackScholesProcess
process_
 
Size timeSteps_
 
Size gridPoints_
 
bool timeDependent_
 
Real requiredGridValue_
 
Date exerciseDate_
 
boost::shared_ptr< Payoffpayoff_
 
TridiagonalOperator finiteDifferenceOperator_
 
SampledCurve intrinsicValues_
 
std::vector< boost::shared_ptr
< bc_type > > 
BCs_
 
Real sMin_
 
Real center_
 
Real sMax_
 

Detailed Description

template<template< class > class Scheme = CrankNicolson>
class QuantLib::FDDividendEngineMerton73< Scheme >

Finite-differences pricing engine for dividend options using escowed dividends model.

The Merton-73 engine is the classic engine described in most derivatives texts. However, Haug, Haug, and Lewis in "Back to Basics: a new approach to the discrete dividend problem" argues that this scheme underprices call options. This is set as the default engine, because it is consistent with the analytic version.