//------------------------------------------------------------------------- public virtual void jumpToDefaultTest() { JumpToDefault computed = PRICER.jumpToDefault(PRODUCT, RATES_PROVIDER, SETTLEMENT_STD, REF_DATA); LocalDate stepinDate = PRODUCT.StepinDateOffset.adjust(VALUATION_DATE, REF_DATA); double dirtyPvMod = PRICER.presentValue(PRODUCT, RATES_PROVIDER, SETTLEMENT_STD, PriceType.DIRTY, REF_DATA).Amount / INDEX_FACTOR; double accrued = PRODUCT.accruedYearFraction(stepinDate) * PRODUCT.FixedRate * PRODUCT.BuySell.normalize(NOTIONAL); double protection = PRODUCT.BuySell.normalize(NOTIONAL) * (1d - RECOVERY_RATE); double expected = (protection - accrued - dirtyPvMod) / ((double)LEGAL_ENTITIES.size()); assertEquals(computed.Currency, USD); assertTrue(computed.Amounts.size() == 1); assertEquals(computed.Amounts.get(INDEX_ID), expected, NOTIONAL * TOL); }
public virtual void test_accruedYearFraction() { double eps = 1.0e-15; ResolvedCdsIndex test = ResolvedCdsIndex.builder().buySell(BUY).dayCount(ACT_360).cdsIndexId(INDEX_ID).legalEntityIds(LEGAL_ENTITIES).paymentOnDefault(ACCRUED_PREMIUM).protectionStart(BEGINNING).paymentPeriods(PAYMENTS).protectionEndDate(PAYMENTS[PAYMENTS.Count - 1].EffectiveEndDate).settlementDateOffset(SETTLE_DAY_ADJ).stepinDateOffset(STEPIN_DAY_ADJ).build(); double accStart = test.accruedYearFraction(START_DATE.minusDays(1)); double accNextMinusOne = test.accruedYearFraction(START_DATE.plusMonths(3).minusDays(1)); double accNext = test.accruedYearFraction(START_DATE.plusMonths(3)); double accNextOne = test.accruedYearFraction(START_DATE.plusMonths(3).plusDays(1)); double accMod = test.accruedYearFraction(START_DATE.plusYears(1)); double accEnd = test.accruedYearFraction(END_DATE); double accEndOne = test.accruedYearFraction(END_DATE.plusDays(1)); assertEquals(accStart, 0d); assertEquals(accNext, 0d); assertEquals(accNextMinusOne, ACT_360.relativeYearFraction(START_DATE, START_DATE.plusMonths(3).minusDays(1)), eps); assertEquals(accNextOne, 1d / 360d, eps); // 2.x assertEquals(accMod, 0.24722222222222223, eps); assertEquals(accEnd, 0.25555555555555554, eps); assertEquals(accEndOne, 0.25833333333333336, eps); }