private PointSensitivityBuilder netAmountSensitivity( ResolvedCapitalIndexedBondSettlement settlement, RatesProvider ratesProvider) { BondPaymentPeriod settlePeriod = settlement.getPayment(); if (settlePeriod instanceof KnownAmountBondPaymentPeriod) { return PointSensitivityBuilder.none(); } else if (settlePeriod instanceof CapitalIndexedBondPaymentPeriod) { CapitalIndexedBondPaymentPeriod casted = (CapitalIndexedBondPaymentPeriod) settlePeriod; return productPricer.getPeriodPricer().forecastValueSensitivity(casted, ratesProvider); } throw new UnsupportedOperationException("unsupported settlement type"); }
public void test_forecastValueSensitivity_afterPay() { PointSensitivityBuilder computedInterp = PRICER.forecastValueSensitivity(PERIOD_INTERP, IRP_AFTER_PAY); PointSensitivityBuilder computedMonthly = PRICER.forecastValueSensitivity(PERIOD_MONTHLY, IRP_AFTER_PAY); assertEquals(computedInterp, PointSensitivityBuilder.none()); assertEquals(computedMonthly, PointSensitivityBuilder.none()); }
public void test_forecastValueSensitivity_onFix() { PointSensitivityBuilder pointInterp = PRICER.forecastValueSensitivity(PERIOD_INTERP, IRP_ON_FIX); CurrencyParameterSensitivities computedInterp = IRP_ON_FIX.parameterSensitivity(pointInterp.build()); PointSensitivityBuilder pointMonthly = PRICER.forecastValueSensitivity(PERIOD_MONTHLY, IRP_ON_FIX); CurrencyParameterSensitivities computedMonthly = IRP_ON_FIX.parameterSensitivity(pointMonthly.build()); CurrencyParameterSensitivities expectedInterp = FD_CAL.sensitivity(IRP_ON_FIX, p -> CurrencyAmount.of(USD, PRICER.forecastValue(PERIOD_INTERP, p))); CurrencyParameterSensitivities expectedMonthly = FD_CAL.sensitivity(IRP_ON_FIX, p -> CurrencyAmount.of(USD, PRICER.forecastValue(PERIOD_MONTHLY, p))); assertTrue(computedInterp.equalWithTolerance(expectedInterp, NOTIONAL * FD_EPS)); assertTrue(computedMonthly.equalWithTolerance(expectedMonthly, NOTIONAL * FD_EPS)); }
public void test_forecastValueSensitivity_afterFix() { PointSensitivityBuilder pointInterp = PRICER.forecastValueSensitivity(PERIOD_INTERP, IRP_AFTER_FIX); CurrencyParameterSensitivities computedInterp = IRP_AFTER_FIX.parameterSensitivity(pointInterp.build()); PointSensitivityBuilder pointMonthly = PRICER.forecastValueSensitivity(PERIOD_MONTHLY, IRP_AFTER_FIX); CurrencyParameterSensitivities computedMonthly = IRP_AFTER_FIX.parameterSensitivity(pointMonthly.build()); CurrencyParameterSensitivities expectedInterp = FD_CAL.sensitivity(IRP_AFTER_FIX, p -> CurrencyAmount.of(USD, PRICER.forecastValue(PERIOD_INTERP, p))); CurrencyParameterSensitivities expectedMonthly = FD_CAL.sensitivity(IRP_AFTER_FIX, p -> CurrencyAmount.of(USD, PRICER.forecastValue(PERIOD_MONTHLY, p))); assertTrue(computedInterp.equalWithTolerance(expectedInterp, NOTIONAL * FD_EPS)); assertTrue(computedMonthly.equalWithTolerance(expectedMonthly, NOTIONAL * FD_EPS)); }
public void test_forecastValueSensitivity_beforeStart() { PointSensitivityBuilder pointInterp = PRICER.forecastValueSensitivity(PERIOD_INTERP, IRP_BEFORE_START); CurrencyParameterSensitivities computedInterp = IRP_BEFORE_START.parameterSensitivity(pointInterp.build()); PointSensitivityBuilder pointMonthly = PRICER.forecastValueSensitivity(PERIOD_MONTHLY, IRP_BEFORE_START); CurrencyParameterSensitivities computedMonthly = IRP_BEFORE_START.parameterSensitivity(pointMonthly.build()); CurrencyParameterSensitivities expectedInterp = FD_CAL.sensitivity(IRP_BEFORE_START, p -> CurrencyAmount.of(USD, PRICER.forecastValue(PERIOD_INTERP, p))); CurrencyParameterSensitivities expectedMonthly = FD_CAL.sensitivity(IRP_BEFORE_START, p -> CurrencyAmount.of(USD, PRICER.forecastValue(PERIOD_MONTHLY, p))); assertTrue(computedInterp.equalWithTolerance(expectedInterp, NOTIONAL * FD_EPS)); assertTrue(computedMonthly.equalWithTolerance(expectedMonthly, NOTIONAL * FD_EPS)); }