public void test_of_map() { CurveSensitivities test = sut2(); assertEquals(test.getId(), Optional.of(ID2)); assertEquals(test.getInfo(), INFO2); assertEquals(test.getTypedSensitivities(), ImmutableMap.of(ZERO_RATE_DELTA, SENSI1, ZERO_RATE_GAMMA, SENSI2)); assertEquals(test.getTypedSensitivity(ZERO_RATE_DELTA), SENSI1); assertEquals(test.getTypedSensitivity(ZERO_RATE_GAMMA), SENSI2); }
public void test_builder_empty() { CurveSensitivities test = CurveSensitivities.builder(PortfolioItemInfo.empty()).build(); assertEquals(test.getInfo(), PortfolioItemInfo.empty()); assertEquals(test.getTypedSensitivities(), ImmutableMap.of()); }
public void test_mergedWith_map_mergeAndAdd() { CurveSensitivities base1 = sut(); CurveSensitivities base2 = sut2(); CurveSensitivities test = base1.mergedWith(base2.getTypedSensitivities()); assertEquals(test.getInfo(), base1.getInfo()); assertEquals(test.getTypedSensitivities().keySet(), ImmutableSet.of(ZERO_RATE_DELTA, ZERO_RATE_GAMMA)); assertEquals(test.getTypedSensitivities().get(ZERO_RATE_DELTA), SENSI1.multipliedBy(2)); assertEquals(test.getTypedSensitivities().get(ZERO_RATE_GAMMA), SENSI2); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 3237038: // info return ((CurveSensitivities) bean).getInfo(); case 153032499: // typedSensitivities return ((CurveSensitivities) bean).getTypedSensitivities(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_empty() { CurveSensitivities test = CurveSensitivities.empty(); assertEquals(test.getInfo(), PortfolioItemInfo.empty()); assertEquals(test.getTypedSensitivities(), ImmutableMap.of()); }
CurveSensitivitiesBuilder builder = CurveSensitivities.builder(info); List<CsvRow> batchRows = csv.nextBatch(r -> matchId(r, id)); for (CsvRow batchRow : batchRows) { if (!sens.getTypedSensitivities().isEmpty()) { parsed.put(sens.getId().map(Object::toString).orElse(""), sens);
public 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.getInfo(), PortfolioItemInfo.empty()); assertEquals(test.getTypedSensitivities().size(), 1); CurrencyParameterSensitivities sens = test.getTypedSensitivity(ZERO_RATE_DELTA); assertEquals(sens.getSensitivities().size(), 2); CurrencyParameterSensitivity sensGbp = sens.getSensitivity(curveName, GBP); assertEquals(sensGbp.getSensitivity(), DoubleArray.of(1)); assertEquals(sensGbp.getParameterMetadata(0), TENOR_MD_1Y); CurrencyParameterSensitivity sensUsd = sens.getSensitivity(curveName, USD); assertEquals(sensUsd.getSensitivity(), DoubleArray.of(2)); assertEquals(sensUsd.getParameterMetadata(0), TENOR_MD_1Y); }
public void test_parse_grid_full() { CharSource source = ResourceLocator.ofClasspath("com/opengamma/strata/loader/csv/sensitivity-grid-full.csv").getCharSource(); assertEquals(LOADER_CCP.isKnownFormat(source), true); ValueWithFailures<ListMultimap<String, CurveSensitivities>> test = LOADER_CCP.parse(ImmutableList.of(source)); assertEquals(test.getFailures().size(), 0, test.getFailures().toString()); List<CurveSensitivities> list0 = test.getValue().get("SCHEME~TR1"); assertEquals(list0.size(), 1); CurveSensitivities csens0 = list0.get(0); assertEquals(csens0.getId(), Optional.of(StandardId.of("SCHEME", "TR1"))); assertEquals(csens0.getInfo().getAttribute(CCP_ATTR), "LCH"); assertEquals(csens0.getTypedSensitivities().size(), 2); assertSens(csens0, ZERO_RATE_DELTA, "GBCURVE", GBP, "1M, 3M, 6M", 1, 2, 3); assertSens(csens0, ZERO_RATE_GAMMA, "GBCURVE", GBP, "1M, 3M, 6M", 4, 5, 6); List<CurveSensitivities> list1 = test.getValue().get("OG-Sensitivity~TR2"); assertEquals(list1.size(), 1); CurveSensitivities csens1 = list1.get(0); assertEquals(csens1.getId(), Optional.of(StandardId.of("OG-Sensitivity", "TR2"))); assertEquals(csens1.getInfo().getAttribute(CCP_ATTR), "CME"); assertEquals(csens1.getTypedSensitivities().size(), 1); assertSens(csens1, ZERO_RATE_DELTA, "GBCURVE", GBP, "1M, 3M, 6M", 7, 8, 9); }
if (curveSens.getTypedSensitivities().values().stream() .flatMap(allParamSens -> allParamSens.getSensitivities().stream()) .flatMap(paramSens -> paramSens.getParameterMetadata().stream()) throw new IllegalArgumentException("Parameter metadata must contain tenors"); boolean containsDates = curveSens.getTypedSensitivities().values().stream() .flatMap(allParamSens -> allParamSens.getSensitivities().stream()) .flatMap(paramSens -> paramSens.getParameterMetadata().stream()) MapStream.of(curveSens.getTypedSensitivities()) .flatMapValues(sens -> sens.getSensitivities().stream()) .mapKeys((type, sens) -> Pair.of(sens.getMarketDataName().getName(), type))
public void test_parse_grid_dateInTenorColumn() { CharSource source = CharSource.wrap( "Sensitivity Type,Sensitivity Tenor,GBP\n" + "ZeroRateGamma,2018-06-30,1\n"); assertEquals(LOADER_DATE.isKnownFormat(source), true); ValueWithFailures<ListMultimap<String, CurveSensitivities>> test = LOADER_DATE.parse(ImmutableList.of(source)); assertEquals(test.getFailures().size(), 0, test.getFailures().toString()); assertEquals(test.getValue().size(), 1); List<CurveSensitivities> list = test.getValue().get(""); assertEquals(list.size(), 1); CurveSensitivities csens0 = list.get(0); assertEquals(csens0.getTypedSensitivities().size(), 1); CurrencyParameterSensitivities cpss = csens0.getTypedSensitivity(ZERO_RATE_GAMMA); assertEquals(cpss.getSensitivities().size(), 1); CurrencyParameterSensitivity cps = cpss.getSensitivities().get(0); assertEquals(cps.getParameterMetadata().size(), 1); assertEquals(cps.getParameterMetadata().get(0), LabelDateParameterMetadata.of(date(2018, 6, 30), "2018-06-30")); }
/** * Combines this set of sensitivities with another set. * <p> * This returns a new curve sensitivities with a combined map of typed sensitivities. * Any sensitivities of the same type will be combined as though using * {@link CurrencyParameterSensitivities#mergedWith(CurrencyParameterSensitivities)}. * The identifier and attributes of this instance will take precedence. * * @param other the other parameter sensitivities * @return an instance based on this one, with the other instance added */ @SuppressWarnings({"rawtypes", "unchecked"}) public CurveSensitivities mergedWith(CurveSensitivities other) { PortfolioItemInfo combinedInfo = info; if (!info.getId().isPresent() && other.info.getId().isPresent()) { combinedInfo = combinedInfo.withId(other.info.getId().get()); } for (AttributeType attrType : other.info.getAttributeTypes()) { if (!combinedInfo.getAttributeTypes().contains(attrType)) { combinedInfo = combinedInfo.withAttribute(attrType, other.info.getAttribute(attrType)); } } return new CurveSensitivities(combinedInfo, mergedWith(other.typedSensitivities).getTypedSensitivities()); }
public void test_convertedTo_multipleCurrency() { CurveSensitivities base = sut2(); CurveSensitivities test = base.convertedTo(USD, FX_RATE); assertEquals(test.getTypedSensitivities().get(ZERO_RATE_DELTA).getSensitivities(), ImmutableList.of(ENTRY_USD)); assertEquals( test.getTypedSensitivities().get(ZERO_RATE_GAMMA).getSensitivities(), ImmutableList.of(ENTRY_USD2, ENTRY_EUR_IN_USD)); }
public void test_withMarketDataNames() { CurveSensitivities base = sut(); CurveSensitivities test = base.withMarketDataNames(name -> NAME2); assertEquals( base.getTypedSensitivities().get(ZERO_RATE_DELTA).getSensitivities().get(0).getMarketDataName(), NAME1); assertEquals( test.getTypedSensitivities().get(ZERO_RATE_DELTA).getSensitivities().get(0).getMarketDataName(), NAME2); }
public void test_withParameterMetadatas() { CurveSensitivities base = sut(); CurveSensitivities test = base.withParameterMetadatas(md -> TENOR_MD_1Y); CurrencyParameterSensitivity testSens = test.getTypedSensitivities().get(ZERO_RATE_DELTA).getSensitivities().get(0); assertEquals(testSens.getParameterMetadata(), ImmutableList.of(TENOR_MD_1Y)); assertEquals(testSens.getSensitivity(), DoubleArray.of(723)); }
@Override public PortfolioItemSummary summarize() { String typesStr = typedSensitivities.keySet().stream() .map(CurveSensitivitiesType::toString) .sorted() .collect(joining(", ", "CurveSensitivities[", "]")); return PortfolioItemSummary.of( getId().orElse(null), PortfolioItemType.SENSITIVITIES, ProductType.SENSITIVITIES, typedSensitivities.values().stream() .flatMap(s -> s.getSensitivities().stream()) .map(s -> s.getCurrency()) .collect(toImmutableSet()), typesStr); }
public void test_write_standard() { 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, TenorParameterMetadata.of(Tenor.TENOR_3M), 2) .add(ZERO_RATE_DELTA, curve1, Currency.GBP, TenorParameterMetadata.of(Tenor.TENOR_6M), 4) .build(); StringBuffer buf = new StringBuffer(); WRITER_CCP.write(sens, buf); String content = buf.toString(); String expected = "" + "Reference,Sensitivity Type,Sensitivity Tenor,Currency,Value,CCP\n" + "GBDSC,ZeroRateDelta,3M,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 void test_mergedWith_sens_empty() { CurveSensitivities base = sut(); CurveSensitivities test = base.mergedWith(CurveSensitivities.empty()); assertEquals(test, base); }
@Override public List<String> values( List<String> additionalHeaders, CurveSensitivities curveSens, CurrencyParameterSensitivity paramSens) { return ImmutableList.of(curveSens.getInfo().findAttribute(CCP_ATTR).orElse("")); } };
private CurveSensitivities sut() { return CurveSensitivities.of(INFO1, ZERO_RATE_DELTA, SENSI1); }
public void test_mergedWith_map_empty() { CurveSensitivities base = sut(); Map<CurveSensitivitiesType, CurrencyParameterSensitivities> additional = ImmutableMap.of(); CurveSensitivities test = base.mergedWith(additional); assertEquals(test, base); }