public void fxNdf() { String location = "classpath:com/opengamma/strata/loader/fpml/fx-ex07-non-deliverable-forward.xml"; ByteSource resource = ResourceLocator.of(location).getByteSource(); List<Trade> trades = FpmlDocumentParser.of(FpmlPartySelector.matching("Party1")).parseTrades(resource); assertEquals(trades.size(), 1); Trade trade = trades.get(0); assertEquals(trade.getClass(), FxNdfTrade.class); FxNdfTrade fxTrade = (FxNdfTrade) trade; assertEquals(fxTrade.getInfo().getTradeDate(), Optional.of(date(2002, 1, 9))); FxNdf fx = fxTrade.getProduct(); assertEquals(fx.getSettlementCurrencyNotional(), CurrencyAmount.of(USD, 10000000)); assertEquals(fx.getAgreedFxRate(), FxRate.of(USD, INR, 43.4)); assertEquals(fx.getIndex(), ImmutableFxIndex.builder() .name("Reuters/RBIB/14:30") .currencyPair(CurrencyPair.of(USD, INR)) .fixingCalendar(USNY) .maturityDateOffset(DaysAdjustment.ofCalendarDays(-2)) .build()); assertEquals(fx.getPaymentDate(), date(2002, 4, 11)); }
public void test_dates() { FxIndex test = ImmutableFxIndex.builder() .name("Test") .currencyPair(CurrencyPair.of(EUR, GBP)) .fixingCalendar(NO_HOLIDAYS) .maturityDateOffset(DaysAdjustment.ofCalendarDays(2)) .build(); assertEquals(test.calculateMaturityFromFixing(date(2014, 10, 13), REF_DATA), date(2014, 10, 15)); assertEquals(test.calculateFixingFromMaturity(date(2014, 10, 15), REF_DATA), date(2014, 10, 13)); // weekend assertEquals(test.calculateMaturityFromFixing(date(2014, 10, 16), REF_DATA), date(2014, 10, 18)); assertEquals(test.calculateFixingFromMaturity(date(2014, 10, 18), REF_DATA), date(2014, 10, 16)); assertEquals(test.calculateMaturityFromFixing(date(2014, 10, 17), REF_DATA), date(2014, 10, 19)); assertEquals(test.calculateFixingFromMaturity(date(2014, 10, 19), REF_DATA), date(2014, 10, 17)); // input date is Sunday assertEquals(test.calculateMaturityFromFixing(date(2014, 10, 19), REF_DATA), date(2014, 10, 21)); assertEquals(test.calculateFixingFromMaturity(date(2014, 10, 19), REF_DATA), date(2014, 10, 17)); }
.fixingCalendar(calendar) .maturityDateOffset(offset) .build(); return FxNdfTrade.builder() .info(tradeInfoBuilder.build())
private static FxIndex parseFxIndex(CsvRow row) { String name = row.getField(NAME_FIELD); Currency baseCurrency = Currency.parse(row.getField(BASE_CURRENCY_FIELD)); Currency counterCurrency = Currency.parse(row.getField(COUNTER_CURRENCY_FIELD)); HolidayCalendarId fixingCal = HolidayCalendarId.of(row.getField(FIXING_CALENDAR_FIELD)); int maturityDays = Integer.parseInt(row.getField(MATURITY_DAYS_FIELD)); HolidayCalendarId maturityCal = HolidayCalendarId.of(row.getField(MATURITY_CALENDAR_FIELD)); // build result return ImmutableFxIndex.builder() .name(name) .currencyPair(CurrencyPair.of(baseCurrency, counterCurrency)) .fixingCalendar(fixingCal) .maturityDateOffset(DaysAdjustment.ofBusinessDays(maturityDays, maturityCal)) .build(); }
public void test_equals() { ImmutableFxIndex a = ImmutableFxIndex.builder() .name("GBP-EUR") .currencyPair(CurrencyPair.of(GBP, EUR)) .fixingCalendar(GBLO) .maturityDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .build(); ImmutableFxIndex b = a.toBuilder().name("EUR-GBP").build(); assertEquals(a.equals(b), false); }