//------------------------------------------------------------------------- private void assertDefinition(RatesCurveGroupDefinition defn) { assertEquals(defn.Name, CurveGroupName.of("Default")); assertEquals(defn.Entries.size(), 3); assertEquals(defn.SeasonalityDefinitions.size(), 1); assertEquals(defn.SeasonalityDefinitions.get(CurveName.of("USD-CPI")).AdjustmentType, ShiftType.SCALED); RatesCurveGroupEntry entry0 = findEntry(defn, "USD-Disc"); RatesCurveGroupEntry entry1 = findEntry(defn, "USD-3ML"); RatesCurveGroupEntry entry2 = findEntry(defn, "USD-CPI"); CurveDefinition defn0 = defn.findCurveDefinition(entry0.CurveName).get(); CurveDefinition defn1 = defn.findCurveDefinition(entry1.CurveName).get(); CurveDefinition defn2 = defn.findCurveDefinition(entry2.CurveName).get(); assertEquals(entry0.DiscountCurrencies, ImmutableSet.of(Currency.USD)); assertEquals(entry0.Indices, ImmutableSet.of()); assertEquals(defn0.Name, CurveName.of("USD-Disc")); assertEquals(defn0.YValueType, ValueType.ZERO_RATE); assertEquals(defn0.ParameterCount, 17); assertEquals(entry1.DiscountCurrencies, ImmutableSet.of()); assertEquals(entry1.Indices, ImmutableSet.of(IborIndices.USD_LIBOR_3M)); assertEquals(defn1.Name, CurveName.of("USD-3ML")); assertEquals(defn1.YValueType, ValueType.ZERO_RATE); assertEquals(defn1.ParameterCount, 27); assertEquals(entry2.DiscountCurrencies, ImmutableSet.of()); assertEquals(entry2.Indices, ImmutableSet.of(PriceIndices.US_CPI_U)); assertEquals(defn2.Name, CurveName.of("USD-CPI")); assertEquals(defn2.YValueType, ValueType.PRICE_INDEX); assertEquals(defn2.ParameterCount, 2); }
//------------------------------------------------------------------------- public virtual void test_loadCurveGroupDefinition() { IList <RatesCurveGroupDefinition> defns = RatesCurveGroupDefinitionCsvLoader.loadCurveGroupDefinitions(ResourceLocator.of(GROUPS_1)); assertEquals(defns.Count, 1); RatesCurveGroupDefinition defn = defns[0]; assertEquals(defn.Entries.get(0), RatesCurveGroupEntry.builder().curveName(CurveName.of("USD-Disc")).discountCurrencies(USD).build()); assertEquals(defn.Entries.get(1), RatesCurveGroupEntry.builder().curveName(CurveName.of("USD-3ML")).indices(USD_LIBOR_3M).build()); }
/// <summary> /// Creates a curve group entry for a curve from a list of keys from the same curve group. /// </summary> /// <param name="curveName"> the name of the curve </param> /// <param name="gars"> the group-reference pairs </param> /// <returns> a curve group entry built from the data in the IDs </returns> private static RatesCurveGroupEntry curveGroupEntry(CurveName curveName, IList <GroupAndReference> gars) { ISet <Currency> currencies = new LinkedHashSet <Currency>(); ISet <Index> indices = new LinkedHashSet <Index>(); foreach (GroupAndReference gar in gars) { if (gar.currency != null) { currencies.Add(gar.currency); } else { indices.Add(gar.index); } } return(RatesCurveGroupEntry.builder().curveName(curveName).discountCurrencies(currencies).indices(indices).build()); }
/// <summary> /// Obtains a generator from an existing provider and definition. /// </summary> /// <param name="knownProvider"> the underlying known provider </param> /// <param name="groupDefn"> the curve group definition </param> /// <param name="refData"> the reference data to use </param> /// <returns> the generator </returns> public static ImmutableRatesProviderGenerator of(ImmutableRatesProvider knownProvider, RatesCurveGroupDefinition groupDefn, ReferenceData refData) { IList <CurveDefinition> curveDefns = new List <CurveDefinition>(); IList <CurveMetadata> curveMetadata = new List <CurveMetadata>(); SetMultimap <CurveName, Currency> discountNames = HashMultimap.create(); SetMultimap <CurveName, Index> indexNames = HashMultimap.create(); foreach (CurveDefinition curveDefn in groupDefn.CurveDefinitions) { curveDefns.Add(curveDefn); curveMetadata.Add(curveDefn.metadata(knownProvider.ValuationDate, refData)); CurveName curveName = curveDefn.Name; // A curve group is guaranteed to include an entry for every definition RatesCurveGroupEntry entry = groupDefn.findEntry(curveName).get(); ISet <Currency> ccy = entry.DiscountCurrencies; discountNames.putAll(curveName, ccy); indexNames.putAll(curveName, entry.Indices); } return(new ImmutableRatesProviderGenerator(knownProvider, curveDefns, curveMetadata, discountNames, indexNames)); }