basketlossmodels.hpp
Go to the documentation of this file.
1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 
3 /*
4  Copyright (C) 2014 Jose Aparicio
5 
6  This file is part of QuantLib, a free-software/open-source library
7  for financial quantitative analysts and developers - http://quantlib.org/
8 
9  QuantLib is free software: you can redistribute it and/or modify it
10  under the terms of the QuantLib license. You should have received a
11  copy of the license along with this program; if not, please email
12  <quantlib-dev@lists.sf.net>. The license is also available online at
13  <http://quantlib.org/license.shtml>.
14 
15  This program is distributed in the hope that it will be useful, but WITHOUT
16  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17  FOR A PARTICULAR PURPOSE. See the license for more details.
18 */
19 
20 #ifndef qla_basketlossmodels_hpp
21 #define qla_basketlossmodels_hpp
22 
23 #include <ql/types.hpp>
24 
25 #include <qlo/baseinstruments.hpp>
26 
27 namespace QuantLib {
28  class DefaultLossModel;
29  class CorrelationTermStructure;
30 
31  template <class T>
32  class Handle;
33 }
34 
35 
36 namespace QuantLibAddin {
37 
38  /* Default Loss Models */
39  OH_LIB_CLASS(DefaultLossModel, QuantLib::DefaultLossModel);
40 
41  class GaussianLHPLossModel : public DefaultLossModel {
42  public:
44  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
45  QuantLib::Real correl,
46  const std::vector<QuantLib::Real>& recoveryRates,
47  bool permanent
48  );
49  };
50 
51  class IHGaussPoolLossModel : public DefaultLossModel {
52  public:
54  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
55  const QuantLib::Real correlation,
56  const std::vector<QuantLib::Real>& recoveryRates,
57  const QuantLib::Size numBuckets,
58  bool permanent
59  );
60  };
61 
62  class IHStudentPoolLossModel : public DefaultLossModel {
63  public:
65  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
66  const QuantLib::Real correlation,
67  const std::vector<QuantLib::Real>& recoveryRates,
69  // can be defined by a vector can be used this way
70  const std::vector<QuantLib::Real>& copulaInitVals,
71  const QuantLib::Size numBuckets,
72  bool permanent
73  );
74  };
75 
76  class GaussianBinomialLossModel : public DefaultLossModel {
77  public:
79  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
80  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
81  const std::vector<QuantLib::Real>& recoveryRates,
82  bool permanent
83  );
84  };
85 
86  class TBinomialLossModel : public DefaultLossModel {
87  public:
89  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
90  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
91  const std::vector<QuantLib::Real>& recoveryRates,
93  // can be defined by a vector can be used this way
94  const std::vector<QuantLib::Real>& copulaInitVals,
95  bool permanent
96  );
97  };
98 
99  class BaseCorrelationLossModel : public DefaultLossModel {
100  public:
102  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
103 
104  const std::string& baseModelId,
105  const boost::shared_ptr<QuantLib::CorrelationTermStructure>& addinBC,
106  const std::vector<QuantLib::Real>& recoveryRates,
108  // can be defined by a vector can be used this way
109  const std::vector<QuantLib::Real>& copulaInitVals,
110 
111  bool permanent
112  );
113  };
114 
115  class GaussianRandomDefaultLM : public DefaultLossModel {
116  public:
118  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
119  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
120  const std::vector<QuantLib::Real>& recoveryRates,
121  const QuantLib::Size numSims,
122  bool permanent
123  );
124  };
125 
126  class GaussianRandomLossLM : public DefaultLossModel {
127  public:
129  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
130  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
131  const std::vector<QuantLib::Real>& recoveryRates,
132  const QuantLib::Real modelA,
133  const QuantLib::Size numSims,
134  bool permanent
135  );
136  };
137 
138  class TRandomDefaultLM : public DefaultLossModel {
139  public:
141  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
142  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
143  const std::vector<QuantLib::Real>& recoveryRates,
144  const std::vector<QuantLib::Real>& copulaInitVals,
145  const QuantLib::Size numSims,
146  bool permanent
147  );
148  };
149 
150  class TRandomLossLM : public DefaultLossModel {
151  public:
153  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
154  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
155  const std::vector<QuantLib::Real>& recoveryRates,
156  const std::vector<QuantLib::Real>& copulaInitVals,
157  const QuantLib::Real modelA,
158  const QuantLib::Size numSims,
159  bool permanent
160  );
161  };
162 
163  class SaddlePointLossModel : public DefaultLossModel {
164  public:
166  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
167  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
168  const std::vector<QuantLib::Real>& recoveryRates,
169  bool permanent
170  );
171  };
172 
173  class TSaddlePointLossModel : public DefaultLossModel {
174  public:
176  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
177  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
178  const std::vector<QuantLib::Real>& recoveryRates,
179  const std::vector<QuantLib::Real>& copulaInitVals,
180  bool permanent
181  );
182  };
183 
184  class RecursiveGaussLossModel : public DefaultLossModel {
185  public:
187  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
188  const std::vector<std::vector<QuantLib::Real> >& factorWeights,
189  const std::vector<QuantLib::Real>& recoveryRates,
190  bool permanent
191  );
192  };
193 
194 }
195 
196 #endif
Definition: basketlossmodels.hpp:32
TSaddlePointLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, const std::vector< QuantLib::Real > &copulaInitVals, bool permanent)
SaddlePointLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, bool permanent)
TRandomDefaultLM(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, const std::vector< QuantLib::Real > &copulaInitVals, const QuantLib::Size numSims, bool permanent)
OH_LIB_CLASS(AlphaForm, QuantLib::AlphaForm)
Definition: basketlossmodels.hpp:163
Definition: basketlossmodels.hpp:99
RecursiveGaussLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, bool permanent)
Definition: basketlossmodels.hpp:138
Definition: basketlossmodels.hpp:126
BaseCorrelationLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::string &baseModelId, const boost::shared_ptr< QuantLib::CorrelationTermStructure > &addinBC, const std::vector< QuantLib::Real > &recoveryRates, const std::vector< QuantLib::Real > &copulaInitVals, bool permanent)
Definition: basketlossmodels.hpp:41
Definition: basketlossmodels.hpp:184
GaussianRandomLossLM(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, const QuantLib::Real modelA, const QuantLib::Size numSims, bool permanent)
GaussianBinomialLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, bool permanent)
Definition: basketlossmodels.hpp:115
GaussianRandomDefaultLM(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, const QuantLib::Size numSims, bool permanent)
Definition: abcd.hpp:38
Definition: basketlossmodels.hpp:51
Definition: basketlossmodels.hpp:173
IHGaussPoolLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const QuantLib::Real correlation, const std::vector< QuantLib::Real > &recoveryRates, const QuantLib::Size numBuckets, bool permanent)
Definition: abcd.hpp:30
Definition: basketlossmodels.hpp:150
Definition: basketlossmodels.hpp:86
IHStudentPoolLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const QuantLib::Real correlation, const std::vector< QuantLib::Real > &recoveryRates, const std::vector< QuantLib::Real > &copulaInitVals, const QuantLib::Size numBuckets, bool permanent)
GaussianLHPLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, QuantLib::Real correl, const std::vector< QuantLib::Real > &recoveryRates, bool permanent)
Definition: basketlossmodels.hpp:76
Definition: basketlossmodels.hpp:62
TRandomLossLM(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, const std::vector< QuantLib::Real > &copulaInitVals, const QuantLib::Real modelA, const QuantLib::Size numSims, bool permanent)
TBinomialLossModel(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::vector< std::vector< QuantLib::Real > > &factorWeights, const std::vector< QuantLib::Real > &recoveryRates, const std::vector< QuantLib::Real > &copulaInitVals, bool permanent)