public virtual void discountFactors_curveName()
        {
            CurveMetadata test     = Curves.discountFactors(CURVE_NAME, ACT_360);
            CurveMetadata expected = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).dayCount(ACT_360).build();

            assertEquals(test, expected);
        }
        public virtual void zeroRates_curveName()
        {
            CurveMetadata test     = Curves.zeroRates(CURVE_NAME, ACT_360);
            CurveMetadata expected = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.ZERO_RATE).dayCount(ACT_360).build();

            assertEquals(test, expected);
        }
        public virtual void forwardRates_curveNameParams()
        {
            CurveMetadata test     = Curves.forwardRates(CURVE_NAME, ACT_360, PARAMS);
            CurveMetadata expected = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.FORWARD_RATE).dayCount(ACT_360).parameterMetadata(PARAMS).build();

            assertEquals(test, expected);
        }
        public virtual void sabrParameterByExpiry_curveNameParams()
        {
            CurveMetadata test     = Curves.sabrParameterByExpiry(CURVE_NAME, ACT_365F, ValueType.SABR_NU, PARAMS);
            CurveMetadata expected = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.SABR_NU).dayCount(ACT_365F).parameterMetadata(PARAMS).build();

            assertEquals(test, expected);
        }
        //-------------------------------------------------------------------------
        public virtual void recoveryRates_string()
        {
            CurveMetadata test     = Curves.recoveryRates(NAME, ACT_360);
            CurveMetadata expected = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.RECOVERY_RATE).dayCount(ACT_360).build();

            assertEquals(test, expected);
        }
        public virtual void blackVolatilityByExpiry_curveNameParams()
        {
            CurveMetadata test     = Curves.blackVolatilityByExpiry(CURVE_NAME, ACT_360, PARAMS);
            CurveMetadata expected = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.BLACK_VOLATILITY).dayCount(ACT_360).parameterMetadata(PARAMS).build();

            assertEquals(test, expected);
        }
