//------------------------------------------------------------------------- public virtual void test_empty() { CurveSensitivities test = CurveSensitivities.empty(); assertEquals(test.Info, PortfolioItemInfo.empty()); assertEquals(test.TypedSensitivities, ImmutableMap.of()); }
public virtual void test_withers() { PortfolioItemInfo test = PortfolioItemInfo.empty().withId(ID).withAttribute(AttributeType.DESCRIPTION, "A"); assertEquals(test.Id, ID); assertEquals(test.AttributeTypes, ImmutableSet.of(AttributeType.DESCRIPTION)); assertEquals(test.getAttribute(AttributeType.DESCRIPTION), "A"); assertEquals(test.findAttribute(AttributeType.DESCRIPTION), ("A")); assertThrows(typeof(System.ArgumentException), () => test.getAttribute(AttributeType.NAME)); }
public virtual void test_mergedWith_sens_mergeAndAdd() { CurveSensitivities base1 = sut(); CurveSensitivities base2 = sut2(); CurveSensitivities test = base1.mergedWith(base2); assertEquals(test.Info, PortfolioItemInfo.empty().withId(ID2).withAttribute(NAME, "2").withAttribute(DESCRIPTION, "1")); assertEquals(test.TypedSensitivities.Keys, ImmutableSet.of(ZERO_RATE_DELTA, ZERO_RATE_GAMMA)); assertEquals(test.TypedSensitivities.get(ZERO_RATE_DELTA), SENSI1.multipliedBy(2)); assertEquals(test.TypedSensitivities.get(ZERO_RATE_GAMMA), SENSI2); }
//------------------------------------------------------------------------- // parse the sensitivity info private PortfolioItemInfo parseInfo(CsvRow row) { PortfolioItemInfo info = PortfolioItemInfo.empty(); string scheme = row.findValue(ID_SCHEME_HEADER).orElse(DEFAULT_SCHEME); StandardId id = row.findValue(ID_HEADER).map(str => StandardId.of(scheme, str)).orElse(null); if (id != null) { info = info.withId(id); } return(resolver.parseSensitivityInfo(row, info)); }
public virtual void test_builder_tenors() { CurveName curveName = CurveName.of("GBP"); CurrencyParameterSensitivity sens1Y = CurrencyParameterSensitivity.of(curveName, ImmutableList.of(TENOR_MD_1Y), GBP, DoubleArray.of(3)); CurveSensitivities test = CurveSensitivities.builder(PortfolioItemInfo.empty()).add(ZERO_RATE_DELTA, curveName, GBP, TENOR_MD_1M, 4).add(ZERO_RATE_DELTA, curveName, GBP, TENOR_MD_1W, 1).add(ZERO_RATE_DELTA, curveName, GBP, TENOR_MD_1Y, 2).add(ZERO_RATE_DELTA, curveName, GBP, TENOR_MD_1W, 2).add(ZERO_RATE_DELTA, sens1Y).build(); assertEquals(test.Info, PortfolioItemInfo.empty()); assertEquals(test.TypedSensitivities.size(), 1); CurrencyParameterSensitivities sens = test.getTypedSensitivity(ZERO_RATE_DELTA); assertEquals(sens.Sensitivities.size(), 1); CurrencyParameterSensitivity singleSens = sens.getSensitivity(curveName, GBP); assertEquals(singleSens.Sensitivity, DoubleArray.of(3, 4, 5)); assertEquals(singleSens.getParameterMetadata(0), TENOR_MD_1W); assertEquals(singleSens.getParameterMetadata(1), TENOR_MD_1M); assertEquals(singleSens.getParameterMetadata(2), TENOR_MD_1Y); }
public virtual void test_builder_mixCurrency() { CurveName curveName = CurveName.of("WEIRD"); CurveSensitivities test = CurveSensitivities.builder(PortfolioItemInfo.empty()).add(ZERO_RATE_DELTA, curveName, GBP, TENOR_MD_1Y, 1).add(ZERO_RATE_DELTA, curveName, USD, TENOR_MD_1Y, 2).build(); assertEquals(test.Info, PortfolioItemInfo.empty()); assertEquals(test.TypedSensitivities.size(), 1); CurrencyParameterSensitivities sens = test.getTypedSensitivity(ZERO_RATE_DELTA); assertEquals(sens.Sensitivities.size(), 2); CurrencyParameterSensitivity sensGbp = sens.getSensitivity(curveName, GBP); assertEquals(sensGbp.Sensitivity, DoubleArray.of(1)); assertEquals(sensGbp.getParameterMetadata(0), TENOR_MD_1Y); CurrencyParameterSensitivity sensUsd = sens.getSensitivity(curveName, USD); assertEquals(sensUsd.Sensitivity, DoubleArray.of(2)); assertEquals(sensUsd.getParameterMetadata(0), TENOR_MD_1Y); }
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); }
//------------------------------------------------------------------------- /// <summary> /// Obtains an empty instance. /// </summary> /// <returns> the empty sensitivities instance </returns> public static CurveSensitivities empty() { return(new CurveSensitivities(PortfolioItemInfo.empty(), ImmutableMap.of())); }