//------------------------------------------------------------------------- public virtual void test_empty() { CurveSensitivities test = CurveSensitivities.empty(); assertEquals(test.Info, PortfolioItemInfo.empty()); assertEquals(test.TypedSensitivities, ImmutableMap.of()); }
/// <summary> /// Restricted copy constructor. </summary> /// <param name="beanToCopy"> the bean to copy from, not null </param> internal Builder(ResolvedCapitalIndexedBondTrade beanToCopy) { this.info_Renamed = beanToCopy.Info; this.product_Renamed = beanToCopy.Product; this.quantity_Renamed = beanToCopy.Quantity; this.settlement_Renamed = beanToCopy.settlement; }
private CurveSensitivities(PortfolioItemInfo info, IDictionary <CurveSensitivitiesType, CurrencyParameterSensitivities> typedSensitivities) { JodaBeanUtils.notNull(info, "info"); JodaBeanUtils.notNull(typedSensitivities, "typedSensitivities"); this.info = info; this.typedSensitivities = ImmutableMap.copyOf(typedSensitivities); }
public override Builder set(string propertyName, object newValue) { switch (propertyName.GetHashCode()) { case 3237038: // info this.info_Renamed = (PortfolioItemInfo)newValue; break; case -309474065: // product this.product_Renamed = (ResolvedCapitalIndexedBond)newValue; break; case -1285004149: // quantity this.quantity_Renamed = (double?)newValue.Value; break; case 73828649: // settlement this.settlement_Renamed = (ResolvedCapitalIndexedBondSettlement)newValue; break; default: throw new NoSuchElementException("Unknown property: " + propertyName); } return(this); }
public override Builder set(string propertyName, object newValue) { switch (propertyName.GetHashCode()) { case 3237038: // info this.info_Renamed = (PortfolioItemInfo)newValue; break; case -309474065: // product this.product_Renamed = (ResolvedBondFutureOption)newValue; break; case -1285004149: // quantity this.quantity_Renamed = (double?)newValue.Value; break; case -1873824343: // tradedPrice this.tradedPrice_Renamed = (TradedPrice)newValue; break; default: throw new NoSuchElementException("Unknown property: " + propertyName); } return(this); }
/// <summary> /// Restricted copy constructor. </summary> /// <param name="beanToCopy"> the bean to copy from, not null </param> internal Builder(ResolvedBondFutureOptionTrade beanToCopy) { this.info_Renamed = beanToCopy.Info; this.product_Renamed = beanToCopy.Product; this.quantity_Renamed = beanToCopy.Quantity; this.tradedPrice_Renamed = beanToCopy.tradedPrice; }
//------------------------------------------------------------------------- // parses the file in grid format private void parseGridFormat(CsvIterator csv, ListMultimap <string, CurveSensitivities> parsed, IList <FailureItem> failures) { // find the applicable reference columns IDictionary <string, CurveName> references = new LinkedHashMap <string, CurveName>(); foreach (string header in csv.headers()) { string headerLowerCase = header.ToLower(Locale.ENGLISH); if (!REF_HEADERS.contains(headerLowerCase) && !resolver.isInfoColumn(headerLowerCase)) { references[header] = CurveName.of(header); } } // loop around all rows, peeking to match batches with the same identifier // no exception catch at this level to avoid infinite loops while (csv.hasNext()) { CsvRow peekedRow = csv.peek(); PortfolioItemInfo info = parseInfo(peekedRow); //JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter: string id = info.Id.map(StandardId::toString).orElse(""); // process in batches, where the ID is the same CurveSensitivitiesBuilder builder = CurveSensitivities.builder(info); IList <CsvRow> batchRows = csv.nextBatch(r => matchId(r, id)); foreach (CsvRow batchRow in batchRows) { try { ParameterMetadata metadata = parseMetadata(batchRow, true); CurveSensitivitiesType type = batchRow.findValue(TYPE_HEADER).map(str => CurveSensitivitiesType.of(str)).orElse(CurveSensitivitiesType.ZERO_RATE_DELTA); foreach (KeyValuePair <string, CurveName> entry in references.SetOfKeyValuePairs()) { CurveName reference = entry.Value; CurveName resolvedCurveName = resolver.checkCurveName(reference); string valueStr = batchRow.getField(entry.Key); Currency currency = parseCurrency(batchRow, reference); if (valueStr.Length > 0) { double value = LoaderUtils.parseDouble(valueStr); builder.add(type, resolvedCurveName, currency, metadata, value); } } } catch (System.ArgumentException ex) { failures.Add(FailureItem.of(PARSING, "CSV file could not be parsed at line {}: {}", batchRow.lineNumber(), ex.Message)); } } CurveSensitivities sens = builder.build(); if (!sens.TypedSensitivities.Empty) { parsed.put(sens.Id.map(object.toString).orElse(""), sens); } } }
/// <summary> /// Creates an instance. </summary> /// <param name="info"> the value of the property, not null </param> /// <param name="product"> the value of the property, not null </param> /// <param name="quantity"> the value of the property </param> /// <param name="tradedPrice"> the value of the property </param> internal ResolvedBondFutureOptionTrade(PortfolioItemInfo info, ResolvedBondFutureOption product, double quantity, TradedPrice tradedPrice) { JodaBeanUtils.notNull(info, "info"); JodaBeanUtils.notNull(product, "product"); this.info = info; this.product = product; this.quantity = quantity; this.tradedPrice = tradedPrice; }
/// <summary> /// Creates an instance. </summary> /// <param name="info"> the value of the property, not null </param> /// <param name="product"> the value of the property, not null </param> /// <param name="quantity"> the value of the property </param> /// <param name="settlement"> the value of the property </param> internal ResolvedCapitalIndexedBondTrade(PortfolioItemInfo info, ResolvedCapitalIndexedBond product, double quantity, ResolvedCapitalIndexedBondSettlement settlement) { JodaBeanUtils.notNull(info, "info"); JodaBeanUtils.notNull(product, "product"); this.info = info; this.product = product; this.quantity = quantity; this.settlement = settlement; }
/// <summary> /// Creates an instance. </summary> /// <param name="info"> the value of the property, not null </param> /// <param name="product"> the value of the property, not null </param> /// <param name="quantity"> the value of the property </param> /// <param name="settlement"> the value of the property </param> internal ResolvedBillTrade(PortfolioItemInfo info, ResolvedBill product, double quantity, Payment settlement) { JodaBeanUtils.notNull(info, "info"); JodaBeanUtils.notNull(product, "product"); this.info = info; this.product = product; this.quantity = quantity; this.settlement = settlement; }
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)); }
/// <summary> /// Combines this set of sensitivities with another set. /// <para> /// 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 /// <seealso cref="CurrencyParameterSensitivities#mergedWith(CurrencyParameterSensitivities)"/>. /// The identifier and attributes of this instance will take precedence. /// /// </para> /// </summary> /// <param name="other"> the other parameter sensitivities </param> /// <returns> an instance based on this one, with the other instance added </returns> //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @SuppressWarnings({"rawtypes", "unchecked"}) public CurveSensitivities mergedWith(CurveSensitivities other) public CurveSensitivities mergedWith(CurveSensitivities other) { PortfolioItemInfo combinedInfo = info; if (!info.Id.Present && other.info.Id.Present) { combinedInfo = combinedInfo.withId(other.info.Id.get()); } foreach (AttributeType attrType in other.info.AttributeTypes) { if (!combinedInfo.AttributeTypes.contains(attrType)) { combinedInfo = combinedInfo.withAttribute(attrType, other.info.getAttribute(attrType)); } } return(new CurveSensitivities(combinedInfo, mergedWith(other.typedSensitivities).TypedSensitivities)); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @SuppressWarnings("unchecked") @Override public Builder set(String propertyName, Object newValue) public override Builder set(string propertyName, object newValue) { switch (propertyName.GetHashCode()) { case 3237038: // info this.info = (PortfolioItemInfo)newValue; break; case 153032499: // typedSensitivities this.typedSensitivities = (IDictionary <CurveSensitivitiesType, CurrencyParameterSensitivities>)newValue; break; default: throw new NoSuchElementException("Unknown property: " + propertyName); } return(this); }
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); }
//------------------------------------------------------------------------- // parses the file in standard format private void parseStandardFormat(CsvIterator csv, ListMultimap <string, CurveSensitivities> parsed, IList <FailureItem> failures) { // loop around all rows, peeking to match batches with the same identifier // no exception catch at this level to avoid infinite loops while (csv.hasNext()) { CsvRow peekedRow = csv.peek(); PortfolioItemInfo info = parseInfo(peekedRow); //JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter: string id = info.Id.map(StandardId::toString).orElse(""); // process in batches, where the ID is the same CurveSensitivitiesBuilder builder = CurveSensitivities.builder(info); IList <CsvRow> batchRows = csv.nextBatch(r => matchId(r, id)); foreach (CsvRow batchRow in batchRows) { try { CurveName reference = CurveName.of(batchRow.getValue(REFERENCE_HEADER)); CurveName resolvedCurveName = resolver.checkCurveName(reference); CurveSensitivitiesType type = CurveSensitivitiesType.of(batchRow.getValue(TYPE_HEADER)); ParameterMetadata metadata = parseMetadata(batchRow, false); Currency currency = parseCurrency(batchRow, reference); string valueStr = batchRow.getField(VALUE_HEADER); if (valueStr.Length > 0) { double value = LoaderUtils.parseDouble(valueStr); builder.add(type, resolvedCurveName, currency, metadata, value); } } catch (System.ArgumentException ex) { failures.Add(FailureItem.of(PARSING, "CSV file could not be parsed at line {}: {}", batchRow.lineNumber(), ex.Message)); } } CurveSensitivities sens = builder.build(); if (!sens.TypedSensitivities.Empty) { parsed.put(sens.Id.map(object.toString).orElse(""), sens); } } }
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 PortfolioItemInfo parseSensitivityInfo(CsvRow row, PortfolioItemInfo info) { return(info.withAttribute(CCP_ATTR, row.getValue("CCP"))); }
/// <summary> /// Obtains an instance from a single set of sensitivities. /// </summary> /// <param name="info"> the additional information </param> /// <param name="type"> the type of the sensitivities </param> /// <param name="sensitivities"> the sensitivities </param> /// <returns> the sensitivities instance </returns> public static CurveSensitivities of(PortfolioItemInfo info, CurveSensitivitiesType type, CurrencyParameterSensitivities sensitivities) { return(new CurveSensitivities(info, ImmutableMap.of(type, sensitivities))); }
//----------------------------------------------------------------------- /// <summary> /// Sets the additional information, defaulted to an empty instance. /// <para> /// This allows additional information to be attached. /// </para> /// </summary> /// <param name="info"> the new value, not null </param> /// <returns> this, for chaining, not null </returns> public Builder info(PortfolioItemInfo info) { JodaBeanUtils.notNull(info, "info"); this.info_Renamed = info; return(this); }
/// <summary> /// Obtains an instance from a map of sensitivities. /// </summary> /// <param name="info"> the additional information </param> /// <param name="typedSensitivities"> the map of sensitivities by type </param> /// <returns> the sensitivities instance </returns> public static CurveSensitivities of(PortfolioItemInfo info, IDictionary <CurveSensitivitiesType, CurrencyParameterSensitivities> typedSensitivities) { return(new CurveSensitivities(info, ImmutableMap.copyOf(typedSensitivities))); }
//------------------------------------------------------------------------- /// <summary> /// Obtains an empty instance. /// </summary> /// <returns> the empty sensitivities instance </returns> public static CurveSensitivities empty() { return(new CurveSensitivities(PortfolioItemInfo.empty(), ImmutableMap.of())); }
/// <summary> /// Returns a builder that can be used to create an instance of {@code CurveSensitivities}. /// <para> /// The builder takes into account the parameter metadata when creating the sensitivity map. /// As such, the parameter metadata added to the builder must not be empty. /// /// </para> /// </summary> /// <param name="info"> the additional information </param> /// <returns> the builder </returns> public static CurveSensitivitiesBuilder builder(PortfolioItemInfo info) { return(new CurveSensitivitiesBuilder(info)); }
//------------------------------------------------------------------------- // restricted constructor internal CurveSensitivitiesBuilder(PortfolioItemInfo info) { this.info = info; }