25#include <ql/event.hpp>
26#include <ql/instrument.hpp>
30#include <ql/time/schedule.hpp>
51class CBO :
public Instrument {
59 const QuantLib::ext::shared_ptr<BondBasket>&
basket,
61 const QuantLib::Schedule& schedule,
65 const DayCounter& feeDayCounter,
67 const std::vector<Tranche>& tranches,
75 const std::string& investedTrancheName);
79 QuantLib::ext::shared_ptr<BondBasket>
basket()
const {
return basket_; }
86 void fetchResults(
const PricingEngine::results*)
const override;
105 QuantLib::ext::shared_ptr<BondBasket>
basket_;
130 QuantLib::ext::shared_ptr<BondBasket>
basket;
144 void reset()
override;
Basket of defaultable bonds.
Cashflow table to store cashflow calculation results.
QuantLib::ext::shared_ptr< BondBasket > basket
std::vector< Tranche > tranches
std::string investedTrancheName
void validate() const override
std::vector< CashflowTable > trancheCashflows
std::vector< Real > trancheValueStd
std::vector< Real > trancheValue
Real basketValueStd() const
std::string investedTrancheName_
QuantLib::ext::shared_ptr< BondBasket > basket_
std::vector< Real > trancheValue_
QuantLib::ext::shared_ptr< BondBasket > basket() const
std::vector< Real > trancheValue() const
void setupArguments(PricingEngine::arguments *) const override
bool isExpired() const override
Rate subfeeValueStd() const
std::vector< Real > trancheValueStd_
std::vector< CashflowTable > trancheCashflows_
std::vector< Tranche > tranches_
void setupExpired() const override
DayCounter feeDayCounter_
void fetchResults(const PricingEngine::results *) const override
const std::vector< CashflowTable > & trancheCashflows() const
std::vector< Real > trancheValueStd() const
Collateralized Bond Obligation, Cash Flow CBO.