//-------------------------------------------------------------------------
        public PointSensitivityBuilder periodRatePointSensitivity(OvernightIndexObservation startDateObservation, LocalDate endDate)
        {
            LocalDate startDate = startDateObservation.EffectiveDate;

            ArgChecker.inOrderNotEqual(startDate, endDate, "startDate", "endDate");
            return(OvernightRateSensitivity.ofPeriod(startDateObservation, endDate, 1d));
        }
示例#2
0
        //-------------------------------------------------------------------------
        public virtual void test_build()
        {
            OvernightRateSensitivity @base = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);
            PointSensitivities       test  = @base.build();

            assertEquals(test.Sensitivities, ImmutableList.of(@base));
        }
        //-------------------------------------------------------------------------
        // proper end-to-end tests are elsewhere
        public virtual void test_parameterSensitivity()
        {
            DiscountOvernightIndexRates test  = DiscountOvernightIndexRates.of(GBP_SONIA, DFCURVE, SERIES);
            OvernightRateSensitivity    point = OvernightRateSensitivity.ofPeriod(GBP_SONIA_AFTER, DATE_AFTER_END, GBP, 1d);

            assertEquals(test.parameterSensitivity(point).size(), 1);
        }
        public virtual void test_rateIgnoringFixingsPointSensitivity_onValuation()
        {
            DiscountOvernightIndexRates test     = DiscountOvernightIndexRates.of(GBP_SONIA, DFCURVE, SERIES);
            OvernightRateSensitivity    expected = OvernightRateSensitivity.of(GBP_SONIA_VAL, 1d);

            assertEquals(test.rateIgnoringFixingsPointSensitivity(GBP_SONIA_VAL), expected);
        }
        public virtual void test_ratePointSensitivity_onPublication_noFixing()
        {
            DiscountOvernightIndexRates test     = DiscountOvernightIndexRates.of(GBP_SONIA, DFCURVE, SERIES_EMPTY);
            OvernightRateSensitivity    expected = OvernightRateSensitivity.of(GBP_SONIA_VAL, 1d);

            assertEquals(test.ratePointSensitivity(GBP_SONIA_VAL), expected);
        }
        public virtual void test_ratePointSensitivity_afterPublication()
        {
            DiscountOvernightIndexRates test     = DiscountOvernightIndexRates.of(GBP_SONIA, DFCURVE, SERIES);
            OvernightRateSensitivity    expected = OvernightRateSensitivity.of(GBP_SONIA_AFTER, 1d);

            assertEquals(test.ratePointSensitivity(GBP_SONIA_AFTER), expected);
        }
        //-------------------------------------------------------------------------
        public virtual void test_periodRatePointSensitivity()
        {
            DiscountOvernightIndexRates test     = DiscountOvernightIndexRates.of(GBP_SONIA, DFCURVE, SERIES);
            OvernightRateSensitivity    expected = OvernightRateSensitivity.ofPeriod(GBP_SONIA_AFTER, DATE_AFTER_END, GBP, 1d);

            assertEquals(test.periodRatePointSensitivity(GBP_SONIA_AFTER, DATE_AFTER_END), expected);
        }
示例#8
0
        //-------------------------------------------------------------------------
        public virtual void test_cloned()
        {
            OvernightRateSensitivity @base = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);
            OvernightRateSensitivity test  = @base.cloned();

            assertSame(test, @base);
        }
示例#9
0
        //-------------------------------------------------------------------------
        public virtual void test_mapSensitivity()
        {
            OvernightRateSensitivity @base    = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);
            OvernightRateSensitivity expected = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 1 / 32d);
            OvernightRateSensitivity test     = @base.mapSensitivity(s => 1 / s);

            assertEquals(test, expected);
        }
示例#10
0
        //-------------------------------------------------------------------------
        public virtual void test_multipliedBy()
        {
            OvernightRateSensitivity @base    = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);
            OvernightRateSensitivity expected = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d * 3.5d);
            OvernightRateSensitivity test     = @base.multipliedBy(3.5d);

            assertEquals(test, expected);
        }
