public void withCouponTest() { double coupon = 0.15; double price = PRICER.price(PRODUCT_NEXTDAY, RATES_PROVIDER, coupon, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA); double protPv = PRICER.protectionLeg(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); double annuity = PRICER.riskyAnnuity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA); assertEquals(price, protPv - coupon * annuity, TOL); }
public void premiumLegRegressionTest() { double resNext = PRICER.riskyAnnuity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resNext, 6.395697031451866, TOL); double resBefore = PRICER.riskyAnnuity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resBefore, 9.314426609002561, TOL); double resAfter = PRICER.riskyAnnuity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resAfter, 12.018397498258862, TOL); double resNsToday = PRICER.riskyAnnuity(PRODUCT_NS_TODAY, RATES_PROVIDER, PRODUCT_NS_TODAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resNsToday, 6.806862528024904, TOL); double resNsStepin = PRICER.riskyAnnuity(PRODUCT_NS_STEPIN, RATES_PROVIDER, PRODUCT_NS_STEPIN.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resNsStepin, 4.89033052696166, TOL); double resNsBtw = PRICER.riskyAnnuity(PRODUCT_NS_BTW, RATES_PROVIDER, PRODUCT_NS_BTW.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resNsBtw, 10.367538779382677, TOL); }
public void protectionLegRegressionTest() { double resNext = PRICER.protectionLeg(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); assertEquals(resNext, 0.11770082424693698, TOL); double resBefore = PRICER.protectionLeg(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); assertEquals(resBefore, 0.19621836970171463, TOL); double resAfter = PRICER.protectionLeg(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); assertEquals(resAfter, 0.2744043768251808, TOL); double resNsToday = PRICER.protectionLeg(PRODUCT_NS_TODAY, RATES_PROVIDER, PRODUCT_NS_TODAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); assertEquals(resNsToday, 0.12920042414763938, TOL); double resNsStepin = PRICER.protectionLeg(PRODUCT_NS_STEPIN, RATES_PROVIDER, PRODUCT_NS_STEPIN.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); assertEquals(resNsStepin, 0.07540932150559641, TOL); double resNsBtw = PRICER.protectionLeg(PRODUCT_NS_BTW, RATES_PROVIDER, PRODUCT_NS_BTW.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); assertEquals(resNsBtw, 0.22727774070157128, TOL); }
public void truncationRegressionTest() { CreditRatesProvider ratesAccEndDate = createCreditRatesProvider(LocalDate.of(2014, 3, 22)); double resAccEndDate = PRICER.riskyAnnuity(PRODUCT_BEFORE, ratesAccEndDate, PRODUCT_BEFORE.getSettlementDateOffset().adjust(ratesAccEndDate.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resAccEndDate, 9.140484282937514, TOL); CreditRatesProvider ratesEffectiveEndDate = createCreditRatesProvider(LocalDate.of(2014, 3, 21)); double resEffectiveEndDate = PRICER.riskyAnnuity(PRODUCT_BEFORE, ratesEffectiveEndDate, PRODUCT_BEFORE.getSettlementDateOffset().adjust(ratesEffectiveEndDate.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resEffectiveEndDate, 9.139474456128156, TOL); CreditRatesProvider ratesProtectionEndDateOne = createCreditRatesProvider(LocalDate.of(2024, 9, 19)); double resProtectionEndDateOne = PRICER.riskyAnnuity(PRODUCT_BEFORE, ratesProtectionEndDateOne, PRODUCT_BEFORE.getSettlementDateOffset().adjust(ratesProtectionEndDateOne.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resProtectionEndDateOne, 0.2583274486014851, TOL); CreditRatesProvider ratesProtectionEndDate = createCreditRatesProvider(LocalDate.of(2024, 9, 20)); double resProtectionEndDate = PRICER.riskyAnnuity(PRODUCT_BEFORE, ratesProtectionEndDate, PRODUCT_BEFORE.getSettlementDateOffset().adjust(ratesProtectionEndDate.getValuationDate(), REF_DATA), DIRTY, REF_DATA); assertEquals(resProtectionEndDate, 0d, TOL); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 244977400: // buySell return ((ResolvedCds) bean).getBuySell(); case 866287159: // legalEntityId return ((ResolvedCds) bean).getLegalEntityId(); case -1674414612: // paymentPeriods return ((ResolvedCds) bean).getPaymentPeriods(); case -1193325040: // protectionEndDate return ((ResolvedCds) bean).getProtectionEndDate(); case 1905311443: // dayCount return ((ResolvedCds) bean).getDayCount(); case -480203780: // paymentOnDefault return ((ResolvedCds) bean).getPaymentOnDefault(); case 2103482633: // protectionStart return ((ResolvedCds) bean).getProtectionStart(); case 852621746: // stepinDateOffset return ((ResolvedCds) bean).getStepinDateOffset(); case 135924714: // settlementDateOffset return ((ResolvedCds) bean).getSettlementDateOffset(); } return super.propertyGet(bean, propertyName, quiet); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(ResolvedCds beanToCopy) { this.buySell = beanToCopy.getBuySell(); this.legalEntityId = beanToCopy.getLegalEntityId(); this.paymentPeriods = beanToCopy.getPaymentPeriods(); this.protectionEndDate = beanToCopy.getProtectionEndDate(); this.dayCount = beanToCopy.getDayCount(); this.paymentOnDefault = beanToCopy.getPaymentOnDefault(); this.protectionStart = beanToCopy.getProtectionStart(); this.stepinDateOffset = beanToCopy.getStepinDateOffset(); this.settlementDateOffset = beanToCopy.getSettlementDateOffset(); }
public void consistencyTest() { double price = PRICER.price(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA); CurrencyAmount rpv01 = PRICER.rpv01(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA); CurrencyAmount recovery01 = PRICER.recovery01(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); double spread = PRICER.parSpread(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); // the following methods are tested by regression tests double protPv = PRICER.protectionLeg(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); double annuity = PRICER.riskyAnnuity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA); assertEquals(price, protPv - PRODUCT_NEXTDAY.getFixedRate() * annuity, TOL); assertEquals(rpv01.getCurrency(), USD); assertEquals(rpv01.getAmount(), annuity * NOTIONAL, NOTIONAL * TOL); assertEquals(recovery01.getCurrency(), USD); assertEquals(recovery01.getAmount(), -protPv / (1d - RECOVERY_RATES.getRecoveryRate()) * NOTIONAL, NOTIONAL * TOL); assertEquals(spread, protPv / annuity, TOL); }
public void cleanPvTruncationTest() { CreditRatesProvider ratesAccEndDate = createCreditRatesProvider(LocalDate.of(2014, 3, 22)); double resAccEndDate = PRICER.presentValue(PRODUCT_BEFORE, ratesAccEndDate, PRODUCT_BEFORE.getSettlementDateOffset().adjust(ratesAccEndDate.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resAccEndDate, -0.26418577838510354 * (-NOTIONAL), TOL * NOTIONAL); CreditRatesProvider ratesEffectiveEndDate = createCreditRatesProvider(LocalDate.of(2014, 3, 21)); double resEffectiveEndDate = PRICER.presentValue(PRODUCT_BEFORE, ratesEffectiveEndDate, PRODUCT_BEFORE.getSettlementDateOffset().adjust(ratesEffectiveEndDate.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resEffectiveEndDate, -0.26422628099362094 * (-NOTIONAL), TOL * NOTIONAL); CreditRatesProvider ratesProtectionEndDateOne = createCreditRatesProvider(LocalDate.of(2024, 9, 19)); double resProtectionEndDateOne = PRICER.presentValue(PRODUCT_BEFORE, ratesProtectionEndDateOne, PRODUCT_BEFORE.getSettlementDateOffset().adjust(ratesProtectionEndDateOne.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resProtectionEndDateOne, -1.1814923847919301E-4 * (-NOTIONAL), TOL * NOTIONAL); CreditRatesProvider ratesProtectionEndDate = createCreditRatesProvider(LocalDate.of(2024, 9, 20)); double resProtectionEndDate = PRICER.presentValue(PRODUCT_BEFORE, ratesProtectionEndDate, PRODUCT_BEFORE.getSettlementDateOffset().adjust(ratesProtectionEndDate.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resProtectionEndDate, 0d, TOL * NOTIONAL); }
public void cleanPvTest() { double resNext = PRICER.presentValue(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resNext, -0.20208402732565636 * NOTIONAL, TOL * NOTIONAL); double resBefore = PRICER.presentValue(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resBefore, -0.26741962741508013 * (-NOTIONAL), TOL * NOTIONAL); double resAfter = PRICER.presentValue(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resAfter, -0.32651549808776237 * NOTIONAL, TOL * NOTIONAL); double resNsToday = PRICER.presentValue(PRODUCT_NS_TODAY, RATES_PROVIDER, PRODUCT_NS_TODAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resNsToday, -0.2101704800313836 * NOTIONAL, TOL * NOTIONAL); double resNsStepin = PRICER.presentValue(PRODUCT_NS_STEPIN, RATES_PROVIDER, PRODUCT_NS_STEPIN.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA).getAmount(); assertEquals(resNsStepin, -0.1691072048424866 * (-NOTIONAL), TOL * NOTIONAL); double resNsBtw = PRICER.presentValue(PRODUCT_NS_BTW, RATES_PROVIDER, PRODUCT_NS_BTW.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), CLEAN, REF_DATA) .getAmount(); assertEquals(resNsBtw, -0.29068253160089597 * NOTIONAL, TOL * NOTIONAL); }
CreditRatesProvider provider = createCreditRatesProvider(valuationDate); double price = PRICER.price(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), CLEAN, REF_DATA); assertEquals(price, 0d); CurrencyAmount pv = PRICER.presentValue(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), CLEAN, REF_DATA); assertEquals(pv, CurrencyAmount.zero(USD)); assertThrowsIllegalArg(() -> PRICER.parSpread(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), REF_DATA)); double protectionLeg = PRICER.protectionLeg(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), REF_DATA); assertEquals(protectionLeg, 0d); double riskyAnnuity = PRICER.riskyAnnuity(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), CLEAN, REF_DATA); assertEquals(riskyAnnuity, 0d); CurrencyAmount rpv01 = PRICER.rpv01(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), CLEAN, REF_DATA); assertEquals(rpv01, CurrencyAmount.zero(USD)); CurrencyAmount recovery01 = PRICER.recovery01(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), REF_DATA); assertEquals(recovery01, CurrencyAmount.zero(USD)); PointSensitivityBuilder sensi = PRICER.presentValueSensitivity(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), REF_DATA); assertEquals(sensi, PointSensitivityBuilder.none()); PointSensitivityBuilder sensiPrice = PRICER.priceSensitivity(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), REF_DATA); assertEquals(sensiPrice, PointSensitivityBuilder.none()); assertThrowsIllegalArg(() -> PRICER.parSpreadSensitivity(PRODUCT_NEXTDAY, provider, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(provider.getValuationDate(), REF_DATA), REF_DATA));
public void test_builder() { ResolvedCds test = ResolvedCds.builder() .buySell(BUY) .dayCount(ACT_360) .legalEntityId(LEGAL_ENTITY) .paymentOnDefault(ACCRUED_PREMIUM) .protectionStart(BEGINNING) .paymentPeriods(PAYMENTS) .protectionEndDate(PAYMENTS.get(PAYMENTS.size() - 1).getEffectiveEndDate()) .settlementDateOffset(SETTLE_DAY_ADJ) .stepinDateOffset(STEPIN_DAY_ADJ) .build(); assertEquals(test.getBuySell(), BUY); assertEquals(test.getCurrency(), USD); assertEquals(test.getAccrualStartDate(), PAYMENTS.get(0).getStartDate()); assertEquals(test.getAccrualEndDate(), PAYMENTS.get(42).getEndDate()); assertEquals(test.getDayCount(), ACT_360); assertEquals(test.getFixedRate(), COUPON); assertEquals(test.getLegalEntityId(), LEGAL_ENTITY); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getPaymentOnDefault(), ACCRUED_PREMIUM); assertEquals(test.getPaymentPeriods(), PAYMENTS); assertEquals(test.getProtectionEndDate(), PAYMENTS.get(42).getEffectiveEndDate()); assertEquals(test.getSettlementDateOffset(), SETTLE_DAY_ADJ); assertEquals(test.getProtectionStart(), BEGINNING); assertEquals(test.getStepinDateOffset(), STEPIN_DAY_ADJ); }
public void pvSensitivityFixTest() { PointSensitivityBuilder pointNext = PRICER_FIX.presentValueSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER_FIX.presentValue(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER_FIX.presentValueSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER_FIX.presentValue(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER_FIX.presentValueSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER_FIX.presentValue(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }
public void pvSensitivityTest() { PointSensitivityBuilder pointNext = PRICER.presentValueSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER.presentValue(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER.presentValueSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER.presentValue(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER.presentValueSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER.presentValue(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }
public void pvSensitivityCorrectTest() { PointSensitivityBuilder pointNext = PRICER_CORRECT.presentValueSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER_CORRECT.presentValue(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER_CORRECT.presentValueSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER_CORRECT.presentValue(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER_CORRECT.presentValueSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> PRICER_CORRECT.presentValue(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA)); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }
public void priceSensitivityFixTest() { PointSensitivityBuilder pointNext = PRICER_FIX.priceSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_FIX.price(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER_FIX.priceSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_FIX.price(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER_FIX.priceSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_FIX.price(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }
public void parSpreadSensitivityFixTest() { PointSensitivityBuilder pointNext = PRICER_FIX.parSpreadSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_FIX.parSpread(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER_FIX.parSpreadSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_FIX.parSpread(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER_FIX.parSpreadSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_FIX.parSpread(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }
public void priceSensitivityCorrectTest() { PointSensitivityBuilder pointNext = PRICER_CORRECT.priceSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_CORRECT.price(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER_CORRECT.priceSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_CORRECT.price(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER_CORRECT.priceSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_CORRECT.price(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }
public void priceSensitivityTest() { PointSensitivityBuilder pointNext = PRICER.priceSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER.price(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER.priceSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER.price(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER.priceSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER.price(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), CLEAN, REF_DATA))); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }
public void parSpreadSensitivityTest() { PointSensitivityBuilder pointNext = PRICER.parSpreadSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER.parSpread(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER.parSpreadSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER.parSpread(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER.parSpreadSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER.parSpread(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }
public void parSpreadSensitivityCorrectTest() { PointSensitivityBuilder pointNext = PRICER_CORRECT.parSpreadSensitivity(PRODUCT_NEXTDAY, RATES_PROVIDER, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resNext = RATES_PROVIDER.parameterSensitivity(pointNext.build()); CurrencyParameterSensitivities expNext = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_CORRECT.parSpread(PRODUCT_NEXTDAY, p, PRODUCT_NEXTDAY.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resNext, expNext, NOTIONAL * EPS); PointSensitivityBuilder pointBefore = PRICER_CORRECT.parSpreadSensitivity(PRODUCT_BEFORE, RATES_PROVIDER, PRODUCT_BEFORE.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resBefore = RATES_PROVIDER.parameterSensitivity(pointBefore.build()); CurrencyParameterSensitivities expBefore = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_CORRECT.parSpread(PRODUCT_BEFORE, p, PRODUCT_BEFORE.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resBefore, expBefore, NOTIONAL * EPS); PointSensitivityBuilder pointAfter = PRICER_CORRECT.parSpreadSensitivity(PRODUCT_AFTER, RATES_PROVIDER, PRODUCT_AFTER.getSettlementDateOffset().adjust(RATES_PROVIDER.getValuationDate(), REF_DATA), REF_DATA); CurrencyParameterSensitivities resAfter = RATES_PROVIDER.parameterSensitivity(pointAfter.build()); CurrencyParameterSensitivities expAfter = CALC_FD.sensitivity(RATES_PROVIDER, p -> CurrencyAmount.of(USD, PRICER_CORRECT.parSpread(PRODUCT_AFTER, p, PRODUCT_AFTER.getSettlementDateOffset().adjust(p.getValuationDate(), REF_DATA), REF_DATA))); equalWithRelativeTolerance(resAfter, expAfter, NOTIONAL * EPS); }