@@ -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