@Override public ImmutableFxIndex build() { preBuild(this); return new ImmutableFxIndex( name, currencyPair, fixingCalendar, fixingDateOffset, maturityDateOffset); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(ImmutableFxIndex beanToCopy) { this.name = beanToCopy.getName(); this.currencyPair = beanToCopy.getCurrencyPair(); this.fixingCalendar = beanToCopy.getFixingCalendar(); this.fixingDateOffset = beanToCopy.getFixingDateOffset(); this.maturityDateOffset = beanToCopy.getMaturityDateOffset(); }
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_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); }
@Override public Function<LocalDate, FxIndexObservation> resolve(ReferenceData refData) { HolidayCalendar fixingCal = fixingCalendar.resolve(refData); DateAdjuster maturityAdj = maturityDateOffset.resolve(refData); return fixingDate -> create(fixingDate, fixingCal, maturityAdj); }
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_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)); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 3373707: // name return ((ImmutableFxIndex) bean).getName(); case 1005147787: // currencyPair return ((ImmutableFxIndex) bean).getCurrencyPair(); case 394230283: // fixingCalendar return ((ImmutableFxIndex) bean).getFixingCalendar(); case 873743726: // fixingDateOffset return ((ImmutableFxIndex) bean).getFixingDateOffset(); case 1574797394: // maturityDateOffset return ((ImmutableFxIndex) bean).getMaturityDateOffset(); } return super.propertyGet(bean, propertyName, quiet); }
LocalTime time = document.parseTime(sourceEl.getChild("fixingTime").getChild("hourMinuteTime")); // required for our model HolidayCalendarId calendar = document.parseBusinessCenter(sourceEl.getChild("fixingTime").getChild("businessCenter")); FxIndex index = ImmutableFxIndex.builder() .name(primarySource + "/" + primaryPage + "/" + time) .currencyPair(CurrencyPair.of(curr1, curr2))