コード例 #1
0
        //-------------------------------------------------------------------------
        // constructs an interpolated nodal curve
        internal InterpolatedNodalCurve createCurve(LocalDate date, IList <LoadedCurveNode> curveNodes)
        {
            // copy and sort
            IList <LoadedCurveNode> nodes = new List <LoadedCurveNode>(curveNodes);

            nodes.sort(System.Collections.IComparer.naturalOrder());

            // build each node
            double[] xValues = new double[nodes.Count];
            double[] yValues = new double[nodes.Count];
            IList <ParameterMetadata> pointsMetadata = new List <ParameterMetadata>(nodes.Count);

            for (int i = 0; i < nodes.Count; i++)
            {
                LoadedCurveNode point        = nodes[i];
                double          yearFraction = dayCount.yearFraction(date, point.Date);
                xValues[i] = yearFraction;
                yValues[i] = point.Value;
                ParameterMetadata pointMetadata = LabelDateParameterMetadata.of(point.Date, point.Label);
                pointsMetadata.Add(pointMetadata);
            }

            // create metadata
            CurveMetadata curveMetadata = DefaultCurveMetadata.builder().curveName(curveName).xValueType(xValueType).yValueType(yValueType).dayCount(dayCount).parameterMetadata(pointsMetadata).build();

            return(InterpolatedNodalCurve.builder().metadata(curveMetadata).xValues(DoubleArray.copyOf(xValues)).yValues(DoubleArray.copyOf(yValues)).interpolator(interpolator).extrapolatorLeft(extrapolatorLeft).extrapolatorRight(extrapolatorRight).build());
        }
        static CurveSensitivityUtilsJacobianTest()
        {
            Tenor[] tenors = new Tenor[] { Tenor.TENOR_1D, Tenor.TENOR_1M, Tenor.TENOR_3M, Tenor.TENOR_6M, Tenor.TENOR_1Y, Tenor.TENOR_2Y, Tenor.TENOR_3Y, Tenor.TENOR_4Y, Tenor.TENOR_5Y, Tenor.TENOR_7Y, Tenor.TENOR_10Y, Tenor.TENOR_15Y, Tenor.TENOR_20Y, Tenor.TENOR_30Y };
            IList <TenorParameterMetadata> metadataList = new List <TenorParameterMetadata>();

            for (int looptenor = 0; looptenor < tenors.Length; looptenor++)
            {
                metadataList.Add(TenorParameterMetadata.of(tenors[looptenor]));
            }
            DoubleArray            rate_eur         = DoubleArray.of(0.0160, 0.0165, 0.0155, 0.0155, 0.0155, 0.0150, 0.0150, 0.0160, 0.0165, 0.0155, 0.0155, 0.0155, 0.0150, 0.0140);
            InterpolatedNodalCurve curve_single_eur = InterpolatedNodalCurve.builder().metadata(DefaultCurveMetadata.builder().curveName(EUR_SINGLE_NAME).parameterMetadata(metadataList).dayCount(ACT_365F).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.ZERO_RATE).build()).xValues(TIME_EUR).yValues(rate_eur).extrapolatorLeft(CurveExtrapolators.FLAT).extrapolatorRight(CurveExtrapolators.FLAT).interpolator(CurveInterpolators.LINEAR).build();

            MULTICURVE_EUR_SINGLE_INPUT = ImmutableRatesProvider.builder(VALUATION_DATE).discountCurve(EUR, curve_single_eur).iborIndexCurve(EUR_EURIBOR_6M, curve_single_eur).build();
            LIST_CURVE_NAMES_1.Add(CurveParameterSize.of(EUR_SINGLE_NAME, TIME_EUR.size()));
        }