/// <summary> /// Gets all rates curves. /// </summary> /// <returns> the map of all rates curves </returns> public virtual SortedDictionary <LocalDate, RatesCurveGroup> loadAllRatesCurves() { if (!subdirectoryExists(CURVES_DIR)) { throw new System.ArgumentException("No rates curves directory found"); } ResourceLocator curveGroupsResource = getResource(CURVES_DIR, CURVES_GROUPS_FILE); if (curveGroupsResource == null) { throw new System.ArgumentException(Messages.format("Unable to load rates curves: curve groups file not found at {}/{}", CURVES_DIR, CURVES_GROUPS_FILE)); } ResourceLocator curveSettingsResource = getResource(CURVES_DIR, CURVES_SETTINGS_FILE); if (curveSettingsResource == null) { throw new System.ArgumentException(Messages.format("Unable to load rates curves: curve settings file not found at {}/{}", CURVES_DIR, CURVES_SETTINGS_FILE)); } ListMultimap <LocalDate, RatesCurveGroup> curveGroups = RatesCurvesCsvLoader.loadAllDates(curveGroupsResource, curveSettingsResource, RatesCurvesResources); // There is only one curve group in the market data file so this will always succeed IDictionary <LocalDate, RatesCurveGroup> curveGroupMap = Maps.transformValues(curveGroups.asMap(), groups => groups.GetEnumerator().next()); return(new SortedDictionary <>(curveGroupMap)); }
private void loadRatesCurves(ImmutableMarketDataBuilder builder, LocalDate marketDataDate) { if (!subdirectoryExists(CURVES_DIR)) { log.debug("No rates curves directory found"); return; } ResourceLocator curveGroupsResource = getResource(CURVES_DIR, CURVES_GROUPS_FILE); if (curveGroupsResource == null) { log.error("Unable to load rates curves: curve groups file not found at {}/{}", CURVES_DIR, CURVES_GROUPS_FILE); return; } ResourceLocator curveSettingsResource = getResource(CURVES_DIR, CURVES_SETTINGS_FILE); if (curveSettingsResource == null) { log.error("Unable to load rates curves: curve settings file not found at {}/{}", CURVES_DIR, CURVES_SETTINGS_FILE); return; } try { ICollection <ResourceLocator> curvesResources = RatesCurvesResources; IList <RatesCurveGroup> ratesCurves = RatesCurvesCsvLoader.load(marketDataDate, curveGroupsResource, curveSettingsResource, curvesResources); foreach (RatesCurveGroup group in ratesCurves) { // add entry for higher level discount curve name group.DiscountCurves.forEach((ccy, curve) => builder.addValue(CurveId.of(group.Name, curve.Name), curve)); // add entry for higher level forward curve name group.ForwardCurves.forEach((idx, curve) => builder.addValue(CurveId.of(group.Name, curve.Name), curve)); } } catch (Exception e) { log.error("Error loading rates curves", e); } }