//------------------------------------------------------------------------- public virtual void test_compareKey() { IborFutureOptionSensitivity a1 = IborFutureOptionSensitivity.of(NAME, 12d, date(2015, 8, 28), 0.98, 0.99, GBP, 32d); IborFutureOptionSensitivity a2 = IborFutureOptionSensitivity.of(NAME, 12d, date(2015, 8, 28), 0.98, 0.99, GBP, 32d); IborFutureOptionSensitivity b = IborFutureOptionSensitivity.of(NAME2, 12d, date(2015, 8, 28), 0.98, 0.99, GBP, 32d); IborFutureOptionSensitivity c = IborFutureOptionSensitivity.of(NAME, 13d, date(2015, 8, 28), 0.98, 0.99, GBP, 32d); IborFutureOptionSensitivity d = IborFutureOptionSensitivity.of(NAME, 12d, date(2015, 9, 28), 0.98, 0.99, GBP, 32d); IborFutureOptionSensitivity e = IborFutureOptionSensitivity.of(NAME, 12d, date(2015, 8, 28), 0.99, 0.99, GBP, 32d); IborFutureOptionSensitivity f = IborFutureOptionSensitivity.of(NAME, 12d, date(2015, 8, 28), 0.98, 1.00, GBP, 32d); IborFutureOptionSensitivity g = IborFutureOptionSensitivity.of(NAME, 12d, date(2015, 8, 28), 0.98, 0.99, USD, 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(d) < 0, true); assertEquals(d.compareKey(a1) > 0, true); assertEquals(a1.compareKey(e) < 0, true); assertEquals(e.compareKey(a1) > 0, true); assertEquals(a1.compareKey(f) < 0, true); assertEquals(f.compareKey(a1) > 0, true); assertEquals(a1.compareKey(g) < 0, true); assertEquals(g.compareKey(a1) > 0, true); assertEquals(a1.compareKey(other) < 0, true); assertEquals(other.compareKey(a1) > 0, true); }
public virtual void priceSensitivityNormalVolatility_from_env() { IborIndexRates mockIbor = mock(typeof(IborIndexRates)); SimpleRatesProvider prov = new SimpleRatesProvider(); prov.IborRates = mockIbor; when(mockIbor.rate(OPTION.UnderlyingFuture.IborRate.Observation)).thenReturn(RATE); double futurePrice = 1.0 - RATE; IborFutureOptionSensitivity optionVegaExpected = OPTION_PRICER.priceSensitivityModelParamsVolatility(OPTION, prov, VOL_SIMPLE_MONEY_PRICE, futurePrice); IborFutureOptionSensitivity optionVegaComputed = OPTION_PRICER.priceSensitivityModelParamsVolatility(OPTION, prov, VOL_SIMPLE_MONEY_PRICE); assertTrue(optionVegaExpected.compareKey(optionVegaComputed) == 0); assertEquals(optionVegaComputed.Sensitivity, optionVegaExpected.Sensitivity, TOLERANCE_PRICE_DELTA); }
// ---------- present value normal vol sensitivity ---------- public virtual void presentvalue_normalVolSensitivity_from_env() { IborIndexRates mockIbor = mock(typeof(IborIndexRates)); SimpleRatesProvider prov = new SimpleRatesProvider(); prov.IborRates = mockIbor; when(mockIbor.rate(OPTION.UnderlyingFuture.IborRate.Observation)).thenReturn(RATE); IborFutureOptionSensitivity psProduct = OPTION_PRODUCT_PRICER.priceSensitivityModelParamsVolatility(OPTION, prov, VOL_SIMPLE_MONEY_PRICE); IborFutureOptionSensitivity psExpected = psProduct.withSensitivity(psProduct.Sensitivity * OPTION_PRODUCT_PRICER.marginIndex(OPTION, 1) * OPTION_QUANTITY); IborFutureOptionSensitivity psComputed = OPTION_TRADE_PRICER.presentValueSensitivityModelParamsVolatility(FUTURE_OPTION_TRADE, prov, VOL_SIMPLE_MONEY_PRICE); assertTrue(psExpected.compareKey(psComputed) == 0); assertEquals(psComputed.Sensitivity, psExpected.Sensitivity, TOLERANCE_PV_DELTA); }