#include <qle/models/basket.hpp>
Public Member Functions | |
Basket () | |
Basket (const Date &refDate, const std::vector< std::string > &names, const std::vector< Real > ¬ionals, const QuantLib::ext::shared_ptr< Pool > pool, Real attachmentRatio=0.0, Real detachmentRatio=1.0, const QuantLib::ext::shared_ptr< Claim > &claim=QuantLib::ext::shared_ptr< Claim >(new FaceValueClaim())) | |
void | computeBasket () const |
Size | size () const |
Basket inception number of counterparties. More... | |
const std::vector< std::string > & | names () const |
Basket counterparties names at inception. More... | |
const std::vector< Real > & | notionals () const |
Basket counterparties notionals at inception. More... | |
Real | exposure (const std::string &name, const Date &=Date()) const |
Returns the total expected exposures for that name. More... | |
const QuantLib::ext::shared_ptr< Pool > & | pool () const |
Underlying pool. More... | |
std::vector< DefaultProbKey > | defaultKeys () const |
The keys each counterparty enters the basket with (sensitive to) More... | |
const Date & | refDate () const |
Basket inception date. More... | |
Real | attachmentRatio () const |
Real | detachmentRatio () const |
Detachment point expressed as a fraction of the total pool notional. More... | |
Real | basketNotional () const |
Original basket notional ignoring any losses. More... | |
Real | trancheNotional () const |
Original tranche notional ignoring any realized losses. More... | |
Real | attachmentAmount () const |
Attachment amount = attachmentRatio() * basketNotional() More... | |
Real | detachmentAmount () const |
Detachment amount = detachmentRatio() * basketNotional() More... | |
QuantLib::ext::shared_ptr< Claim > | claim () const |
default claim, same for all positions and counterparties More... | |
std::vector< Probability > | probabilities (const Date &d) const |
Real | settledLoss () const |
Real | settledLoss (const Date &) const |
Real | cumulatedLoss () const |
Real | cumulatedLoss (const Date &) const |
Real | remainingNotional () const |
Real | remainingNotional (const Date &) const |
const std::vector< Real > & | remainingNotionals () const |
std::vector< Real > | remainingNotionals (const Date &) const |
const std::vector< std::string > & | remainingNames () const |
std::vector< std::string > | remainingNames (const Date &) const |
const std::vector< DefaultProbKey > & | remainingDefaultKeys () const |
std::vector< DefaultProbKey > | remainingDefaultKeys (const Date &) const |
Size | remainingSize () const |
Number of counterparties alive on the requested date. More... | |
Size | remainingSize (const Date &) const |
std::vector< Probability > | remainingProbabilities (const Date &d) const |
Real | remainingAttachmentAmount () const |
Real | remainingAttachmentAmount (const Date &endDate) const |
Real | remainingDetachmentAmount () const |
Real | remainingDetachmentAmount (const Date &endDate) const |
Real | remainingTrancheNotional () const |
Remaining basket tranched notional on calculation date. More... | |
Real | remainingTrancheNotional (const Date &endDate) const |
const std::vector< Size > & | liveList () const |
Indexes of remaining names. Notice these are names and not positions. More... | |
std::vector< Size > | liveList (const Date &) const |
void | setLossModel (const QuantLib::ext::shared_ptr< QuantExt::DefaultLossModel > &lossModel) |
Assigns the default loss model to this basket. Resets calculations. More... | |
Basket Loss Statistics | |
Methods providing statistical metrics on the loss or value distribution of the basket. Most calculations rely on the pressence of a model assigned to the basket. | |
std::vector< Real > | notionals_ |
QuantLib::ext::shared_ptr< Pool > | pool_ |
const QuantLib::ext::shared_ptr< Claim > | claim_ |
The claim is the same for all names. More... | |
Real | attachmentRatio_ |
Real | detachmentRatio_ |
Real | basketNotional_ |
Real | attachmentAmount_ |
basket tranched inception attachment amount: More... | |
Real | detachmentAmount_ |
basket tranched inception detachment amount: More... | |
Real | trancheNotional_ |
basket tranched notional amount: More... | |
Real | evalDateSettledLoss_ |
Real | evalDateRemainingNot_ |
Real | evalDateAttachAmount_ |
Real | evalDateDetachAmmount_ |
std::vector< Size > | evalDateLiveList_ |
std::vector< Real > | evalDateLiveNotionals_ |
std::vector< std::string > | evalDateLiveNames_ |
std::vector< DefaultProbKey > | evalDateLiveKeys_ |
const Date | refDate_ |
Basket inception date. More... | |
QuantLib::ext::shared_ptr< QuantExt::DefaultLossModel > | lossModel_ |
Real | expectedTrancheLoss (const Date &d, Real recoveryRate=Null< Real >()) const |
Probability | probOverLoss (const Date &d, Real lossFraction) const |
Real | percentile (const Date &d, Probability prob) const |
Real | expectedShortfall (const Date &d, Probability prob) const |
std::vector< Real > | splitVaRLevel (const Date &date, Real loss) const |
std::map< Real, Probability > | lossDistribution (const Date &) const |
Real | densityTrancheLoss (const Date &d, Real lossFraction) const |
Real | defaultCorrelation (const Date &d, Size iName, Size jName) const |
std::vector< Probability > | probsBeingNthEvent (Size n, const Date &d) const |
Probability | probAtLeastNEvents (Size n, const Date &d) const |
Real | recoveryRate (const Date &d, Size iName) const |
QuantLib::Real | correlation () const |
void | performCalculations () const override |
Credit Basket.
Definition at line 52 of file basket.hpp.
Basket | ( | ) |
Definition at line 54 of file basket.hpp.
Basket | ( | const Date & | refDate, |
const std::vector< std::string > & | names, | ||
const std::vector< Real > & | notionals, | ||
const QuantLib::ext::shared_ptr< Pool > | pool, | ||
Real | attachmentRatio = 0.0 , |
||
Real | detachmentRatio = 1.0 , |
||
const QuantLib::ext::shared_ptr< Claim > & | claim = QuantLib::ext::shared_ptr<Claim>(new FaceValueClaim()) |
||
) |
Constructs a basket of simple collection of constant notional positions subject to default risk only.
The refDate parameter is the basket inception date, that is, the date at which defaultable events are relevant. (There are no constraints on forward baskets but models assigned should be consistent.)
Definition at line 31 of file basket.cpp.
void computeBasket | ( | ) | const |
Definition at line 66 of file basket.hpp.
Size size | ( | ) | const |
Basket inception number of counterparties.
Definition at line 319 of file basket.hpp.
const std::vector< std::string > & names | ( | ) | const |
const std::vector< Real > & notionals | ( | ) | const |
Real exposure | ( | const std::string & | name, |
const Date & | d = Date() |
||
) | const |
Returns the total expected exposures for that name.
Definition at line 196 of file basket.cpp.
const QuantLib::ext::shared_ptr< Pool > & pool | ( | ) | const |
std::vector< DefaultProbKey > defaultKeys | ( | ) | const |
The keys each counterparty enters the basket with (sensitive to)
Definition at line 323 of file basket.hpp.
const Date & refDate | ( | ) | const |
Basket inception date.
Loss Given Default for all issuers/notionals based on expected recovery rates for the respective issuers.
Definition at line 99 of file basket.hpp.
Real attachmentRatio | ( | ) | const |
Attachment point expressed as a fraction of the total inception notional.
Definition at line 103 of file basket.hpp.
Real detachmentRatio | ( | ) | const |
Detachment point expressed as a fraction of the total pool notional.
Definition at line 105 of file basket.hpp.
Real basketNotional | ( | ) | const |
Original basket notional ignoring any losses.
Definition at line 107 of file basket.hpp.
Real trancheNotional | ( | ) | const |
Original tranche notional ignoring any realized losses.
Definition at line 112 of file basket.hpp.
Real attachmentAmount | ( | ) | const |
Attachment amount = attachmentRatio() * basketNotional()
Definition at line 117 of file basket.hpp.
Real detachmentAmount | ( | ) | const |
Detachment amount = detachmentRatio() * basketNotional()
Definition at line 122 of file basket.hpp.
QuantLib::ext::shared_ptr< Claim > claim | ( | ) | const |
vector< Real > probabilities | ( | const Date & | d | ) | const |
Vector of cumulative default probability to date d for all issuers in the basket.
Definition at line 91 of file basket.cpp.
Real settledLoss | ( | ) | const |
Realized basket losses between the reference date and the calculation date, taking the actual recovery rates of loss events into account. Only default events that have settled (have a realized RR) are accounted for. For contingent losses after a default you need to compute the losses through a DefaultLossModel
Optionally one can pass a date in the future and that will collect events stored in the issuers list. This shows the effect of 'programmed' (after today's) events on top of past ones. The intention is to be used in risk analysis (jump to default, etc).
Definition at line 357 of file basket.hpp.
Real settledLoss | ( | const Date & | endDate | ) | const |
Definition at line 122 of file basket.cpp.
Real cumulatedLoss | ( | ) | const |
Actual basket losses between the reference date and the calculation date, taking the actual recovery rates of loss events into account. If the event has not settled yet a model driven recovery is used.
Returns the realized losses in this portfolio since the portfolio default reference date. This method relies on an implementation of the loss given default since the events have not necessarily settled.
Definition at line 352 of file basket.hpp.
Real cumulatedLoss | ( | const Date & | endDate | ) | const |
Definition at line 100 of file basket.cpp.
Real remainingNotional | ( | ) | const |
Remaining full basket (untranched) notional after settled losses between the reference date and the given date. The full notional for defaulted names is subracted, recovery ignored.
Definition at line 145 of file basket.cpp.
Real remainingNotional | ( | const Date & | endDate | ) | const |
Definition at line 160 of file basket.cpp.
const std::vector< Real > & remainingNotionals | ( | ) | const |
Vector of surviving notionals after settled losses between the reference date and the given date, recovery ignored.
Definition at line 347 of file basket.hpp.
vector< Real > remainingNotionals | ( | const Date & | endDate | ) | const |
Definition at line 171 of file basket.cpp.
const std::vector< std::string > & remainingNames | ( | ) | const |
Vector of surviving issuers after defaults between the reference basket date and the given (or evaluation) date.
Definition at line 342 of file basket.hpp.
std::vector< std::string > remainingNames | ( | const Date & | endDate | ) | const |
Definition at line 219 of file basket.cpp.
const std::vector< DefaultProbKey > & remainingDefaultKeys | ( | ) | const |
Default keys of non defaulted counterparties
Definition at line 362 of file basket.hpp.
vector< DefaultProbKey > remainingDefaultKeys | ( | const Date & | endDate | ) | const |
Definition at line 231 of file basket.cpp.
Size remainingSize | ( | ) | const |
Number of counterparties alive on the requested date.
Definition at line 242 of file basket.cpp.
Size remainingSize | ( | const Date & | ) | const |
std::vector< Probability > remainingProbabilities | ( | const Date & | d | ) | const |
Vector of cumulative default probability to date d for all issuers still (at the evaluation date) alive in the basket.
Definition at line 182 of file basket.cpp.
Real remainingAttachmentAmount | ( | ) | const |
Attachment amount of the equivalent (after defaults) remaining basket The remaining attachment amount is RAA = max (0, attachmentAmount - cumulatedLoss())
The remaining attachment ratio is then RAR = RAA / remainingNotional()
Definition at line 337 of file basket.hpp.
Real remainingAttachmentAmount | ( | const Date & | endDate | ) | const |
Definition at line 255 of file basket.cpp.
Real remainingDetachmentAmount | ( | ) | const |
Detachment amount of the equivalent remaining basket. The remaining detachment amount is RDA = max (0, detachmentAmount - cumulatedLoss())
The remaining detachment ratio is then RDR = RDA / remainingNotional()
Definition at line 332 of file basket.hpp.
Real remainingDetachmentAmount | ( | const Date & | endDate | ) | const |
Definition at line 250 of file basket.cpp.
Real remainingTrancheNotional | ( | ) | const |
Remaining basket tranched notional on calculation date.
Definition at line 207 of file basket.hpp.
Real remainingTrancheNotional | ( | const Date & | endDate | ) | const |
Expected basket tranched notional on the requested date according to the basket model. Model should have been assigned.
Definition at line 214 of file basket.hpp.
const std::vector< Size > & liveList | ( | ) | const |
Indexes of remaining names. Notice these are names and not positions.
Definition at line 327 of file basket.hpp.
std::vector< Size > liveList | ( | const Date & | endDate | ) | const |
Definition at line 150 of file basket.cpp.
void setLossModel | ( | const QuantLib::ext::shared_ptr< QuantExt::DefaultLossModel > & | lossModel | ) |
Assigns the default loss model to this basket. Resets calculations.
Definition at line 53 of file basket.cpp.
Real expectedTrancheLoss | ( | const Date & | d, |
Real | recoveryRate = Null<Real>() |
||
) | const |
Definition at line 293 of file basket.cpp.
Probability probOverLoss | ( | const Date & | d, |
Real | lossFraction | ||
) | const |
The lossFraction is the fraction of losses expressed in inception (no losses) tranche units (e.g. 'attach level'=0%, 'detach level'=100%)
Definition at line 263 of file basket.cpp.
Real percentile | ( | const Date & | d, |
Probability | prob | ||
) | const |
Definition at line 282 of file basket.cpp.
Real expectedShortfall | ( | const Date & | d, |
Probability | prob | ||
) | const |
ESF
Definition at line 303 of file basket.cpp.
std::vector< Real > splitVaRLevel | ( | const Date & | date, |
Real | loss | ||
) | const |
Definition at line 298 of file basket.cpp.
std::map< Real, Probability > lossDistribution | ( | const Date & | d | ) | const |
Full loss distribution
Definition at line 308 of file basket.cpp.
Real densityTrancheLoss | ( | const Date & | d, |
Real | lossFraction | ||
) | const |
Real defaultCorrelation | ( | const Date & | d, |
Size | iName, | ||
Size | jName | ||
) | const |
Definition at line 322 of file basket.cpp.
std::vector< Probability > probsBeingNthEvent | ( | Size | n, |
const Date & | d | ||
) | const |
Probability vector that each of the remaining live names (at eval date) is the n-th default by date d.
The n parameter is the internal index to the name; it should be alive at the evaluation date.
------—TO DO: Implement with a string passed-------------------— ------—TO DO: Perform check the name is alive------------------—
Definition at line 313 of file basket.cpp.
Probability probAtLeastNEvents | ( | Size | n, |
const Date & | d | ||
) | const |
Returns the probaility of having a given or larger number of defaults in the basket portfolio at a given time.
Definition at line 330 of file basket.cpp.
Real recoveryRate | ( | const Date & | d, |
Size | iName | ||
) | const |
Expected recovery rate of the underlying position as a fraction of its exposure value at date d given it has defaulted on that date. NOTICE THE ARG IS THE CTPTY....SHOULDNT IT BE THE POSITION/INSTRUMENT?????<<<<<<<<<<<<<<<<<<<<<<<
Definition at line 335 of file basket.cpp.
Real correlation | ( | ) | const |
Return single correlation number from the underlying loss model if it is a one factor model. If the underlying loss model is null, this returns a Null<Real>()
.
Definition at line 340 of file basket.cpp.
|
overrideprivate |
Definition at line 66 of file basket.cpp.
|
private |
Definition at line 279 of file basket.hpp.
|
private |
Definition at line 280 of file basket.hpp.
|
private |
The claim is the same for all names.
Definition at line 282 of file basket.hpp.
|
private |
Definition at line 284 of file basket.hpp.
|
private |
Definition at line 285 of file basket.hpp.
|
mutableprivate |
Definition at line 286 of file basket.hpp.
|
mutableprivate |
basket tranched inception attachment amount:
Definition at line 288 of file basket.hpp.
|
mutableprivate |
basket tranched inception detachment amount:
Definition at line 290 of file basket.hpp.
|
mutableprivate |
basket tranched notional amount:
Definition at line 292 of file basket.hpp.
|
mutableprivate |
Definition at line 298 of file basket.hpp.
|
private |
Definition at line 298 of file basket.hpp.
|
private |
Definition at line 298 of file basket.hpp.
|
private |
Definition at line 298 of file basket.hpp.
|
mutableprivate |
Definition at line 299 of file basket.hpp.
|
mutableprivate |
Definition at line 300 of file basket.hpp.
|
mutableprivate |
Definition at line 301 of file basket.hpp.
|
mutableprivate |
Definition at line 302 of file basket.hpp.
|
private |
Basket inception date.
Definition at line 304 of file basket.hpp.
|
private |
Definition at line 314 of file basket.hpp.