Esempio n. 7
0
        static BondFuturesJpyEnd2EndTest()
        {
            for (int i = 0; i < NB_UND_BONDS; ++i)
            {
                PeriodicSchedule periodSchedule = PeriodicSchedule.of(START_DATE[i], MATURITY_DATE[i], Frequency.P6M, BUSINESS_ADJUST, StubConvention.SHORT_INITIAL, false);
                FixedCouponBond  product        = FixedCouponBond.builder().securityId(SecurityId.of(BOND_SECURITY_ID[i])).dayCount(DAY_COUNT).fixedRate(UND_RATES[i] * ONE_PERCENT).legalEntityId(ISSUER_ID).currency(JPY).notional(NOTIONAL).accrualSchedule(periodSchedule).settlementDateOffset(SETTLEMENT_DAYS).yieldConvention(YIELD_CONVENTION).build();
                UND_BOND[i] = product;
            }
            UND_BOND_SEP = new FixedCouponBond[NB_UND_BONDS - 2];
            Array.Copy(UND_BOND, 2, UND_BOND_SEP, 0, NB_UND_BONDS - 2);
            UND_BOND_JUN = new FixedCouponBond[NB_UND_BONDS - 1];
            Array.Copy(UND_BOND, 1, UND_BOND_JUN, 0, NB_UND_BONDS - 1);
            double[]               timeIssuer  = new double[] { 0.25136612021857924, 0.4972677595628415, 1.0139980537465378, 2.013998053746538, 2.857833670184894, 3.857833670184894, 4.860655737704918, 5.857833670184894, 7.104409012650647, 7.857833670184894, 8.857923497267759, 9.863313122239688, 14.857833670184894, 19.857833670184895, 29.857833670184895, 39.11262819073284 };
            double[]               rateIssuer  = new double[] { -0.0013117084834668065, -0.0010851901424876163, -0.0020906775838723216, -0.0022137102045172784, -0.0022695678374162888, -0.0023424568490920798, -0.0021603059162879916, -0.0021667343131861225, -0.0018285921969274823, -0.001355094018965514, -6.763044056712535E-4, 1.9555294306801752E-4, 0.003944125562941363, 0.008054233458390252, 0.012276105941434846, 0.013537766297065804 };
            double[]               timeRepo    = new double[] { 0.00273224043715847, 0.01912568306010929, 0.040983606557377046, 0.05737704918032787, 0.07923497267759563, 0.2459016393442623, 0.4972677595628415, 1.0002994236095515 };
            double[]               rateRepo    = new double[] { 2.599662058772748E-4, -8.403529976927196E-4, -0.0010105103936934236, -0.0011506617573950931, -0.0012708071334455143, -0.00146106683851595, -0.0014710815100096722, -0.001481096281798276 };
            CurveMetadata          metaIssuer  = Curves.zeroRates(ISSUER_CURVE_NAME, ACT_ACT_ISDA);
            InterpolatedNodalCurve curveIssuer = InterpolatedNodalCurve.of(metaIssuer, DoubleArray.copyOf(timeIssuer), DoubleArray.copyOf(rateIssuer), INTERPOLATOR);
            DiscountFactors        dscIssuer   = ZeroRateDiscountFactors.of(JPY, VALUATION, curveIssuer);
            CurveMetadata          metaRepo    = Curves.zeroRates(REPO_CURVE_NAME, ACT_ACT_ISDA);
            InterpolatedNodalCurve curve       = InterpolatedNodalCurve.of(metaRepo, DoubleArray.copyOf(timeRepo), DoubleArray.copyOf(rateRepo), INTERPOLATOR);
            DiscountFactors        dscRepo     = ZeroRateDiscountFactors.of(JPY, VALUATION, curve);

            LED_PROVIDER = ImmutableLegalEntityDiscountingProvider.builder().issuerCurves(ImmutableMap.of(Pair.of(GROUP_ISSUER, JPY), dscIssuer)).issuerCurveGroups(ImmutableMap.of(ISSUER_ID, GROUP_ISSUER)).repoCurves(ImmutableMap.of(Pair.of(GROUP_REPO, JPY), dscRepo)).repoCurveGroups(ImmutableMap.of(ISSUER_ID, GROUP_REPO)).build();
        }
Esempio n. 8
0
        //-------------------------------------------------------------------------
        public override NodalCurve calibrate(IList <ResolvedCdsTrade> calibrationCDSs, DoubleArray premiums, DoubleArray pointsUpfront, CurveName name, LocalDate valuationDate, CreditDiscountFactors discountFactors, RecoveryRates recoveryRates, ReferenceData refData)
        {
            int n = calibrationCDSs.Count;

            double[] guess = new double[n];
            double[] t     = new double[n];
            double[] lgd   = new double[n];
            for (int i = 0; i < n; i++)
            {
                LocalDate endDate = calibrationCDSs[i].Product.ProtectionEndDate;
                t[i]     = discountFactors.relativeYearFraction(endDate);
                lgd[i]   = 1d - recoveryRates.recoveryRate(endDate);
                guess[i] = (premiums.get(i) + pointsUpfront.get(i) / t[i]) / lgd[i];
            }
            DoubleArray   times        = DoubleArray.ofUnsafe(t);
            CurveMetadata baseMetadata = DefaultCurveMetadata.builder().xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.ZERO_RATE).curveName(name).dayCount(discountFactors.DayCount).build();
            NodalCurve    creditCurve  = n == 1 ? ConstantNodalCurve.of(baseMetadata, t[0], guess[0]) : InterpolatedNodalCurve.of(baseMetadata, times, DoubleArray.ofUnsafe(guess), CurveInterpolators.PRODUCT_LINEAR, CurveExtrapolators.FLAT, CurveExtrapolators.PRODUCT_LINEAR);

            for (int i = 0; i < n; i++)
            {
                System.Func <double, double> func = getPriceFunction(i, calibrationCDSs[i], premiums.get(i), pointsUpfront.get(i), valuationDate, creditCurve, discountFactors, recoveryRates, refData);
                double[] bracket  = BRACKER.getBracketedPoints(func, 0.8 * guess[i], 1.25 * guess[i], 0.0, double.PositiveInfinity);
                double   zeroRate = bracket[0] > bracket[1] ? ROOTFINDER.getRoot(func, bracket[1], bracket[0]) : ROOTFINDER.getRoot(func, bracket[0], bracket[1]); //Negative guess handled
                creditCurve = creditCurve.withParameter(i, zeroRate);
            }

            return(creditCurve);
        }
        //-------------------------------------------------------------------------
        public virtual void prices_string()
        {
            CurveMetadata test     = Curves.prices(NAME);
            CurveMetadata expected = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.MONTHS).yValueType(ValueType.PRICE_INDEX).build();

            assertEquals(test, expected);
        }
