示例#1
0
        /// <summary>
        /// Re-buckets a <seealso cref="CurrencyParameterSensitivities"/> to a given set of dates.
        /// <para>
        /// The list of dates must be sorted in chronological order. All sensitivities are re-bucketed to the same date list.
        /// The re-bucketing is done by linear weighting on the number of days, i.e. the sensitivities for dates outside the
        /// extremes are fully bucketed to the extremes and for date between two re-bucketing dates, the weight on the start
        /// date is the number days between end date and the date re-bucketed divided by the number of days between the
        /// start and the end.
        /// The input sensitivity should have a <seealso cref="DatedParameterMetadata"/> for each sensitivity.
        ///
        /// </para>
        /// </summary>
        /// <param name="sensitivities">  the input sensitivities </param>
        /// <param name="targetDates">  the list of dates for the re-bucketing </param>
        /// <returns> the sensitivity after the re-bucketing </returns>
        public static CurrencyParameterSensitivities linearRebucketing(CurrencyParameterSensitivities sensitivities, IList <LocalDate> targetDates)
        {
            checkSortedDates(targetDates);
            int nbBuckets = targetDates.Count;
            IList <ParameterMetadata> pmdTarget = targetDates.Select(date => LabelDateParameterMetadata.of(date, date.ToString())).ToList();
            ImmutableList <CurrencyParameterSensitivity> sensitivitiesList = sensitivities.Sensitivities;
            IList <CurrencyParameterSensitivity>         sensitivityTarget = new List <CurrencyParameterSensitivity>();

            foreach (CurrencyParameterSensitivity sensitivity in sensitivitiesList)
            {
                double[]    rebucketedSensitivityAmounts        = new double[nbBuckets];
                DoubleArray sensitivityAmounts                  = sensitivity.Sensitivity;
                IList <ParameterMetadata> parameterMetadataList = sensitivity.ParameterMetadata;
                for (int loopnode = 0; loopnode < sensitivityAmounts.size(); loopnode++)
                {
                    ParameterMetadata nodeMetadata = parameterMetadataList[loopnode];
//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.getName method:
                    ArgChecker.isTrue(nodeMetadata is DatedParameterMetadata, "re-bucketing requires sensitivity date for node {} which is of type {} while 'DatedParameterMetadata' is expected", nodeMetadata.Label, nodeMetadata.GetType().FullName);
                    DatedParameterMetadata datedParameterMetadata = (DatedParameterMetadata)nodeMetadata;
                    LocalDate nodeDate = datedParameterMetadata.Date;
                    rebucketingArray(targetDates, rebucketedSensitivityAmounts, sensitivityAmounts.get(loopnode), nodeDate);
                }
                CurrencyParameterSensitivity rebucketedSensitivity = CurrencyParameterSensitivity.of(sensitivity.MarketDataName, pmdTarget, sensitivity.Currency, DoubleArray.ofUnsafe(rebucketedSensitivityAmounts));
                sensitivityTarget.Add(rebucketedSensitivity);
            }
            return(CurrencyParameterSensitivities.of(sensitivityTarget));
        }
示例#2
0
        public virtual void test_metadata_fixed()
        {
            LocalDate              nodeDate = VAL_DATE.plusMonths(1);
            IborFutureCurveNode    node     = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.of(nodeDate));
            DatedParameterMetadata metadata = node.metadata(VAL_DATE, REF_DATA);

            assertEquals(metadata.Date, nodeDate);
            assertEquals(metadata.Label, node.Label);
        }
示例#3
0
        public virtual void test_metadata_fixed()
        {
            FixedInflationSwapCurveNode node = FixedInflationSwapCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.of(VAL_DATE));
            LocalDate valuationDate          = LocalDate.of(2015, 1, 22);
            DatedParameterMetadata metadata  = node.metadata(valuationDate, REF_DATA);

            assertEquals(metadata.Date, VAL_DATE);
            assertEquals(metadata.Label, node.Label);
        }
        public virtual void test_metadata_last_fixing()
        {
            ThreeLegBasisSwapCurveNode node = ThreeLegBasisSwapCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.LAST_FIXING);
            LocalDate valuationDate         = LocalDate.of(2015, 1, 22);
            LocalDate fixingExpected        = LocalDate.of(2024, 7, 24);
            DatedParameterMetadata metadata = node.metadata(valuationDate, REF_DATA);

            assertEquals(metadata.Date, fixingExpected);
            assertEquals(metadata.Label, node.Label);
        }
示例#5
0
        public virtual void test_metadata_last_fixing()
        {
            FixedInflationSwapCurveNode node = FixedInflationSwapCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.LAST_FIXING);
            LocalDate valuationDate          = LocalDate.of(2015, 1, 22);
            LocalDate fixingExpected         = LocalDate.of(2024, 10, 31); // Last day of the month
            DatedParameterMetadata metadata  = node.metadata(valuationDate, REF_DATA);

            assertEquals(metadata.Date, fixingExpected);
            assertEquals(metadata.Label, node.Label);
        }
