Exemplo n.º 1
0
        //-------------------------------------------------------------------------
        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);
        }