示例#11
0
        //-------------------------------------------------------------------------
        public virtual void test_withSensitivity()
        {
            OvernightRateSensitivity @base    = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);
            OvernightRateSensitivity expected = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 20d);
            OvernightRateSensitivity test     = @base.withSensitivity(20d);

            assertEquals(test, expected);
        }
示例#12
0
        //-------------------------------------------------------------------------
        public virtual void coverage()
        {
            OvernightRateSensitivity test = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);

            coverImmutableBean(test);
            OvernightRateSensitivity test2 = OvernightRateSensitivity.of(USD_FED_FUND_OBSERVATION2, 16d);

            coverBeanEquals(test, test2);
        }
 public int compareKey(PointSensitivity other)
 {
     if (other is OvernightRateSensitivity)
     {
         OvernightRateSensitivity otherOn = (OvernightRateSensitivity)other;
         return(ComparisonChain.start().compare(Index.ToString(), otherOn.Index.ToString()).compare(currency, otherOn.currency).compare(observation.FixingDate, otherOn.observation.FixingDate).compare(endDate, otherOn.endDate).result());
     }
     return(this.GetType().Name.CompareTo(other.GetType().Name));
 }
示例#14
0
        //-------------------------------------------------------------------------
        public virtual void test_buildInto()
        {
            OvernightRateSensitivity  @base = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);
            MutablePointSensitivities combo = new MutablePointSensitivities();
            MutablePointSensitivities test  = @base.buildInto(combo);

            assertSame(test, combo);
            assertEquals(test.Sensitivities, ImmutableList.of(@base));
        }
示例#15
0
        public virtual void test_ofPeriod()
        {
            OvernightRateSensitivity test = OvernightRateSensitivity.ofPeriod(GBP_SONIA_OBSERVATION, date(2015, 10, 27), GBP, 32d);

            assertEquals(test.Index, GBP_SONIA);
            assertEquals(test.Currency, GBP);
            assertEquals(test.EndDate, date(2015, 10, 27));
            assertEquals(test.Sensitivity, 32d);
            assertEquals(test.Index, GBP_SONIA);
        }
示例#16
0
        public virtual void test_combinedWith_mutable()
        {
            OvernightRateSensitivity  @base    = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);
            MutablePointSensitivities expected = new MutablePointSensitivities();

            expected.add(@base);
            PointSensitivityBuilder test = @base.combinedWith(new MutablePointSensitivities());

            assertEquals(test, expected);
        }
示例#17
0
        public virtual void test_of_currency()
        {
            OvernightRateSensitivity test = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, USD, 32d);

            assertEquals(test.Index, GBP_SONIA);
            assertEquals(test.Currency, USD);
            assertEquals(test.EndDate, date(2015, 8, 28));
            assertEquals(test.Sensitivity, 32d);
            assertEquals(test.Index, GBP_SONIA);
        }
示例#18
0
        //-------------------------------------------------------------------------
        public virtual void test_combinedWith()
        {
            OvernightRateSensitivity  base1    = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);
            OvernightRateSensitivity  base2    = OvernightRateSensitivity.of(OvernightIndexObservation.of(GBP_SONIA, date(2015, 10, 27), REF_DATA), 22d);
            MutablePointSensitivities expected = new MutablePointSensitivities();

            expected.add(base1).add(base2);
            PointSensitivityBuilder test = base1.combinedWith(base2);

            assertEquals(test, expected);
        }
        //-------------------------------------------------------------------------
        public PointSensitivityBuilder ratePointSensitivity(OvernightIndexObservation observation)
        {
            LocalDate valuationDate   = ValuationDate;
            LocalDate fixingDate      = observation.FixingDate;
            LocalDate publicationDate = observation.PublicationDate;

            if (publicationDate.isBefore(valuationDate) || (publicationDate.Equals(valuationDate) && fixings.get(fixingDate).HasValue))
            {
                return(PointSensitivityBuilder.none());
            }
            return(OvernightRateSensitivity.of(observation, 1d));
        }
