public override Builder set(string propertyName, object newValue)
            {
                switch (propertyName.GetHashCode())
                {
                case 1411950943:         // xInterpolator
                    this.xInterpolator = (CurveInterpolator)newValue;
                    break;

                case -382665134:         // xExtrapolatorLeft
                    this.xExtrapolatorLeft = (CurveExtrapolator)newValue;
                    break;

                case 1027943729:         // xExtrapolatorRight
                    this.xExtrapolatorRight = (CurveExtrapolator)newValue;
                    break;

                case 1118547936:         // yInterpolator
                    this.yInterpolator = (CurveInterpolator)newValue;
                    break;

                case 970644563:         // yExtrapolatorLeft
                    this.yExtrapolatorLeft = (CurveExtrapolator)newValue;
                    break;

                case 30871376:         // yExtrapolatorRight
                    this.yExtrapolatorRight = (CurveExtrapolator)newValue;
                    break;

                default:
                    throw new NoSuchElementException("Unknown property: " + propertyName);
                }
                return(this);
            }
        private static IDictionary <CurveName, LoadedCurveSettings> parseCurveSettings(CharSource settingsResource)
        {
            ImmutableMap.Builder <CurveName, LoadedCurveSettings> builder = ImmutableMap.builder();
            CsvFile csv = CsvFile.of(settingsResource, true);

            foreach (CsvRow row in csv.rows())
            {
                string curveNameStr         = row.getField(SETTINGS_CURVE_NAME);
                string valueTypeStr         = row.getField(SETTINGS_VALUE_TYPE);
                string dayCountStr          = row.getField(SETTINGS_DAY_COUNT);
                string interpolatorStr      = row.getField(SETTINGS_INTERPOLATOR);
                string leftExtrapolatorStr  = row.getField(SETTINGS_LEFT_EXTRAPOLATOR);
                string rightExtrapolatorStr = row.getField(SETTINGS_RIGHT_EXTRAPOLATOR);

                if (!VALUE_TYPE_MAP.containsKey(valueTypeStr.ToLower(Locale.ENGLISH)))
                {
                    throw new System.ArgumentException(Messages.format("Unsupported {} in curve settings: {}", SETTINGS_VALUE_TYPE, valueTypeStr));
                }

                CurveName         curveName    = CurveName.of(curveNameStr);
                ValueType         valueType    = VALUE_TYPE_MAP.get(valueTypeStr.ToLower(Locale.ENGLISH));
                CurveInterpolator interpolator = CurveInterpolator.of(interpolatorStr);
                CurveExtrapolator leftExtrap   = CurveExtrapolator.of(leftExtrapolatorStr);
                CurveExtrapolator rightExtrap  = CurveExtrapolator.of(rightExtrapolatorStr);
                // ONE_ONE day count is not used
                DayCount            dayCount = LoaderUtils.parseDayCount(dayCountStr);
                LoadedCurveSettings settings = LoadedCurveSettings.of(curveName, ValueType.YEAR_FRACTION, valueType, dayCount, interpolator, leftExtrap, rightExtrap);
                builder.put(curveName, settings);
            }
            return(builder.build());
        }
Esempio n. 3
0
            public override Builder set(string propertyName, object newValue)
            {
                switch (propertyName.GetHashCode())
                {
                case -450004177:         // metadata
                    this.metadata_Renamed = (CurveMetadata)newValue;
                    break;

                case 1681280954:         // xValues
                    this.xValues_Renamed = (DoubleArray)newValue;
                    break;

                case -1726182661:         // yValues
                    this.yValues_Renamed = (DoubleArray)newValue;
                    break;

                case 2096253127:         // interpolator
                    this.interpolator_Renamed = (CurveInterpolator)newValue;
                    break;

                case 1271703994:         // extrapolatorLeft
                    this.extrapolatorLeft_Renamed = (CurveExtrapolator)newValue;
                    break;

                case 773779145:         // extrapolatorRight
                    this.extrapolatorRight_Renamed = (CurveExtrapolator)newValue;
                    break;

                default:
                    throw new NoSuchElementException("Unknown property: " + propertyName);
                }
                return(this);
            }