Esempio n. 10
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. 11
0
        //-------------------------------------------------------------------------
        /// <summary>
        /// Returns a new curve with an additional node, specifying the parameter metadata.
        /// <para>
        /// The result will contain the specified node.
        /// If the x-value equals an existing x-value, the y-value will be changed.
        /// If the x-value does not equal an existing x-value, the node will be added.
        /// </para>
        /// <para>
        /// The result will only contain the specified parameter metadata if this curve also has parameter meta-data.
        ///
        /// </para>
        /// </summary>
        /// <param name="x">  the new x-value </param>
        /// <param name="y">  the new y-value </param>
        /// <param name="paramMetadata">  the new parameter metadata </param>
        /// <returns> the updated curve </returns>
        public InterpolatedNodalCurve withNode(double x, double y, ParameterMetadata paramMetadata)
        {
            int index = Arrays.binarySearch(xValues.toArrayUnsafe(), x);

            if (index >= 0)
            {
                CurveMetadata md = metadata.ParameterMetadata.map(@params =>
                {
                    IList <ParameterMetadata> extended = new List <ParameterMetadata>(@params);
                    extended[index] = paramMetadata;
                    return(metadata.withParameterMetadata(extended));
                }).orElse(metadata);
                DoubleArray yUpdated = yValues.with(index, y);
                return(new InterpolatedNodalCurve(md, xValues, yUpdated, interpolator, extrapolatorLeft, extrapolatorRight));
            }
            int         insertion = -(index + 1);
            DoubleArray xExtended = xValues.subArray(0, insertion).concat(x).concat(xValues.subArray(insertion));
            DoubleArray yExtended = yValues.subArray(0, insertion).concat(y).concat(yValues.subArray(insertion));
            // add to existing metadata, or do nothing if no existing metadata
            CurveMetadata md = metadata.ParameterMetadata.map(@params =>
            {
                IList <ParameterMetadata> extended = new List <ParameterMetadata>(@params);
                extended.Insert(insertion, paramMetadata);
                return(metadata.withParameterMetadata(extended));
            }).orElse(metadata);

            return(new InterpolatedNodalCurve(md, xExtended, yExtended, interpolator, extrapolatorLeft, extrapolatorRight));
        }
        //-------------------------------------------------------------------------
        // 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());
        }
        public virtual void prices_curveNameParams()
        {
            CurveMetadata test     = Curves.prices(CURVE_NAME, PARAMS);
            CurveMetadata expected = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.MONTHS).yValueType(ValueType.PRICE_INDEX).parameterMetadata(PARAMS).build();

            assertEquals(test, expected);
        }
Esempio n. 14
0
        //-------------------------------------------------------------------------
        public ConstantNodalCurve withNode(double x, double y, ParameterMetadata paramMetadata)
        {
            ArgChecker.isTrue(x == xValue, "x should be equal to the existing x-value");
            CurveMetadata md = metadata.withParameterMetadata(ImmutableList.of(paramMetadata));

            return(new ConstantNodalCurve(md, x, y));
        }
