/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.pricer.impl.credit.isda; import static org.testng.AssertJUnit.assertEquals; import java.time.LocalDate; import java.time.Period; import org.testng.annotations.Test; /** * Test. */ @Test public class MultiCdsAnalyticTest extends IsdaBaseTest { @Test public void test() { final CdsAnalyticFactory factory = new CdsAnalyticFactory(); final LocalDate tradeDate = LocalDate.of(2013, 12, 19); MultiCdsAnalytic multiCDS = factory.makeMultiImmCds(tradeDate, new int[] {0, 1, 2, 4 }); CdsAnalytic[] cds = factory.makeImmCds(tradeDate, new Period[] {Period.ZERO, Period.ofMonths(3), Period.ofMonths(6), Period.ofMonths(12) }); for (int i = 0; i < 4; i++) { assertEquals(cds[i].getAccuredDays(), multiCDS.getAccuredDays(i)); assertEquals(cds[i].getAccruedYearFraction(), multiCDS.getAccruedPremiumPerUnitSpread(i), 1e-16); assertEquals(cds[i].getEffectiveProtectionStart(), multiCDS.getEffectiveProtectionStart(), 1e-16); assertEquals(cds[i].getAccStart(), multiCDS.getAccStart(), 1e-16); } multiCDS = factory.makeMultiImmCds(tradeDate, new int[] {2, 4, 12, 20, 28, 40 }); cds = factory.makeImmCds(tradeDate, new Period[] {Period.ofMonths(6), Period.ofYears(1), Period.ofYears(3), Period.ofYears(5), Period.ofYears(7), Period.ofYears(10) }); for (int i = 0; i < 6; i++) { assertEquals(cds[i].getAccuredDays(), multiCDS.getAccuredDays(i)); assertEquals(cds[i].getAccruedYearFraction(), multiCDS.getAccruedPremiumPerUnitSpread(i), 1e-16); assertEquals(cds[i].getEffectiveProtectionStart(), multiCDS.getEffectiveProtectionStart(), 1e-16); assertEquals(cds[i].getAccStart(), multiCDS.getAccStart(), 1e-16); } } @Test public void forwardStartTest() { final CdsAnalyticFactory factory = new CdsAnalyticFactory(); final LocalDate tradeDate = LocalDate.of(2012, 7, 30); final LocalDate accStart = LocalDate.of(2013, 6, 20); final MultiCdsAnalytic multiCDS = factory.makeMultiImmCds(tradeDate, accStart, new int[] {4, 5, 6, 8 }); final CdsAnalytic[] cds = factory.makeImmCds(tradeDate, accStart, new Period[] {Period.ofMonths(12), Period.ofMonths(15), Period.ofMonths(18), Period.ofMonths(24) }); for (int i = 0; i < 4; i++) { assertEquals(cds[i].getAccuredDays(), multiCDS.getAccuredDays(i)); assertEquals(cds[i].getAccruedYearFraction(), multiCDS.getAccruedPremiumPerUnitSpread(i), 1e-16); assertEquals(cds[i].getEffectiveProtectionStart(), multiCDS.getEffectiveProtectionStart(), 1e-16); assertEquals(cds[i].getAccStart(), multiCDS.getAccStart(), 1e-16); } } }