@Override public FraTrade trade(double quantity, MarketData marketData, ReferenceData refData) { double fixedRate = marketData.getValue(rateId) + additionalSpread; BuySell buySell = quantity > 0 ? BuySell.SELL : BuySell.BUY; return template.createTrade(marketData.getValuationDate(), buySell, Math.abs(quantity), fixedRate, refData); }
private LocalDate calculateEnd(LocalDate valuationDate, ReferenceData refData) { FraTrade trade = template.createTrade(valuationDate, BuySell.BUY, 1, 1, refData); ResolvedFra resolvedFra = trade.getProduct().resolve(refData); return resolvedFra.getEndDate(); }
private LocalDate calculateLastFixingDate(LocalDate valuationDate, ReferenceData refData) { FraTrade trade = template.createTrade(valuationDate, BuySell.BUY, 1, 1, refData); ResolvedFra resolvedFra = trade.getProduct().resolve(refData); return ((IborRateComputation) resolvedFra.getFloatingRate()).getFixingDate(); }
public void test_createTrade() { FraTemplate base = FraTemplate.of(Period.ofMonths(3), Period.ofMonths(6), FRA_GBP_LIBOR_3M); LocalDate tradeDate = LocalDate.of(2015, 5, 4); // trade date is a holiday! FraTrade test = base.createTrade(tradeDate, BUY, NOTIONAL_2M, 0.25d, REF_DATA); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(date(2015, 8, 5)) .endDate(date(2015, 11, 5)) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
public void test_createTrade_paymentOffset() { FraConvention convention = ((ImmutableFraConvention) FRA_GBP_LIBOR_3M).toBuilder() .paymentDateOffset(PLUS_TWO_DAYS) .build(); FraTemplate base = FraTemplate.of(Period.ofMonths(3), Period.ofMonths(6), convention); LocalDate tradeDate = LocalDate.of(2015, 5, 4); // trade date is a holiday! FraTrade test = base.createTrade(tradeDate, BUY, NOTIONAL_2M, 0.25d, REF_DATA); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(date(2015, 8, 5)) .endDate(date(2015, 11, 5)) .paymentDate(AdjustableDate.of(date(2015, 8, 7), PLUS_TWO_DAYS.getAdjustment())) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }