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

Generalized Black-Scholes stochastic process. More...

#include <blackscholesprocess.hpp>

+ Inheritance diagram for GeneralizedBlackScholesProcess:
+ Collaboration diagram for GeneralizedBlackScholesProcess:

Public Member Functions

 GeneralizedBlackScholesProcess (Handle< Quote > x0, Handle< YieldTermStructure > dividendTS, Handle< YieldTermStructure > riskFreeTS, Handle< BlackVolTermStructure > blackVolTS, const ext::shared_ptr< discretization > &d=ext::shared_ptr< discretization >(new EulerDiscretization), bool forceDiscretization=false)
 
 GeneralizedBlackScholesProcess (Handle< Quote > x0, Handle< YieldTermStructure > dividendTS, Handle< YieldTermStructure > riskFreeTS, Handle< BlackVolTermStructure > blackVolTS, Handle< LocalVolTermStructure > localVolTS)
 
StochasticProcess1D interface
Real x0 () const override
 returns the initial value of the state variable More...
 
Real drift (Time t, Real x) const override
 
Real diffusion (Time t, Real x) const override
 
Real apply (Real x0, Real dx) const override
 
Real expectation (Time t0, Real x0, Time dt) const override
 
Real stdDeviation (Time t0, Real x0, Time dt) const override
 
Real variance (Time t0, Real x0, Time dt) const override
 
Real evolve (Time t0, Real x0, Time dt, Real dw) const override
 
Time time (const Date &) const override
 
Observer interface
void update () override
 
- Public Member Functions inherited from StochasticProcess1D
- Public Member Functions inherited from StochasticProcess
 ~StochasticProcess () override=default
 
virtual Size factors () const
 returns the number of independent factors of the process More...
 
void update () override
 
- 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 ()
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 

Inspectors

Handle< Quotex0_
 
Handle< YieldTermStructureriskFreeRate_
 
Handle< YieldTermStructuredividendYield_
 
Handle< BlackVolTermStructureblackVolatility_
 
Handle< LocalVolTermStructureexternalLocalVolTS_
 
bool forceDiscretization_
 
bool hasExternalLocalVol_
 
RelinkableHandle< LocalVolTermStructurelocalVolatility_
 
bool updated_
 
bool isStrikeIndependent_
 
const Handle< Quote > & stateVariable () const
 
const Handle< YieldTermStructure > & dividendYield () const
 
const Handle< YieldTermStructure > & riskFreeRate () const
 
const Handle< BlackVolTermStructure > & blackVolatility () const
 
const Handle< LocalVolTermStructure > & localVolatility () const
 

Additional Inherited Members

- Public Types inherited from Observer
typedef set_type::iterator iterator
 
- Protected Member Functions inherited from StochasticProcess1D
 StochasticProcess1D ()=default
 
 StochasticProcess1D (ext::shared_ptr< discretization >)
 
- Protected Member Functions inherited from StochasticProcess
 StochasticProcess ()=default
 
 StochasticProcess (ext::shared_ptr< discretization >)
 
- Protected Attributes inherited from StochasticProcess1D
ext::shared_ptr< discretizationdiscretization_
 
- Protected Attributes inherited from StochasticProcess
ext::shared_ptr< discretizationdiscretization_
 

Detailed Description

Generalized Black-Scholes stochastic process.

This class describes the stochastic process \( S \) governed by

\[ d\ln S(t) = (r(t) - q(t) - \frac{\sigma(t, S)^2}{2}) dt + \sigma dW_t. \]

Warning:
while the interface is expressed in terms of \( S \), the internal calculations work on \( ln S \).

Definition at line 54 of file blackscholesprocess.hpp.

Constructor & Destructor Documentation

◆ GeneralizedBlackScholesProcess() [1/2]

GeneralizedBlackScholesProcess ( Handle< Quote x0,
Handle< YieldTermStructure dividendTS,
Handle< YieldTermStructure riskFreeTS,
Handle< BlackVolTermStructure blackVolTS,
const ext::shared_ptr< discretization > &  d = ext::shared_ptr<discretization>(new EulerDiscretization),
bool  forceDiscretization = false 
)

Definition at line 53 of file blackscholesprocess.cpp.

+ Here is the call graph for this function:

◆ GeneralizedBlackScholesProcess() [2/2]

Definition at line 35 of file blackscholesprocess.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ x0()

Real x0 ( ) const
overridevirtual

returns the initial value of the state variable

Implements StochasticProcess1D.

Definition at line 70 of file blackscholesprocess.cpp.

+ Here is the caller graph for this function:

◆ drift()

Real drift ( Time  t,
Real  x 
) const
overridevirtual

Implements StochasticProcess1D.

Definition at line 74 of file blackscholesprocess.cpp.

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

◆ diffusion()

Real diffusion ( Time  t,
Real  x 
) const
overridevirtual

Implements StochasticProcess1D.

Definition at line 84 of file blackscholesprocess.cpp.

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

◆ apply()

Real apply ( Real  x0,
Real  dx 
) const
overridevirtual

