QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Attributes | List of all members
JointStochasticProcess Class Referenceabstract

#include <jointstochasticprocess.hpp>

+ Inheritance diagram for JointStochasticProcess:
+ Collaboration diagram for JointStochasticProcess:

Classes

struct  CachingKey
 

Public Member Functions

 JointStochasticProcess (std::vector< ext::shared_ptr< StochasticProcess > > l, Size factors=Null< Size >())
 
Size size () const override
 returns the number of dimensions of the stochastic process More...
 
Size factors () const override
 returns the number of independent factors of the process More...
 
Array initialValues () const override
 returns the initial values of the state variables More...
 
Array drift (Time t, const Array &x) const override
 returns the drift part of the equation, i.e., \( \mu(t, \mathrm{x}_t) \) More...
 
Array expectation (Time t0, const Array &x0, Time dt) const override
 
Matrix diffusion (Time t, const Array &x) const override
 returns the diffusion part of the equation, i.e. \( \sigma(t, \mathrm{x}_t) \) More...
 
Matrix covariance (Time t0, const Array &x0, Time dt) const override
 
Matrix stdDeviation (Time t0, const Array &x0, Time dt) const override
 
Array apply (const Array &x0, const Array &dx) const override
 
Array evolve (Time t0, const Array &x0, Time dt, const Array &dw) const override
 
virtual void preEvolve (Time t0, const Array &x0, Time dt, const Array &dw) const =0
 
virtual Array postEvolve (Time t0, const Array &x0, Time dt, const Array &dw, const Array &y0) const =0
 
virtual DiscountFactor numeraire (Time t, const Array &x) const =0
 
virtual bool correlationIsStateDependent () const =0
 
virtual Matrix crossModelCorrelation (Time t0, const Array &x0) const =0
 
const std::vector< ext::shared_ptr< StochasticProcess > > & constituents () const
 
void update () override
 
Time time (const Date &date) const override
 
- Public Member Functions inherited from StochasticProcess
 ~StochasticProcess () override=default
 
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 ()
 

Protected Member Functions

Array slice (const Array &x, Size i) const
 
- Protected Member Functions inherited from StochasticProcess
 StochasticProcess ()=default
 
 StochasticProcess (ext::shared_ptr< discretization >)
 

Protected Attributes

std::vector< ext::shared_ptr< StochasticProcess > > l_
 
- Protected Attributes inherited from StochasticProcess
ext::shared_ptr< discretizationdiscretization_
 

Private Types

typedef std::vector< ext::shared_ptr< StochasticProcess > >::const_iterator const_iterator
 
typedef std::vector< ext::shared_ptr< StochasticProcess > >::iterator iterator
 

Private Attributes

Size size_ = 0
 
Size factors_
 
Size modelFactors_ = 0
 
std::vector< Sizevsize_
 
std::vector< Sizevfactors_
 
std::map< CachingKey, MatrixcorrelationCache_
 

Additional Inherited Members

- Public Types inherited from Observer
typedef set_type::iterator iterator
 

Detailed Description

Definition at line 34 of file jointstochasticprocess.hpp.

Member Typedef Documentation

◆ const_iterator

typedef std::vector<ext::shared_ptr<StochasticProcess>>::const_iterator const_iterator
private

Definition at line 76 of file jointstochasticprocess.hpp.

◆ iterator

typedef std::vector<ext::shared_ptr<StochasticProcess>>::iterator iterator
private

Definition at line 79 of file jointstochasticprocess.hpp.

Constructor & Destructor Documentation

◆ JointStochasticProcess()

JointStochasticProcess ( std::vector< ext::shared_ptr< StochasticProcess > >  l,
Size  factors = Null<Size>() 
)

Definition at line 31 of file jointstochasticprocess.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ size()

Size size ( ) const
overridevirtual

returns the number of dimensions of the stochastic process

Implements StochasticProcess.

Definition at line 60 of file jointstochasticprocess.cpp.

+ Here is the caller graph for this function:

◆ factors()

Size factors ( ) const
overridevirtual

returns the number of independent factors of the process

Reimplemented from StochasticProcess.

Definition at line 64 of file jointstochasticprocess.cpp.

◆ initialValues()

Array initialValues ( ) const
overridevirtual

returns the initial values of the state variables

Implements StochasticProcess.

Definition at line 77 of file jointstochasticprocess.cpp.

+ Here is the call graph for this function:

◆ drift()

Array drift ( Time  t,
const Array x 
) const
overridevirtual

