示例#1
0
        /// <summary>
        /// Creates a curve as the sum of a base curve and a spread curve.
        /// <para>
        /// The metadata of the combined curve will be created form the base curve and spread curve.
        ///
        /// </para>
        /// </summary>
        /// <param name="baseCurve">  the base curve </param>
        /// <param name="spreadCurve">  the spread curve </param>
        /// <returns> the combined curve </returns>
        public static CombinedCurve of(Curve baseCurve, Curve spreadCurve)
        {
            CurveMetadata baseMetadata   = baseCurve.Metadata;
            CurveMetadata spreadMetadata = spreadCurve.Metadata;

            IList <ParameterMetadata> paramMeta = Stream.concat(IntStream.range(0, baseCurve.ParameterCount).mapToObj(i => baseCurve.getParameterMetadata(i)), IntStream.range(0, spreadCurve.ParameterCount).mapToObj(i => spreadCurve.getParameterMetadata(i))).collect(toImmutableList());

            DefaultCurveMetadataBuilder metadataBuilder = DefaultCurveMetadata.builder().curveName(baseCurve.Name.Name + "+" + spreadMetadata.CurveName.Name).xValueType(baseMetadata.XValueType).yValueType(baseMetadata.YValueType).parameterMetadata(paramMeta);

            if (baseMetadata.findInfo(CurveInfoType.DAY_COUNT).Present)
            {
                metadataBuilder.addInfo(CurveInfoType.DAY_COUNT, baseMetadata.getInfo(CurveInfoType.DAY_COUNT));
            }

            return(of(baseCurve, spreadCurve, metadataBuilder.build()));
        }
示例#2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @ImmutableConstructor private CombinedCurve(Curve baseCurve, Curve spreadCurve, CurveMetadata metadata)
        private CombinedCurve(Curve baseCurve, Curve spreadCurve, CurveMetadata metadata)
        {
            JodaBeanUtils.notNull(baseCurve, "baseCurve");
            JodaBeanUtils.notNull(spreadCurve, "spreadCurve");
            JodaBeanUtils.notNull(metadata, "metadata");

            CurveMetadata baseMetadata   = baseCurve.Metadata;
            CurveMetadata spreadMetadata = spreadCurve.Metadata;

            // check value type
            if (!baseMetadata.XValueType.Equals(metadata.XValueType))
            {
                throw new System.ArgumentException(Messages.format("xValueType is {} in baseCurve, but {} in CombinedCurve", baseMetadata.XValueType, metadata.XValueType));
            }
            if (!spreadMetadata.XValueType.Equals(metadata.XValueType))
            {
                throw new System.ArgumentException(Messages.format("xValueType is {} in spreadCurve, but {} in CombinedCurve", spreadMetadata.XValueType, metadata.XValueType));
            }
            if (!baseMetadata.YValueType.Equals(metadata.YValueType))
            {
                throw new System.ArgumentException(Messages.format("yValueType is {} in baseCurve, but {} in CombinedCurve", baseMetadata.YValueType, metadata.YValueType));
            }
            if (!spreadMetadata.YValueType.Equals(metadata.YValueType))
            {
                throw new System.ArgumentException(Messages.format("yValueType is {} in spreadCurve, but {} in CombinedCurve", spreadMetadata.YValueType, metadata.YValueType));
            }
            // check day count
            Optional <DayCount> dccOpt = metadata.findInfo(CurveInfoType.DAY_COUNT);

            if (dccOpt.Present)
            {
                DayCount dcc = dccOpt.get();
                if (!baseMetadata.findInfo(CurveInfoType.DAY_COUNT).Present || !baseMetadata.getInfo(CurveInfoType.DAY_COUNT).Equals(dcc))
                {
                    throw new System.ArgumentException(Messages.format("DayCount in baseCurve should be {}", dcc));
                }
                if (!spreadMetadata.findInfo(CurveInfoType.DAY_COUNT).Present || !spreadMetadata.getInfo(CurveInfoType.DAY_COUNT).Equals(dcc))
                {
                    throw new System.ArgumentException(Messages.format("DayCount in spreadCurve should be {}", dcc));
                }
            }

            this.metadata    = metadata;
            this.baseCurve   = baseCurve;
            this.spreadCurve = spreadCurve;
        }