//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 -450004177:         // metadata
                    this.metadata_Renamed = (CurveMetadata)newValue;
                    break;

                case 458736106:         // parameters
                    this.parameters_Renamed = (DoubleArray)newValue;
                    break;

                case 636119145:         // valueFunction
                    this.valueFunction_Renamed = (System.Func <DoubleArray, double, double>)newValue;
                    break;

                case 1663351423:         // derivativeFunction
                    this.derivativeFunction_Renamed = (System.Func <DoubleArray, double, double>)newValue;
                    break;

                case -1353652329:         // sensitivityFunction
                    this.sensitivityFunction_Renamed = (System.Func <DoubleArray, double, DoubleArray>)newValue;
                    break;

                default:
                    throw new NoSuchElementException("Unknown property: " + propertyName);
                }
                return(this);
            }
Esempio n. 16
0
        //-------------------------------------------------------------------------
        public virtual void coverage()
        {
            ParameterizedFunctionalCurve test1 = ParameterizedFunctionalCurve.of(METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION);

            coverImmutableBean(test1);

            DoubleArray   @params  = DoubleArray.of(1.2);
            CurveMetadata metadata = DefaultCurveMetadata.builder().curveName("test").yValueType(ValueType.DISCOUNT_FACTOR).xValueType(ValueType.YEAR_FRACTION).build();

            System.Func <DoubleArray, double, double> value = (DoubleArray t, double?u) =>
            {
                return(t.get(0) * u);
            };
            System.Func <DoubleArray, double, double> deriv = (DoubleArray t, double?u) =>
            {
                return(t.get(0));
            };
            System.Func <DoubleArray, double, DoubleArray> sensi = (DoubleArray t, double?u) =>
            {
                return(DoubleArray.of(u));
            };
            ParameterizedFunctionalCurve test2 = ParameterizedFunctionalCurve.of(metadata, @params, value, deriv, sensi);

            coverBeanEquals(test1, test2);
        }
Esempio n. 17
0
        public virtual void test_withMetadata()
        {
            ParameterizedFunctionalCurve @base    = ParameterizedFunctionalCurve.of(METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION);
            CurveMetadata metadata                = DefaultCurveMetadata.builder().curveName("test").yValueType(ValueType.DISCOUNT_FACTOR).xValueType(ValueType.YEAR_FRACTION).build();
            ParameterizedFunctionalCurve expected = ParameterizedFunctionalCurve.of(metadata, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION);

            assertEquals(@base.withMetadata(metadata), expected);
        }
 /// <summary>
 /// Restricted copy constructor. </summary>
 /// <param name="beanToCopy">  the bean to copy from, not null </param>
 internal Builder(ParameterizedFunctionalCurve beanToCopy)
 {
     this.metadata_Renamed            = beanToCopy.Metadata;
     this.parameters_Renamed          = beanToCopy.Parameters;
     this.valueFunction_Renamed       = beanToCopy.ValueFunction;
     this.derivativeFunction_Renamed  = beanToCopy.DerivativeFunction;
     this.sensitivityFunction_Renamed = beanToCopy.SensitivityFunction;
 }
Esempio n. 19
0
        static ParameterizedFunctionalCurveTest()
        {
            TenorParameterMetadata param1 = TenorParameterMetadata.of(Tenor.TENOR_1Y);
            TenorParameterMetadata param2 = TenorParameterMetadata.of(Tenor.TENOR_5Y);
            TenorParameterMetadata param3 = TenorParameterMetadata.of(Tenor.TENOR_10Y);

            METADATA = DefaultCurveMetadata.builder().curveName("test").yValueType(ValueType.DISCOUNT_FACTOR).xValueType(ValueType.YEAR_FRACTION).parameterMetadata(param1, param2, param3).build();
        }
