|
QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.38
|
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, 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 ()=default | |
| 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 253 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 291 of file qdplusamericanengine.cpp.
Here is the call graph for this function:
Here is the caller graph for this function:| ext::shared_ptr< ChebyshevInterpolation > getPutExerciseBoundary | ( | Real | S, |
| Real | K, | ||
| Rate | r, | ||
| Rate | q, | ||
| Volatility | vol, | ||
| Time | T | ||
| ) | const |
Definition at line 347 of file qdplusamericanengine.cpp.
Here is the call graph for this function:
Here is the caller graph for this function:Definition at line 231 of file qdplusamericanengine.cpp.
Here is the caller graph for this function:
|
overrideprotectedvirtual |
Implements QdPutCallParityEngine.
Definition at line 364 of file qdplusamericanengine.cpp.
Here is the call graph for this function:
|
private |
Definition at line 268 of file qdplusamericanengine.cpp.
Here is the caller graph for this function:
|
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.