/** * Obtains a generator from an existing provider and definition. * * @param knownProvider the underlying known provider * @param groupDefn the curve group definition * @param refData the reference data to use * @return the generator */ public static ImmutableRatesProviderGenerator of( ImmutableRatesProvider knownProvider, RatesCurveGroupDefinition groupDefn, ReferenceData refData) { List<CurveDefinition> curveDefns = new ArrayList<>(); List<CurveMetadata> curveMetadata = new ArrayList<>(); SetMultimap<CurveName, Currency> discountNames = HashMultimap.create(); SetMultimap<CurveName, Index> indexNames = HashMultimap.create(); for (CurveDefinition curveDefn : groupDefn.getCurveDefinitions()) { curveDefns.add(curveDefn); curveMetadata.add(curveDefn.metadata(knownProvider.getValuationDate(), refData)); CurveName curveName = curveDefn.getName(); // A curve group is guaranteed to include an entry for every definition RatesCurveGroupEntry entry = groupDefn.findEntry(curveName).get(); Set<Currency> ccy = entry.getDiscountCurrencies(); discountNames.putAll(curveName, ccy); indexNames.putAll(curveName, entry.getIndices()); } return new ImmutableRatesProviderGenerator( knownProvider, curveDefns, curveMetadata, discountNames, indexNames); }
public void test_builder4() { RatesCurveGroupDefinition test = RatesCurveGroupDefinition.builder() .name(CurveGroupName.of("Test")) .addCurve(CURVE_NAME1, GBP, GBP_LIBOR_1M, GBP_LIBOR_3M) .build(); assertEquals(test.getName(), CurveGroupName.of("Test")); assertEquals(test.getEntries(), ImmutableList.of(ENTRY3)); assertEquals(test.findEntry(CurveName.of("Test")), Optional.of(ENTRY3)); assertEquals(test.findEntry(CurveName.of("Test2")), Optional.empty()); assertEquals(test.findEntry(CurveName.of("Rubbish")), Optional.empty()); }
public void test_builder2() { RatesCurveGroupDefinition test = RatesCurveGroupDefinition.builder() .name(CurveGroupName.of("Test")) .addCurve(CURVE_DEFN1, GBP, GBP_LIBOR_1M, GBP_LIBOR_3M) .build(); assertEquals(test.getName(), CurveGroupName.of("Test")); assertEquals(test.getEntries(), ImmutableList.of(ENTRY3)); assertEquals(test.findEntry(CurveName.of("Test")), Optional.of(ENTRY3)); assertEquals(test.findEntry(CurveName.of("Test2")), Optional.empty()); assertEquals(test.findEntry(CurveName.of("Rubbish")), Optional.empty()); assertEquals(test.findCurveDefinition(CurveName.of("Test")), Optional.of(CURVE_DEFN1)); assertEquals(test.findCurveDefinition(CurveName.of("Test2")), Optional.empty()); assertEquals(test.findCurveDefinition(CurveName.of("Rubbish")), Optional.empty()); }
public void test_builder3() { RatesCurveGroupDefinition test = RatesCurveGroupDefinition.builder() .name(CurveGroupName.of("Test")) .addDiscountCurve(CURVE_NAME1, GBP) .addForwardCurve(CURVE_NAME1, GBP_SONIA) .addForwardCurve(CURVE_NAME1, GBP_LIBOR_1W) .addForwardCurve(CURVE_NAME2, GBP_LIBOR_1M, GBP_LIBOR_3M) .build(); assertEquals(test.getName(), CurveGroupName.of("Test")); assertEquals(test.getEntries(), ImmutableList.of(ENTRY1, ENTRY2)); assertEquals(test.findEntry(CurveName.of("Test")), Optional.of(ENTRY1)); assertEquals(test.findEntry(CurveName.of("Test2")), Optional.of(ENTRY2)); assertEquals(test.findEntry(CurveName.of("Rubbish")), Optional.empty()); }
public void test_builder_seasonality() { RatesCurveGroupDefinition test = RatesCurveGroupDefinition.builder() .name(CurveGroupName.of("Test")) .addCurve(CURVE_DEFN1, GBP, GBP_LIBOR_1M, GBP_LIBOR_3M) .addSeasonality(CURVE_NAME_I, SEASONALITY_ADDITIVE_DEF) .build(); assertEquals(test.getName(), CurveGroupName.of("Test")); assertEquals(test.getEntries(), ImmutableList.of(ENTRY3)); assertEquals(test.findEntry(CurveName.of("Test")), Optional.of(ENTRY3)); assertEquals(test.findEntry(CurveName.of("Test2")), Optional.empty()); assertEquals(test.findEntry(CurveName.of("Rubbish")), Optional.empty()); assertEquals(test.findCurveDefinition(CurveName.of("Test")), Optional.of(CURVE_DEFN1)); assertEquals(test.findCurveDefinition(CurveName.of("Test2")), Optional.empty()); assertEquals(test.findCurveDefinition(CurveName.of("Rubbish")), Optional.empty()); ImmutableMap<CurveName, SeasonalityDefinition> seasonMap = test.getSeasonalityDefinitions(); assertTrue(seasonMap.size() == 1); assertEquals(seasonMap.get(CURVE_NAME_I), SEASONALITY_ADDITIVE_DEF); }
public void test_builder1() { RatesCurveGroupDefinition test = RatesCurveGroupDefinition.builder() .name(CurveGroupName.of("Test")) .addDiscountCurve(CURVE_DEFN1, GBP) .addForwardCurve(CURVE_DEFN1, GBP_SONIA) .addForwardCurve(CURVE_DEFN1, GBP_LIBOR_1W) .addForwardCurve(CURVE_DEFN2, GBP_LIBOR_1M, GBP_LIBOR_3M) .build(); assertEquals(test.getName(), CurveGroupName.of("Test")); assertEquals(test.getEntries(), ImmutableList.of(ENTRY1, ENTRY2)); assertEquals(test.findDiscountCurveName(GBP), Optional.of(CURVE_NAME1)); assertEquals(test.findDiscountCurveName(USD), Optional.empty()); assertEquals(test.findForwardCurveName(GBP_LIBOR_1W), Optional.of(CURVE_NAME1)); assertEquals(test.findForwardCurveName(GBP_LIBOR_1M), Optional.of(CURVE_NAME2)); assertEquals(test.findForwardCurveName(GBP_LIBOR_6M), Optional.empty()); assertEquals(test.findForwardCurveNames(GBP_LIBOR), ImmutableSet.of(CURVE_NAME1, CURVE_NAME2)); assertEquals(test.findEntry(CurveName.of("Test")), Optional.of(ENTRY1)); assertEquals(test.findEntry(CurveName.of("Test2")), Optional.of(ENTRY2)); assertEquals(test.findEntry(CurveName.of("Rubbish")), Optional.empty()); assertEquals(test.findCurveDefinition(CurveName.of("Test")), Optional.of(CURVE_DEFN1)); assertEquals(test.findCurveDefinition(CurveName.of("Test2")), Optional.of(CURVE_DEFN2)); assertEquals(test.findCurveDefinition(CurveName.of("Rubbish")), Optional.empty()); }