Skip to content

Commit 96f5beb

Browse files
author
sebastien.bouvard
committed
QPR-12830 Fix regression Test
1 parent 1cadb50 commit 96f5beb

1 file changed

Lines changed: 10 additions & 16 deletions

File tree

OREData/ored/marketdata/defaultcurve.cpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -449,19 +449,18 @@ void DefaultCurve::buildCdsCurve(const std::string& curveID, const DefaultCurveC
449449
"date strictly after T + 1.");
450450
continue;
451451
};
452+
Real notional = 1000000;
452453
auto convSpread = quote.value;
453454
// Use configured/convention start date and calendar
454455
Date maturity = cdsMaturity(asof, quote.term, cdsConv->rule());
455-
std::cout<<"|StartDate="<<asof<<"|maturity="<<maturity<<"|Term="<<quote.term<<"|QuoteValue="<<quote.value<<"|DayCounter="<<cdsConv->dayCounter()<<std::endl;
456456
Schedule schedule(asof, maturity, Period(cdsConv->frequency()), cdsConv->calendar(), cdsConv->paymentConvention(),
457457
cdsConv->paymentConvention(), cdsConv->rule(), false);
458458

459459
// CDS quoted at conventional/quoted spread
460460
// Solve for flat hazard with quoted spread
461461
ext::shared_ptr<CreditDefaultSwap> cdsConvSpread = ext::make_shared<CreditDefaultSwap>(
462-
Protection::Buyer, 1.0, convSpread, schedule, cdsConv->paymentConvention(), cdsConv->dayCounter(),
463-
cdsConv->settlesAccrual(), cdsConv->paysAtDefaultTime() ? QuantLib::CreditDefaultSwap::atDefault
464-
: QuantLib::CreditDefaultSwap::atPeriodEnd,
462+
Protection::Buyer, notional, convSpread, schedule, cdsConv->paymentConvention(), Actual360(),
463+
cdsConv->settlesAccrual(), QuantLib::CreditDefaultSwap::atDefault,
465464
Date(), QuantLib::ext::shared_ptr<Claim>());
466465

467466
ext::shared_ptr<SimpleQuote> flatRate = ext::make_shared<SimpleQuote>(0.0);
@@ -490,10 +489,8 @@ void DefaultCurve::buildCdsCurve(const std::string& curveID, const DefaultCurveC
490489
// Fixed-coupon CDS; ask for fairUpfront
491490
Date upfrontSettle = cdsConv->calendar().advance(asof, cdsConv->upfrontSettlementDays() * Days);
492491
ext::shared_ptr<CreditDefaultSwap> fixedCpnTrade = ext::make_shared<CreditDefaultSwap>(
493-
Protection::Buyer, 1.0, 0.0, fixedCoupon, schedule, cdsConv->paymentConvention(),
494-
cdsConv->dayCounter(), cdsConv->settlesAccrual(),
495-
cdsConv->paysAtDefaultTime() ? QuantLib::CreditDefaultSwap::atDefault
496-
: QuantLib::CreditDefaultSwap::atPeriodEnd,
492+
Protection::Buyer, notional, 0.0, fixedCoupon, schedule, cdsConv->paymentConvention(),
493+
Actual360(), cdsConv->settlesAccrual(), QuantLib::CreditDefaultSwap::atDefault,
497494
asof, upfrontSettle);
498495

499496
ext::shared_ptr<PricingEngine> engine(new IsdaCdsEngine(dProb, recoveryRate_, discountCurve));
@@ -513,15 +510,12 @@ void DefaultCurve::buildCdsCurve(const std::string& curveID, const DefaultCurveC
513510
// Wire the flat hazard to the helper so its internal CDS uses it
514511
// upfrontHelper->setTermStructure(prob.currentLink().get());
515512

516-
Real npv = fixedCpnTrade->NPV();
517-
Real fairSpreadClean = fixedCpnTrade->fairSpreadClean();
513+
// Real npv = fixedCpnTrade->NPV();
514+
// Real fairSpreadClean = fixedCpnTrade->fairSpreadClean();
518515
Rate calcUpfront = fixedCpnTrade->fairUpfront();
519-
520-
std::cout<<"calcUpfront="<<calcUpfront<<std::endl;
521-
// Real fairUpfront = upfrontHelper->impliedQuote();
522-
// std::cout<<"calcUpfrontHelper="<<fairUpfront<<std::endl;
523-
std::cout<<"fairSpreadClean="<<fairSpreadClean<<std::endl;
524-
std::cout<<"npv="<<npv<<std::endl;
516+
// Compare NPV against PV of upfront (discounted to asof)
517+
// Real df = discountCurve->discount(upfrontSettle);
518+
// Real pvUpfront = calcUpfront * df * fixedCpnTrade->notional();
525519

526520
auto tmp = QuantLib::ext::make_shared<UpfrontCdsHelper>(
527521
calcUpfront, fixedCoupon, quote.term, cdsConv->settlementDays(), cdsConv->calendar(),

0 commit comments

Comments
 (0)