@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 244977400: // buySell return ((Cds) bean).getBuySell(); case 866287159: // legalEntityId return ((Cds) bean).getLegalEntityId(); case 575402001: // currency return ((Cds) bean).getCurrency(); case 1585636160: // notional return ((Cds) bean).getNotional(); case -1499086147: // paymentSchedule return ((Cds) bean).getPaymentSchedule(); case 747425396: // fixedRate return ((Cds) bean).getFixedRate(); case 1905311443: // dayCount return ((Cds) bean).getDayCount(); case -480203780: // paymentOnDefault return ((Cds) bean).getPaymentOnDefault(); case 2103482633: // protectionStart return ((Cds) bean).getProtectionStart(); case 852621746: // stepinDateOffset return ((Cds) bean).getStepinDateOffset(); case 135924714: // settlementDateOffset return ((Cds) bean).getSettlementDateOffset(); } return super.propertyGet(bean, propertyName, quiet); }
.settlementDate(products.get(0).getSettlementDateOffset().adjust(TODAY, REF_DATA)) .build(); List<ResolvedCdsTrade> trades = products.stream()
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(Cds beanToCopy) { this.buySell = beanToCopy.getBuySell(); this.legalEntityId = beanToCopy.getLegalEntityId(); this.currency = beanToCopy.getCurrency(); this.notional = beanToCopy.getNotional(); this.paymentSchedule = beanToCopy.getPaymentSchedule(); this.fixedRate = beanToCopy.getFixedRate(); this.dayCount = beanToCopy.getDayCount(); this.paymentOnDefault = beanToCopy.getPaymentOnDefault(); this.protectionStart = beanToCopy.getProtectionStart(); this.stepinDateOffset = beanToCopy.getStepinDateOffset(); this.settlementDateOffset = beanToCopy.getSettlementDateOffset(); }
assertEquals(test.getPaymentOnDefault(), PaymentOnDefault.NONE); assertEquals(test.getProtectionStart(), ProtectionStartOfDay.NONE); assertEquals(test.getSettlementDateOffset(), SETTLE_DAY_ADJ); assertEquals(test.getStepinDateOffset(), STEPIN_DAY_ADJ); assertEquals(test.isCrossCurrency(), false);
public void test_of() { BusinessDayAdjustment bussAdj = BusinessDayAdjustment.of(FOLLOWING, SAT_SUN); PeriodicSchedule expected = PeriodicSchedule.builder() .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(bussAdj) .startDateBusinessDayAdjustment(BusinessDayAdjustment.NONE) .endDateBusinessDayAdjustment(BusinessDayAdjustment.NONE) .frequency(P3M) .rollConvention(RollConventions.NONE) .stubConvention(SMART_INITIAL) .build(); assertEquals(PRODUCT_STD.getPaymentSchedule(), expected); assertEquals(PRODUCT_STD.getBuySell(), BUY); assertEquals(PRODUCT_STD.getCurrency(), USD); assertEquals(PRODUCT_STD.getDayCount(), ACT_360); assertEquals(PRODUCT_STD.getFixedRate(), COUPON); assertEquals(PRODUCT_STD.getLegalEntityId(), LEGAL_ENTITY); assertEquals(PRODUCT_STD.getNotional(), NOTIONAL); assertEquals(PRODUCT_STD.getPaymentOnDefault(), ACCRUED_PREMIUM); assertEquals(PRODUCT_STD.getProtectionStart(), BEGINNING); assertEquals(PRODUCT_STD.getSettlementDateOffset(), SETTLE_DAY_ADJ); assertEquals(PRODUCT_STD.getStepinDateOffset(), STEPIN_DAY_ADJ); Cds test = Cds.of(BUY, LEGAL_ENTITY, USD, NOTIONAL, START_DATE, END_DATE, P3M, SAT_SUN, COUPON); assertEquals(test, PRODUCT_STD); }
public void standardQuoteTest() { double pointsUpFront = 0.007; double expectedParSpread = 0.011112592882846; // taken from Excel-ISDA 1.8.2 double premium = 100d * ONE_BP; Cds product = Cds.of(BUY, LEGAL_ENTITY, GBP, 1.0e6, START_DATE, END_DATE, Frequency.P3M, DEFAULT_CALENDAR, premium); TradeInfo info = TradeInfo.builder().tradeDate(TODAY).settlementDate(product.getSettlementDateOffset().adjust(TODAY, REF_DATA)).build(); ResolvedCdsTrade trade = CdsTrade.builder().product(product).info(info).build().resolve(REF_DATA); CdsQuote pufQuote = CdsQuote.of(CdsQuoteConvention.POINTS_UPFRONT, pointsUpFront); CdsQuote quotedSpread = CONV.quotedSpreadFromPointsUpfront(trade, pufQuote, RATES_PROVIDER, REF_DATA); assertEquals(quotedSpread.getQuotedValue(), expectedParSpread, 1e-14); assertTrue(quotedSpread.getQuoteConvention().equals(CdsQuoteConvention.QUOTED_SPREAD)); CdsQuote derivedPuf = CONV.pointsUpFrontFromQuotedSpread(trade, quotedSpread, RATES_PROVIDER, REF_DATA); assertEquals(derivedPuf.getQuotedValue(), pointsUpFront, 1e-15); assertTrue(derivedPuf.getQuoteConvention().equals(CdsQuoteConvention.POINTS_UPFRONT)); }
public void standardQuoteTest2() { double quotedSpread = 143.4 * ONE_BP; double expectedPuf = -0.2195134271137960; // taken from Excel-ISDA 1.8.2 double premium = 500d * ONE_BP; Cds product = Cds.of(SELL, LEGAL_ENTITY, GBP, 1.0e8, START_DATE, END_DATE, Frequency.P6M, DEFAULT_CALENDAR, premium); TradeInfo info = TradeInfo.builder().tradeDate(TODAY).settlementDate(product.getSettlementDateOffset().adjust(TODAY, REF_DATA)).build(); ResolvedCdsTrade trade = CdsTrade.builder().product(product).info(info).build().resolve(REF_DATA); CdsQuote quotedSpreadQuoted = CdsQuote.of(CdsQuoteConvention.QUOTED_SPREAD, quotedSpread); CdsQuote derivedPuf = CONV.pointsUpFrontFromQuotedSpread(trade, quotedSpreadQuoted, RATES_PROVIDER, REF_DATA); assertEquals(derivedPuf.getQuotedValue(), expectedPuf, 5e-13); assertTrue(derivedPuf.getQuoteConvention().equals(CdsQuoteConvention.POINTS_UPFRONT)); CdsQuote derivedQuotedSpread = CONV.quotedSpreadFromPointsUpfront(trade, derivedPuf, RATES_PROVIDER, REF_DATA); assertEquals(derivedQuotedSpread.getQuotedValue(), quotedSpread, 1e-15); assertTrue(derivedQuotedSpread.getQuoteConvention().equals(CdsQuoteConvention.QUOTED_SPREAD)); }
public void pricePufTest() { double premium = 150d * ONE_BP; Cds product = Cds.of(BUY, LEGAL_ENTITY, GBP, 1.0e6, START_DATE, END_DATE, Frequency.P3M, DEFAULT_CALENDAR, premium); TradeInfo info = TradeInfo.builder().tradeDate(TODAY).settlementDate(product.getSettlementDateOffset().adjust(TODAY, REF_DATA)).build(); ResolvedCdsTrade trade = CdsTrade.builder().product(product).info(info).build().resolve(REF_DATA); NodalCurve cc = CALIB.calibrate(ImmutableList.of(trade), DoubleArray.of(0.0123), DoubleArray.of(0.0), CurveName.of("test"), TODAY, DSC_CURVE, REC_RATES, REF_DATA); CreditRatesProvider rates = RATES_PROVIDER.toImmutableCreditRatesProvider().toBuilder() .creditCurves(ImmutableMap.of( Pair.of(LEGAL_ENTITY, GBP), LegalEntitySurvivalProbabilities.of(LEGAL_ENTITY, IsdaCreditDiscountFactors.of(GBP, TODAY, cc)))) .build(); double pointsUpFront = CONV.pointsUpfront(trade, rates, REF_DATA); double cleanPrice = CONV.cleanPrice(trade, rates, REF_DATA); double cleanPriceRe = CONV.cleanPriceFromPointsUpfront(pointsUpFront); assertEquals(cleanPrice, cleanPriceRe, TOL); }
.paymentOnDefault(cdsProduct.getPaymentOnDefault()) .protectionStart(cdsProduct.getProtectionStart()) .settlementDateOffset(cdsProduct.getSettlementDateOffset()) .stepinDateOffset(cdsProduct.getStepinDateOffset()) .build())