Esempio n. 4
0
 /// <summary>
 /// Restricted copy constructor. </summary>
 /// <param name="beanToCopy">  the bean to copy from, not null </param>
 internal Builder(InterpolatedNodalCurve beanToCopy)
 {
     this.metadata_Renamed          = beanToCopy.Metadata;
     this.xValues_Renamed           = beanToCopy.XValues;
     this.yValues_Renamed           = beanToCopy.YValues;
     this.interpolator_Renamed      = beanToCopy.Interpolator;
     this.extrapolatorLeft_Renamed  = beanToCopy.ExtrapolatorLeft;
     this.extrapolatorRight_Renamed = beanToCopy.ExtrapolatorRight;
 }
 private GridSurfaceInterpolator(CurveInterpolator xInterpolator, CurveExtrapolator xExtrapolatorLeft, CurveExtrapolator xExtrapolatorRight, CurveInterpolator yInterpolator, CurveExtrapolator yExtrapolatorLeft, CurveExtrapolator yExtrapolatorRight)
 {
     this.xInterpolator      = xInterpolator;
     this.xExtrapolatorLeft  = xExtrapolatorLeft;
     this.xExtrapolatorRight = xExtrapolatorRight;
     this.yInterpolator      = yInterpolator;
     this.yExtrapolatorLeft  = yExtrapolatorLeft;
     this.yExtrapolatorRight = yExtrapolatorRight;
 }
 internal Bound(CurveInterpolator xInterpolator, CurveExtrapolator xExtrapolatorLeft, CurveExtrapolator xExtrapolatorRight, int paramSize, DoubleArray xValuesUnique, BoundCurveInterpolator[] yInterpolators)
 {
     this.xInterpolator      = xInterpolator;
     this.xExtrapolatorLeft  = xExtrapolatorLeft;
     this.xExtrapolatorRight = xExtrapolatorRight;
     this.xValuesUnique      = xValuesUnique;
     this.paramSize          = paramSize;
     this.yInterpolators     = yInterpolators;
 }
	  static DiscountingFraProductPricerTest()
	  {
		CurveInterpolator interp = CurveInterpolators.DOUBLE_QUADRATIC;
		DoubleArray time_gbp = DoubleArray.of(0.0, 0.1, 0.25, 0.5, 0.75, 1.0, 2.0);
		DoubleArray rate_gbp = DoubleArray.of(0.0160, 0.0165, 0.0155, 0.0155, 0.0155, 0.0150, 0.014);
		InterpolatedNodalCurve dscCurve = InterpolatedNodalCurve.of(Curves.zeroRates("GBP-Discount", DAY_COUNT), time_gbp, rate_gbp, interp);
		DoubleArray time_index = DoubleArray.of(0.0, 0.25, 0.5, 1.0);
		DoubleArray rate_index = DoubleArray.of(0.0180, 0.0180, 0.0175, 0.0165);
		InterpolatedNodalCurve indexCurve = InterpolatedNodalCurve.of(Curves.zeroRates("GBP-GBPIBOR3M", DAY_COUNT), time_index, rate_index, interp);
		IMM_PROV = ImmutableRatesProvider.builder(VAL_DATE).discountCurve(GBP, dscCurve).iborIndexCurve(GBP_LIBOR_3M, indexCurve).build();
	  }
 private LoadedCurveSettings(CurveName curveName, ValueType xValueType, ValueType yValueType, DayCount dayCount, CurveInterpolator interpolator, CurveExtrapolator extrapolatorLeft, CurveExtrapolator extrapolatorRight)
 {
     JodaBeanUtils.notNull(curveName, "curveName");
     JodaBeanUtils.notNull(xValueType, "xValueType");
     JodaBeanUtils.notNull(yValueType, "yValueType");
     JodaBeanUtils.notNull(dayCount, "dayCount");
     JodaBeanUtils.notNull(interpolator, "interpolator");
     JodaBeanUtils.notNull(extrapolatorLeft, "extrapolatorLeft");
     JodaBeanUtils.notNull(extrapolatorRight, "extrapolatorRight");
     this.curveName         = curveName;
     this.xValueType        = xValueType;
     this.yValueType        = yValueType;
     this.dayCount          = dayCount;
     this.interpolator      = interpolator;
     this.extrapolatorLeft  = extrapolatorLeft;
     this.extrapolatorRight = extrapolatorRight;
 }
        public virtual void calibration_present_value_discountCurve_clamped()
        {
            CurveInterpolator interp                = CurveInterpolators.LOG_NATURAL_SPLINE_DISCOUNT_FACTOR;
            CurveExtrapolator extrapRight           = CurveExtrapolators.LOG_LINEAR;
            CurveExtrapolator extrapLeft            = CurveExtrapolators.INTERPOLATOR;
            InterpolatedNodalCurveDefinition dsc    = InterpolatedNodalCurveDefinition.builder().name(DSCON_CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).dayCount(CURVE_DC).interpolator(interp).extrapolatorLeft(extrapLeft).extrapolatorRight(extrapRight).nodes(DSC_NODES).build();
            InterpolatedNodalCurveDefinition fwd    = InterpolatedNodalCurveDefinition.builder().name(FWD3_CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).dayCount(CURVE_DC).interpolator(interp).extrapolatorLeft(extrapLeft).extrapolatorRight(extrapRight).nodes(FWD3_NODES).build();
            RatesCurveGroupDefinition        config = RatesCurveGroupDefinition.builder().name(CURVE_GROUP_NAME).addCurve(dsc, USD, USD_FED_FUND).addForwardCurve(fwd, USD_LIBOR_3M).build();
            RatesProvider result = CALIBRATOR.calibrate(config, ALL_QUOTES_BD, REF_DATA);

            assertResult(result, ALL_QUOTES_BD);

            double shift = 1.0E-6;

            System.Func <MarketData, RatesProvider> f = marketData => CALIBRATOR.calibrate(config, marketData, REF_DATA);
            calibration_market_quote_sensitivity_check(f, config, shift, TS_EMPTY);
        }
