Logo
Reference manual - version qle_version
CommoditySchwartzPiecewiseConstantParametrization Class Reference

COM Schwartz parametrization. More...

#include <qle/models/commodityschwartzpiecewiseconstantparametrization.hpp>

Inheritance diagram for CommoditySchwartzPiecewiseConstantParametrization:

Public Member Functions

 CommoditySchwartzPiecewiseConstantParametrization (const Currency &currency, const std::string &name, const Handle< QuantExt::PriceTermStructure > &priceCurve, const Handle< Quote > &fxSpotToday, const Real sigma, const Real kappa, const Array &aTimes, const Array &a, const QuantLib::ext::shared_ptr< QuantLib::Constraint > &aConstraint=QuantLib::ext::make_shared< QuantLib::NoConstraint >(), bool driftFreeState=false)
Real variance (const Time t) const override
 State variable variance on [0, t].
Real sigma (const Time t) const override
 State variable Y's diffusion at time t: sigma * exp(kappa * t).
Real sigmaParameter () const override
 Inspector for the current value of model parameter sigma (direct).
Real kappaParameter () const override
 Inspector for the current value of model parameter kappa (direct).
Real a (const QuantLib::Time t) const override
 Inspector for the current value of model parameter a(T) (direct).
Real m (const QuantLib::Time t) const override
 Inspector for the current value of model parameter m(T):= exp(a(T)) (direct).
Real VtT (Real t, Real T) override
 Variance V(t,T) used in the computation of F(t,T).
const QuantLib::ext::shared_ptr< Parameterparameter (const Size) const override
 Inspector for current value of the model parameter vector (inverse values).
const Array & parameterTimes (const Size i) const override
 Inspector for parameter time grid.
void update () const override
Public Member Functions inherited from CommoditySchwartzParametrization
 CommoditySchwartzParametrization (const Currency &currency, const std::string &name, const Handle< QuantExt::PriceTermStructure > &priceCurve, const Handle< Quote > &fxSpotToday, bool driftFreeState=false)
Size numberOfParameters () const override
Handle< QuantExt::PriceTermStructurepriceCurve () const
const Handle< QuotefxSpotToday () const
bool driftFreeState () const
Public Member Functions inherited from Parametrization
 Parametrization (const Currency &currency, const std::string &name="")
virtual const Currency & currency () const
virtual Array parameterValues (const Size) const
const std::string & name () const

Protected Member Functions

Real direct (const Size i, const Real x) const override
Real inverse (const Size i, const Real y) const override
Protected Member Functions inherited from Parametrization
Time tr (const Time t) const
Time tl (const Time t) const
Time tr2 (const Time t) const
Time tm2 (const Time t) const
Time tl2 (const Time t) const

Protected Attributes

const QuantLib::ext::shared_ptr< PseudoParametersigma_
const QuantLib::ext::shared_ptr< PseudoParameterkappa_
Protected Attributes inherited from CommoditySchwartzParametrization
const Handle< QuantExt::PriceTermStructurepriceCurve_
const Handle< QuotefxSpotToday_
std::string comName_
bool driftFreeState_
Protected Attributes inherited from Parametrization
const Real h_
const Real h2_

Detailed Description

COM Schwartz parametrization.

COM parametrization for the Schwartz (1997) mean-reverting one-factor model with log-normal forward price dynamics and forward volatility sigma * exp(-kappa*(T-t)): dF(t,T) / F(t,T) = exp(b(T)) * sigma * exp(-kappa * (T-t)) * dW
where b is a piecewise constant seasonality adjustment factor.

