Ejemplo n.º 1
0
        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));
        }