Logo
Fully annotated reference manual - version 1.8.12
Loading...
Searching...
No Matches
yieldcurveconfig.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2016 Quaternion Risk Management Ltd
3 Copyright (C) 2023 Oleg Kulkov
4 All rights reserved.
5
6 This file is part of ORE, a free-software/open-source library
7 for transparent pricing and risk analysis - http://opensourcerisk.org
8
9 ORE is free software: you can redistribute it and/or modify it
10 under the terms of the Modified BSD License. You should have received a
11 copy of the license along with this program.
12 The license is also available online at <http://opensourcerisk.org>
13
14 This program is distributed on the basis that it will form a useful
15 contribution to risk analytics and model standardisation, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17 FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
18*/
19
20/*! \file ored/configuration/yieldcurveconfig.hpp
21 \brief Yield curve configuration classes
22 \ingroup configuration
23*/
24
25#pragma once
26
30
31#include <ql/patterns/visitor.hpp>
32#include <ql/types.hpp>
33#include <ql/termstructures/bootstraphelper.hpp>
34
35#include <boost/none.hpp>
36#include <boost/optional.hpp>
37#include <ql/shared_ptr.hpp>
38
39#include <set>
40#include <map>
41
42namespace ore {
43namespace data {
44using boost::optional;
46using QuantLib::AcyclicVisitor;
47using QuantLib::Real;
48using std::map;
49using std::pair;
50using std::set;
51using std::string;
52using std::vector;
53
54//! Base class for yield curve segments.
55/*!
56 \ingroup configuration
57*/
59public:
60 //! supported segment types
61 enum class Type {
62 Zero,
65 Deposit,
66 FRA,
67 Future,
68 OIS,
69 Swap,
83 };
84 //! Default destructor
85 virtual ~YieldCurveSegment() {}
86
87 //! \name Serialisation
88 //@{
89 virtual void fromXML(XMLNode* node) override;
90 virtual XMLNode* toXML(XMLDocument& doc) const override;
91 //@}
92
93 //! \name Inspectors
94 //@{
95 Type type() const { return type_; }
96 // TODO: why typeID?
97 const string& typeID() const { return typeID_; }
98 const string& conventionsID() const { return conventionsID_; }
99 const QuantLib::Pillar::Choice pillarChoice() const { return pillarChoice_; }
100 Size priority() const { return priority_; }
101 Size minDistance() const { return minDistance_; }
102 const vector<pair<string, bool>>& quotes() const { return quotes_; }
103 //@}
104
105 //! \name Visitability
106 //@{
107 virtual void accept(AcyclicVisitor&);
108 //@}
109
110protected:
111 //! \name Constructors
112 //@{
113 //! Default constructor
115 //! Detailed constructor - assumes all quotes are mandatory
116 YieldCurveSegment(const string& typeID, const string& conventionsID, const vector<string>& quotes);
117 //@}
118
119 //! Quote and optional flag pair
120 vector<pair<string, bool>> quotes_;
121
122 //! Utility to build a quote, optional flag defaults to false
123 pair<string, bool> quote(const string& name, bool opt = false) { return make_pair(name, opt); }
124
125private:
126 // TODO: why type and typeID?
128 string typeID_;
130 QuantLib::Pillar::Choice pillarChoice_ = QuantLib::Pillar::LastRelevantDate;
131 Size priority_ = 0;
132 Size minDistance_ = 1;
133};
134
135//! Direct yield curve segment
136/*!
137 A direct yield curve segment is used when the segments is entirely defined by
138 a set of quotes that are passed to the constructor.
139
140 \ingroup configuration
141*/
143public:
144 //! \name Constructors/Destructors
145 //@{
146 //! Default constructor
148 //! Detailed constructor
149 DirectYieldCurveSegment(const string& typeID, const string& conventionsID, const vector<string>& quotes);
150 //! Default destructor
152 //@}
153
154 //! \name Serialisation
155 //@{
156 virtual void fromXML(XMLNode* node) override;
157 virtual XMLNode* toXML(XMLDocument& doc) const override;
158 //@}
159
160 //! \name Visitability
161 //@{
162 virtual void accept(AcyclicVisitor&) override;
163 //@}
164};
165
166//! Simple yield curve segment
167/*!
168 A simple yield curve segment is used when the curve segment is determined by
169 a set of quotes and a projection curve.
170
171 \ingroup configuration
172*/
174public:
175 //! \name Constructors/Destructors
176 //@{
177 //! Default constructor
179 //! Detailed constructor
180 SimpleYieldCurveSegment(const string& typeID, const string& conventionsID, const vector<string>& quotes,
181 const string& projectionCurveID = string());
182 //! Default destructor
184 //@}
185
186 //! \name Serialisation
187 //@{
188 virtual void fromXML(XMLNode* node) override;
189 virtual XMLNode* toXML(XMLDocument& doc) const override;
190 //@}
191
192 //! \name Inspectors
193 //@{
194 const string& projectionCurveID() const { return projectionCurveID_; }
195 //@}
196
197 //! \name Visitability
198 //@{
199 virtual void accept(AcyclicVisitor&) override;
200 //@}
201
202private:
204};
205
206//! Average OIS yield curve segment
207/*!
208 The average OIS yield curve segment is used e.g. for USD OIS curve building where
209 the curve segment is determined by a set of composite quotes and a projection curve.
210 The composite quote is represented here as a pair of quote strings, a tenor basis spread
211 and an interest rate swap quote.
212
213 \ingroup configuration
214*/
216public:
217 //! \name Constructors/Destructors
218 //@{
219 //! Default constructor
221 //! Detailed constructor
222 AverageOISYieldCurveSegment(const string& typeID, const string& conventionsID, const vector<string>& quotes,
223 const string& projectionCurveID);
224 //! Default destructor
226 //@}
227
228 //! \name Serialisation
229 //@{
230 virtual void fromXML(XMLNode* node) override;
231 virtual XMLNode* toXML(XMLDocument& doc) const override;
232 //@}
233
234 //! \name Inspectors
235 //@{
236 const string& projectionCurveID() const { return projectionCurveID_; }
237 //@}
238
239 //! \name Visitability
240 //@{
241 virtual void accept(AcyclicVisitor&) override;
242 //@}
243
244private:
246};
247
248//! Tenor Basis yield curve segment
249/*!
250 Yield curve building from tenor basis swap quotes requires a set of tenor
251 basis spread quotes and the projection curve for either the shorter or the longer tenor
252 which acts as the reference curve.
253
254 \ingroup configuration
255*/
257public:
258 //! \name Constructors/Destructors
259 //@{
260 //! Default constructor
262 //! Detailed constructor
263 TenorBasisYieldCurveSegment(const string& typeID, const string& conventionsID, const vector<string>& quotes,
264 const string& receiveProjectionCurveID, const string& payProjectionCurveID);
265 //! Default destructor
267 //@}
268
269 //!\name Serialisation
270 //@{
271 virtual void fromXML(XMLNode* node) override;
272 virtual XMLNode* toXML(XMLDocument& doc) const override;
273 //@}
274
275 //! \name Inspectors
276 //@{
277 const string& receiveProjectionCurveID() const { return receiveProjectionCurveID_; }
278 const string& payProjectionCurveID() const { return payProjectionCurveID_; }
279 //@}
280
281 //! \name Visitability
282 //@{
283 virtual void accept(AcyclicVisitor&) override;
284 //@}
285
286private:
289};
290
291//! Cross Currency yield curve segment
292/*!
293 Cross currency basis spread adjusted discount curves for 'domestic' currency cash flows
294 are built using this segment type which requires cross currency basis spreads quotes,
295 the spot FX quote ID and at least the 'foreign' discount curve ID.
296 Projection curves for both currencies can be provided as well for consistency with
297 tenor basis in each currency.
298
299 \ingroup configuration
300*/
302public:
303 //! \name Constructors/Destructors
304 //@{
305 //! Default constructor
307 //! Detailed constructor
308 CrossCcyYieldCurveSegment(const string& typeID, const string& conventionsID, const vector<string>& quotes,
309 const string& spotRateID, const string& foreignDiscountCurveID,
310 const string& domesticProjectionCurveID = string(),
311 const string& foreignProjectionCurveID = string());
312 //! Default destructor
314 //@}
315
316 //! \name Serialisation
317 //@{
318 virtual void fromXML(XMLNode* node) override;
319 virtual XMLNode* toXML(XMLDocument& doc) const override;
320 //@}
321
322 //! \name Inspectors
323 //@{
324 const string& spotRateID() const { return spotRateID_; }
325 const string& foreignDiscountCurveID() const { return foreignDiscountCurveID_; }
327 const string& foreignProjectionCurveID() const { return foreignProjectionCurveID_; }
328 //@}
329
330 //! \name Visitability
331 //@{
332 virtual void accept(AcyclicVisitor&) override;
333 //@}
334
335private:
340};
341
342//! Zero Spreaded yield curve segment
343/*!
344 A zero spreaded segment is used to build a yield curve from zero spread quotes and
345 a reference yield curve.
346
347 \ingroup configuration
348*/
350public:
351 //! \name Constructors/Destructors
352 //@{
353 //! Default constructor
355 //! Detailed constructor
356 ZeroSpreadedYieldCurveSegment(const string& typeID, const string& conventionsID, const vector<string>& quotes,
357 const string& referenceCurveID);
358 //! Default destructor
360 //@}
361
362 //! \name Serialisation
363 //@{
364 virtual void fromXML(XMLNode* node) override;
365 virtual XMLNode* toXML(XMLDocument& doc) const override;
366 //@}
367
368 //! \name Inspectors
369 //@{
370 const string& referenceCurveID() const { return referenceCurveID_; }
371 //@}
372
373 //! \name Visitability
374 //@{
375 virtual void accept(AcyclicVisitor&) override;
376 //@}
377
378private:
380};
381
382//! Weighted average yield curve segment
383/*!
384 A weighted average segment is used to build a yield curve from two source curves and weights. The
385 resulting discount factor is the weighted sum of the source curves' discount factors.
386
387 \ingroup configuration
388*/
390public:
391 //! \name Constructors/Destructors
392 //@{
393 //! Default constructor
395 //! Detailed constructor
396 WeightedAverageYieldCurveSegment(const string& typeID, const string& referenceCurveID1,
397 const string& referenceCurveID2, const Real weight1, const Real weight2);
398 //! Default destructor
400 //! \name Serialisation
401 //@{
402 virtual void fromXML(XMLNode* node) override;
403 virtual XMLNode* toXML(XMLDocument& doc) const override;
404 //@}
405
406 //! \name Inspectors
407 //@{
408 const string& referenceCurveID1() const { return referenceCurveID1_; }
409 const string& referenceCurveID2() const { return referenceCurveID2_; }
410 Real weight1() const { return weight1_; }
411 Real weight2() const { return weight2_; }
412 //@}
413
414 //! \name Visitability
415 //@{
416 virtual void accept(AcyclicVisitor&) override;
417 //@}
418
419private:
422};
423
424//! Yield plus default curves segment
425/*!
426 A yield plus default curves segment is used to build a yield curve from a source yield curve and
427 a weighted sum of default curves interpreted as zero curves (zero recovery, hazard rate =
428 instantaneous forward rate)
429
430 \ingroup configuration
431*/
433public:
434 //! \name Constructors/Destructors
435 //@{
436 //! Default constructor
438 //! Detailed constructor
439 YieldPlusDefaultYieldCurveSegment(const string& typeID, const string& referenceCurveID,
440 const std::vector<std::string>& defaultCurveIDs,
441 const std::vector<Real>& weights);
442 //! Default destructor
444 //! \name Serialisation
445 //@{
446 virtual void fromXML(XMLNode* node) override;
447 virtual XMLNode* toXML(XMLDocument& doc) const override;
448 //@}
449
450 //! \name Inspectors
451 //@{
452 const string& referenceCurveID() const { return referenceCurveID_; }
453 const std::vector<std::string>& defaultCurveIDs() { return defaultCurveIDs_; }
454 const std::vector<Real>& weights() { return weights_; }
455 //@}
456
457 //! \name Visitability
458 //@{
459 virtual void accept(AcyclicVisitor&) override;
460 //@}
461
462private:
464 std::vector<std::string> defaultCurveIDs_;
465 std::vector<Real> weights_;
466};
467
468//! Discount ratio yield curve segment
469/*! Used to configure a QuantExt::DiscountRatioModifiedCurve.
470
471 \ingroup configuration
472*/
474public:
475 //! \name Constructors/Destructors
476 //@{
477 //! Default constructor
479 //! Detailed constructor
480 DiscountRatioYieldCurveSegment(const std::string& typeId, const std::string& baseCurveId,
481 const std::string& baseCurveCurrency, const std::string& numeratorCurveId,
482 const std::string& numeratorCurveCurrency, const std::string& denominatorCurveId,
483 const std::string& denominatorCurveCurrency);
484 //@}
485
486 //! \name Serialisation
487 //@{
488 virtual void fromXML(XMLNode* node) override;
489 virtual XMLNode* toXML(XMLDocument& doc) const override;
490 //@}
491
492 //! \name Inspectors
493 //@{
494 const string& baseCurveId() const { return baseCurveId_; }
495 const string& baseCurveCurrency() const { return baseCurveCurrency_; }
496 const string& numeratorCurveId() const { return numeratorCurveId_; }
497 const string& numeratorCurveCurrency() const { return numeratorCurveCurrency_; }
498 const string& denominatorCurveId() const { return denominatorCurveId_; }
499 const string& denominatorCurveCurrency() const { return denominatorCurveCurrency_; }
500 //@}
501
502 //! \name Visitability
503 //@{
504 void accept(QuantLib::AcyclicVisitor& v) override;
505 //@}
506
507private:
508 std::string baseCurveId_;
510 std::string numeratorCurveId_;
514};
515
516//! FittedBond yield curve segment
517/*!
518 A bond segment is used to build a yield curve from liquid bond quotes.
519
520 \ingroup configuration
521*/
523public:
524 //! \name Constructors/Destructors
525 //@{
526 //! Default constructor
528 //! Detailed constructor
529 FittedBondYieldCurveSegment(const string& typeID, const vector<string>& quotes,
530 const map<string, string>& iborIndexCurves, const bool extrapolateFlat);
531
532 //! \name Serialisation
533 //@{
534 virtual void fromXML(XMLNode* node) override;
535 virtual XMLNode* toXML(XMLDocument& doc) const override;
536 //@}
537
538 //! \name Inspectors
539 //@{
540 const map<string, string>& iborIndexCurves() const { return iborIndexCurves_; }
541 const bool extrapolateFlat() const { return extrapolateFlat_; }
542 //@}
543
544 //! \name Visitability
545 //@{
546 virtual void accept(AcyclicVisitor&) override;
547 //@}
548
549private:
550 map<string, string> iborIndexCurves_;
552};
553
554//! Ibor Fallback yield curve segment
555/*!
556 A curve segment to build a Ibor forwarding curve from an OIS RFR index and a fallback spread
557
558 \ingroup configuration
559*/
561public:
562 //! \name Constructors/Destructors
563 //@{
564 //! Default constructor
566 //! Detailed constructor
567 IborFallbackCurveSegment(const string& typeID, const string& iborIndex, const string& rfrCurve,
568 const boost::optional<string>& rfrIndex, const boost::optional<Real>& spread);
569
570 //! \name Serialisation
571 //@{
572 virtual void fromXML(XMLNode* node) override;
573 virtual XMLNode* toXML(XMLDocument& doc) const override;
574 //@}
575
576 //! \name Inspectors
577 //@{
578 const string& iborIndex() const { return iborIndex_; }
579 const string& rfrCurve() const { return rfrCurve_; }
580 const boost::optional<string>& rfrIndex() const { return rfrIndex_; }
581 const boost::optional<Real>& spread() const { return spread_; }
582 //@}
583
584 //! \name Visitability
585 //@{
586 virtual void accept(AcyclicVisitor&) override;
587 //@}
588
589private:
591 string rfrCurve_;
592 boost::optional<string> rfrIndex_;
593 boost::optional<Real> spread_;
594};
595
596//! Bond yield shifted yield curve segment
597/*!
598 An average spread between curve and bond's yield is used to shift an existing yield curve.
599
600 \ingroup configuration
601*/
603public:
604 //! \name Constructors/Destructors
605 //@{
606 //! Default constructor
608 //! Detailed constructor
609 BondYieldShiftedYieldCurveSegment(const string& typeID, const string& referenceCurveID, const vector<string>& quotes,
610 const map<string, string>& iborIndexCurves, const bool extrapolateFlat);
611
612 //! Default destructor
614 //@}
615
616 //! \name Serialisation
617 //@{
618 virtual void fromXML(XMLNode* node) override;
619 virtual XMLNode* toXML(XMLDocument& doc) const override;
620 //@}
621
622 //! \name Inspectors
623 //@{
624 const string& referenceCurveID() const { return referenceCurveID_; }
625 const map<string, string>& iborIndexCurves() const { return iborIndexCurves_; }
626 const bool extrapolateFlat() const { return extrapolateFlat_; }
627 //@}
628
629 //! \name Visitability
630 //@{
631 virtual void accept(AcyclicVisitor&) override;
632 //@}
633
634private:
636 map<string, string> iborIndexCurves_;
638 boost::optional<Real> spread_;
639 boost::optional<Real> bondYield_;
640};
641
642//! Yield Curve configuration
643/*!
644 Wrapper class containing all yield curve segments needed to build a yield curve.
645
646 \ingroup configuration
647 */
649public:
650 //! \name Constructors/Destructors
651 //@{
652 //! Default constructor
654 //! Detailed constructor
655 YieldCurveConfig(const string& curveID, const string& curveDescription, const string& currency,
656 const string& discountCurveID, const vector<QuantLib::ext::shared_ptr<YieldCurveSegment>>& curveSegments,
657 const string& interpolationVariable = "Discount", const string& interpolationMethod = "LogLinear",
658 const string& zeroDayCounter = "A365", bool extrapolation = true,
660 const Size mixedInterpolationCutoff = 1);
661 //! Default destructor
662 virtual ~YieldCurveConfig() {}
663 //@}
664
665 //! \name Serialization
666 //@{
667 virtual void fromXML(XMLNode* node) override;
668 virtual XMLNode* toXML(XMLDocument& doc) const override;
669 //@}
670
671 //! \name Inspectors
672 //@{
673 const string& currency() const { return currency_; }
674 const string& discountCurveID() const { return discountCurveID_; }
675 const vector<QuantLib::ext::shared_ptr<YieldCurveSegment>>& curveSegments() const { return curveSegments_; }
676 const string& interpolationVariable() const { return interpolationVariable_; }
677 const string& interpolationMethod() const { return interpolationMethod_; }
679 const string& zeroDayCounter() const { return zeroDayCounter_; }
680 bool extrapolation() const { return extrapolation_; }
682 //@}
683
684 //! \name Setters
685 //@{
689 string& zeroDayCounter() { return zeroDayCounter_; }
690 bool& extrapolation() { return extrapolation_; }
692 //@}
693
694 const vector<string>& quotes() override;
695
696private:
698
699 // Mandatory members
700 string currency_;
702 vector<QuantLib::ext::shared_ptr<YieldCurveSegment>> curveSegments_;
703
704 // Optional members
711};
712
713// Map form curveID to YieldCurveConfig
714using YieldCurveConfigMap = std::map<string, QuantLib::ext::shared_ptr<YieldCurveConfig>>;
715
716} // namespace data
717} // namespace ore
Class for holding bootstrap configurations.
Average OIS yield curve segment.
AverageOISYieldCurveSegment()
Default constructor.
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
virtual ~AverageOISYieldCurveSegment()
Default destructor.
Bond yield shifted yield curve segment.
const map< string, string > & iborIndexCurves() const
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
virtual ~BondYieldShiftedYieldCurveSegment()
Default destructor.
Cross Currency yield curve segment.
const string & domesticProjectionCurveID() const
virtual ~CrossCcyYieldCurveSegment()
Default destructor.
CrossCcyYieldCurveSegment()
Default constructor.
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
const string & foreignDiscountCurveID() const
const string & foreignProjectionCurveID() const
Base curve configuration.
Definition: curveconfig.hpp:41
const string & curveDescription() const
Definition: curveconfig.hpp:55
const string & curveID() const
Definition: curveconfig.hpp:54
Direct yield curve segment.
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
virtual ~DirectYieldCurveSegment()
Default destructor.
DirectYieldCurveSegment()
Default constructor.
Discount ratio yield curve segment.
void accept(QuantLib::AcyclicVisitor &v) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
FittedBond yield curve segment.
FittedBondYieldCurveSegment()
Default constructor.
const map< string, string > & iborIndexCurves() const
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
Ibor Fallback yield curve segment.
const boost::optional< Real > & spread() const
boost::optional< string > rfrIndex_
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
IborFallbackCurveSegment()
Default constructor.
const boost::optional< string > & rfrIndex() const
Simple yield curve segment.
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
const string & projectionCurveID() const
virtual XMLNode * toXML(XMLDocument &doc) const override
virtual ~SimpleYieldCurveSegment()
Default destructor.
SimpleYieldCurveSegment()
Default constructor.
Tenor Basis yield curve segment.
virtual ~TenorBasisYieldCurveSegment()
Default destructor.
TenorBasisYieldCurveSegment()
Default constructor.
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
const string & receiveProjectionCurveID() const
Weighted average yield curve segment.
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
virtual ~WeightedAverageYieldCurveSegment()
Default destructor.
Small XML Document wrapper class.
Definition: xmlutils.hpp:65
Base class for all serializable classes.
Definition: xmlutils.hpp:101
Yield Curve configuration.
const string & currency() const
const string & discountCurveID() const
YieldCurveConfig()
Default constructor.
virtual void fromXML(XMLNode *node) override
const string & zeroDayCounter() const
virtual XMLNode * toXML(XMLDocument &doc) const override
void setBootstrapConfig(const BootstrapConfig &bootstrapConfig)
const vector< string > & quotes() override
Return all the market quotes required for this config.
const BootstrapConfig & bootstrapConfig() const
virtual ~YieldCurveConfig()
Default destructor.
const vector< QuantLib::ext::shared_ptr< YieldCurveSegment > > & curveSegments() const
vector< QuantLib::ext::shared_ptr< YieldCurveSegment > > curveSegments_
const string & interpolationVariable() const
const string & interpolationMethod() const
Base class for yield curve segments.
QuantLib::Pillar::Choice pillarChoice_
Type
supported segment types
virtual void accept(AcyclicVisitor &)
const vector< pair< string, bool > > & quotes() const
const string & conventionsID() const
vector< pair< string, bool > > quotes_
Quote and optional flag pair.
virtual ~YieldCurveSegment()
Default destructor.
YieldCurveSegment()
Default constructor.
const QuantLib::Pillar::Choice pillarChoice() const
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
const string & typeID() const
pair< string, bool > quote(const string &name, bool opt=false)
Utility to build a quote, optional flag defaults to false.
Yield plus default curves segment.
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
virtual ~YieldPlusDefaultYieldCurveSegment()
Default destructor.
const std::vector< std::string > & defaultCurveIDs()
Zero Spreaded yield curve segment.
virtual void accept(AcyclicVisitor &) override
virtual void fromXML(XMLNode *node) override
virtual XMLNode * toXML(XMLDocument &doc) const override
virtual ~ZeroSpreadedYieldCurveSegment()
Default destructor.
Base curve configuration classes.
@ data
Definition: log.hpp:77
std::map< string, QuantLib::ext::shared_ptr< YieldCurveConfig > > YieldCurveConfigMap
Serializable Credit Default Swap.
Definition: namespaces.docs:23
string name
XML utility functions.