Esempio n. 20
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;
 }
Esempio n. 21
0
        //-------------------------------------------------------------------------
        public virtual void test_metadata()
        {
            RatesCurveGroupDefinition test = RatesCurveGroupDefinition.builder().name(CurveGroupName.of("Test")).addCurve(CURVE_DEFN1, GBP, GBP_LIBOR_1M, GBP_LIBOR_3M).build();

            LocalDate     valuationDate = date(2015, 6, 30);
            CurveMetadata meta          = CURVE_DEFN1.metadata(valuationDate, REF_DATA);

            assertEquals(test.metadata(valuationDate, REF_DATA), ImmutableList.of(meta));
        }
        public virtual void underlyingCurve()
        {
            assertEquals(ADD_FIXED_CURVE.split(), ImmutableList.of(FIXED_CURVE, SPREAD_CURVE));
            CurveMetadata          metadata = DefaultCurveMetadata.builder().curveName(CurveName.of("newCurve")).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.ZERO_RATE).dayCount(ACT_365F).parameterMetadata(PARAM_METADATA_SPREAD).build();
            InterpolatedNodalCurve newCurve = InterpolatedNodalCurve.of(metadata, XVALUES_SPREAD, YVALUES_SPREAD, INTERPOLATOR);

            assertEquals(ADD_FIXED_CURVE.withUnderlyingCurve(0, newCurve), AddFixedCurve.of(newCurve, SPREAD_CURVE));
            assertEquals(ADD_FIXED_CURVE.withUnderlyingCurve(1, newCurve), AddFixedCurve.of(FIXED_CURVE, newCurve));
            assertThrowsIllegalArg(() => ADD_FIXED_CURVE.withUnderlyingCurve(2, newCurve));
        }
Esempio n. 23
0
        //-------------------------------------------------------------------------
        public virtual void test_underlyingCurves()
        {
            CurveMetadata          metadata = DefaultCurveMetadata.builder().curveName("newCurve").xValueType(YEAR_FRACTION).yValueType(ZERO_RATE).dayCount(ACT_365F).parameterMetadata(PARAM_METADATA_SPREAD).build();
            InterpolatedNodalCurve newCurve = InterpolatedNodalCurve.of(metadata, XVALUES_SPREAD, YVALUES_SPREAD, NATURAL_CUBIC_SPLINE, LINEAR, LINEAR);

            assertEquals(COMBINED_CURVE.withUnderlyingCurve(0, newCurve), CombinedCurve.of(newCurve, SPREAD_CURVE, COMBINED_CURVE.Metadata));
            assertEquals(COMBINED_CURVE.withUnderlyingCurve(1, newCurve), CombinedCurve.of(BASE_CURVE, newCurve, COMBINED_CURVE.Metadata));
            assertEquals(COMBINED_CURVE.split(), ImmutableList.of(BASE_CURVE, SPREAD_CURVE));
            assertThrowsIllegalArg(() => COMBINED_CURVE.withUnderlyingCurve(2, newCurve));
        }
        public virtual void test_of_badCurve()
        {
            InterpolatedNodalCurve notYearFraction    = InterpolatedNodalCurve.of(Curves.prices(NAME), DoubleArray.of(0, 10), DoubleArray.of(1, 2), INTERPOLATOR);
            InterpolatedNodalCurve notDiscountFactor  = InterpolatedNodalCurve.of(Curves.zeroRates(NAME, ACT_365F), DoubleArray.of(0, 10), DoubleArray.of(1, 2), INTERPOLATOR);
            CurveMetadata          noDayCountMetadata = DefaultCurveMetadata.builder().curveName(NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).build();
            InterpolatedNodalCurve notDayCount        = InterpolatedNodalCurve.of(noDayCountMetadata, DoubleArray.of(0, 10), DoubleArray.of(1, 2), INTERPOLATOR);

            assertThrowsIllegalArg(() => SimpleDiscountFactors.of(GBP, DATE_VAL, notYearFraction));
            assertThrowsIllegalArg(() => SimpleDiscountFactors.of(GBP, DATE_VAL, notDiscountFactor));
            assertThrowsIllegalArg(() => SimpleDiscountFactors.of(GBP, DATE_VAL, notDayCount));
        }