示例#20
0
        //-------------------------------------------------------------------------
        public virtual void test_withCurrency()
        {
            OvernightRateSensitivity @base = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);

            assertSame(@base.withCurrency(GBP), @base);

            LocalDate mat = GBP_SONIA_OBSERVATION.MaturityDate;
            OvernightRateSensitivity expected = OvernightRateSensitivity.ofPeriod(GBP_SONIA_OBSERVATION, mat, USD, 32d);
            OvernightRateSensitivity test     = @base.withCurrency(USD);

            assertEquals(test, expected);
        }
 //-----------------------------------------------------------------------
 public override bool Equals(object obj)
 {
     if (obj == this)
     {
         return(true);
     }
     if (obj != null && obj.GetType() == this.GetType())
     {
         OvernightRateSensitivity other = (OvernightRateSensitivity)obj;
         return(JodaBeanUtils.equal(observation, other.observation) && JodaBeanUtils.equal(endDate, other.endDate) && JodaBeanUtils.equal(currency, other.currency) && JodaBeanUtils.equal(sensitivity, other.sensitivity));
     }
     return(false);
 }
        public virtual void test_periodRatePointSensitivity_onholidaybeforepublication()
        {
            LocalDate lastFixingDate             = LocalDate.of(2017, 6, 30);
            LocalDate gbdBeforeValDate           = LocalDate.of(2017, 7, 3);
            LocalDate gbdAfterValDate            = LocalDate.of(2017, 7, 5);
            double    fixingValue                = 0.0010;
            InterpolatedNodalCurve      curve    = InterpolatedNodalCurve.of(METADATA, DoubleArray.of(-1.0d, 10.0d), DoubleArray.of(0.01, 0.02), INTERPOLATOR);
            ZeroRateDiscountFactors     df       = ZeroRateDiscountFactors.of(USD, LocalDate.of(2017, 7, 4), curve);
            LocalDateDoubleTimeSeries   series   = LocalDateDoubleTimeSeries.builder().put(lastFixingDate, fixingValue).build();
            DiscountOvernightIndexRates test     = DiscountOvernightIndexRates.of(USD_FED_FUND, df, series);
            OvernightIndexObservation   obs      = OvernightIndexObservation.of(USD_FED_FUND, gbdBeforeValDate, REF_DATA);
            OvernightRateSensitivity    expected = OvernightRateSensitivity.ofPeriod(obs, gbdAfterValDate, USD, 1d);

            assertEquals(test.periodRatePointSensitivity(obs, gbdAfterValDate), expected);
        }
