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 Attributes | List of all members
QdFpAmericanEngine Class Reference

High performance/precision American engine based on fixed point iteration for the exercise boundary. More...

#include <qdfpamericanengine.hpp>

+ Inheritance diagram for QdFpAmericanEngine:
+ Collaboration diagram for QdFpAmericanEngine:

Public Types

enum  FixedPointEquation { FP_A , FP_B , Auto }
 
- Public Types inherited from Observer
typedef set_type::iterator iterator
 

Public Member Functions

 QdFpAmericanEngine (ext::shared_ptr< GeneralizedBlackScholesProcess > bsProcess, ext::shared_ptr< QdFpIterationScheme > iterationScheme=accurateScheme(), FixedPointEquation fpEquation=Auto)
 
- 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 ext::shared_ptr< QdFpIterationSchemefastScheme ()
 
static ext::shared_ptr< QdFpIterationSchemeaccurateScheme ()
 
static ext::shared_ptr< QdFpIterationSchemehighPrecisionScheme ()
 

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 Attributes

const ext::shared_ptr< QdFpIterationSchemeiterationScheme_
 
const FixedPointEquation fpEquation_
 

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

High performance/precision American engine based on fixed point iteration for the exercise boundary.

References: Leif Andersen, Mark Lake and Dimitri Offengenden (2015) "High Performance American Option Pricing", https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2547027

Leif Andersen, Mark Lake (2021) "Fast American Option Pricing: The Double-Boundary Case"

https://onlinelibrary.wiley.com/doi/abs/10.1002/wilm.10969

Definition at line 121 of file qdfpamericanengine.hpp.

Member Enumeration Documentation

◆ FixedPointEquation

Enumerator
FP_A 
FP_B 
Auto 

Definition at line 123 of file qdfpamericanengine.hpp.

Constructor & Destructor Documentation

◆ QdFpAmericanEngine()

QdFpAmericanEngine ( ext::shared_ptr< GeneralizedBlackScholesProcess bsProcess,
ext::shared_ptr< QdFpIterationScheme iterationScheme = accurateScheme(),
FixedPointEquation  fpEquation = Auto 
)
explicit

Definition at line 402 of file qdfpamericanengine.cpp.

Member Function Documentation

◆ fastScheme()

ext::shared_ptr< QdFpIterationScheme > fastScheme ( )
static

Definition at line 412 of file qdfpamericanengine.cpp.

◆ accurateScheme()

ext::shared_ptr< QdFpIterationScheme > accurateScheme ( )
static

Definition at line 418 of file qdfpamericanengine.cpp.

◆ highPrecisionScheme()

ext::shared_ptr< QdFpIterationScheme > highPrecisionScheme ( )
static

Definition at line 424 of file qdfpamericanengine.cpp.

◆ calculatePut()

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

Implements QdPutCallParityEngine.

Definition at line 429 of file qdfpamericanengine.cpp.

+ Here is the call graph for this function:

Member Data Documentation

◆ iterationScheme_

const ext::shared_ptr<QdFpIterationScheme> iterationScheme_
private

Definition at line 139 of file qdfpamericanengine.hpp.

◆ fpEquation_

const FixedPointEquation fpEquation_
private

Definition at line 140 of file qdfpamericanengine.hpp.