public DatedParameterMetadata metadata(LocalDate valuationDate, ReferenceData refData) { LocalDate nodeDate = date(valuationDate, refData); if (date_Renamed.Fixed) { return(LabelDateParameterMetadata.of(nodeDate, label)); } return(TenorDateParameterMetadata.of(nodeDate, template.Tenor, label)); }
// parses the currency as a column or from the reference private ParameterMetadata parseMetadata(CsvRow row, bool lenientDateParsing) { // parse the tenor and date fields Optional <Tenor> tenorOpt = row.findValue(TENOR_HEADER).flatMap(LoaderUtils.tryParseTenor); Optional <LocalDate> dateOpt = row.findValue(DATE_HEADER).map(LoaderUtils.parseDate); Optional <string> tenorStrOpt = row.findValue(TENOR_HEADER); if (tenorStrOpt.Present && !tenorOpt.Present) { if (lenientDateParsing && !dateOpt.Present && !resolver.TenorRequired) { try { dateOpt = tenorStrOpt.map(LoaderUtils.parseDate); } catch (Exception) { // hide this exception, as this is a historic format throw new System.ArgumentException(Messages.format("Invalid tenor '{}', must be expressed as nD, nW, nM or nY", tenorStrOpt.get())); } } else { throw new System.ArgumentException(Messages.format("Invalid tenor '{}', must be expressed as nD, nW, nM or nY", tenorStrOpt.get())); } } // build correct metadata based on the parsed fields if (tenorOpt.Present) { Tenor tenor = resolver.checkSensitivityTenor(tenorOpt.get()); if (dateOpt.Present) { return(TenorDateParameterMetadata.of(dateOpt.get(), tenor)); } else { return(TenorParameterMetadata.of(tenor)); } } else if (resolver.TenorRequired) { throw new System.ArgumentException(Messages.format("Missing value for '{}' column", TENOR_HEADER)); } else if (dateOpt.Present) { return(LabelDateParameterMetadata.of(dateOpt.get(), dateOpt.get().ToString())); } else { throw new System.ArgumentException(Messages.format("Unable to parse tenor or date, check '{}' and '{}' columns", TENOR_HEADER, DATE_HEADER)); } }
public void test_parse_grid_tenorAndDateColumns() { CharSource source = CharSource.wrap("Sensitivity Type,Sensitivity Tenor,Sensitivity Date,GBP\n" + "ZeroRateGamma,1M,2018-06-30,1\n"); assertEquals(LOADER.isKnownFormat(source), true); ValueWithFailures <ListMultimap <string, CurveSensitivities> > test = LOADER.parse(ImmutableList.of(source)); assertEquals(test.Failures.size(), 0, test.Failures.ToString()); assertEquals(test.Value.size(), 1); IList <CurveSensitivities> list = test.Value.get(""); assertEquals(list.Count, 1); CurveSensitivities csens0 = list[0]; assertEquals(csens0.TypedSensitivities.size(), 1); CurrencyParameterSensitivities cpss = csens0.getTypedSensitivity(ZERO_RATE_GAMMA); assertEquals(cpss.Sensitivities.size(), 1); CurrencyParameterSensitivity cps = cpss.Sensitivities.get(0); assertEquals(cps.ParameterMetadata.size(), 1); assertEquals(cps.ParameterMetadata.get(0), TenorDateParameterMetadata.of(date(2018, 6, 30), TENOR_1M)); }
public void test_write_standard_withDate() { CurveName curve1 = CurveName.of("GBDSC"); CurveName curve2 = CurveName.of("GBFWD"); // listed in reverse order to check ordering CurveSensitivities sens = CurveSensitivities.builder(PortfolioItemInfo.empty().withAttribute(CCP_ATTR, "LCH")).add(ZERO_RATE_GAMMA, curve2, Currency.GBP, TenorParameterMetadata.of(Tenor.TENOR_3M), 1).add(ZERO_RATE_GAMMA, curve2, Currency.GBP, TenorParameterMetadata.of(Tenor.TENOR_6M), 2).add(ZERO_RATE_DELTA, curve2, Currency.GBP, TenorParameterMetadata.of(Tenor.TENOR_3M), 3).add(ZERO_RATE_DELTA, curve2, Currency.GBP, TenorParameterMetadata.of(Tenor.TENOR_6M), 5).add(ZERO_RATE_DELTA, curve1, Currency.GBP, TenorDateParameterMetadata.of(date(2018, 6, 30), Tenor.TENOR_3M), 2).add(ZERO_RATE_DELTA, curve1, Currency.GBP, TenorParameterMetadata.of(Tenor.TENOR_6M), 4).build(); StringBuilder buf = new StringBuilder(); WRITER_CCP.write(sens, buf); string content = buf.ToString(); string expected = "" + "Reference,Sensitivity Type,Sensitivity Tenor,Sensitivity Date,Currency,Value,CCP\n" + "GBDSC,ZeroRateDelta,3M,2018-06-30,GBP,2.0,LCH\n" + "GBDSC,ZeroRateDelta,6M,,GBP,4.0,LCH\n" + "GBFWD,ZeroRateDelta,3M,,GBP,3.0,LCH\n" + "GBFWD,ZeroRateDelta,6M,,GBP,5.0,LCH\n" + "GBFWD,ZeroRateGamma,3M,,GBP,1.0,LCH\n" + "GBFWD,ZeroRateGamma,6M,,GBP,2.0,LCH\n"; assertEquals(content, expected); }
public override DatedParameterMetadata metadata(LocalDate nodeDate) { return(template is TenorCdsTemplate?TenorDateParameterMetadata.of(nodeDate, ((TenorCdsTemplate)template).Tenor, label) : LabelDateParameterMetadata.of(nodeDate, label)); }
public override TenorDateParameterMetadata metadata(LocalDate nodeDate) { return(TenorDateParameterMetadata.of(nodeDate, tenor)); }