private ResolvedCms(ResolvedCmsLeg cmsLeg, ResolvedSwapLeg payLeg)
 {
     JodaBeanUtils.notNull(cmsLeg, "cmsLeg");
     this.cmsLeg = cmsLeg;
     this.payLeg = payLeg;
     validate();
 }
示例#2
0
        public virtual void test_builder_multiCurrencyIndex()
        {
            CmsPeriod period3 = CmsPeriodTest.sut2();

            assertThrowsIllegalArg(() => ResolvedCmsLeg.builder().payReceive(RECEIVE).cmsPeriods(PERIOD_1, period3).build());
            CmsPeriod period4 = CmsPeriodTest.sutCoupon();

            assertThrowsIllegalArg(() => ResolvedCmsLeg.builder().payReceive(RECEIVE).cmsPeriods(PERIOD_1, period4).build());
        }
 public override bool Equals(object obj)
 {
     if (obj == this)
     {
         return(true);
     }
     if (obj != null && obj.GetType() == this.GetType())
     {
         ResolvedCmsLeg other = (ResolvedCmsLeg)obj;
         return(JodaBeanUtils.equal(payReceive, other.payReceive) && JodaBeanUtils.equal(cmsPeriods, other.cmsPeriods));
     }
     return(false);
 }
示例#4
0
        public virtual void test_resolve()
        {
            CmsLeg         baseFloor     = CmsLeg.builder().floorSchedule(FLOOR).index(INDEX).notional(NOTIONAL).payReceive(PAY).paymentSchedule(SCHEDULE_EUR).build();
            ResolvedCmsLeg resolvedFloor = baseFloor.resolve(REF_DATA);
            LocalDate      end1          = LocalDate.of(2016, 10, 21);
            LocalDate      fixing1       = EUR_EURIBOR_6M.calculateFixingFromEffective(START, REF_DATA);
            LocalDate      fixing2       = EUR_EURIBOR_6M.calculateFixingFromEffective(end1, REF_DATA);
            LocalDate      fixing3       = EUR_EURIBOR_6M.calculateFixingFromEffective(END, REF_DATA);
            LocalDate      endDate       = SCHEDULE_EUR.calculatedEndDate().adjusted(REF_DATA);

            CmsPeriod period1 = CmsPeriod.builder().currency(EUR).floorlet(FLOOR.InitialValue).notional(-NOTIONAL.InitialValue).index(INDEX).startDate(START).endDate(end1).unadjustedStartDate(START).unadjustedEndDate(end1).fixingDate(fixing1).paymentDate(end1).yearFraction(EUR_EURIBOR_6M.DayCount.yearFraction(START, end1)).dayCount(EUR_EURIBOR_6M.DayCount).underlyingSwap(createUnderlyingSwap(fixing1)).build();
            CmsPeriod period2 = CmsPeriod.builder().currency(EUR).floorlet(FLOOR.Steps[0].Value.ModifyingValue).notional(-NOTIONAL.Steps[0].Value.ModifyingValue).index(INDEX).startDate(end1).endDate(endDate).unadjustedStartDate(end1).unadjustedEndDate(END).fixingDate(fixing2).paymentDate(endDate).yearFraction(EUR_EURIBOR_6M.DayCount.yearFraction(end1, endDate)).dayCount(EUR_EURIBOR_6M.DayCount).underlyingSwap(createUnderlyingSwap(fixing2)).build();

            assertEquals(resolvedFloor.Currency, EUR);
            assertEquals(resolvedFloor.StartDate, baseFloor.StartDate.adjusted(REF_DATA));
            assertEquals(resolvedFloor.EndDate, baseFloor.EndDate.adjusted(REF_DATA));
            assertEquals(resolvedFloor.Index, INDEX);
            assertEquals(resolvedFloor.PayReceive, PAY);
            assertEquals(resolvedFloor.CmsPeriods.size(), 2);
            assertEquals(resolvedFloor.CmsPeriods.get(0), period1);
            assertEquals(resolvedFloor.CmsPeriods.get(1), period2);

            CmsLeg         baseFloorEnd     = CmsLeg.builder().floorSchedule(FLOOR).fixingRelativeTo(FixingRelativeTo.PERIOD_END).index(INDEX).notional(NOTIONAL).payReceive(PAY).paymentSchedule(SCHEDULE_EUR).build();
            ResolvedCmsLeg resolvedFloorEnd = baseFloorEnd.resolve(REF_DATA);
            CmsPeriod      period1End       = CmsPeriod.builder().currency(EUR).floorlet(FLOOR.InitialValue).notional(-NOTIONAL.InitialValue).index(INDEX).startDate(START).endDate(end1).unadjustedStartDate(START).unadjustedEndDate(end1).fixingDate(fixing2).paymentDate(end1).yearFraction(EUR_EURIBOR_6M.DayCount.yearFraction(START, end1)).dayCount(EUR_EURIBOR_6M.DayCount).underlyingSwap(createUnderlyingSwap(fixing2)).build();
            CmsPeriod      period2End       = CmsPeriod.builder().currency(EUR).floorlet(FLOOR.Steps[0].Value.ModifyingValue).notional(-NOTIONAL.Steps[0].Value.ModifyingValue).index(INDEX).startDate(end1).endDate(endDate).unadjustedStartDate(end1).unadjustedEndDate(END).fixingDate(fixing3).paymentDate(endDate).yearFraction(EUR_EURIBOR_6M.DayCount.yearFraction(end1, endDate)).dayCount(EUR_EURIBOR_6M.DayCount).underlyingSwap(createUnderlyingSwap(fixing3)).build();

            assertEquals(resolvedFloorEnd.Currency, EUR);
            assertEquals(resolvedFloorEnd.StartDate, baseFloor.StartDate.adjusted(REF_DATA));
            assertEquals(resolvedFloorEnd.EndDate, baseFloor.EndDate.adjusted(REF_DATA));
            assertEquals(resolvedFloorEnd.Index, INDEX);
            assertEquals(resolvedFloorEnd.PayReceive, PAY);
            assertEquals(resolvedFloorEnd.CmsPeriods.size(), 2);
            assertEquals(resolvedFloorEnd.CmsPeriods.get(0), period1End);
            assertEquals(resolvedFloorEnd.CmsPeriods.get(1), period2End);

            CmsLeg         baseCap     = CmsLeg.builder().index(INDEX).capSchedule(CAP).notional(NOTIONAL).payReceive(PAY).paymentSchedule(SCHEDULE_EUR).paymentDateOffset(PAYMENT_OFFSET).build();
            ResolvedCmsLeg resolvedCap = baseCap.resolve(REF_DATA);
            CmsPeriod      periodCap1  = CmsPeriod.builder().currency(EUR).notional(-NOTIONAL.InitialValue).index(INDEX).caplet(CAP.InitialValue).startDate(START).endDate(end1).unadjustedStartDate(START).unadjustedEndDate(end1).fixingDate(fixing1).paymentDate(PAYMENT_OFFSET.adjust(end1, REF_DATA)).yearFraction(EUR_EURIBOR_6M.DayCount.yearFraction(START, end1)).dayCount(EUR_EURIBOR_6M.DayCount).underlyingSwap(createUnderlyingSwap(fixing1)).build();
            CmsPeriod      periodCap2  = CmsPeriod.builder().currency(EUR).notional(-NOTIONAL.Steps[0].Value.ModifyingValue).index(INDEX).caplet(CAP.InitialValue).startDate(end1).endDate(endDate).unadjustedStartDate(end1).unadjustedEndDate(END).fixingDate(fixing2).paymentDate(PAYMENT_OFFSET.adjust(endDate, REF_DATA)).yearFraction(EUR_EURIBOR_6M.DayCount.yearFraction(end1, endDate)).dayCount(EUR_EURIBOR_6M.DayCount).underlyingSwap(createUnderlyingSwap(fixing2)).build();

            assertEquals(resolvedCap.Currency, EUR);
            assertEquals(resolvedCap.StartDate, baseCap.StartDate.adjusted(REF_DATA));
            assertEquals(resolvedCap.EndDate, baseCap.EndDate.adjusted(REF_DATA));
            assertEquals(resolvedCap.Index, INDEX);
            assertEquals(resolvedCap.PayReceive, PAY);
            assertEquals(resolvedCap.CmsPeriods.size(), 2);
            assertEquals(resolvedCap.CmsPeriods.get(0), periodCap1);
            assertEquals(resolvedCap.CmsPeriods.get(1), periodCap2);
        }
