Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        public IrSwap(DateTime startDate, Frequency swapTenor, FloatRateIndex rateIndex, double parRate,
                      SwapPayReceiveType swapType, string forecastCurve, string discountCurve)
        {
            SwapTenor      = swapTenor;
            ResetFrequency = rateIndex.ResetTenor;
            StartDate      = startDate;
            EndDate        = StartDate.AddPeriod(rateIndex.RollConvention, rateIndex.HolidayCalendars, SwapTenor);
            ParRate        = parRate;
            BasisFloat     = rateIndex.DayCountBasis;
            BasisFixed     = rateIndex.DayCountBasisFixed;
            SwapType       = swapType;

            FixedLeg = new GenericSwapLeg(StartDate, swapTenor, rateIndex.HolidayCalendars, rateIndex.Currency,
                                          ResetFrequency, BasisFixed)
            {
                FixedRateOrMargin = (decimal)parRate,
                LegType           = SwapLegType.Fixed,
                Nominal           = 1e6M * (swapType == SwapPayReceiveType.Payer ? -1.0M : 1.0M)
            };
            FloatLeg = new GenericSwapLeg(StartDate, swapTenor, rateIndex.HolidayCalendars, rateIndex.Currency,
                                          ResetFrequency, BasisFloat)
            {
                FixedRateOrMargin = 0.0M,
                LegType           = SwapLegType.Float,
                Nominal           = 1e6M * (swapType == SwapPayReceiveType.Payer ? 1.0M : -1.0M)
            };
            FlowScheduleFixed = FixedLeg.GenerateSchedule();
            FlowScheduleFloat = FloatLeg.GenerateSchedule();

            ResetDates = FlowScheduleFloat.Flows.Select(x => x.FixingDateStart).ToArray();

            ForecastCurve = forecastCurve;
            DiscountCurve = discountCurve;
        }
Exemplo n.º 3
0
        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;
        }