QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
QdPlusAmericanEngine Class Reference

American engine based on the QD+ approximation to the exercise boundary. More...

#include <qdplusamericanengine.hpp>

+ Inheritance diagram for QdPlusAmericanEngine:
+ Collaboration diagram for QdPlusAmericanEngine:

Public Types

enum  SolverType {
  Brent , Newton , Ridder , Halley ,
  SuperHalley
}
 
- Public Types inherited from Observer
typedef set_type::iterator iterator
 

Public Member Functions

 QdPlusAmericanEngine (ext::shared_ptr< GeneralizedBlackScholesProcess >, Size interpolationPoints=8, SolverType solverType=Halley, Real eps=1e-6, Size maxIter=Null< Size >())
 
std::pair< Size, RealputExerciseBoundaryAtTau (Real S, Real K, Rate r, Rate q, Volatility vol, Time T, Time tau) const
 
ext::shared_ptr< ChebyshevInterpolationgetPutExerciseBoundary (Real S, Real K, Rate r, Rate q, Volatility vol, Time T) const
 
- Public Member Functions inherited from QdPutCallParityEngine
 QdPutCallParityEngine (ext::shared_ptr< GeneralizedBlackScholesProcess > process)
 
void calculate () const override
 
- Public Member Functions inherited from GenericEngine< OneAssetOption::arguments, OneAssetOption::results >
PricingEngine::argumentsgetArguments () const override
 
const PricingEngine::resultsgetResults () const override
 
void reset () override
 
void update () override
 
- Public Member Functions inherited from PricingEngine
 ~PricingEngine () override=default
 
virtual argumentsgetArguments () const =0
 
virtual const resultsgetResults () const =0
 
virtual void reset ()=0
 
virtual void calculate () const =0
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 
- Public Member Functions inherited from Observer
 Observer ()=default
 
 Observer (const Observer &)
 
Observeroperator= (const Observer &)
 
virtual ~Observer ()
 
std::pair< iterator, boolregisterWith (const ext::shared_ptr< Observable > &)
 
void registerWithObservables (const ext::shared_ptr< Observer > &)
 
Size unregisterWith (const ext::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void update ()=0
 
virtual void deepUpdate ()
 

Static Public Member Functions

static Real xMax (Real K, Rate r, Rate q)
 

Protected Member Functions

Real calculatePut (Real S, Real K, Rate r, Rate q, Volatility vol, Time T) const override
 
virtual Real calculatePut (Real S, Real K, Rate r, Rate q, Volatility vol, Time T) const =0
 

Private Member Functions

template<class Solver >
Real buildInSolver (const QdPlusBoundaryEvaluator &eval, Solver solver, Real S, Real strike, Size maxIter, Real guess=Null< Real >()) const
 

Private Attributes

const Size interpolationPoints_
 
const SolverType solverType_
 
const Real eps_
 
const Size maxIter_
 

Additional Inherited Members

- Protected Attributes inherited from QdPutCallParityEngine
const ext::shared_ptr< GeneralizedBlackScholesProcessprocess_
 
- Protected Attributes inherited from GenericEngine< OneAssetOption::arguments, OneAssetOption::results >
OneAssetOption::arguments arguments_
 
OneAssetOption::results results_
 

Detailed Description

American engine based on the QD+ approximation to the exercise boundary.

The main purpose of this engine is to provide a good initial guess to the exercise boundary for the superior fixed point American engine QdFpAmericanEngine

References: Li, M. (2009), “Analytical Approximations for the Critical Stock Prices of American Options: A Performance Comparison,” Working paper, Georgia Institute of Technology.

https://mpra.ub.uni-muenchen.de/15018/1/MPRA_paper_15018.pdf

Definition at line 92 of file qdplusamericanengine.hpp.

Member Enumeration Documentation

◆ SolverType

enum SolverType
Enumerator
Brent 
Newton 
Ridder 
Halley 
SuperHalley 

Definition at line 94 of file qdplusamericanengine.hpp.

Constructor & Destructor Documentation

◆ QdPlusAmericanEngine()

QdPlusAmericanEngine ( ext::shared_ptr< GeneralizedBlackScholesProcess process,
Size  interpolationPoints = 8,
QdPlusAmericanEngine::SolverType  solverType = Halley,
Real  eps = 1e-6,
Size  maxIter = Null<Size>() 
)
explicit

Definition at line 252 of file qdplusamericanengine.cpp.

Member Function Documentation

◆ putExerciseBoundaryAtTau()

std::pair< Size, Real > putExerciseBoundaryAtTau ( Real  S,
Real  K,
Rate  r,
Rate  q,
Volatility  vol,
Time  T,
Time  tau 
) const

Definition at line 290 of file qdplusamericanengine.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPutExerciseBoundary()

ext::shared_ptr< ChebyshevInterpolation > getPutExerciseBoundary ( Real  S,
Real  K,
Rate  r,
Rate  q,
Volatility  vol,
Time  T 
) const

Definition at line 346 of file qdplusamericanengine.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ xMax()

Real xMax ( Real  K,
Rate  r,
Rate  q 
)
static

Definition at line 230 of file qdplusamericanengine.cpp.

+ Here is the caller graph for this function:

◆ calculatePut()

Real calculatePut ( Real  S,
Real  K,
Rate  r,
Rate  q,
Volatility  vol,
Time  T 
) const
overrideprotectedvirtual

Implements QdPutCallParityEngine.

Definition at line 363 of file qdplusamericanengine.cpp.

+ Here is the call graph for this function:

◆ buildInSolver()

Real buildInSolver ( const QdPlusBoundaryEvaluator &  eval,
Solver  solver,
Real  S,
Real  strike,
Size  maxIter,
Real  guess = Null<Real>() 
) const
private

Definition at line 267 of file qdplusamericanengine.cpp.

+ Here is the caller graph for this function:

Member Data Documentation

◆ interpolationPoints_

const Size interpolationPoints_
private

Definition at line 123 of file qdplusamericanengine.hpp.

◆ solverType_

const SolverType solverType_
private

Definition at line 124 of file qdplusamericanengine.hpp.

◆ eps_

const Real eps_
private

Definition at line 125 of file qdplusamericanengine.hpp.

◆ maxIter_

const Size maxIter_
private

Definition at line 126 of file qdplusamericanengine.hpp.