@Override @DerivedProperty public Currency getCurrency() { return notionalSchedule.getCurrency(); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(NotionalSchedule beanToCopy) { this.currency = beanToCopy.getCurrency(); this.fxReset = beanToCopy.fxReset; this.amount = beanToCopy.getAmount(); this.initialExchange = beanToCopy.isInitialExchange(); this.intermediateExchange = beanToCopy.isIntermediateExchange(); this.finalExchange = beanToCopy.isFinalExchange(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 575402001: // currency return ((NotionalSchedule) bean).getCurrency(); case -449555555: // fxReset return ((NotionalSchedule) bean).fxReset; case -1413853096: // amount return ((NotionalSchedule) bean).getAmount(); case -511982201: // initialExchange return ((NotionalSchedule) bean).isInitialExchange(); case -2147112388: // intermediateExchange return ((NotionalSchedule) bean).isIntermediateExchange(); case -1048781383: // finalExchange return ((NotionalSchedule) bean).isFinalExchange(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_of_CurrencyAmount() { NotionalSchedule test = NotionalSchedule.of(CA_GBP_1000); assertEquals(test.getCurrency(), GBP); assertEquals(test.getAmount(), ValueSchedule.of(1000d)); assertEquals(test.getFxReset(), Optional.empty()); assertEquals(test.isInitialExchange(), false); assertEquals(test.isIntermediateExchange(), false); assertEquals(test.isFinalExchange(), false); }
public void test_of_CurrencyAndAmount() { NotionalSchedule test = NotionalSchedule.of(GBP, 1000d); assertEquals(test.getCurrency(), GBP); assertEquals(test.getAmount(), ValueSchedule.of(1000d)); assertEquals(test.getFxReset(), Optional.empty()); assertEquals(test.isInitialExchange(), false); assertEquals(test.isIntermediateExchange(), false); assertEquals(test.isFinalExchange(), false); }
public void test_of_CurrencyAndValueSchedule() { ValueSchedule valueSchedule = ValueSchedule.of(1000d, ValueStep.of(1, ValueAdjustment.ofReplace(2000d))); NotionalSchedule test = NotionalSchedule.of(GBP, valueSchedule); assertEquals(test.getCurrency(), GBP); assertEquals(test.getAmount(), valueSchedule); assertEquals(test.getFxReset(), Optional.empty()); assertEquals(test.isInitialExchange(), false); assertEquals(test.isIntermediateExchange(), false); assertEquals(test.isFinalExchange(), false); }
private IntFunction<CurrencyAmount> getNotionalSupplierFunction( NotionalSchedule notionalSchedule, DoubleArray notionals, PayReceive payReceive) { boolean hasInitialFxNotional = notionalSchedule.getFxReset().isPresent() && notionalSchedule.getFxReset().get().getInitialNotionalValue().isPresent(); return index -> { if (hasInitialFxNotional && index == 0) { FxResetCalculation fxReset = notionalSchedule.getFxReset().get(); //If Fx reset leg with fixed initial notional then return the fixed amount in the payment currency double notional = payReceive.normalize(fxReset.getInitialNotionalValue().getAsDouble()); Currency currency = fxReset.getIndex().getCurrencyPair().other(fxReset.getReferenceCurrency()); return CurrencyAmount.of(currency, notional); } else { double notional = payReceive.normalize(notionals.get(index)); return CurrencyAmount.of(notionalSchedule.getCurrency(), notional); } }; }
public void test_builder_FxResetSetsFlags() { FxResetCalculation fxReset = FxResetCalculation.builder() .referenceCurrency(GBP) .index(GBP_USD_WM) .fixingDateOffset(DaysAdjustment.ofBusinessDays(-2, GBLO)) .build(); NotionalSchedule test = NotionalSchedule.builder() .currency(USD) .amount(ValueSchedule.of(2000d)) .intermediateExchange(true) .finalExchange(true) .fxReset(fxReset) .build(); assertEquals(test.getCurrency(), USD); assertEquals(test.getAmount(), ValueSchedule.of(2000d)); assertEquals(test.getFxReset(), Optional.of(fxReset)); assertEquals(test.isInitialExchange(), false); assertEquals(test.isIntermediateExchange(), true); assertEquals(test.isFinalExchange(), true); }
private static RateCalculationSwapLeg parseLeg( CsvRow row, String leg, FloatingRateIndex index, DayCount defaultFixedLegDayCount) { PayReceive payReceive = LoaderUtils.parsePayReceive(getValue(row, leg, DIRECTION_FIELD)); PeriodicSchedule accrualSch = parseAccrualSchedule(row, leg); PaymentSchedule paymentSch = parsePaymentSchedule(row, leg, accrualSch.getFrequency()); NotionalSchedule notionalSch = parseNotionalSchedule(row, leg); RateCalculation calc = parseRateCalculation( row, leg, index, defaultFixedLegDayCount, accrualSch.getBusinessDayAdjustment(), notionalSch.getCurrency()); return RateCalculationSwapLeg.builder() .payReceive(payReceive) .accrualSchedule(accrualSch) .paymentSchedule(paymentSch) .notionalSchedule(notionalSch) .calculation(calc) .build(); }