private LocalDate calculateEnd(LocalDate valuationDate, ReferenceData refData) { TermDepositTrade trade = template.createTrade(valuationDate, BuySell.BUY, 0d, 0d, refData); ResolvedTermDeposit deposit = trade.getProduct().resolve(refData); return deposit.getEndDate(); }
@Override public ResolvedTermDepositTrade resolve(ReferenceData refData) { return ResolvedTermDepositTrade.builder() .info(info) .product(product.resolve(refData)) .build(); }
public void test_resolve() { TermDepositTrade test = TermDepositTrade.of(TRADE_INFO, DEPOSIT); assertEquals(test.resolve(REF_DATA).getInfo(), TRADE_INFO); assertEquals(test.resolve(REF_DATA).getProduct(), DEPOSIT.resolve(REF_DATA)); }
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); }
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_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); }