24#ifndef quantext_crossasset_model_hpp
25#define quantext_crossasset_model_hpp
44#include <ql/errors.hpp>
45#include <ql/math/distributions/normaldistribution.hpp>
46#include <ql/math/integrals/integral.hpp>
47#include <ql/math/matrix.hpp>
48#include <ql/models/model.hpp>
50#include <boost/enable_shared_from_this.hpp>
80 const Matrix&
correlation = Matrix(),
const SalvagingAlgorithm::Type salvaging = SalvagingAlgorithm::None,
85 CrossAssetModel(
const std::vector<QuantLib::ext::shared_ptr<IrModel>>& currencyModels,
86 const std::vector<QuantLib::ext::shared_ptr<FxBsParametrization>>& fxParametrizations,
87 const Matrix&
correlation = Matrix(),
const SalvagingAlgorithm::Type salvaging = SalvagingAlgorithm::None,
92 QuantLib::ext::shared_ptr<CrossAssetStateProcess>
stateProcess()
const;
126 Size
ccyIndex(
const Currency& ccy)
const;
129 Size
eqIndex(
const std::string& eqName)
const;
132 Size
infIndex(
const std::string& index)
const;
135 Size
crName(
const std::string& name)
const;
138 Size
comIndex(
const std::string& comName)
const;
145 const std::vector<QuantLib::ext::shared_ptr<Parametrization>>&
parametrizations()
const {
return p_; }
148 const QuantLib::ext::shared_ptr<Parametrization>
ir(
const Size ccy)
const;
149 const QuantLib::ext::shared_ptr<Parametrization>
fx(
const Size ccy)
const;
150 const QuantLib::ext::shared_ptr<Parametrization>
inf(
const Size i)
const;
151 const QuantLib::ext::shared_ptr<Parametrization>
cr(
const Size i)
const;
152 const QuantLib::ext::shared_ptr<Parametrization>
eq(
const Size i)
const;
153 const QuantLib::ext::shared_ptr<Parametrization>
com(
const Size i)
const;
154 const QuantLib::ext::shared_ptr<Parametrization>
crstate(
const Size i)
const;
157 const QuantLib::ext::shared_ptr<IrModel>
irModel(
const Size ccy)
const;
161 numeraire(
const Size ccy,
const QuantLib::Time t,
const QuantLib::Array& x,
162 const QuantLib::Handle<QuantLib::YieldTermStructure>& discountCurve = Handle<YieldTermStructure>(),
163 const QuantLib::Array& aux = Array())
const;
167 const Size ccy,
const QuantLib::Time t,
const QuantLib::Time T,
const QuantLib::Array& x,
168 const QuantLib::Handle<QuantLib::YieldTermStructure>& discountCurve = Handle<YieldTermStructure>())
const;
171 const QuantLib::ext::shared_ptr<HwModel>
hw(
const Size ccy)
const;
172 const QuantLib::ext::shared_ptr<IrHwParametrization>
irhw(
const Size ccy)
const;
175 const QuantLib::ext::shared_ptr<LinearGaussMarkovModel>
lgm(
const Size ccy)
const;
176 const QuantLib::ext::shared_ptr<IrLgm1fParametrization>
irlgm1f(
const Size ccy)
const;
179 Real
numeraire(
const Size ccy,
const Time t,
const Real x,
180 Handle<YieldTermStructure> discountCurve = Handle<YieldTermStructure>())
const;
185 Handle<YieldTermStructure> discountCurve = Handle<YieldTermStructure>())
const;
188 Real
discountBond(
const Size ccy,
const Time t,
const Time T,
const Real x,
189 Handle<YieldTermStructure> discountCurve = Handle<YieldTermStructure>())
const;
193 Handle<YieldTermStructure> discountCurve = Handle<YieldTermStructure>())
const;
196 Real
discountBondOption(
const Size ccy, Option::Type type,
const Real K,
const Time t,
const Time S,
const Time T,
197 Handle<YieldTermStructure> discountCurve = Handle<YieldTermStructure>())
const;
200 const QuantLib::ext::shared_ptr<FxModel>
fxModel(
const Size ccy)
const;
205 const QuantLib::ext::shared_ptr<FxBsParametrization>
fxbs(
const Size ccy)
const;
208 const QuantLib::ext::shared_ptr<InfDkParametrization>
infdk(
const Size i)
const;
211 const QuantLib::ext::shared_ptr<InfJyParameterization>
infjy(
const Size i)
const;
214 const QuantLib::ext::shared_ptr<CrLgm1fParametrization>
crlgm1f(
const Size i)
const;
217 const QuantLib::ext::shared_ptr<CrCirpp>
crcirppModel(
const Size i)
const;
218 const QuantLib::ext::shared_ptr<CrCirppParametrization>
crcirpp(
const Size i)
const;
221 const QuantLib::ext::shared_ptr<EqBsParametrization>
eqbs(
const Size ccy)
const;
224 const QuantLib::ext::shared_ptr<CommodityModel>
comModel(
const Size
com)
const;
227 const QuantLib::ext::shared_ptr<CommoditySchwartzParametrization>
combs(
const Size ccy)
const;
230 const QuantLib::ext::shared_ptr<CrStateParametrization>
crstateParam(
const Size index)
const;
246 Size
cIdx(
const AssetType t,
const Size i,
const Size offset = 0)
const;
251 Size
wIdx(
const AssetType t,
const Size i,
const Size offset = 0)
const;
254 Size
pIdx(
const AssetType t,
const Size i,
const Size offset = 0)
const;
258 const Size jOffset = 0)
const;
261 const Size iOffset = 0,
const Size jOffset = 0);
272 const bool usePiecewiseIntegration =
true)
const;
273 const QuantLib::ext::shared_ptr<Integrator>
integrator()
const;
276 std::pair<Real, Real>
infdkV(
const Size i,
const Time t,
const Time T);
281 std::pair<Real, Real>
infdkI(
const Size i,
const Time t,
const Time T,
const Real z,
const Real y);
285 Real
infdkYY(
const Size i,
const Time t,
const Time S,
const Time T,
const Real z,
const Real y,
const Real irz);
288 std::pair<Real, Real>
crlgm1fS(
const Size i,
const Size ccy,
const Time t,
const Time T,
const Real z,
292 std::pair<Real, Real>
crcirppS(
const Size i,
const Time t,
const Time T,
const Real y,
const Real s)
const;
295 virtual Handle<DefaultProbabilityTermStructure>
crTs(
const Size i)
const;
296 virtual std::pair<Real, Real>
crS(
const Size i,
const Size ccy,
const Time t,
const Time T,
const Real z,
304 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
307 const std::vector<Real>& weights = std::vector<Real>());
312 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
315 const std::vector<Real>& weights = std::vector<Real>());
319 void calibrateIrLgm1fGlobal(
const Size ccy,
const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
322 const std::vector<Real>& weights = std::vector<Real>());
327 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
330 const std::vector<Real>& weights = std::vector<Real>());
334 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
337 const std::vector<Real>& weights = std::vector<Real>());
342 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
345 const std::vector<Real>& weights = std::vector<Real>());
350 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
353 const std::vector<Real>& weights = std::vector<Real>());
357 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
360 const std::vector<Real>& weights = std::vector<Real>());
364 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
367 const std::vector<Real>& weights = std::vector<Real>());
377 const std::vector<QuantLib::ext::shared_ptr<QuantLib::CalibrationHelper>>& helpers,
378 QuantLib::OptimizationMethod& method,
const QuantLib::EndCriteria&
endCriteria,
379 const std::map<QuantLib::Size, bool>& toCalibrate,
380 const QuantLib::Constraint&
constraint = QuantLib::Constraint(),
381 const std::vector<QuantLib::Real>& weights = std::vector<QuantLib::Real>());
390 const std::vector<QuantLib::ext::shared_ptr<QuantLib::CalibrationHelper>>& helpers,
391 QuantLib::OptimizationMethod& method,
const QuantLib::EndCriteria&
endCriteria,
392 const QuantLib::Constraint&
constraint = QuantLib::Constraint(),
393 const std::vector<QuantLib::Real>& weights = std::vector<QuantLib::Real>());
398 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
401 const std::vector<Real>& weights = std::vector<Real>());
406 const std::vector<QuantLib::ext::shared_ptr<BlackCalibrationHelper>>& helpers,
409 const std::vector<Real>& weights = std::vector<Real>());
431 Size
aIdx(
const AssetType t,
const Size i,
const Size offset = 0)
const;
434 virtual std::pair<AssetType, ModelType>
getComponentType(
const Size i)
const;
456 Real
infV(
const Size
idx,
const Size ccy,
const Time t,
const Time T)
const;
457 Real
crV(
const Size
idx,
const Size ccy,
const Time t,
const Time T)
const;
468 std::size_t seed = 0;
469 boost::hash_combine(seed, x.
i);
470 boost::hash_combine(seed, x.
ccy);
471 boost::hash_combine(seed, x.
t);
472 boost::hash_combine(seed, x.
T);
491 std::vector<QuantLib::ext::shared_ptr<Parametrization>>
p_;
492 std::vector<QuantLib::ext::shared_ptr<IrModel>>
irModels_;
493 std::vector<QuantLib::ext::shared_ptr<FxModel>>
fxModels_;
495 std::vector<QuantLib::ext::shared_ptr<CommodityModel>>
comModels_;
504 const Size i, std::vector<bool>& res);
508QuantLib::Handle<QuantLib::ZeroInflationTermStructure>
559 QL_REQUIRE(tmp,
"model at " << ccy <<
" is not IR-HW");
564 return hw(ccy)->parametrization();
569 QL_REQUIRE(tmp,
"model at " << ccy <<
" is not IR-LGM1F");
574 return lgm(ccy)->parametrization();
578 QuantLib::ext::shared_ptr<InfDkParametrization> tmp =
580 QL_REQUIRE(tmp,
"model at " << i <<
" is not INF-DK");
586 QL_REQUIRE(tmp,
"model at " << i <<
" is not INF-JY");
591 QuantLib::ext::shared_ptr<CrLgm1fParametrization> tmp =
593 QL_REQUIRE(tmp,
"model at " << i <<
" is not CR-LGM");
599 QL_REQUIRE(tmp,
"model at " << i <<
" is not CR-CIRPP");
604 QuantLib::ext::shared_ptr<CrCirppParametrization> tmp =
606 QL_REQUIRE(tmp,
"model at " << i <<
" is not CR-CIRPP");
611 QuantLib::ext::shared_ptr<EqBsParametrization> tmp =
613 QL_REQUIRE(tmp,
"model at " << name <<
" is not EQ-BS");
618 QuantLib::ext::shared_ptr<CommoditySchwartzParametrization> tmp =
620 QL_REQUIRE(tmp,
"model at " << name <<
" is not COM-BS");
629 const QuantLib::Handle<QuantLib::YieldTermStructure>& discountCurve,
630 const QuantLib::Array& aux)
const {
631 return irModel(ccy)->numeraire(t, x, discountCurve, aux);
635 Handle<YieldTermStructure> discountCurve)
const {
636 return lgm(ccy)->numeraire(t, x, discountCurve);
640 Handle<YieldTermStructure> discountCurve)
const {
641 return lgm(ccy)->bankAccountNumeraire(t, x, y, discountCurve);
645 Handle<YieldTermStructure> discountCurve)
const {
646 return lgm(ccy)->discountBond(t, T, x, discountCurve);
650 Handle<YieldTermStructure> discountCurve)
const {
651 return lgm(ccy)->reducedDiscountBond(t, T, x, discountCurve);
655 const Time S,
const Time T,
656 Handle<YieldTermStructure> discountCurve)
const {
657 return lgm(ccy)->discountBondOption(type, K, t, S, T, discountCurve);
661 QuantLib::ext::shared_ptr<FxBsParametrization> tmp =
663 QL_REQUIRE(tmp,
"model at " << ccy <<
" is not FX-BS");
673 return crlgm1f(i)->termStructure();
675 return crcirpp(i)->termStructure();
676 QL_FAIL(
"model at " << i <<
" is not CR-*");
680 const Real z,
const Real y)
const {
682 return crlgm1fS(i, ccy, t, T, z, y);
684 QL_REQUIRE(ccy == 0,
"CrossAssetModelPlus::crS() only implemented for ccy=0, got " << ccy);
687 QL_FAIL(
"model at " << i <<
" is not CR-*");
virtual void initializeParametrizations()
const QuantLib::ext::shared_ptr< Parametrization > eq(const Size i) const
virtual void finalizeArguments()
virtual void checkModelConsistency() const
Size pIdx(const AssetType t, const Size i, const Size offset=0) const
std::vector< std::vector< Size > > auxBrownians_
const QuantLib::ext::shared_ptr< InfDkParametrization > infdk(const Size i) const
IrModel::Measure measure_
static constexpr Size numberOfAssetTypes
virtual Size getNumberOfStateVariables(const Size i) const
virtual Handle< DefaultProbabilityTermStructure > crTs(const Size i) const
Size cIdx(const AssetType t, const Size i, const Size offset=0) const
const QuantLib::ext::shared_ptr< Parametrization > com(const Size i) const
Size comIndex(const std::string &comName) const
Size arguments(const AssetType t, const Size i) const
std::vector< std::vector< Size > > numArguments_
void setCorrelation(const AssetType s, const Size i, const AssetType t, const Size j, const Real value, const Size iOffset=0, const Size jOffset=0)
void calibrateInfDkVolatilitiesIterative(const Size index, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
Real discountBondOption(const Size ccy, Option::Type type, const Real K, const Time t, const Time S, const Time T, Handle< YieldTermStructure > discountCurve=Handle< YieldTermStructure >()) const
void calibrateInfDkReversionsGlobal(const Size index, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
QuantLib::Real discountBond(const Size ccy, const QuantLib::Time t, const QuantLib::Time T, const QuantLib::Array &x, const QuantLib::Handle< QuantLib::YieldTermStructure > &discountCurve=Handle< YieldTermStructure >()) const
Size totalNumberOfParameters() const
void calibrateInfJyGlobal(QuantLib::Size index, const std::vector< QuantLib::ext::shared_ptr< QuantLib::CalibrationHelper > > &helpers, QuantLib::OptimizationMethod &method, const QuantLib::EndCriteria &endCriteria, const std::map< QuantLib::Size, bool > &toCalibrate, const QuantLib::Constraint &constraint=QuantLib::Constraint(), const std::vector< QuantLib::Real > &weights=std::vector< QuantLib::Real >())
virtual void initialize()
virtual Size getNumberOfAuxBrownians(const Size i) const
std::vector< std::vector< Size > > cIdx_
Discretization discretization() const
std::pair< Real, Real > infdkV(const Size i, const Time t, const Time T)
virtual Size getNumberOfBrownians(const Size i) const
Real bankAccountNumeraire(const Size ccy, const Time t, const Real x, const Real y, Handle< YieldTermStructure > discountCurve=Handle< YieldTermStructure >()) const
const QuantLib::ext::shared_ptr< Integrator > integrator() const
QuantLib::ext::shared_ptr< CrossAssetStateProcess > stateProcess() const
const QuantLib::ext::shared_ptr< IrLgm1fParametrization > irlgm1f(const Size ccy) const
const QuantLib::ext::shared_ptr< EqBsParametrization > eqbs(const Size ccy) const
const QuantLib::ext::shared_ptr< InfJyParameterization > infjy(const Size i) const
Inflation JY component.
void calibrateBsVolatilitiesIterative(const AssetType &assetType, const Size aIdx, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
virtual void initializeCorrelation()
void checkCorrelationMatrix() const
Size crName(const std::string &name) const
void calibrateIrLgm1fVolatilitiesIterative(const Size ccy, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
Size auxBrownians() const
void calibrateInfDkVolatilitiesGlobal(const Size index, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
void calibrateCrLgm1fReversionsIterative(const Size index, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
Size infIndex(const std::string &index) const
std::pair< Real, Real > crlgm1fS(const Size i, const Size ccy, const Time t, const Time T, const Real z, const Real y) const
void setIntegrationPolicy(const QuantLib::ext::shared_ptr< Integrator > integrator, const bool usePiecewiseIntegration=true) const
Size ccyIndex(const Currency &ccy) const
virtual Size getNumberOfParameters(const Size i) const
std::vector< std::vector< ModelType > > modelType_
std::pair< Real, Real > crcirppS(const Size i, const Time t, const Time T, const Real y, const Real s) const
virtual void initializeArguments()
QuantLib::ext::shared_ptr< CrossAssetStateProcess > stateProcess_
boost::unordered_map< cache_key, std::pair< Real, Real >, cache_hasher > cache_crlgm1fS_
const QuantLib::ext::shared_ptr< CrStateParametrization > crstateParam(const Size index) const
Size totalNumberOfBrownians_
const QuantLib::ext::shared_ptr< CrLgm1fParametrization > crlgm1f(const Size i) const
virtual std::pair< AssetType, ModelType > getComponentType(const Size i) const
void generateArguments() override
std::vector< std::vector< Size > > pIdx_
std::vector< bool > MoveParameter(const AssetType t, const Size param, const Size index, const Size i)
const QuantLib::ext::shared_ptr< CrCirppParametrization > crcirpp(const Size i) const
virtual void initDefaultIntegrator()
const QuantLib::ext::shared_ptr< CrCirpp > crcirppModel(const Size i) const
virtual std::pair< Real, Real > crS(const Size i, const Size ccy, const Time t, const Time T, const Real z, const Real y) const
const std::vector< QuantLib::ext::shared_ptr< Parametrization > > & parametrizations() const
Real infdkYY(const Size i, const Time t, const Time S, const Time T, const Real z, const Real y, const Real irz)
std::vector< Size > components_
const QuantLib::ext::shared_ptr< FxModel > fxModel(const Size ccy) const
std::vector< QuantLib::ext::shared_ptr< Parametrization > > p_
std::vector< QuantLib::ext::shared_ptr< CrCirpp > > crcirppModel_
const QuantLib::ext::shared_ptr< Parametrization > fx(const Size ccy) const
void calibrateCrLgm1fVolatilitiesIterative(const Size index, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
Size eqIndex(const std::string &eqName) const
SalvagingAlgorithm::Type salvaging_
std::vector< QuantLib::ext::shared_ptr< IrModel > > irModels_
std::pair< Real, Real > infdkI(const Size i, const Time t, const Time T, const Real z, const Real y)
void updateIndices(const AssetType &t, const Size i, const Size cIdx, const Size wIdx, const Size pIdx, const Size aIdx)
const QuantLib::ext::shared_ptr< CommoditySchwartzParametrization > combs(const Size ccy) const
Real infV(const Size idx, const Size ccy, const Time t, const Time T) const
std::vector< std::vector< Size > > brownians_
void calibrateInfDkReversionsIterative(const Size index, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
Size aIdx(const AssetType t, const Size i, const Size offset=0) const
std::vector< std::vector< Size > > idx_
Size wIdx(const AssetType t, const Size i, const Size offset=0) const
QuantLib::Real numeraire(const Size ccy, const QuantLib::Time t, const QuantLib::Array &x, const QuantLib::Handle< QuantLib::YieldTermStructure > &discountCurve=Handle< YieldTermStructure >(), const QuantLib::Array &aux=Array()) const
void calibrateIrLgm1fReversionsIterative(const Size ccy, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
Discretization discretization_
void calibrateInfJyIterative(QuantLib::Size inflationModelIndex, QuantLib::Size parameterIndex, const std::vector< QuantLib::ext::shared_ptr< QuantLib::CalibrationHelper > > &helpers, QuantLib::OptimizationMethod &method, const QuantLib::EndCriteria &endCriteria, const QuantLib::Constraint &constraint=QuantLib::Constraint(), const std::vector< QuantLib::Real > &weights=std::vector< QuantLib::Real >())
Real crV(const Size idx, const Size ccy, const Time t, const Time T) const
Size idx(const AssetType t, const Size i) const
boost::unordered_map< cache_key, std::pair< Real, Real >, cache_hasher > cache_infdkI_
CrossAssetModel(const std::vector< QuantLib::ext::shared_ptr< Parametrization > > ¶metrizations, const Matrix &correlation, SalvagingAlgorithm::Type salvaging, IrModel::Measure measure, const Discretization discretization, const bool)
Size totalNumberOfParameters_
void calibrateBsVolatilitiesGlobal(const AssetType &assetType, const Size aIdx, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
QuantLib::ext::shared_ptr< Integrator > integrator_
ModelType modelType(const AssetType t, const Size i) const
std::vector< QuantLib::ext::shared_ptr< FxModel > > fxModels_
std::vector< std::vector< Size > > stateVariables_
void appendToFixedParameterVector(const AssetType t, const AssetType v, const Size param, const Size index, const Size i, std::vector< bool > &res)
const QuantLib::ext::shared_ptr< IrHwParametrization > irhw(const Size ccy) const
const QuantLib::ext::shared_ptr< Parametrization > cr(const Size i) const
const QuantLib::ext::shared_ptr< CommodityModel > comModel(const Size com) const
std::vector< std::vector< Size > > aIdx_
Size components(const AssetType t) const
Size stateVariables(const AssetType t, const Size i) const
std::vector< QuantLib::ext::shared_ptr< CommodityModel > > comModels_
std::vector< std::vector< Size > > wIdx_
const QuantLib::ext::shared_ptr< LinearGaussMarkovModel > lgm(const Size ccy) const
const QuantLib::ext::shared_ptr< IrModel > irModel(const Size ccy) const
const QuantLib::ext::shared_ptr< Parametrization > inf(const Size i) const
const QuantLib::ext::shared_ptr< Parametrization > ir(const Size ccy) const
Real reducedDiscountBond(const Size ccy, const Time t, const Time T, const Real x, Handle< YieldTermStructure > discountCurve=Handle< YieldTermStructure >()) const
const QuantLib::ext::shared_ptr< Parametrization > crstate(const Size i) const
const QuantLib::ext::shared_ptr< FxBsParametrization > fxbs(const Size ccy) const
const Matrix & correlation() const
SalvagingAlgorithm::Type salvagingAlgorithm() const
void calibrateIrLgm1fGlobal(const Size ccy, const std::vector< QuantLib::ext::shared_ptr< BlackCalibrationHelper > > &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
IrModel::Measure measure() const
Size totalNumberOfAuxBrownians_
const QuantLib::ext::shared_ptr< HwModel > hw(const Size ccy) const
Calibrated model class with linkable parameters.
const QuantLib::ext::shared_ptr< Constraint > & constraint() const
EndCriteria::Type endCriteria() const
Returns end criteria result.
Real value(const Array ¶ms, const std::vector< QuantLib::ext::shared_ptr< CalibrationHelper > > &)
Commodity model base class.
Schwartz (1997) one-factor model of the commodity price termstructure.
Schwartz commodity model parametrization.
CIR++ credit model class.
Credit Linear Gaussian Markov 1 factor parametrization.
crossasset model state process
credit state parametrization
EQ Black Scholes parametrization.
FX Black Scholes parametrization.
hull white n Factor model class
Inflation Dodgson Kainth parametrization.
Jarrow Yildrim inflation parameterization.
std::ostream & operator<<(std::ostream &out, EquityReturnType t)
Handle< ZeroInflationTermStructure > inflationTermStructure(const QuantLib::ext::shared_ptr< CrossAssetModel > &model, Size index)
std::size_t operator()(cache_key const &x) const
bool operator==(const cache_key &o) const