//-------------------------------------------------------------------------
        public virtual void test_empty()
        {
            CurveSensitivities test = CurveSensitivities.empty();

            assertEquals(test.Info, PortfolioItemInfo.empty());
            assertEquals(test.TypedSensitivities, ImmutableMap.of());
        }
Exemplo n.º 2
0
 /// <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);
 }
Exemplo n.º 4
0
            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;
 }
Exemplo n.º 7
0
        //-------------------------------------------------------------------------
        // 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;
 }
Exemplo n.º 9
0
 /// <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;
 }
Exemplo n.º 10
0
 /// <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;
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 13
0
        //-------------------------------------------------------------------------
        // 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);
        }
Exemplo n.º 18
0
        //-------------------------------------------------------------------------
        // 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)));
 }
Exemplo n.º 22
0
 //-----------------------------------------------------------------------
 /// <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));
 }
Exemplo n.º 26
0
 //-------------------------------------------------------------------------
 // restricted constructor
 internal CurveSensitivitiesBuilder(PortfolioItemInfo info)
 {
     this.info = info;
 }