applies a change to the asset value. By default, it returns \( x + \Delta x \).

Reimplemented from StochasticProcess1D.

Definition at line 88 of file blackscholesprocess.cpp.

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

◆ expectation()

Real expectation ( Time  t0,
Real  x0,
Time  dt 
) const
overridevirtual
Warning:
in general raises a "not implemented" exception. It should be rewritten to return the expectation E(S) of the process, not exp(E(log S)).

Reimplemented from StochasticProcess1D.

Definition at line 92 of file blackscholesprocess.cpp.

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

◆ stdDeviation()

Real stdDeviation ( Time  t0,
Real  x0,
Time  dt 
) const
overridevirtual

returns the standard deviation \( S(x_{t_0 + \Delta t} | x_{t_0} = x_0) \) of the process after a time interval \( \Delta t \) according to the given discretization. This method can be overridden in derived classes which want to hard-code a particular discretization.

Reimplemented from StochasticProcess1D.

Definition at line 108 of file blackscholesprocess.cpp.

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

◆ variance()

Real variance ( Time  t0,
Real  x0,
Time  dt 
) const
overridevirtual

returns the variance \( V(x_{t_0 + \Delta t} | x_{t_0} = x_0) \) of the process after a time interval \( \Delta t \) according to the given discretization. This method can be overridden in derived classes which want to hard-code a particular discretization.

Reimplemented from StochasticProcess1D.

Definition at line 119 of file blackscholesprocess.cpp.

+ Here is the call graph for this function:

◆ evolve()

Real evolve ( Time  t0,
Real  x0,
Time  dt,
Real  dw 
) const
overridevirtual

returns the asset value after a time interval \( \Delta t \) according to the given discretization. By default, it returns

\[ E(x_0,t_0,\Delta t) + S(x_0,t_0,\Delta t) \cdot \Delta w \]

where \( E \) is the expectation and \( S \) the standard deviation.

Reimplemented from StochasticProcess1D.

Definition at line 131 of file blackscholesprocess.cpp.

+ Here is the call graph for this function:

◆ time()

Time time ( const Date ) const
overridevirtual

returns the time value corresponding to the given date in the reference system of the stochastic process.

Note
As a number of processes might not need this functionality, a default implementation is given which raises an exception.

Reimplemented from StochasticProcess.

Definition at line 149 of file blackscholesprocess.cpp.

+ Here is the caller graph for this function:

◆ update()

void update ( )
overridevirtual

This method must be implemented in derived classes. An instance of Observer does not call this method directly: instead, it will be called by the observables the instance registered with when they need to notify any changes.

Implements Observer.

Definition at line 154 of file blackscholesprocess.cpp.

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

◆ stateVariable()

const Handle< Quote > & stateVariable ( ) const

Definition at line 160 of file blackscholesprocess.cpp.

◆ dividendYield()

const Handle< YieldTermStructure > & dividendYield ( ) const

Definition at line 165 of file blackscholesprocess.cpp.

+ Here is the caller graph for this function:

◆ riskFreeRate()

const Handle< YieldTermStructure > & riskFreeRate ( ) const

Definition at line 170 of file blackscholesprocess.cpp.

+ Here is the caller graph for this function:

◆ blackVolatility()

const Handle< BlackVolTermStructure > & blackVolatility ( ) const

Definition at line 175 of file blackscholesprocess.cpp.

+ Here is the caller graph for this function:

◆ localVolatility()

const Handle< LocalVolTermStructure > & localVolatility ( ) const

Definition at line 180 of file blackscholesprocess.cpp.

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

Member Data Documentation

◆ x0_

Handle<Quote> x0_
private

Definition at line 101 of file blackscholesprocess.hpp.

◆ riskFreeRate_

Handle<YieldTermStructure> riskFreeRate_
private

Definition at line 102 of file blackscholesprocess.hpp.

◆ dividendYield_

Handle<YieldTermStructure> dividendYield_
private

Definition at line 102 of file blackscholesprocess.hpp.

◆ blackVolatility_

Handle<BlackVolTermStructure> blackVolatility_
private

Definition at line 103 of file blackscholesprocess.hpp.

◆ externalLocalVolTS_

Handle<LocalVolTermStructure> externalLocalVolTS_
private

Definition at line 104 of file blackscholesprocess.hpp.

◆ forceDiscretization_

bool forceDiscretization_
private

Definition at line 105 of file blackscholesprocess.hpp.

◆ hasExternalLocalVol_

bool hasExternalLocalVol_
private

Definition at line 106 of file blackscholesprocess.hpp.

◆ localVolatility_

RelinkableHandle<LocalVolTermStructure> localVolatility_
mutableprivate

Definition at line 107 of file blackscholesprocess.hpp.

◆ updated_

bool updated_
mutableprivate

Definition at line 108 of file blackscholesprocess.hpp.

◆ isStrikeIndependent_

bool isStrikeIndependent_
private

Definition at line 108 of file blackscholesprocess.hpp.