QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
|
Longstaff-Schwarz Monte Carlo engine for early exercise options. More...
#include <mclongstaffschwartzengine.hpp>
Public Types | |
typedef MC< RNG >::path_type | path_type |
typedef McSimulation< MC, RNG, S >::stats_type | stats_type |
typedef McSimulation< MC, RNG, S >::path_pricer_type | path_pricer_type |
typedef McSimulation< MC, RNG, S >::path_generator_type | path_generator_type |
typedef McSimulation< MC, RNG_Calibration, S >::path_generator_type | path_generator_type_calibration |
Public Types inherited from Observer | |
typedef set_type::iterator | iterator |
Public Types inherited from McSimulation< MC, RNG, S > | |
typedef MonteCarloModel< MC, RNG, S >::path_generator_type | path_generator_type |
typedef MonteCarloModel< MC, RNG, S >::path_pricer_type | path_pricer_type |
typedef MonteCarloModel< MC, RNG, S >::stats_type | stats_type |
typedef MonteCarloModel< MC, RNG, S >::result_type | result_type |
Public Member Functions | |
MCLongstaffSchwartzEngine (ext::shared_ptr< StochasticProcess > process, Size timeSteps, Size timeStepsPerYear, bool brownianBridge, bool antitheticVariate, bool controlVariate, Size requiredSamples, Real requiredTolerance, Size maxSamples, BigNatural seed, Size nCalibrationSamples=Null< Size >(), ext::optional< bool > brownianBridgeCalibration=ext::nullopt, ext::optional< bool > antitheticVariateCalibration=ext::nullopt, BigNatural seedCalibration=Null< Size >()) | |
void | calculate () const override |
Public Member Functions inherited from GenericEngine< ArgumentsType, ResultsType > | |
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 () |
Public Member Functions inherited from McSimulation< MC, RNG, S > | |
virtual | ~McSimulation ()=default |
result_type | value (Real tolerance, Size maxSamples=QL_MAX_INTEGER, Size minSamples=1023) const |
add samples until the required absolute tolerance is reached More... | |
result_type | valueWithSamples (Size samples) const |
simulate a fixed number of samples More... | |
result_type | errorEstimate () const |
error estimated using the samples simulated so far More... | |
const stats_type & | sampleAccumulator () const |
access to the sample accumulator for richer statistics More... | |
void | calculate (Real requiredTolerance, Size requiredSamples, Size maxSamples) const |
basic calculate method provided to inherited pricing engines More... | |
Protected Member Functions | |
virtual ext::shared_ptr< LongstaffSchwartzPathPricer< path_type > > | lsmPathPricer () const =0 |
TimeGrid | timeGrid () const override |
ext::shared_ptr< path_pricer_type > | pathPricer () const override |
ext::shared_ptr< path_generator_type > | pathGenerator () const override |
Protected Member Functions inherited from McSimulation< MC, RNG, S > | |
McSimulation (bool antitheticVariate, bool controlVariate) | |
virtual ext::shared_ptr< path_pricer_type > | pathPricer () const =0 |
virtual ext::shared_ptr< path_generator_type > | pathGenerator () const =0 |
virtual TimeGrid | timeGrid () const =0 |
virtual ext::shared_ptr< path_pricer_type > | controlPathPricer () const |
virtual ext::shared_ptr< path_generator_type > | controlPathGenerator () const |
virtual ext::shared_ptr< PricingEngine > | controlPricingEngine () const |
virtual result_type | controlVariateValue () const |
Protected Attributes | |
ext::shared_ptr< StochasticProcess > | process_ |
const Size | timeSteps_ |
const Size | timeStepsPerYear_ |
const bool | brownianBridge_ |
const Size | requiredSamples_ |
const Real | requiredTolerance_ |
const Size | maxSamples_ |
const BigNatural | seed_ |
const Size | nCalibrationSamples_ |
const bool | brownianBridgeCalibration_ |
const bool | antitheticVariateCalibration_ |
const BigNatural | seedCalibration_ |
ext::shared_ptr< LongstaffSchwartzPathPricer< path_type > > | pathPricer_ |
ext::shared_ptr< MonteCarloModel< MC, RNG_Calibration, S > > | mcModelCalibration_ |
Protected Attributes inherited from GenericEngine< ArgumentsType, ResultsType > | |
ArgumentsType | arguments_ |
ResultsType | results_ |
Protected Attributes inherited from McSimulation< MC, RNG, S > | |
ext::shared_ptr< MonteCarloModel< MC, RNG, S > > | mcModel_ |
bool | antitheticVariate_ |
bool | controlVariate_ |
Additional Inherited Members | |
Static Protected Member Functions inherited from McSimulation< MC, RNG, S > | |
template<class Sequence > | |
static Real | maxError (const Sequence &sequence) |
static Real | maxError (Real error) |
Longstaff-Schwarz Monte Carlo engine for early exercise options.
References:
Francis Longstaff, Eduardo Schwartz, 2001. Valuing American Options by Simulation: A Simple Least-Squares Approach, The Review of Financial Studies, Volume 14, No. 1, 113-147
Definition at line 49 of file mclongstaffschwartzengine.hpp.
typedef MC<RNG>::path_type path_type |
Definition at line 52 of file mclongstaffschwartzengine.hpp.
typedef McSimulation<MC,RNG,S>::stats_type stats_type |
Definition at line 54 of file mclongstaffschwartzengine.hpp.
typedef McSimulation<MC,RNG,S>::path_pricer_type path_pricer_type |
Definition at line 56 of file mclongstaffschwartzengine.hpp.
typedef McSimulation<MC,RNG,S>::path_generator_type path_generator_type |
Definition at line 58 of file mclongstaffschwartzengine.hpp.
typedef McSimulation<MC,RNG_Calibration,S>::path_generator_type path_generator_type_calibration |
Definition at line 61 of file mclongstaffschwartzengine.hpp.
MCLongstaffSchwartzEngine | ( | ext::shared_ptr< StochasticProcess > | process, |
Size | timeSteps, | ||
Size | timeStepsPerYear, | ||
bool | brownianBridge, | ||
bool | antitheticVariate, | ||
bool | controlVariate, | ||
Size | requiredSamples, | ||
Real | requiredTolerance, | ||
Size | maxSamples, | ||
BigNatural | seed, | ||
Size | nCalibrationSamples = Null<Size>() , |
||
ext::optional< bool > | brownianBridgeCalibration = ext::nullopt , |
||
ext::optional< bool > | antitheticVariateCalibration = ext::nullopt , |
||
BigNatural | seedCalibration = Null<Size>() |
||
) |
If the parameters brownianBridge and antitheticVariate are not given they are chosen to be identical to the respective parameters for pricing; the seed for calibration is chosen to be zero if the pricing seed is zero and otherwise as the pricing seed plus some offset to avoid identical paths in calibration and pricing; note however that this has no effect for low discrepancy RNGs usually, it is therefore recommended to use pseudo random generators for the calibration phase always (and possibly quasi monte carlo in the subsequent pricing).
Definition at line 122 of file mclongstaffschwartzengine.hpp.
|
overridevirtual |
Implements PricingEngine.
Reimplemented in MCAmericanEngine< RNG, S, RNG_Calibration >.
Definition at line 179 of file mclongstaffschwartzengine.hpp.
|
protectedpure virtual |
Implemented in MCAmericanBasketEngine< RNG >, and MCAmericanEngine< RNG, S, RNG_Calibration >.
|
overrideprotectedvirtual |
Implements McSimulation< MC, RNG, S >.
Definition at line 216 of file mclongstaffschwartzengine.hpp.
|
overrideprotectedvirtual |
Implements McSimulation< MC, RNG, S >.
Definition at line 170 of file mclongstaffschwartzengine.hpp.
|
overrideprotectedvirtual |
Implements McSimulation< MC, RNG, S >.
Definition at line 247 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 97 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 98 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 99 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 100 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 101 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 102 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 103 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 104 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 105 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 106 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 107 of file mclongstaffschwartzengine.hpp.
|
protected |
Definition at line 108 of file mclongstaffschwartzengine.hpp.
|
mutableprotected |
Definition at line 111 of file mclongstaffschwartzengine.hpp.
|
mutableprotected |
Definition at line 113 of file mclongstaffschwartzengine.hpp.