/** * Calculates the zero rate point sensitivity at the specified date specifying the currency of the sensitivity. * <p> * This returns a sensitivity instance referring to the zero rate sensitivity of the curve * used to determine the discount factor. * The sensitivity typically has the value {@code (-discountFactor * relativeYearFraction)}. * The sensitivity refers to the result of {@link #discountFactor(LocalDate)}. * <p> * This method allows the currency of the sensitivity to differ from the currency of the curve. * * @param date the date to discount to * @param sensitivityCurrency the currency of the sensitivity * @return the point sensitivity of the zero rate * @throws RuntimeException if the result cannot be calculated */ public RepoCurveZeroRateSensitivity zeroRatePointSensitivity(LocalDate date, Currency sensitivityCurrency) { ZeroRateSensitivity zeroRateSensitivity = discountFactors.zeroRatePointSensitivity(date, sensitivityCurrency); return RepoCurveZeroRateSensitivity.of(zeroRateSensitivity, repoGroup); }
public void test_multipliedBy() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); double rate = 2.4d; RepoCurveZeroRateSensitivity test = base.multipliedBy(rate); RepoCurveZeroRateSensitivity expected = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE * rate); assertEquals(test, expected); }
public void test_mapSensitivity() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); RepoCurveZeroRateSensitivity expected = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, 1d / VALUE); RepoCurveZeroRateSensitivity test = base.mapSensitivity(s -> 1d / s); assertEquals(test, expected); }
public void test_normalize() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); RepoCurveZeroRateSensitivity test = base.normalize(); assertEquals(test, base); }
public void test_cloned() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); RepoCurveZeroRateSensitivity test = base.cloned(); assertEquals(test, base); }
public void test_serialization() { RepoCurveZeroRateSensitivity test = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); assertSerialization(test); }
public void coverage() { RepoCurveZeroRateSensitivity test1 = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); coverImmutableBean(test1); RepoCurveZeroRateSensitivity test2 = RepoCurveZeroRateSensitivity.of(GBP, YEARFRAC2, RepoGroup.of("ISSUER2 BND 5Y"), 12d); coverBeanEquals(test1, test2); }
public void test_createZeroRateSensitivity() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GBP, GROUP, VALUE); ZeroRateSensitivity expected = ZeroRateSensitivity.of(CURRENCY, YEARFRAC, GBP, VALUE); ZeroRateSensitivity test = base.createZeroRateSensitivity(); assertEquals(test, expected); }
public void test_convertedTo() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); double rate = 1.5d; FxMatrix matrix = FxMatrix.of(CurrencyPair.of(GBP, USD), rate); RepoCurveZeroRateSensitivity test1 = base.convertedTo(USD, matrix); assertEquals(test1, base); RepoCurveZeroRateSensitivity test2 = base.convertedTo(GBP, matrix); RepoCurveZeroRateSensitivity expected = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GBP, GROUP, VALUE / rate); assertEquals(test2, expected); }
/** * Obtains an instance from zero rate sensitivity and group. * * @param zeroRateSensitivity the zero rate sensitivity * @param repoGroup the group * @return the point sensitivity object */ public static RepoCurveZeroRateSensitivity of(ZeroRateSensitivity zeroRateSensitivity, RepoGroup repoGroup) { return of( zeroRateSensitivity.getCurveCurrency(), zeroRateSensitivity.getYearFraction(), zeroRateSensitivity.getCurrency(), repoGroup, zeroRateSensitivity.getSensitivity()); }
private PointSensitivities presentValueSensitivitySettlement( Payment settlement, RepoCurveDiscountFactors repoDf) { PointSensitivityBuilder pointSettle = paymentPricer.presentValueSensitivity( settlement, repoDf.getDiscountFactors()); if (pointSettle instanceof ZeroRateSensitivity) { return RepoCurveZeroRateSensitivity.of((ZeroRateSensitivity) pointSettle, repoDf.getRepoGroup()).build(); } return pointSettle.build(); // NoPointSensitivity }
public void test_of_withSensitivityCurrency() { Currency sensiCurrency = GBP; RepoCurveZeroRateSensitivity test = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, sensiCurrency, GROUP, VALUE); assertEquals(test.getRepoGroup(), GROUP); assertEquals(test.getCurveCurrency(), CURRENCY); assertEquals(test.getCurrency(), sensiCurrency); assertEquals(test.getYearFraction(), YEARFRAC); assertEquals(test.getSensitivity(), VALUE); }
public void test_of_withoutSensitivityCurrency() { RepoCurveZeroRateSensitivity test = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); assertEquals(test.getRepoGroup(), GROUP); assertEquals(test.getCurveCurrency(), CURRENCY); assertEquals(test.getCurrency(), CURRENCY); assertEquals(test.getYearFraction(), YEARFRAC); assertEquals(test.getSensitivity(), VALUE); }
public void test_zeroRatePointSensitivity() { RepoCurveDiscountFactors base = RepoCurveDiscountFactors.of(DSC_FACTORS, GROUP); RepoCurveZeroRateSensitivity expected = RepoCurveZeroRateSensitivity.of(DSC_FACTORS.zeroRatePointSensitivity(DATE_AFTER), GROUP); RepoCurveZeroRateSensitivity computed = base.zeroRatePointSensitivity(DATE_AFTER); assertEquals(computed, expected); }
public void test_withCurrency() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); RepoCurveZeroRateSensitivity test = base.withCurrency(GBP); assertEquals(test.getRepoGroup(), GROUP); assertEquals(test.getCurveCurrency(), CURRENCY); assertEquals(test.getCurrency(), GBP); assertEquals(test.getYearFraction(), YEARFRAC); assertEquals(test.getSensitivity(), VALUE); }
public void test_withSensitivity() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); double newValue = 53d; RepoCurveZeroRateSensitivity test = base.withSensitivity(newValue); assertEquals(test.getRepoGroup(), GROUP); assertEquals(test.getCurveCurrency(), CURRENCY); assertEquals(test.getCurrency(), CURRENCY); assertEquals(test.getYearFraction(), YEARFRAC); assertEquals(test.getSensitivity(), newValue); }
public void test_of_zeroRateSensitivity() { Currency sensiCurrency = GBP; ZeroRateSensitivity zeroSensi = ZeroRateSensitivity.of(CURRENCY, YEARFRAC, sensiCurrency, VALUE); RepoCurveZeroRateSensitivity test = RepoCurveZeroRateSensitivity.of(zeroSensi, GROUP); assertEquals(test.getRepoGroup(), GROUP); assertEquals(test.getCurveCurrency(), CURRENCY); assertEquals(test.getCurrency(), sensiCurrency); assertEquals(test.getYearFraction(), YEARFRAC); assertEquals(test.getSensitivity(), VALUE); }
private PointSensitivityBuilder presentValueSensitivityPayment( ResolvedFixedCouponBondTrade trade, LegalEntityDiscountingProvider provider) { RepoCurveDiscountFactors repoDf = DiscountingFixedCouponBondProductPricer.repoCurveDf(trade.getProduct(), provider); Payment upfrontPayment = upfrontPayment(trade); PointSensitivityBuilder pt = paymentPricer.presentValueSensitivity( upfrontPayment, repoDf.getDiscountFactors()); if (pt instanceof ZeroRateSensitivity) { return RepoCurveZeroRateSensitivity.of((ZeroRateSensitivity) pt, repoDf.getRepoGroup()); } return pt; // NoPointSensitivity }
public void test_zeroRatePointSensitivity_USD() { RepoCurveDiscountFactors base = RepoCurveDiscountFactors.of(DSC_FACTORS, GROUP); RepoCurveZeroRateSensitivity expected = RepoCurveZeroRateSensitivity.of(DSC_FACTORS.zeroRatePointSensitivity(DATE_AFTER, USD), GROUP); RepoCurveZeroRateSensitivity computed = base.zeroRatePointSensitivity(DATE_AFTER, USD); assertEquals(computed, expected); }
public void test_buildInto() { RepoCurveZeroRateSensitivity base = RepoCurveZeroRateSensitivity.of(CURRENCY, YEARFRAC, GROUP, VALUE); MutablePointSensitivities combo = new MutablePointSensitivities(); MutablePointSensitivities test = base.buildInto(combo); assertSame(test, combo); assertEquals(test.getSensitivities(), ImmutableList.of(base)); }