/** * Gets the Ibor index. * <p> * The rate to be paid is based on this index * It will be a well known market index such as 'GBP-LIBOR-3M'. * * @return the Ibor index */ public IborIndex getIndex() { return calculation.getIndex(); }
/** * Returns the set of indices referred to by the cap/floor. * <p> * A cap/floor will typically refer to one index, such as 'GBP-LIBOR-3M'. * Calling this method will return the complete list of indices. * * @return the set of indices referred to by this cap/floor */ public ImmutableSet<Index> allIndices() { ImmutableSet.Builder<Index> builder = ImmutableSet.builder(); builder.add(capFloorLeg.getCalculation().getIndex()); if (payLeg != null) { payLeg.collectIndices(builder); } return builder.build(); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(IborRateCalculation beanToCopy) { this.dayCount = beanToCopy.getDayCount(); this.index = beanToCopy.getIndex(); this.resetPeriods = beanToCopy.resetPeriods; this.fixingRelativeTo = beanToCopy.getFixingRelativeTo(); this.fixingDateOffset = beanToCopy.getFixingDateOffset(); this.negativeRateMethod = beanToCopy.getNegativeRateMethod(); this.firstRegularRate = beanToCopy.firstRegularRate; this.firstRate = beanToCopy.firstRate; this.firstFixingDateOffset = beanToCopy.firstFixingDateOffset; this.initialStub = beanToCopy.initialStub; this.finalStub = beanToCopy.finalStub; this.gearing = beanToCopy.gearing; this.spread = beanToCopy.spread; }
return ((IborRateCalculation) bean).getDayCount(); case 100346066: // index return ((IborRateCalculation) bean).getIndex(); case -1272973693: // resetPeriods return ((IborRateCalculation) bean).resetPeriods;
public void test_of() { IborRateCalculation test = IborRateCalculation.of(GBP_LIBOR_3M); assertEquals(test.getType(), SwapLegType.IBOR); assertEquals(test.getDayCount(), ACT_365F); assertEquals(test.getIndex(), GBP_LIBOR_3M); assertEquals(test.getResetPeriods(), Optional.empty()); assertEquals(test.getFixingRelativeTo(), PERIOD_START); assertEquals(test.getFixingDateOffset(), GBP_LIBOR_3M.getFixingDateOffset()); assertEquals(test.getNegativeRateMethod(), ALLOW_NEGATIVE); assertEquals(test.getFirstRegularRate(), OptionalDouble.empty()); assertEquals(test.getInitialStub(), Optional.empty()); assertEquals(test.getFinalStub(), Optional.empty()); assertEquals(test.getGearing(), Optional.empty()); assertEquals(test.getSpread(), Optional.empty()); }
public void test_builder_ensureDefaults() { IborRateCalculation test = IborRateCalculation.builder() .index(GBP_LIBOR_3M) .build(); assertEquals(test.getDayCount(), ACT_365F); assertEquals(test.getIndex(), GBP_LIBOR_3M); assertEquals(test.getResetPeriods(), Optional.empty()); assertEquals(test.getFixingRelativeTo(), PERIOD_START); assertEquals(test.getFixingDateOffset(), GBP_LIBOR_3M.getFixingDateOffset()); assertEquals(test.getNegativeRateMethod(), ALLOW_NEGATIVE); assertEquals(test.getFirstRegularRate(), OptionalDouble.empty()); assertEquals(test.getInitialStub(), Optional.empty()); assertEquals(test.getFinalStub(), Optional.empty()); assertEquals(test.getGearing(), Optional.empty()); assertEquals(test.getSpread(), Optional.empty()); }
public void test_builder_ensureOptionalDouble() { IborRateCalculation test = IborRateCalculation.builder() .dayCount(ACT_365F) .index(GBP_LIBOR_3M) .fixingDateOffset(MINUS_TWO_DAYS) .firstRegularRate(0.028d) .build(); assertEquals(test.getDayCount(), ACT_365F); assertEquals(test.getIndex(), GBP_LIBOR_3M); assertEquals(test.getResetPeriods(), Optional.empty()); assertEquals(test.getFixingRelativeTo(), PERIOD_START); assertEquals(test.getFixingDateOffset(), MINUS_TWO_DAYS); assertEquals(test.getNegativeRateMethod(), ALLOW_NEGATIVE); assertEquals(test.getFirstRegularRate(), OptionalDouble.of(0.028d)); assertEquals(test.getInitialStub(), Optional.empty()); assertEquals(test.getFinalStub(), Optional.empty()); assertEquals(test.getGearing(), Optional.empty()); assertEquals(test.getSpread(), Optional.empty()); }
@ImmutableConstructor private IborCapFloorLeg( PayReceive payReceive, PeriodicSchedule paymentSchedule, DaysAdjustment paymentDateOffset, Currency currency, ValueSchedule notional, IborRateCalculation calculation, ValueSchedule capSchedule, ValueSchedule floorSchedule) { this.payReceive = ArgChecker.notNull(payReceive, "payReceive"); this.paymentSchedule = ArgChecker.notNull(paymentSchedule, "paymentSchedule"); this.paymentDateOffset = ArgChecker.notNull(paymentDateOffset, "paymentDateOffset"); this.currency = currency != null ? currency : calculation.getIndex().getCurrency(); this.notional = notional; this.calculation = ArgChecker.notNull(calculation, "calculation"); this.capSchedule = capSchedule; this.floorSchedule = floorSchedule; ArgChecker.isTrue(!this.getPaymentSchedule().getStubConvention().isPresent() || this.getPaymentSchedule().getStubConvention().get().equals(StubConvention.NONE), "Stub period is not allowed"); ArgChecker.isFalse(this.getCapSchedule().isPresent() == this.getFloorSchedule().isPresent(), "One of cap schedule and floor schedule should be empty"); ArgChecker.isTrue(this.getCalculation().getIndex().getTenor().getPeriod().equals(this.getPaymentSchedule() .getFrequency().getPeriod()), "Payment frequency period should be the same as index tenor period"); }
String gearing = calc.getGearing().map(g -> " * " + SummarizerUtils.value(g.getInitialValue())).orElse(""); String spread = calc.getSpread().map(s -> " + " + SummarizerUtils.percent(s.getInitialValue())).orElse(""); return calc.getIndex().getName() + gearing + spread;
DateAdjuster fixingDateAdjuster = calculation.getFixingDateOffset().resolve(refData); DateAdjuster paymentDateAdjuster = paymentDateOffset.resolve(refData); Function<LocalDate, IborIndexObservation> obsFn = calculation.getIndex().resolve(refData); ImmutableList.Builder<IborCapletFloorletPeriod> periodsBuild = ImmutableList.builder(); for (int i = 0; i < adjustedSchedule.size(); i++) {