43 bool paysAtDefaultTime,
44 const Date& startDate,
46 const bool rebatesAccrual,
49 calendar_(
std::move(calendar)), frequency_(frequency), paymentConvention_(paymentConvention),
50 rule_(rule), dayCounter_(
std::move(dayCounter)), recoveryRate_(recoveryRate),
52 paysAtDefaultTime_(paysAtDefaultTime), lastPeriodDC_(
std::move(lastPeriodDayCounter)),
53 rebatesAccrual_(rebatesAccrual), model_(model), startDate_(startDate) {
64 ext::shared_ptr<DefaultProbabilityTermStructure>(ts,
null_deleter()),
92 endDate = refDate +
tenor_;
122 bool paysAtDefaultTime,
123 const Date& startDate,
125 const bool rebatesAccrual,
127 :
CdsHelper(runningSpread, tenor, settlementDays, calendar,
128 frequency, paymentConvention, rule, dayCounter,
129 recoveryRate, discountCurve, settlesAccrual, paysAtDefaultTime,
130 startDate, lastPeriodDayCounter, rebatesAccrual, model) {}
133 swap_->recalculate();
134 return swap_->fairSpread();
138 swap_ = ext::make_shared<CreditDefaultSwap>(
145 swap_->setPricingEngine(ext::make_shared<IsdaCdsEngine>(
151 swap_->setPricingEngine(ext::make_shared<MidPointCdsEngine>(
173 bool paysAtDefaultTime,
174 const Date& startDate,
176 const bool rebatesAccrual,
178 :
CdsHelper(upfront, tenor, settlementDays, calendar,
179 frequency, paymentConvention, rule, dayCounter,
180 recoveryRate, discountCurve, settlesAccrual, paysAtDefaultTime,
181 startDate, lastPeriodDayCounter, rebatesAccrual, model),
182 upfrontSettlementDays_(upfrontSettlementDays),
183 upfrontDate_(upfrontDate()),
184 runningSpread_(runningSpread) {}
196 swap_ = ext::make_shared<CreditDefaultSwap>(
205 swap_->setPricingEngine(ext::make_shared<IsdaCdsEngine>(
211 swap_->setPricingEngine(ext::make_shared<MidPointCdsEngine>(
222 swap_->recalculate();
223 return swap_->fairUpfront();
const YieldTermStructure & discountCurve_
virtual void setTermStructure(TS *)
sets the term structure to be used for pricing
Date adjust(const Date &, BusinessDayConvention convention=Following) const
Date advance(const Date &, Integer n, TimeUnit unit, BusinessDayConvention convention=Following, bool endOfMonth=false) const
Base class for CDS helpers.
Handle< YieldTermStructure > discountCurve_
RelinkableHandle< DefaultProbabilityTermStructure > probability_
void setTermStructure(DefaultProbabilityTermStructure *) override
CdsHelper(const std::variant< Rate, Handle< Quote > > "e, const Period &tenor, Integer settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention paymentConvention, DateGeneration::Rule rule, DayCounter dayCounter, Real recoveryRate, const Handle< YieldTermStructure > &discountCurve, bool settlesAccrual=true, bool paysAtDefaultTime=true, const Date &startDate=Date(), DayCounter lastPeriodDayCounter=DayCounter(), bool rebatesAccrual=true, CreditDefaultSwap::PricingModel model=CreditDefaultSwap::Midpoint)
DateGeneration::Rule rule_
CreditDefaultSwap::PricingModel model_
void initializeDates() override
BusinessDayConvention paymentConvention_
virtual void resetEngine()=0
ext::shared_ptr< CreditDefaultSwap > swap_
Date protectionStart_
protection effective date.
Default probability term structure.
Shared handle to an observable.
MakeSchedule & withConvention(BusinessDayConvention)
MakeSchedule & withTerminationDateConvention(BusinessDayConvention)
MakeSchedule & withRule(DateGeneration::Rule)
MakeSchedule & to(const Date &terminationDate)
MakeSchedule & from(const Date &effectiveDate)
MakeSchedule & withFrequency(Frequency)
MakeSchedule & withCalendar(const Calendar &)
std::pair< iterator, bool > registerWith(const ext::shared_ptr< Observable > &)
Bootstrap helper with date schedule relative to global evaluation date.
const std::vector< Date > & dates() const
ext::optional< bool > & includeTodaysCashFlows()
static Settings & instance()
access to the unique instance
void resetEngine() override
SpreadCdsHelper(const std::variant< Rate, Handle< Quote > > &runningSpread, const Period &tenor, Integer settlementDays, const Calendar &calendar, Frequency frequency, BusinessDayConvention paymentConvention, DateGeneration::Rule rule, const DayCounter &dayCounter, Real recoveryRate, const Handle< YieldTermStructure > &discountCurve, bool settlesAccrual=true, bool paysAtDefaultTime=true, const Date &startDate=Date(), const DayCounter &lastPeriodDayCounter=DayCounter(), bool rebatesAccrual=true, CreditDefaultSwap::PricingModel model=CreditDefaultSwap::Midpoint)
Real impliedQuote() const override
UpfrontCdsHelper(const std::variant< Rate, Handle< Quote > > &upfront, Rate runningSpread, const Period &tenor, Integer settlementDays, const Calendar &calendar, Frequency frequency, BusinessDayConvention paymentConvention, DateGeneration::Rule rule, const DayCounter &dayCounter, Real recoveryRate, const Handle< YieldTermStructure > &discountCurve, Natural upfrontSettlementDays=3, bool settlesAccrual=true, bool paysAtDefaultTime=true, const Date &startDate=Date(), const DayCounter &lastPeriodDayCounter=DayCounter(), bool rebatesAccrual=true, CreditDefaultSwap::PricingModel model=CreditDefaultSwap::Midpoint)
void resetEngine() override
void initializeDates() override
Real impliedQuote() const override
Natural upfrontSettlementDays_
bootstrap helpers for default-probability term structures
#define QL_FAIL(message)
throw an error (possibly with file and line information)
Frequency
Frequency of events.
BusinessDayConvention
Business Day conventions.
unsigned QL_INTEGER Natural
positive integer
QL_INTEGER Integer
integer number
ISDA engine for credit default swaps.
Mid-point engine for credit default swaps.
Date cdsMaturity(const Date &tradeDate, const Period &tenor, DateGeneration::Rule rule)
empty deleter for shared_ptr