Esempio n. 10
0
        //-------------------------------------------------------------------------
        // restricted constructor
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @ImmutableConstructor private InterpolatedNodalCurve(CurveMetadata metadata, com.opengamma.strata.collect.array.DoubleArray xValues, com.opengamma.strata.collect.array.DoubleArray yValues, com.opengamma.strata.market.curve.interpolator.CurveInterpolator interpolator, com.opengamma.strata.market.curve.interpolator.CurveExtrapolator extrapolatorLeft, com.opengamma.strata.market.curve.interpolator.CurveExtrapolator extrapolatorRight)
        private InterpolatedNodalCurve(CurveMetadata metadata, DoubleArray xValues, DoubleArray yValues, CurveInterpolator interpolator, CurveExtrapolator extrapolatorLeft, CurveExtrapolator extrapolatorRight)
        {
            JodaBeanUtils.notNull(metadata, "metadata");
            JodaBeanUtils.notNull(xValues, "times");
            JodaBeanUtils.notNull(yValues, "values");
            JodaBeanUtils.notNull(interpolator, "interpolator");
            JodaBeanUtils.notNull(extrapolatorLeft, "extrapolatorLeft");
            JodaBeanUtils.notNull(extrapolatorRight, "extrapolatorRight");
            if (xValues.size() < 2)
            {
                throw new System.ArgumentException("Length of x-values must be at least 2");
            }
            if (xValues.size() != yValues.size())
            {
                throw new System.ArgumentException("Length of x-values and y-values must match");
            }
            metadata.ParameterMetadata.ifPresent(@params =>
            {
                if (xValues.size() != @params.size())
                {
                    throw new System.ArgumentException("Length of x-values and parameter metadata must match when metadata present");
                }
            });
            for (int i = 1; i < xValues.size(); i++)
            {
                if (xValues.get(i) <= xValues.get(i - 1))
                {
                    throw new System.ArgumentException("Array of x-values must be sorted and unique");
                }
            }
            this.metadata          = metadata;
            this.xValues           = xValues;
            this.yValues           = yValues;
            this.extrapolatorLeft  = extrapolatorLeft;
            this.interpolator      = interpolator;
            this.extrapolatorRight = extrapolatorRight;
            this.boundInterpolator = interpolator.bind(xValues, yValues, extrapolatorLeft, extrapolatorRight);
            this.parameterMetadata = IntStream.range(0, ParameterCount).mapToObj(i => getParameterMetadata(i)).collect(toImmutableList());
        }
        public virtual void pointAndParameterPriceIndex()
        {
            double                 eps           = 1.0e-13;
            LocalDate              valuationDate = LocalDate.of(2014, 1, 22);
            DoubleArray            x             = DoubleArray.of(0.5, 1.0, 2.0);
            DoubleArray            y             = DoubleArray.of(224.2, 262.6, 277.5);
            CurveInterpolator      interp        = CurveInterpolators.NATURAL_CUBIC_SPLINE;
            string                 curveName     = "GB_RPI_CURVE";
            InterpolatedNodalCurve interpCurve   = InterpolatedNodalCurve.of(Curves.prices(curveName), x, y, interp);
            ImmutableRatesProvider provider      = ImmutableRatesProvider.builder(VAL_DATE).priceIndexCurve(GB_RPI, interpCurve).timeSeries(GB_RPI, LocalDateDoubleTimeSeries.of(date(2013, 11, 30), 200)).build();

            double    pointSensiValue = 2.5;
            YearMonth refMonth        = YearMonth.from(valuationDate.plusMonths(9));
            InflationRateSensitivity       pointSensi = InflationRateSensitivity.of(PriceIndexObservation.of(GB_RPI, refMonth), pointSensiValue);
            CurrencyParameterSensitivities computed   = provider.parameterSensitivity(pointSensi.build());
            DoubleArray sensiComputed = computed.Sensitivities.get(0).Sensitivity;

            InflationRateSensitivity pointSensi1 = InflationRateSensitivity.of(PriceIndexObservation.of(GB_RPI, refMonth), 1);
            DoubleArray sensiExpectedUnit        = provider.priceIndexValues(GB_RPI).parameterSensitivity(pointSensi1).Sensitivities.get(0).Sensitivity;

            assertTrue(sensiComputed.equalWithTolerance(sensiExpectedUnit.multipliedBy(pointSensiValue), eps));
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(dataProvider = "name") public void test_of_lookup(CurveInterpolator convention, String name)
        public virtual void test_of_lookup(CurveInterpolator convention, string name)
        {
            assertEquals(CurveInterpolator.of(name), convention);
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(dataProvider = "name") public void test_toString(CurveInterpolator convention, String name)
        public virtual void test_toString(CurveInterpolator convention, string name)
        {
            assertEquals(convention.ToString(), name);
        }
Esempio n. 14
0
        /// <summary>
        /// Obtains an instance with time interpolator, strike interpolator and shift curve.
        /// <para>
        /// The extrapolation is completed by default extrapolators in {@code GridSurfaceInterpolator}.
        ///
        /// </para>
        /// </summary>
        /// <param name="name">  the name of the volatilities </param>
        /// <param name="index">  the Ibor index </param>
        /// <param name="dayCount">  the day count to use </param>
        /// <param name="timeInterpolator">  the time interpolator </param>
        /// <param name="strikeInterpolator">  the strike interpolator </param>
        /// <param name="shiftCurve">  the shift curve </param>
        /// <returns> the instance </returns>
        public static SurfaceIborCapletFloorletVolatilityBootstrapDefinition of(IborCapletFloorletVolatilitiesName name, IborIndex index, DayCount dayCount, CurveInterpolator timeInterpolator, CurveInterpolator strikeInterpolator, Curve shiftCurve)
        {
            GridSurfaceInterpolator gridInterpolator = GridSurfaceInterpolator.of(timeInterpolator, strikeInterpolator);

            return(of(name, index, dayCount, gridInterpolator, shiftCurve));
        }
Esempio n. 15
0
        private readonly IList <ParameterMetadata> parameterMetadata;  // derived, not a property

        //-------------------------------------------------------------------------
        /// <summary>
        /// Creates an interpolated curve with metadata.
        /// </summary>
        /// <param name="metadata">  the curve metadata </param>
        /// <param name="xValues">  the x-values </param>
        /// <param name="yValues">  the y-values </param>
        /// <param name="interpolator">  the interpolator </param>
        /// <returns> the curve </returns>
        public static InterpolatedNodalCurve of(CurveMetadata metadata, DoubleArray xValues, DoubleArray yValues, CurveInterpolator interpolator)
        {
            return(InterpolatedNodalCurve.builder().metadata(metadata).xValues(xValues).yValues(yValues).interpolator(interpolator).build());
        }
 /// <summary>
 /// Obtains an instance from the specified interpolators and extrapolators.
 /// </summary>
 /// <param name="xInterpolator">  the x-value interpolator </param>
 /// <param name="xExtrapolatorLeft">  the x-value left extrapolator </param>
 /// <param name="xExtrapolatorRight">  the x-value right extrapolator </param>
 /// <param name="yInterpolator">  the y-value interpolator </param>
 /// <param name="yExtrapolatorLeft">  the y-value left extrapolator </param>
 /// <param name="yExtrapolatorRight">  the y-value right extrapolator </param>
 /// <returns> the index </returns>
 /// <exception cref="IllegalArgumentException"> if the name is not known </exception>
 public static GridSurfaceInterpolator of(CurveInterpolator xInterpolator, CurveExtrapolator xExtrapolatorLeft, CurveExtrapolator xExtrapolatorRight, CurveInterpolator yInterpolator, CurveExtrapolator yExtrapolatorLeft, CurveExtrapolator yExtrapolatorRight)
 {
     return(new GridSurfaceInterpolator(xInterpolator, xExtrapolatorLeft, xExtrapolatorRight, yInterpolator, yExtrapolatorLeft, yExtrapolatorRight));
 }
 //-------------------------------------------------------------------------
 /// <summary>
 /// Obtains an instance from the specified interpolators, using flat extrapolation.
 /// </summary>
 /// <param name="xInterpolator">  the x-value interpolator </param>
 /// <param name="yInterpolator">  the y-value interpolator </param>
 /// <returns> the index </returns>
 /// <exception cref="IllegalArgumentException"> if the name is not known </exception>
 public static GridSurfaceInterpolator of(CurveInterpolator xInterpolator, CurveInterpolator yInterpolator)
 {
     return(new GridSurfaceInterpolator(xInterpolator, FLAT, FLAT, yInterpolator, FLAT, FLAT));
 }
Esempio n. 18
0
 /// <summary>
 /// Creates an interpolated curve with metadata.
 /// </summary>
 /// <param name="metadata">  the curve metadata </param>
 /// <param name="xValues">  the x-values </param>
 /// <param name="yValues">  the y-values </param>
 /// <param name="interpolator">  the interpolator </param>
 /// <param name="extrapolatorLeft">  the extrapolator for extrapolating off the left-hand end of the curve </param>
 /// <param name="extrapolatorRight">  the extrapolator for extrapolating off the right-hand end of the curve </param>
 /// <returns> the curve </returns>
 public static InterpolatedNodalCurve of(CurveMetadata metadata, DoubleArray xValues, DoubleArray yValues, CurveInterpolator interpolator, CurveExtrapolator extrapolatorLeft, CurveExtrapolator extrapolatorRight)
 {
     return(InterpolatedNodalCurve.builder().metadata(metadata).xValues(xValues).yValues(yValues).interpolator(interpolator).extrapolatorLeft(extrapolatorLeft).extrapolatorRight(extrapolatorRight).build());
 }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(dataProvider = "name") public void test_extendedEnum(CurveInterpolator convention, String name)
        public virtual void test_extendedEnum(CurveInterpolator convention, string name)
        {
            ImmutableMap <string, CurveInterpolator> map = CurveInterpolator.extendedEnum().lookupAll();

            assertEquals(map.get(name), convention);
        }
 public virtual void test_of_lookup_notFound()
 {
     assertThrowsIllegalArg(() => CurveInterpolator.of("Rubbish"));
 }
 public virtual void test_of_lookup_null()
 {
     assertThrowsIllegalArg(() => CurveInterpolator.of(null));
 }
Esempio n. 22
0
 /// <summary>
 /// Sets the interpolator.
 /// This is used for x-values between the smallest and largest known x-value. </summary>
 /// <param name="interpolator">  the new value, not null </param>
 /// <returns> this, for chaining, not null </returns>
 public Builder interpolator(CurveInterpolator interpolator)
 {
     JodaBeanUtils.notNull(interpolator, "interpolator");
     this.interpolator_Renamed = interpolator;
     return(this);
 }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(dataProvider = "name") public void test_name(CurveInterpolator convention, String name)
        public virtual void test_name(CurveInterpolator convention, string name)
        {
            assertEquals(convention.Name, name);
        }
 //-------------------------------------------------------------------------
 /// <summary>
 /// Obtains an instance.
 /// </summary>
 /// <param name="curveName">  the curve name </param>
 /// <param name="yValueType">  the value type </param>
 /// <param name="dayCount">  the day count </param>
 /// <param name="interpolator">  the interpolator </param>
 /// <param name="extrapolatorLeft">  the left extrapolator </param>
 /// <param name="extrapolatorRight">  the right extrapolator </param>
 /// <returns> the curve settings </returns>
 internal static LoadedCurveSettings of(CurveName curveName, ValueType xValueType, ValueType yValueType, DayCount dayCount, CurveInterpolator interpolator, CurveExtrapolator extrapolatorLeft, CurveExtrapolator extrapolatorRight)
 {
     return(new LoadedCurveSettings(curveName, xValueType, yValueType, dayCount, interpolator, extrapolatorLeft, extrapolatorRight));
 }
Esempio n. 25
0
 /// <summary>
 /// Obtains an instance with time interpolator and strike interpolator.
 /// <para>
 /// The extrapolation is completed by default extrapolators in {@code GridSurfaceInterpolator}.
 ///
 /// </para>
 /// </summary>
 /// <param name="name">  the name of the volatilities </param>
 /// <param name="index">  the Ibor index </param>
 /// <param name="dayCount">  the day count to use </param>
 /// <param name="timeInterpolator">  the time interpolator </param>
 /// <param name="strikeInterpolator">  the strike interpolator </param>
 /// <returns> the instance </returns>
 public static SurfaceIborCapletFloorletVolatilityBootstrapDefinition of(IborCapletFloorletVolatilitiesName name, IborIndex index, DayCount dayCount, CurveInterpolator timeInterpolator, CurveInterpolator strikeInterpolator)
 {
     return(of(name, index, dayCount, timeInterpolator, strikeInterpolator, null));
 }