Logo
Reference manual - version qle_version
Public Types | Public Member Functions | List of all members
CommoditySchwartzModel Class Reference

#include <qle/models/commodityschwartzmodel.hpp>

+ Inheritance diagram for CommoditySchwartzModel:

Public Types

enum class  Discretization { Euler , Exact }
 

Public Member Functions

 CommoditySchwartzModel (const boost::shared_ptr< CommoditySchwartzParametrization > &parametrization, const Discretization discretization=Discretization::Euler)
 
const boost::shared_ptr< ParametrizationparametrizationBase () const override
 
Handle< PriceTermStructuretermStructure () const override
 
const Currency & currency () const override
 
Size n () const override
 
Size m () const override
 
boost::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 boost::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< boost::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) More...
 
virtual void calibrate (const std::vector< boost::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< boost::shared_ptr< CalibrationHelper > > &)
 
Real value (const Array &params, const std::vector< boost::shared_ptr< BlackCalibrationHelper > > &)
 for backward compatibility
 
const boost::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)
 

Additional Inherited Members

- Protected Attributes inherited from LinkableCalibratedModel
std::vector< boost::shared_ptr< Parameter > > arguments_
 
boost::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 boost::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()

boost::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.