QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
|
American engine based on the QD+ approximation to the exercise boundary. More...
#include <qdplusamericanengine.hpp>
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, Real > | putExerciseBoundaryAtTau (Real S, Real K, Rate r, Rate q, Volatility vol, Time T, Time tau) const |
ext::shared_ptr< ChebyshevInterpolation > | getPutExerciseBoundary (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::arguments * | getArguments () const override |
const PricingEngine::results * | getResults () const override |
void | reset () override |
void | update () override |
Public Member Functions inherited from PricingEngine | |
~PricingEngine () override=default | |
virtual arguments * | getArguments () const =0 |
virtual const results * | getResults () const =0 |
virtual void | reset ()=0 |
virtual void | calculate () const =0 |
Public Member Functions inherited from Observable | |
Observable () | |
Observable (const Observable &) | |
Observable & | operator= (const Observable &) |
Observable (Observable &&)=delete | |
Observable & | operator= (Observable &&)=delete |
virtual | ~Observable ()=default |
void | notifyObservers () |
Public Member Functions inherited from Observer | |
Observer ()=default | |
Observer (const Observer &) | |
Observer & | operator= (const Observer &) |
virtual | ~Observer () |
std::pair< iterator, bool > | registerWith (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< GeneralizedBlackScholesProcess > | process_ |
Protected Attributes inherited from GenericEngine< OneAssetOption::arguments, OneAssetOption::results > | |
OneAssetOption::arguments | arguments_ |
OneAssetOption::results | results_ |
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.
enum SolverType |
Enumerator | |
---|---|
Brent | |
Newton | |
Ridder | |
Halley | |
SuperHalley |
Definition at line 94 of file qdplusamericanengine.hpp.
|
explicit |
Definition at line 252 of file qdplusamericanengine.cpp.
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.
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.
Definition at line 230 of file qdplusamericanengine.cpp.
|
overrideprotectedvirtual |
Implements QdPutCallParityEngine.
Definition at line 363 of file qdplusamericanengine.cpp.
|
private |
Definition at line 267 of file qdplusamericanengine.cpp.
|
private |
Definition at line 123 of file qdplusamericanengine.hpp.
|
private |
Definition at line 124 of file qdplusamericanengine.hpp.
|
private |
Definition at line 125 of file qdplusamericanengine.hpp.
|
private |
Definition at line 126 of file qdplusamericanengine.hpp.