QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.38
Loading...
Searching...
No Matches
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
GlobalBootstrap< Curve > Class Template Reference

#include <globalbootstrap.hpp>

+ Collaboration diagram for GlobalBootstrap< Curve >:

Public Member Functions

 GlobalBootstrap (Real accuracy=Null< Real >(), ext::shared_ptr< OptimizationMethod > optimizer=nullptr, ext::shared_ptr< EndCriteria > endCriteria=nullptr)
 
 GlobalBootstrap (std::vector< ext::shared_ptr< typename Traits::helper > > additionalHelpers, std::function< std::vector< Date >()> additionalDates, AdditionalPenalties additionalPenalties, Real accuracy=Null< Real >(), ext::shared_ptr< OptimizationMethod > optimizer=nullptr, ext::shared_ptr< EndCriteria > endCriteria=nullptr, ext::shared_ptr< AdditionalBootstrapVariables > additionalVariables=nullptr)
 
 GlobalBootstrap (std::vector< ext::shared_ptr< typename Traits::helper > > additionalHelpers, std::function< std::vector< Date >()> additionalDates, std::function< Array()> additionalPenalties, Real accuracy=Null< Real >(), ext::shared_ptr< OptimizationMethod > optimizer=nullptr, ext::shared_ptr< EndCriteria > endCriteria=nullptr, ext::shared_ptr< AdditionalBootstrapVariables > additionalVariables=nullptr)
 
void setup (Curve *ts)
 
void calculate () const
 

Private Types

typedef Curve::traits_type Traits
 
typedef Curve::interpolator_type Interpolator
 
typedef std::function< Array(const std::vector< Time > &, const std::vector< Real > &)> AdditionalPenalties
 

Private Member Functions

void initialize () const
 

Private Attributes

Curve * ts_
 
Real accuracy_
 
ext::shared_ptr< OptimizationMethodoptimizer_
 
ext::shared_ptr< EndCriteriaendCriteria_
 
std::vector< ext::shared_ptr< typename Traits::helper > > additionalHelpers_
 
std::function< std::vector< Date >()> additionalDates_
 
AdditionalPenalties additionalPenalties_
 
ext::shared_ptr< AdditionalBootstrapVariablesadditionalVariables_
 
bool initialized_ = false
 
bool validCurve_ = false
 
Size firstHelper_
 
Size numberHelpers_
 
Size firstAdditionalHelper_
 
Size numberAdditionalHelpers_
 

Detailed Description

template<class Curve>
class QuantLib::GlobalBootstrap< Curve >

Global boostrapper, with additional restrictions

The additionalDates functor must return a set of additional dates to add to the interpolation grid. These dates must only depend on the global evaluation date.

The additionalPenalties functor must yield at least as many values such that

number of (usual, alive) rate helpers + number of additional values >= number of data points - 1

(note that the data points contain t=0). These values are treated as additional error terms in the optimization. The usual rate helpers return quoteError here. All error terms are equally weighted.

The additionalHelpers are registered with the curve like the usual rate helpers, but no pillar dates or error terms are added for them. Pillars and error terms have to be added by additionalDates and additionalPenalties.

The additionalVariables interface manages a set of additional variables to add to the optimization. This is useful to optimize model parameters used by rate helpers, for example, convexity adjustments for futures. See SimpleQuoteVariables for a concrete implementation of this interface.

WARNING: This class is known to work with Traits Discount, ZeroYield, Forward, i.e. the usual IR curves traits in QL. It requires Traits::transformDirect() and Traits::transformInverse() to be implemented. Also, check the usage of Traits::updateGuess(), Traits::guess() in this class.

Definition at line 74 of file globalbootstrap.hpp.

Member Typedef Documentation

◆ Traits

typedef Curve::traits_type Traits
private

Definition at line 75 of file globalbootstrap.hpp.

◆ Interpolator

typedef Curve::interpolator_type Interpolator
private

Definition at line 76 of file globalbootstrap.hpp.

◆ AdditionalPenalties

