public ImmutableList <RateAccrualPeriod> createAccrualPeriods(Schedule accrualSchedule, Schedule paymentSchedule, ReferenceData refData) { // avoid null stub definitions if there are stubs FixedRateStubCalculation initialStub = firstNonNull(this.initialStub, FixedRateStubCalculation.NONE); FixedRateStubCalculation finalStub = firstNonNull(this.finalStub, FixedRateStubCalculation.NONE); Optional <SchedulePeriod> scheduleInitialStub = accrualSchedule.InitialStub; Optional <SchedulePeriod> scheduleFinalStub = accrualSchedule.FinalStub; // resolve data by schedule DoubleArray resolvedRates = rate.resolveValues(accrualSchedule); // build accrual periods ImmutableList.Builder <RateAccrualPeriod> accrualPeriods = ImmutableList.builder(); for (int i = 0; i < accrualSchedule.size(); i++) { SchedulePeriod period = accrualSchedule.getPeriod(i); double yearFraction = period.yearFraction(dayCount, accrualSchedule); // handle stubs RateComputation rateComputation; if (scheduleInitialStub.Present && scheduleInitialStub.get() == period) { rateComputation = initialStub.createRateComputation(resolvedRates.get(i)); } else if (scheduleFinalStub.Present && scheduleFinalStub.get() == period) { rateComputation = finalStub.createRateComputation(resolvedRates.get(i)); } else { rateComputation = FixedRateComputation.of(resolvedRates.get(i)); } accrualPeriods.add(new RateAccrualPeriod(period, yearFraction, rateComputation)); } return(accrualPeriods.build()); }
public virtual void test_createRateComputation_knownAmount() { FixedRateStubCalculation test = FixedRateStubCalculation.ofKnownAmount(GBP_P1000); assertEquals(test.createRateComputation(3d), KnownAmountRateComputation.of(GBP_P1000)); }
public virtual void test_createRateComputation_fixedRate() { FixedRateStubCalculation test = FixedRateStubCalculation.ofFixedRate(0.025d); assertEquals(test.createRateComputation(3d), FixedRateComputation.of(0.025d)); }
//------------------------------------------------------------------------- public virtual void test_createRateComputation_NONE() { FixedRateStubCalculation test = FixedRateStubCalculation.NONE; assertEquals(test.createRateComputation(3d), FixedRateComputation.of(3d)); }