示例#6
0
        public virtual void test_metadata_fixed()
        {
            LocalDate nodeDate = VAL_DATE.plusMonths(1);
            FixedOvernightSwapCurveNode node = FixedOvernightSwapCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.of(nodeDate));
            LocalDate valuationDate          = LocalDate.of(2015, 1, 22);
            DatedParameterMetadata metadata  = node.metadata(valuationDate, REF_DATA);

            assertEquals(metadata.Date, nodeDate);
            assertEquals(metadata.Label, node.Label);
        }
        public virtual void test_metadata_last_fixing()
        {
            XCcyIborIborSwapCurveNode node  = XCcyIborIborSwapCurveNode.of(TEMPLATE, SPREAD_ID, SPREAD_ADJ, LABEL).withDate(CurveNodeDate.LAST_FIXING);
            LocalDate valuationDate         = LocalDate.of(2015, 1, 22);
            DatedParameterMetadata metadata = node.metadata(valuationDate, REF_DATA);
            LocalDate fixingExpected        = LocalDate.of(2024, 10, 24);

            assertEquals(metadata.Date, fixingExpected);
            assertEquals(((TenorDateParameterMetadata)metadata).Tenor, TENOR_10Y);
        }
        public virtual void test_metadata_last_fixing()
        {
            IborFixingDepositCurveNode node       = IborFixingDepositCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD).withDate(CurveNodeDate.LAST_FIXING);
            ImmutableMarketData        marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, 0.0d).build();
            IborFixingDepositTrade     trade      = node.trade(1d, marketData, REF_DATA);
            ResolvedIborFixingDeposit  product    = trade.Product.resolve(REF_DATA);
            LocalDate fixingDate            = ((IborRateComputation)product.FloatingRate).FixingDate;
            DatedParameterMetadata metadata = node.metadata(VAL_DATE, REF_DATA);

            assertEquals(((TenorDateParameterMetadata)metadata).Date, fixingDate);
            assertEquals(((TenorDateParameterMetadata)metadata).Tenor.Period, TEMPLATE.DepositPeriod);
        }
示例#9
0
        public virtual void test_metadata_last_fixing()
        {
            IborFutureCurveNode    node       = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.LAST_FIXING);
            ImmutableMarketData    marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, 0.0d).build();
            IborFutureTrade        trade      = node.trade(1d, marketData, REF_DATA);
            LocalDate              fixingDate = trade.Product.FixingDate;
            DatedParameterMetadata metadata   = node.metadata(VAL_DATE, REF_DATA);

            assertEquals(metadata.Date, fixingDate);
            LocalDate referenceDate = TEMPLATE.calculateReferenceDateFromTradeDate(VAL_DATE, REF_DATA);

            assertEquals(((YearMonthDateParameterMetadata)metadata).YearMonth, YearMonth.from(referenceDate));
        }
        public virtual void test_metadata_last_fixing()
        {
            FraCurveNode           node          = FraCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD).withDate(CurveNodeDate.LAST_FIXING);
            LocalDate              valuationDate = LocalDate.of(2015, 1, 22);
            ImmutableMarketData    marketData    = ImmutableMarketData.builder(valuationDate).addValue(QUOTE_ID, 0.0d).build();
            FraTrade               trade         = node.trade(1d, marketData, REF_DATA);
            ResolvedFra            resolved      = trade.Product.resolve(REF_DATA);
            LocalDate              fixingDate    = ((IborRateComputation)(resolved.FloatingRate)).FixingDate;
            DatedParameterMetadata metadata      = node.metadata(valuationDate, REF_DATA);

            assertEquals(((TenorDateParameterMetadata)metadata).Date, fixingDate);
            assertEquals(((TenorDateParameterMetadata)metadata).Tenor, TENOR_5M);
        }
示例#11
0
        // add each node to the csv file
        private static void nodeLines(string valuationDateStr, Curve curve, CsvOutput csv)
        {
            ArgChecker.isTrue(curve is InterpolatedNodalCurve, "interpolated");
            InterpolatedNodalCurve interpolatedCurve = (InterpolatedNodalCurve)curve;
            int nbPoints = interpolatedCurve.XValues.size();

            for (int i = 0; i < nbPoints; i++)
            {
                ArgChecker.isTrue(interpolatedCurve.getParameterMetadata(i) is DatedParameterMetadata, "Curve metadata must contain a date, but was " + interpolatedCurve.getParameterMetadata(i).GetType().Name);
                DatedParameterMetadata metadata = (DatedParameterMetadata)interpolatedCurve.getParameterMetadata(i);
                IList <string>         line     = new List <string>();
                line.Add(valuationDateStr);
                line.Add(curve.Name.Name.ToString());
                line.Add(metadata.Date.ToString());
                line.Add(decimal.valueOf(interpolatedCurve.YValues.get(i)).toPlainString());
                line.Add(metadata.Label);
                csv.writeLine(line);
            }
        }