typedef std::function<Array(const std::vector<Time>&, const std::vector<Real>&)> AdditionalPenalties
private

Definition at line 78 of file globalbootstrap.hpp.

Constructor & Destructor Documentation

◆ GlobalBootstrap() [1/3]

GlobalBootstrap ( Real  accuracy = Null<Real>(),
ext::shared_ptr< OptimizationMethod optimizer = nullptr,
ext::shared_ptr< EndCriteria endCriteria = nullptr 
)

Definition at line 119 of file globalbootstrap.hpp.

◆ GlobalBootstrap() [2/3]

GlobalBootstrap ( std::vector< ext::shared_ptr< typename Traits::helper > >  additionalHelpers,
std::function< std::vector< Date >()>  additionalDates,
AdditionalPenalties  additionalPenalties,
Real  accuracy = Null<Real>(),
ext::shared_ptr< OptimizationMethod optimizer = nullptr,
ext::shared_ptr< EndCriteria endCriteria = nullptr,
ext::shared_ptr< AdditionalBootstrapVariables additionalVariables = nullptr 
)

Definition at line 127 of file globalbootstrap.hpp.

◆ GlobalBootstrap() [3/3]

GlobalBootstrap ( std::vector< ext::shared_ptr< typename Traits::helper > >  additionalHelpers,
std::function< std::vector< Date >()>  additionalDates,
std::function< Array()>  additionalPenalties,
Real  accuracy = Null<Real>(),
ext::shared_ptr< OptimizationMethod optimizer = nullptr,
ext::shared_ptr< EndCriteria endCriteria = nullptr,
ext::shared_ptr< AdditionalBootstrapVariables additionalVariables = nullptr 
)

Definition at line 141 of file globalbootstrap.hpp.

Member Function Documentation

◆ setup()

void setup ( Curve *  ts)

Definition at line 158 of file globalbootstrap.hpp.

◆ calculate()

void calculate

Definition at line 258 of file globalbootstrap.hpp.

+ Here is the call graph for this function:

◆ initialize()

void initialize
private

Definition at line 178 of file globalbootstrap.hpp.

Member Data Documentation

◆ ts_

Curve* ts_
private

Definition at line 103 of file globalbootstrap.hpp.

◆ accuracy_

Real accuracy_
private

Definition at line 104 of file globalbootstrap.hpp.

◆ optimizer_

ext::shared_ptr<OptimizationMethod> optimizer_
private

Definition at line 105 of file globalbootstrap.hpp.

◆ endCriteria_

ext::shared_ptr<EndCriteria> endCriteria_
private

Definition at line 106 of file globalbootstrap.hpp.

◆ additionalHelpers_

std::vector<ext::shared_ptr<typename Traits::helper> > additionalHelpers_
mutableprivate

Definition at line 107 of file globalbootstrap.hpp.

◆ additionalDates_

std::function<std::vector<Date>()> additionalDates_
private

Definition at line 108 of file globalbootstrap.hpp.

◆ additionalPenalties_

AdditionalPenalties additionalPenalties_
private

Definition at line 109 of file globalbootstrap.hpp.

◆ additionalVariables_

ext::shared_ptr<AdditionalBootstrapVariables> additionalVariables_
private

Definition at line 110 of file globalbootstrap.hpp.

◆ initialized_

bool initialized_ = false
mutableprivate

Definition at line 111 of file globalbootstrap.hpp.

◆ validCurve_

bool validCurve_ = false
private

Definition at line 111 of file globalbootstrap.hpp.

◆ firstHelper_

Size firstHelper_
mutableprivate

Definition at line 112 of file globalbootstrap.hpp.

◆ numberHelpers_

Size numberHelpers_
private

Definition at line 112 of file globalbootstrap.hpp.

◆ firstAdditionalHelper_

Size firstAdditionalHelper_
mutableprivate

Definition at line 113 of file globalbootstrap.hpp.

◆ numberAdditionalHelpers_

Size numberAdditionalHelpers_
private

Definition at line 113 of file globalbootstrap.hpp.