24#ifndef quantlib_synthetic_cdo_hpp
25#define quantlib_synthetic_cdo_hpp
27#include <ql/qldefines.hpp>
29#ifndef QL_PATCH_SOLARIS
31#include <ql/instrument.hpp>
32#include <ql/default.hpp>
33#include <ql/optional.hpp>
34#include <ql/time/schedule.hpp>
36#include <ql/experimental/credit/basket.hpp>
37#include <ql/cashflows/fixedratecoupon.hpp>
41 class YieldTermStructure;
150 return ext::dynamic_pointer_cast<FixedRateCoupon>(
160 Real accuracy = 1.0e-3)
const;
212 void reset()
override;
229 SyntheticCDO::results> { };
template base class for option pricing engines
Shared handle to an observable.
Abstract instrument class.
template class providing a null value for a given type.
ext::shared_ptr< Basket > basket
void validate() const override
BusinessDayConvention paymentConvention
std::vector< Real > expectedTrancheLoss
Synthetic Collateralized Debt Obligation.
Real upfrontPremiumValue_
Rate fairUpfrontPremium() const
ext::shared_ptr< Basket > basket_
void setupArguments(PricingEngine::arguments *) const override
const ext::shared_ptr< Basket > & basket() const
bool isExpired() const override
returns whether the instrument might have value greater than zero.
const Date & maturity() const
Last protection date.
Real implicitCorrelation(const std::vector< Real > &recoveries, const Handle< YieldTermStructure > &discountCurve, Real targetNPV=0., Real accuracy=1.0e-3) const
Rate protectionValue() const
Real protectionLegNPV() const
BusinessDayConvention paymentConvention_
Real premiumLegNPV() const
void setupExpired() const override
const Real leverageFactor_
void fetchResults(const PricingEngine::results *) const override
std::vector< Real > expectedTrancheLoss() const
Rate premiumValue() const
Real leverageFactor() const
std::vector< Real > expectedTrancheLoss_
Real remainingNotional() const
BusinessDayConvention
Business Day conventions.
std::size_t Size
size of a container
const boost::none_t & nullopt
std::vector< ext::shared_ptr< CashFlow > > Leg
Sequence of cash-flows.
information on a default-protection contract