Esempio n. 25
0
        //-------------------------------------------------------------------------
        public virtual void test_withMetadata()
        {
            IList <ParameterMetadata> combinedParamMeta = new List <ParameterMetadata>();

            ((IList <ParameterMetadata>)combinedParamMeta).AddRange(PARAM_METADATA_BASE);
            ((IList <ParameterMetadata>)combinedParamMeta).AddRange(PARAM_METADATA_SPREAD);
            CurveMetadata newMetadata = DefaultCurveMetadata.builder().curveName("newName").xValueType(YEAR_FRACTION).yValueType(ZERO_RATE).dayCount(ACT_365F).parameterMetadata(combinedParamMeta).build();
            CombinedCurve computed    = COMBINED_CURVE.withMetadata(newMetadata);
            CombinedCurve expected    = CombinedCurve.of(BASE_CURVE, SPREAD_CURVE, newMetadata);

            assertEquals(computed, expected);
        }
Esempio n. 26
0
        // one valuation date, one set of market data
        private MarketDataBox <RatesCurveInputs> buildSingleCurveInputs <T1>(CurveDefinition filteredDefn, IDictionary <T1> marketData, LocalDate valuationDate, ReferenceData refData) where T1 : com.opengamma.strata.data.MarketDataId <T1>
        {
            // There is only a single map of values and single valuation date - create a single CurveInputs instance
            CurveMetadata curveMetadata = filteredDefn.metadata(valuationDate, refData);
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.Map<? extends com.opengamma.strata.data.MarketDataId<?>, ?> singleMarketDataValues = com.opengamma.strata.collect.MapStream.of(marketData).mapValues(box -> box.getSingleValue()).toMap();
            IDictionary <MarketDataId <object>, ?> singleMarketDataValues = MapStream.of(marketData).mapValues(box => box.SingleValue).toMap();

            RatesCurveInputs curveInputs = RatesCurveInputs.of(singleMarketDataValues, curveMetadata);

            return(MarketDataBox.ofSingleValue(curveInputs));
        }
Esempio n. 27
0
        // update vols
        private SabrParametersIborCapletFloorletVolatilities updateParameters(SabrIborCapletFloorletVolatilityCalibrationDefinition sabrDefinition, SabrParametersIborCapletFloorletVolatilities volatilities, DoubleArray newValues)
        {
            SabrParameters sabrParams    = volatilities.Parameters;
            CurveMetadata  alphaMetadata = sabrParams.AlphaCurve.Metadata;
            CurveMetadata  betaMetadata  = sabrParams.BetaCurve.Metadata;
            CurveMetadata  rhoMetadata   = sabrParams.RhoCurve.Metadata;
            CurveMetadata  nuMetadata    = sabrParams.NuCurve.Metadata;
            IList <Curve>  newCurveList  = sabrDefinition.createSabrParameterCurve(ImmutableList.of(alphaMetadata, betaMetadata, rhoMetadata, nuMetadata), newValues);
            SabrParameters newSabrParams = SabrParameters.of(newCurveList[0], newCurveList[1], newCurveList[2], newCurveList[3], sabrDefinition.ShiftCurve, sabrDefinition.SabrVolatilityFormula);
            SabrParametersIborCapletFloorletVolatilities newVols = SabrParametersIborCapletFloorletVolatilities.of(volatilities.Name, volatilities.Index, volatilities.ValuationDateTime, newSabrParams);

            return(newVols);
        }
