private ResolvedCms(ResolvedCmsLeg cmsLeg, ResolvedSwapLeg payLeg) { JodaBeanUtils.notNull(cmsLeg, "cmsLeg"); this.cmsLeg = cmsLeg; this.payLeg = payLeg; validate(); }
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); }
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); }
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)); }
internal static ResolvedCmsLeg sut2() { return(ResolvedCmsLeg.builder().payReceive(PAY).cmsPeriods(CmsLegTest.sutFloor().resolve(REF_DATA).CmsPeriods).build()); }
//------------------------------------------------------------------------- internal static ResolvedCmsLeg sut() { return(ResolvedCmsLeg.builder().payReceive(RECEIVE).cmsPeriods(PERIOD_1, PERIOD_2).build()); }