returns the drift part of the equation, i.e., \( \mu(t, \mathrm{x}_t) \)

Implements StochasticProcess.

Definition at line 91 of file jointstochasticprocess.cpp.

+ Here is the call graph for this function:

◆ expectation()

Array expectation ( Time  t0,
const Array x0,
Time  dt 
) const
overridevirtual

returns the expectation \( E(\mathrm{x}_{t_0 + \Delta t} | \mathrm{x}_{t_0} = \mathrm{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 StochasticProcess.

Definition at line 106 of file jointstochasticprocess.cpp.

+ Here is the call graph for this function:

◆ diffusion()

Matrix diffusion ( Time  t,
const Array x 
) const
overridevirtual

returns the diffusion part of the equation, i.e. \( \sigma(t, \mathrm{x}_t) \)

Implements StochasticProcess.

Definition at line 123 of file jointstochasticprocess.cpp.

+ Here is the call graph for this function:

◆ covariance()

Matrix covariance ( Time  t0,
const Array x0,
Time  dt 
) const
overridevirtual

returns the covariance \( V(\mathrm{x}_{t_0 + \Delta t} | \mathrm{x}_{t_0} = \mathrm{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 StochasticProcess.

Definition at line 130 of file jointstochasticprocess.cpp.

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

◆ stdDeviation()

Matrix stdDeviation ( Time  t0,
const Array x0,
Time  dt 
) const
overridevirtual

returns the standard deviation \( S(\mathrm{x}_{t_0 + \Delta t} | \mathrm{x}_{t_0} = \mathrm{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 StochasticProcess.

Definition at line 164 of file jointstochasticprocess.cpp.

+ Here is the call graph for this function:

◆ apply()

Array apply ( const Array x0,
const Array dx 
) const
overridevirtual

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

Reimplemented from StochasticProcess.

Definition at line 171 of file jointstochasticprocess.cpp.

+ Here is the call graph for this function:

◆ evolve()

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

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

\[ E(\mathrm{x}_0,t_0,\Delta t) + S(\mathrm{x}_0,t_0,\Delta t) \cdot \Delta \mathrm{w} \]

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

Reimplemented from StochasticProcess.

Definition at line 185 of file jointstochasticprocess.cpp.

+ Here is the call graph for this function:

◆ preEvolve()

virtual void preEvolve ( Time  t0,
const Array x0,
Time  dt,
const Array dw 
) const
pure virtual
+ Here is the caller graph for this function:

◆ postEvolve()

virtual Array postEvolve ( Time  t0,
const Array x0,
Time  dt,
const Array dw,
const Array y0 
) const
pure virtual
+ Here is the caller graph for this function:

◆ numeraire()

virtual DiscountFactor numeraire ( Time  t,
const Array x 
) const
pure virtual

◆ correlationIsStateDependent()

virtual bool correlationIsStateDependent ( ) const
pure virtual
+ Here is the caller graph for this function:

◆ crossModelCorrelation()

virtual Matrix crossModelCorrelation ( Time  t0,
const Array x0 
) const
pure virtual
+ Here is the caller graph for this function:

◆ constituents()

const std::vector< ext::shared_ptr< StochasticProcess > > & constituents ( ) const

Definition at line 294 of file jointstochasticprocess.cpp.

◆ 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 304 of file jointstochasticprocess.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 298 of file jointstochasticprocess.cpp.

◆ slice()

Array slice ( const Array x,
Size  i 
) const
protected

Definition at line 68 of file jointstochasticprocess.cpp.

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

Member Data Documentation

◆ l_

std::vector<ext::shared_ptr<StochasticProcess> > l_
protected

Definition at line 70 of file jointstochasticprocess.hpp.

◆ size_

Size size_ = 0
private

Definition at line 81 of file jointstochasticprocess.hpp.

◆ factors_

Size factors_
private

Definition at line 81 of file jointstochasticprocess.hpp.

◆ modelFactors_

Size modelFactors_ = 0
private

Definition at line 81 of file jointstochasticprocess.hpp.

◆ vsize_

std::vector<Size> vsize_
private

Definition at line 82 of file jointstochasticprocess.hpp.

◆ vfactors_

std::vector<Size> vfactors_
private

Definition at line 82 of file jointstochasticprocess.hpp.

◆ correlationCache_

std::map<CachingKey, Matrix> correlationCache_
mutableprivate

Definition at line 96 of file jointstochasticprocess.hpp.