public ForwardRateAgreement(DateTime startDate, double parRate, FloatRateIndex rateIndex, SwapPayReceiveType payRec, FraDiscountingType fraType, string forecastCurve, string discountCurve) { StartDate = startDate; ResetDate = StartDate.AddPeriod(RollType.P, rateIndex.HolidayCalendars, rateIndex.FixingOffset); EndDate = new TenorDateRelative(rateIndex.ResetTenor); RateIndex = rateIndex; ParRate = parRate; Basis = rateIndex.DayCountBasis; PayRec = payRec; FraLeg = new GenericSwapLeg(StartDate, EndDate.Date(StartDate, rateIndex.RollConvention, rateIndex.HolidayCalendars), rateIndex.HolidayCalendars, rateIndex.Currency, rateIndex.ResetTenor, Basis) { FixedRateOrMargin = (decimal)ParRate }; FlowScheduleFra = FraLeg.GenerateSchedule(); FraLeg.FixedRateOrMargin = (decimal)ParRate; FraLeg.LegType = SwapLegType.Fra; FlowScheduleFra.Flows[0].SettleDate = StartDate; ForecastCurve = forecastCurve; DiscountCurve = discountCurve; FraType = fraType; PillarDate = FlowScheduleFra.Flows[0].AccrualPeriodEnd; }
public ForwardRateAgreement(DateTime valDate, string fraCode, double parRate, FloatRateIndex rateIndex, SwapPayReceiveType payRec, FraDiscountingType fraType, string forecastCurve, string discountCurve) { var code = fraCode.ToUpper().Split('X'); StartDate = valDate.AddPeriod(rateIndex.RollConvention, rateIndex.HolidayCalendars, new Frequency(code[0] + "M")); ResetDate = StartDate.AddPeriod(RollType.P, rateIndex.HolidayCalendars, rateIndex.FixingOffset); EndDate = new TenorDateRelative(rateIndex.ResetTenor); ParRate = parRate; Basis = rateIndex.DayCountBasis; PayRec = payRec; FraLeg = new GenericSwapLeg(StartDate, EndDate.Date(StartDate, rateIndex.RollConvention, rateIndex.HolidayCalendars), rateIndex.HolidayCalendars, rateIndex.Currency, rateIndex.ResetTenor, Basis) { FixedRateOrMargin = (decimal)ParRate }; FlowScheduleFra = FraLeg.GenerateSchedule(); FraLeg.FixedRateOrMargin = (decimal)ParRate; FraLeg.LegType = SwapLegType.Fra; FlowScheduleFra.Flows[0].SettleDate = StartDate; ForecastCurve = forecastCurve; DiscountCurve = discountCurve; FraType = fraType; }