.buySell(buySell) .currency(currency) .notional(notional) .startDate(startDate) .endDate(endDate)
public void test_builder() { TermDeposit test = TermDeposit.builder() .buySell(SELL) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BDA_MOD_FOLLOW) .dayCount(ACT_365F) .notional(NOTIONAL) .currency(GBP) .rate(RATE) .build(); assertEquals(test.getBuySell(), SELL); assertEquals(test.getStartDate(), START_DATE); assertEquals(test.getEndDate(), END_DATE); assertEquals(test.getBusinessDayAdjustment().get(), BDA_MOD_FOLLOW); assertEquals(test.getDayCount(), ACT_365F); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getRate(), RATE); assertEquals(test.getCurrency(), GBP); assertEquals(test.isCrossCurrency(), false); assertEquals(test.allPaymentCurrencies(), ImmutableSet.of(GBP)); assertEquals(test.allCurrencies(), ImmutableSet.of(GBP)); }
public void test_resolve() { TermDeposit base = TermDeposit.builder() .buySell(SELL) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BDA_MOD_FOLLOW) .dayCount(ACT_365F) .notional(NOTIONAL) .currency(GBP) .rate(RATE) .build(); ResolvedTermDeposit test = base.resolve(REF_DATA); LocalDate expectedEndDate = BDA_MOD_FOLLOW.adjust(END_DATE, REF_DATA); double expectedYearFraction = ACT_365F.yearFraction(START_DATE, expectedEndDate); assertEquals(test.getStartDate(), START_DATE); assertEquals(test.getEndDate(), expectedEndDate); assertEquals(test.getNotional(), -NOTIONAL); assertEquals(test.getYearFraction(), expectedYearFraction, EPS); assertEquals(test.getInterest(), -RATE * expectedYearFraction * NOTIONAL, NOTIONAL * EPS); assertEquals(test.getRate(), RATE); assertEquals(test.getCurrency(), GBP); }
termBuilder.notional(principal.getAmount());
@Override public TermDepositTrade toTrade( TradeInfo tradeInfo, LocalDate startDate, LocalDate endDate, BuySell buySell, double notional, double rate) { Optional<LocalDate> tradeDate = tradeInfo.getTradeDate(); if (tradeDate.isPresent()) { ArgChecker.inOrderOrEqual(tradeDate.get(), startDate, "tradeDate", "startDate"); } return TermDepositTrade.builder() .info(tradeInfo) .product(TermDeposit.builder() .buySell(buySell) .currency(currency) .notional(notional) .startDate(startDate) .endDate(endDate) .businessDayAdjustment(businessDayAdjustment) .rate(rate) .dayCount(dayCount) .build()) .build(); }
public void coverage() { TermDeposit test1 = TermDeposit.builder() .buySell(SELL) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BDA_MOD_FOLLOW) .dayCount(ACT_365F) .notional(NOTIONAL) .currency(GBP) .rate(RATE) .build(); coverImmutableBean(test1); TermDeposit test2 = TermDeposit.builder() .buySell(BuySell.BUY) .startDate(LocalDate.of(2015, 1, 21)) .endDate(LocalDate.of(2015, 7, 21)) .dayCount(ACT_360) .notional(NOTIONAL) .currency(EUR) .rate(RATE) .build(); coverBeanEquals(test1, test2); }
public void test_trade() { TermDepositCurveNode node = TermDepositCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); double rate = 0.035; MarketData marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, rate).build(); TermDepositTrade trade = node.trade(1d, marketData, REF_DATA); LocalDate startDateExpected = PLUS_TWO_DAYS.adjust(VAL_DATE, REF_DATA); LocalDate endDateExpected = startDateExpected.plus(DEPOSIT_PERIOD); TermDeposit depositExpected = TermDeposit.builder() .buySell(BuySell.BUY) .currency(EUR) .dayCount(ACT_360) .startDate(startDateExpected) .endDate(endDateExpected) .notional(1.0d) .businessDayAdjustment(BDA_MOD_FOLLOW) .rate(rate + SPREAD) .build(); TradeInfo tradeInfoExpected = TradeInfo.builder() .tradeDate(VAL_DATE) .build(); assertEquals(trade.getProduct(), depositExpected); assertEquals(trade.getInfo(), tradeInfoExpected); }
public void test_parRate() { SimpleRatesProvider prov = provider(VAL_DATE, DF_START, DF_END); double parRate = PRICER.parRate(RTERM_DEPOSIT, prov); TermDeposit depositPar = TermDeposit.builder() .buySell(BuySell.BUY) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BD_ADJ) .dayCount(ACT_360) .notional(NOTIONAL) .currency(EUR) .rate(parRate) .build(); double pvPar = PRICER.presentValue(depositPar.resolve(REF_DATA), prov).getAmount(); assertEquals(pvPar, 0.0, NOTIONAL * TOLERANCE); }
public void test_parSpread() { SimpleRatesProvider prov = provider(VAL_DATE, DF_START, DF_END); double parSpread = PRICER.parSpread(RTERM_DEPOSIT, prov); TermDeposit depositPar = TermDeposit.builder() .buySell(BuySell.BUY) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BD_ADJ) .dayCount(ACT_360) .notional(NOTIONAL) .currency(EUR) .rate(RATE + parSpread) .build(); double pvPar = PRICER.presentValue(depositPar.resolve(REF_DATA), prov).getAmount(); assertEquals(pvPar, 0.0, NOTIONAL * TOLERANCE); }
public void test_serialization() { TermDeposit test = TermDeposit.builder() .buySell(SELL) .startDate(START_DATE) .endDate(END_DATE) .businessDayAdjustment(BDA_MOD_FOLLOW) .dayCount(ACT_365F) .notional(NOTIONAL) .currency(GBP) .rate(RATE) .build(); assertSerialization(test); }
public void test_builder_wrongDates() { assertThrowsIllegalArg(() -> TermDeposit.builder() .buySell(SELL) .startDate(START_DATE) .endDate(LocalDate.of(2014, 10, 19)) .businessDayAdjustment(BDA_MOD_FOLLOW) .dayCount(ACT_365F) .notional(NOTIONAL) .currency(EUR) .rate(RATE) .build()); }