Logo
Reference manual - version qle_version
CommoditySchwartzModel Class Reference

#include <qle/models/commodityschwartzmodel.hpp>

Inheritance diagram for CommoditySchwartzModel:

Public Types

enum class  Discretization { Euler , Exact }

Public Member Functions

 CommoditySchwartzModel (const QuantLib::ext::shared_ptr< CommoditySchwartzParametrization > &parametrization, const Discretization discretization=Discretization::Euler)
const QuantLib::ext::shared_ptr< ParametrizationparametrizationBase () const override
Handle< PriceTermStructuretermStructure () const override
const Currency & currency () const override
Size n () const override
Size m () const override
QuantLib::ext::shared_ptr< StochasticProcessstateProcess () const override
QuantLib::Real forwardPrice (const QuantLib::Time t, const QuantLib::Time T, const QuantLib::Array &x, const QuantLib::Handle< QuantExt::PriceTermStructure > &priceCurve=QuantLib::Handle< QuantExt::PriceTermStructure >()) const override
const QuantLib::ext::shared_ptr< CommoditySchwartzParametrizationparametrization () const
 Schwartz model specific methods.
void update () override
 observer and linked calibrated model interface
void generateArguments () override
Public Member Functions inherited from LinkableCalibratedModel
void update () override
virtual void calibrate (const std::vector< QuantLib::ext::shared_ptr< CalibrationHelper > > &, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >(), const std::vector< bool > &fixParameters=std::vector< bool >())
 Calibrate to a set of market instruments (usually caps/swaptions).
virtual void calibrate (const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >(), const std::vector< bool > &fixParameters=std::vector< bool >())
 for backward compatibility
Real value (const Array &params, const std::vector< QuantLib::ext::shared_ptr< CalibrationHelper > > &)
Real value (const Array &params, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &)
 for backward compatibility
const QuantLib::ext::shared_ptr< Constraint > & constraint () const
EndCriteria::Type endCriteria () const
 Returns end criteria result.
const Array & problemValues () const
 Returns the problem values.
Array params () const
 Returns array of arguments on which calibration is done.
virtual void setParams (const Array &params)
virtual void setParam (Size idx, const Real value)

Additional Inherited Members

Protected Attributes inherited from LinkableCalibratedModel
std::vector< QuantLib::ext::shared_ptr< Parameter > > arguments_
QuantLib::ext::shared_ptr< Constraintconstraint_
EndCriteria::Type endCriteria_
Array problemValues_

Detailed Description

Schwartz (1997) one-factor model of the commodity price termstructure with two constant parameters, sigma and kappa

Price curve dynamics (Martingale) dF(t,T) / F(t,T) = sigma * exp(-kappa * (T-t)) * dW

Model-implied price curve: F(t,T) = F(0,T) * exp{ X(t) * exp(-kappa*(T-t))) - 1/2 * (V(0,T)-V(t,T)) }, with
V(t,T) = sigma^2 * (1 - exp(-2*kappa*(T-t))) / (2*kappa), and dX(t) = -kappa * X(t) * dt + sigma * dW(t), X(0) = 0

In terms of drift-free state variable Y(t) = exp(kappa*t) * X(t): F(t,T) = F(0,T) * exp{ Y(t) * exp(-kappa*T)) - 1/2 * (V(0,T)-V(t,T)) }, dY(t) = sigma * exp(kappa * t) dW(t), Y(0) = 0

Member Function Documentation

◆ parametrizationBase()

const QuantLib::ext::shared_ptr< Parametrization > parametrizationBase ( ) const
overridevirtual

parametrization (as base class)

Implements CommodityModel.

◆ termStructure()

Handle< PriceTermStructure > termStructure ( ) const
overridevirtual

price term structure to which the model is (initially) calibrated

Implements CommodityModel.

◆ currency()

const Currency & currency ( ) const
overridevirtual

currency of the commodity

Implements CommodityModel.

◆ n()

Size n ( ) const
overridevirtual

dimension of model state

Implements CommodityModel.

◆ m()

Size m ( ) const
overridevirtual

number of Brownians to evolve the state

Implements CommodityModel.

◆ stateProcess()

QuantLib::ext::shared_ptr< StochasticProcess > stateProcess ( ) const
overridevirtual

stochastic process, this has dimension n() and m() Brownian drivers

Implements CommodityModel.

◆ forwardPrice()

QuantLib::Real forwardPrice ( const QuantLib::Time t,
const QuantLib::Time T,
const QuantLib::Array & x,
const QuantLib::Handle< QuantExt::PriceTermStructure > & priceCurve = QuantLib::Handle< QuantExt::PriceTermStructure >() ) const
overridevirtual

stochastic forward price curve F(t,T) at future time t depending on state (of dimension n())

Implements CommodityModel.

◆ generateArguments()

void generateArguments ( )
overridevirtual

Reimplemented from LinkableCalibratedModel.