The model can be propagated in terms of an artificial spot price process of the form S(t) = A(t) * exp(B(t) * X(t)) where
dX(t) = -kappa * X(t) * dt + sigma * dW(t) X(t) - X(s) = -X(s) * (1 - exp(-kappa*(t-s)) + int_s^t sigma * exp(-kappa*(t-u)) dW(u) E[X(t)|s] = X(s) * exp(-kappa*(t-s)) Var[X(t)-X(s)|s] = sigma^2 * (1 - exp(-2*kappa*(t-s))) / (2*kappa)

The stochastic future price curve in terms of X(t) is F(t,T) = F(0,T) * exp(b(T)) * exp( X(t) * exp(-kappa*(T-t) - 1/2 * (V(0,T) - V(t,T)) with V(t,T) = sigma^2 * exp(b(T)) (1 - exp(-2*kappa(T-t))) / (2*kappa) and Var[ln F(T,T)] = VaR[X(T)]

Instead of state variable X we can use Y(t) = exp(kappa * t) * X(t) with drift-free dY(t) = sigma * exp(kappa * t) * dW Y(t) = int_0^t sigma * exp(kappa * s) * dW(s) Var[Y(t)] = sigma^2 * (exp(2*kappa*t) - 1) / (2*kappa) Var[Y(t)-Y(s)|s] = int_s^t sigma * exp(kappa * u) * dW(u) = Var[Y(t)] - Var[Y(s)] The stochastic future price curve in terms of Y(t) is F(t,T) = F(0,t) * exp( Y(t) * exp(-kappa*T) - 1/2 * (V(0,T) - V(t,T))

Constructor & Destructor Documentation

◆ CommoditySchwartzPiecewiseConstantParametrization()

CommoditySchwartzPiecewiseConstantParametrization ( const Currency & currency,
const std::string & name,
const Handle< QuantExt::PriceTermStructure > & priceCurve,
const Handle< Quote > & fxSpotToday,
const Real sigma,
const Real kappa,
const Array & aTimes,
const Array & a,
const QuantLib::ext::shared_ptr< QuantLib::Constraint > & aConstraint = QuantLib::ext::make_shared< QuantLib::NoConstraint >(),
bool driftFreeState = false )

The currency refers to the commodity currency, the fx spot is as of today (i.e. the discounted spot)

Member Function Documentation

◆ variance()

Real variance ( const Time t) const
overridevirtual

State variable variance on [0, t].

Implements CommoditySchwartzParametrization.

◆ sigma()

Real sigma ( const Time t) const
overridevirtual

State variable Y's diffusion at time t: sigma * exp(kappa * t).

Implements CommoditySchwartzParametrization.

◆ sigmaParameter()

Real sigmaParameter ( ) const
overridevirtual

Inspector for the current value of model parameter sigma (direct).

Implements CommoditySchwartzParametrization.

◆ kappaParameter()

Real kappaParameter ( ) const
overridevirtual

Inspector for the current value of model parameter kappa (direct).

Implements CommoditySchwartzParametrization.

◆ a()

Real a ( const QuantLib::Time t) const
overridevirtual

Inspector for the current value of model parameter a(T) (direct).

Implements CommoditySchwartzParametrization.

◆ m()

Real m ( const QuantLib::Time t) const
overridevirtual

Inspector for the current value of model parameter m(T):= exp(a(T)) (direct).

Implements CommoditySchwartzParametrization.

◆ VtT()

Real VtT ( Real t,
Real T )
overridevirtual

Variance V(t,T) used in the computation of F(t,T).

Implements CommoditySchwartzParametrization.

◆ parameter()

const QuantLib::ext::shared_ptr< Parameter > parameter ( const Size i) const
overridevirtual

Inspector for current value of the model parameter vector (inverse values).

Reimplemented from Parametrization.

◆ parameterTimes()

const Array & parameterTimes ( const Size i) const
overridevirtual

Inspector for parameter time grid.

Reimplemented from Parametrization.

◆ update()

void update ( ) const
overridevirtual

this method should be called when input parameters linked via references or pointers change in order to ensure consistent results

Reimplemented from Parametrization.

◆ direct()

Real direct ( const Size ,
const Real x ) const
overrideprotectedvirtual

transformations between raw and actual parameters

Reimplemented from Parametrization.

◆ inverse()

Real inverse ( const Size i,
const Real y ) const
overrideprotectedvirtual

Reimplemented from Parametrization.