public void test_builder_full() { IborFixingDeposit test = IborFixingDeposit.builder() .buySell(SELL) .notional(NOTIONAL) .currency(GBP) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BDA_MOD_FOLLOW) .fixingDateOffset(DAY_ADJ) .dayCount(ACT_365F) .index(GBP_LIBOR_6M) .fixedRate(RATE) .build(); assertEquals(test.getBusinessDayAdjustment().get(), BDA_MOD_FOLLOW); assertEquals(test.getBuySell(), SELL); assertEquals(test.getFixingDateOffset(), DAY_ADJ); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getCurrency(), GBP); assertEquals(test.getDayCount(), ACT_365F); assertEquals(test.getStartDate(), START_DATE); assertEquals(test.getEndDate(), END_DATE); assertEquals(test.getIndex(), GBP_LIBOR_6M); assertEquals(test.getFixedRate(), RATE); assertEquals(test.isCrossCurrency(), false); assertEquals(test.allPaymentCurrencies(), ImmutableSet.of(GBP)); assertEquals(test.allCurrencies(), ImmutableSet.of(GBP)); }
LocalDate endExpected = startExpected.plus(depositPeriod); IborFixingDeposit productExpected = IborFixingDeposit.builder() .businessDayAdjustment(BDA_MOD_FOLLOW) .buySell(BUY) .currency(EUR) .dayCount(ACT_365F) .startDate(startExpected) .endDate(endExpected) .fixedRate(fixedRate) .fixingDateOffset(FIXING_ADJ) .index(EUR_LIBOR_3M) .notional(notional) .build(); TradeInfo tradeInfoExpected = TradeInfo.builder() .tradeDate(tradeDate)
@Override public IborFixingDepositTrade toTrade( TradeInfo tradeInfo, LocalDate startDate, LocalDate endDate, BuySell buySell, double notional, double fixedRate) { Optional<LocalDate> tradeDate = tradeInfo.getTradeDate(); if (tradeDate.isPresent()) { ArgChecker.inOrderOrEqual(tradeDate.get(), startDate, "tradeDate", "startDate"); } return IborFixingDepositTrade.builder() .info(tradeInfo) .product(IborFixingDeposit.builder() .buySell(buySell) .currency(getCurrency()) .notional(notional) .startDate(startDate) .endDate(endDate) .businessDayAdjustment(getBusinessDayAdjustment()) .fixedRate(fixedRate) .index(index) .fixingDateOffset(getFixingDateOffset()) .dayCount(getDayCount()) .build()) .build(); }
public void test_trade() { IborFixingDepositCurveNode node = IborFixingDepositCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); LocalDate valuationDate = LocalDate.of(2015, 1, 22); double rate = 0.035; MarketData marketData = ImmutableMarketData.builder(valuationDate).addValue(QUOTE_ID, rate).build(); IborFixingDepositTrade trade = node.trade(1d, marketData, REF_DATA); ImmutableIborFixingDepositConvention conv = (ImmutableIborFixingDepositConvention) TEMPLATE.getConvention(); LocalDate startDateExpected = conv.getSpotDateOffset().adjust(valuationDate, REF_DATA); LocalDate endDateExpected = startDateExpected.plus(TEMPLATE.getDepositPeriod()); IborFixingDeposit depositExpected = IborFixingDeposit.builder() .buySell(BuySell.BUY) .index(EUR_LIBOR_3M) .startDate(startDateExpected) .endDate(endDateExpected) .businessDayAdjustment(BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUR_LIBOR_3M.getFixingCalendar())) .notional(1.0d) .fixedRate(rate + SPREAD) .build(); TradeInfo tradeInfoExpected = TradeInfo.builder() .tradeDate(valuationDate) .build(); assertEquals(trade.getProduct(), depositExpected); assertEquals(trade.getInfo(), tradeInfoExpected); }
public void test_createTrade() { IborFixingDepositTemplate template = IborFixingDepositTemplate.of(EUR_LIBOR_3M); double notional = 1d; double fixedRate = 0.045; LocalDate tradeDate = LocalDate.of(2015, 1, 22); IborFixingDepositTrade trade = template.createTrade(tradeDate, BUY, notional, fixedRate, REF_DATA); ImmutableIborFixingDepositConvention conv = (ImmutableIborFixingDepositConvention) template.getConvention(); LocalDate startExpected = conv.getSpotDateOffset().adjust(tradeDate, REF_DATA); LocalDate endExpected = startExpected.plus(template.getDepositPeriod()); IborFixingDeposit productExpected = IborFixingDeposit.builder() .businessDayAdjustment(conv.getBusinessDayAdjustment()) .buySell(BUY) .startDate(startExpected) .endDate(endExpected) .fixedRate(fixedRate) .index(EUR_LIBOR_3M) .notional(notional) .build(); TradeInfo tradeInfoExpected = TradeInfo.builder() .tradeDate(tradeDate) .build(); assertEquals(trade.getInfo(), tradeInfoExpected); assertEquals(trade.getProduct(), productExpected); }
public void test_builder_minimum() { IborFixingDeposit test = IborFixingDeposit.builder() .buySell(SELL) .notional(NOTIONAL) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BDA_MOD_FOLLOW) .index(GBP_LIBOR_6M) .fixedRate(RATE) .build(); assertEquals(test.getBusinessDayAdjustment().get(), BDA_MOD_FOLLOW); assertEquals(test.getBuySell(), SELL); assertEquals(test.getFixingDateOffset(), GBP_LIBOR_6M.getFixingDateOffset()); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getCurrency(), GBP); assertEquals(test.getDayCount(), ACT_365F); assertEquals(test.getStartDate(), START_DATE); assertEquals(test.getEndDate(), END_DATE); assertEquals(test.getIndex(), GBP_LIBOR_6M); assertEquals(test.getFixedRate(), RATE); }
public void test_resolve() { IborFixingDeposit base = IborFixingDeposit.builder() .buySell(SELL) .notional(NOTIONAL) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BDA_MOD_FOLLOW) .index(GBP_LIBOR_6M) .fixedRate(RATE) .build(); ResolvedIborFixingDeposit test = base.resolve(REF_DATA); LocalDate expectedEndDate = BDA_MOD_FOLLOW.adjust(END_DATE, REF_DATA); double expectedYearFraction = ACT_365F.yearFraction(START_DATE, expectedEndDate); IborRateComputation expectedObservation = IborRateComputation.of( GBP_LIBOR_6M, GBP_LIBOR_6M.getFixingDateOffset().adjust(START_DATE, REF_DATA), REF_DATA); assertEquals(test.getCurrency(), GBP); assertEquals(test.getStartDate(), START_DATE); assertEquals(test.getEndDate(), expectedEndDate); assertEquals(test.getFloatingRate(), expectedObservation); assertEquals(test.getNotional(), -NOTIONAL); assertEquals(test.getFixedRate(), RATE); assertEquals(test.getYearFraction(), expectedYearFraction); }
public void coverage() { IborFixingDeposit test1 = IborFixingDeposit.builder() .buySell(SELL) .notional(NOTIONAL) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BDA_MOD_FOLLOW) .index(GBP_LIBOR_6M) .fixedRate(RATE) .build(); coverImmutableBean(test1); IborFixingDeposit test2 = IborFixingDeposit.builder() .buySell(BuySell.BUY) .notional(NOTIONAL) .startDate(LocalDate.of(2015, 1, 19)) .endDate(LocalDate.of(2015, 4, 19)) .businessDayAdjustment(BDA_MOD_FOLLOW) .index(GBP_LIBOR_3M) .fixedRate(0.015) .build(); coverBeanEquals(test1, test2); }
public void test_parRate() { double parRate = PRICER.parRate(RDEPOSIT, IMM_PROV_NOFIX); IborFixingDeposit deposit0 = DEPOSIT.toBuilder().fixedRate(parRate).build(); CurrencyAmount pv0 = PRICER.presentValue(deposit0.resolve(REF_DATA), IMM_PROV_NOFIX); assertEquals(pv0.getAmount(), 0, TOLERANCE_RATE); double parRate2 = PRICER.parRate(RDEPOSIT, IMM_PROV_NOFIX); assertEquals(parRate, parRate2, TOLERANCE_RATE); }
public void test_parSpread_noFixing() { double parSpread = PRICER.parSpread(RDEPOSIT, IMM_PROV_NOFIX); IborFixingDeposit deposit0 = DEPOSIT.toBuilder().fixedRate(RATE + parSpread).build(); CurrencyAmount pv0 = PRICER.presentValue(deposit0.resolve(REF_DATA), IMM_PROV_NOFIX); assertEquals(pv0.getAmount(), 0, TOLERANCE_RATE); double parSpread2 = PRICER.parSpread(RDEPOSIT, IMM_PROV_NOFIX); assertEquals(parSpread, parSpread2, TOLERANCE_RATE); }