示例#23
0
        //-------------------------------------------------------------------------
        public virtual void test_convertedTo()
        {
            LocalDate fixingDate           = DATE;
            LocalDate endDate              = date(2015, 10, 27);
            double    sensi                = 32d;
            OvernightRateSensitivity @base = OvernightRateSensitivity.ofPeriod(OvernightIndexObservation.of(GBP_SONIA, fixingDate, REF_DATA), endDate, GBP, sensi);
            double   rate   = 1.5d;
            FxMatrix matrix = FxMatrix.of(CurrencyPair.of(GBP, USD), rate);
            OvernightRateSensitivity test1    = (OvernightRateSensitivity)@base.convertedTo(USD, matrix);
            OvernightRateSensitivity expected = OvernightRateSensitivity.ofPeriod(OvernightIndexObservation.of(GBP_SONIA, fixingDate, REF_DATA), endDate, USD, rate * sensi);

            assertEquals(test1, expected);
            OvernightRateSensitivity test2 = (OvernightRateSensitivity)@base.convertedTo(GBP, matrix);

            assertEquals(test2, @base);
        }
        //-------------------------------------------------------------------------
        public CurrencyParameterSensitivities parameterSensitivity(OvernightRateSensitivity pointSensitivity)
        {
            OvernightIndex                 index          = pointSensitivity.Index;
            LocalDate                      startDate      = pointSensitivity.Observation.EffectiveDate;
            LocalDate                      endDate        = pointSensitivity.EndDate;
            double                         accrualFactor  = index.DayCount.yearFraction(startDate, endDate);
            double                         forwardBar     = pointSensitivity.Sensitivity;
            double                         dfForwardStart = discountFactors.discountFactor(startDate);
            double                         dfForwardEnd   = discountFactors.discountFactor(endDate);
            double                         dfStartBar     = forwardBar / (accrualFactor * dfForwardEnd);
            double                         dfEndBar       = -forwardBar * dfForwardStart / (accrualFactor * dfForwardEnd * dfForwardEnd);
            ZeroRateSensitivity            zrsStart       = discountFactors.zeroRatePointSensitivity(startDate, pointSensitivity.Currency);
            ZeroRateSensitivity            zrsEnd         = discountFactors.zeroRatePointSensitivity(endDate, pointSensitivity.Currency);
            CurrencyParameterSensitivities psStart        = discountFactors.parameterSensitivity(zrsStart).multipliedBy(dfStartBar);
            CurrencyParameterSensitivities psEnd          = discountFactors.parameterSensitivity(zrsEnd).multipliedBy(dfEndBar);

            return(psStart.combinedWith(psEnd));
        }
示例#25
0
        //-------------------------------------------------------------------------
        public virtual void test_compareKey()
        {
            OvernightRateSensitivity a1    = OvernightRateSensitivity.ofPeriod(GBP_SONIA_OBSERVATION, date(2015, 10, 27), GBP, 32d);
            OvernightRateSensitivity a2    = OvernightRateSensitivity.ofPeriod(GBP_SONIA_OBSERVATION, date(2015, 10, 27), GBP, 32d);
            OvernightRateSensitivity b     = OvernightRateSensitivity.ofPeriod(USD_FED_FUND_OBSERVATION2, date(2015, 10, 27), GBP, 32d);
            OvernightRateSensitivity c     = OvernightRateSensitivity.ofPeriod(GBP_SONIA_OBSERVATION, date(2015, 10, 27), USD, 32d);
            OvernightRateSensitivity d     = OvernightRateSensitivity.ofPeriod(GBP_SONIA_OBSERVATION2, date(2015, 10, 27), GBP, 32d);
            OvernightRateSensitivity e     = OvernightRateSensitivity.ofPeriod(GBP_SONIA_OBSERVATION, date(2015, 11, 27), GBP, 32d);
            ZeroRateSensitivity      other = ZeroRateSensitivity.of(GBP, 2d, 32d);

            assertEquals(a1.compareKey(a2), 0);
            assertEquals(a1.compareKey(b) < 0, true);
            assertEquals(b.compareKey(a1) > 0, true);
            assertEquals(a1.compareKey(c) < 0, true);
            assertEquals(c.compareKey(a1) > 0, true);
            assertEquals(a1.compareKey(e) < 0, true);
            assertEquals(d.compareKey(a1) > 0, true);
            assertEquals(a1.compareKey(d) < 0, true);
            assertEquals(e.compareKey(a1) > 0, true);
            assertEquals(a1.compareKey(other) < 0, true);
            assertEquals(other.compareKey(a1) > 0, true);
        }
 public PointSensitivityBuilder rateIgnoringFixingsPointSensitivity(OvernightIndexObservation observation)
 {
     return(OvernightRateSensitivity.of(observation, 1d));
 }
示例#27
0
 public virtual void test_badDateOrder()
 {
     assertThrowsIllegalArg(() => OvernightRateSensitivity.ofPeriod(GBP_SONIA_OBSERVATION, DATE, GBP, 32d));
 }
示例#28
0
        public virtual void test_serialization()
        {
            OvernightRateSensitivity test = OvernightRateSensitivity.of(GBP_SONIA_OBSERVATION, 32d);

            assertSerialization(test);
        }