示例#5
0
        public virtual void test_builder()
        {
            ResolvedCmsLeg test = sut();

            assertEquals(test.CmsPeriods.size(), 2);
            assertEquals(test.CmsPeriods.get(0), PERIOD_1);
            assertEquals(test.CmsPeriods.get(1), PERIOD_2);
            assertEquals(test.Currency, EUR);
            assertEquals(test.StartDate, PERIOD_1.StartDate);
            assertEquals(test.EndDate, PERIOD_2.EndDate);
            assertEquals(test.Index, PERIOD_1.Index);
            assertEquals(test.UnderlyingIndex, PERIOD_1.Index.Template.Convention.FloatingLeg.Index);
            assertEquals(test.PayReceive, RECEIVE);
        }
            public override Builder set(string propertyName, object newValue)
            {
                switch (propertyName.GetHashCode())
                {
                case -1356515323:         // cmsLeg
                    this.cmsLeg = (ResolvedCmsLeg)newValue;
                    break;

                case -995239866:         // payLeg
                    this.payLeg = (ResolvedSwapLeg)newValue;
                    break;

                default:
                    throw new NoSuchElementException("Unknown property: " + propertyName);
                }
                return(this);
            }
 /// <summary>
 /// Obtains an instance from a CMS leg and a pay leg.
 /// </summary>
 /// <param name="cmsLeg">  the CMS leg </param>
 /// <param name="payLeg">  the pay leg </param>
 /// <returns> the CMS </returns>
 public static ResolvedCms of(ResolvedCmsLeg cmsLeg, ResolvedSwapLeg payLeg)
 {
     ArgChecker.notNull(cmsLeg, "cmsLeg");
     ArgChecker.notNull(payLeg, "payLeg");
     return(new ResolvedCms(cmsLeg, payLeg));
 }
 //-------------------------------------------------------------------------
 /// <summary>
 /// Obtains an instance from a CMS leg with no pay leg.
 /// <para>
 /// The pay leg is absent in the resulting CMS.
 ///
 /// </para>
 /// </summary>
 /// <param name="cmsLeg">  the CMS leg </param>
 /// <returns> the CMS </returns>
 public static ResolvedCms of(ResolvedCmsLeg cmsLeg)
 {
     return(new ResolvedCms(cmsLeg, null));
 }
示例#9
0
 internal static ResolvedCmsLeg sut2()
 {
     return(ResolvedCmsLeg.builder().payReceive(PAY).cmsPeriods(CmsLegTest.sutFloor().resolve(REF_DATA).CmsPeriods).build());
 }
示例#10
0
 //-------------------------------------------------------------------------
 internal static ResolvedCmsLeg sut()
 {
     return(ResolvedCmsLeg.builder().payReceive(RECEIVE).cmsPeriods(PERIOD_1, PERIOD_2).build());
 }