Esempio n. 28
0
        public virtual void test_dayCount()
        {
            CurveMetadata          baseMetadata      = DefaultCurveMetadata.builder().curveName(BASE_NAME).xValueType(YEAR_FRACTION).yValueType(ZERO_RATE).dayCount(ACT_365F).build();
            CurveMetadata          spreadMetadata    = DefaultCurveMetadata.builder().curveName(SPREAD_NAME).xValueType(YEAR_FRACTION).yValueType(ZERO_RATE).dayCount(DayCounts.ACT_360).build();
            InterpolatedNodalCurve baseCurve         = InterpolatedNodalCurve.of(baseMetadata, XVALUES_BASE, YVALUES_BASE, NATURAL_CUBIC_SPLINE, LINEAR, LINEAR);
            InterpolatedNodalCurve spreadCurve       = InterpolatedNodalCurve.of(spreadMetadata, XVALUES_SPREAD, YVALUES_SPREAD, PCHIP, LINEAR, LINEAR);
            CurveMetadata          combinedMetadata1 = DefaultCurveMetadata.builder().curveName("CombinedCurve").xValueType(YEAR_FRACTION).yValueType(ZERO_RATE).dayCount(DayCounts.ACT_360).build();

            assertThrowsIllegalArg(() => CombinedCurve.of(baseCurve, spreadCurve, combinedMetadata1));
            CurveMetadata combinedMetadata2 = DefaultCurveMetadata.builder().curveName("CombinedCurve").xValueType(YEAR_FRACTION).yValueType(ZERO_RATE).dayCount(ACT_365F).build();

            assertThrowsIllegalArg(() => CombinedCurve.of(baseCurve, spreadCurve, combinedMetadata2));
        }
        // restricted constructor
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @ImmutableConstructor private ParameterizedFunctionalCurve(CurveMetadata metadata, com.opengamma.strata.collect.array.DoubleArray parameters, System.Func<com.opengamma.strata.collect.array.DoubleArray, double, double> valueFunction, System.Func<com.opengamma.strata.collect.array.DoubleArray, double, double> derivativeFunction, System.Func<com.opengamma.strata.collect.array.DoubleArray, double, com.opengamma.strata.collect.array.DoubleArray> sensitivityFunction)
        private ParameterizedFunctionalCurve(CurveMetadata metadata, DoubleArray parameters, System.Func <DoubleArray, double, double> valueFunction, System.Func <DoubleArray, double, double> derivativeFunction, System.Func <DoubleArray, double, DoubleArray> sensitivityFunction)
        {
            JodaBeanUtils.notNull(metadata, "metadata");
            JodaBeanUtils.notNull(parameters, "parameters");
            JodaBeanUtils.notNull(valueFunction, "valueFunction");
            JodaBeanUtils.notNull(derivativeFunction, "derivativeFunction");
            JodaBeanUtils.notNull(sensitivityFunction, "sensitivityFunction");
            this.metadata            = metadata;
            this.parameters          = parameters;
            this.valueFunction       = valueFunction;
            this.derivativeFunction  = derivativeFunction;
            this.sensitivityFunction = sensitivityFunction;
            this.parameterMetadata   = IntStream.range(0, ParameterCount).mapToObj(i => getParameterMetadata(i)).collect(toImmutableList());
        }
Esempio n. 30
0
        //-------------------------------------------------------------------------
        // restricted constructor
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @ImmutableConstructor private ConstantNodalCurve(CurveMetadata metadata, double xValue, double yValue)
        private ConstantNodalCurve(CurveMetadata metadata, double xValue, double yValue)
        {
            JodaBeanUtils.notNull(metadata, "metadata");
            metadata.ParameterMetadata.ifPresent(@params =>
            {
                if (@params.size() != 1)
                {
                    throw new System.ArgumentException("Length of parameter metadata must be 1");
                }
            });
            this.metadata          = metadata;
            this.xValue            = xValue;
            this.yValue_Renamed    = yValue;
            this.parameterMetadata = ImmutableList.of(getParameterMetadata(0));
        }