コード例 #1
0
 public GenericSwap(_GenericSwap.Type type, DoubleVector firstLegNominals, Schedule firstLegResetSchedule, Schedule firstLegPaymentSchedule, double firstLegRate, DayCounter firstLegDayCount, DoubleVector secondLegNominals, Schedule secondLegResetSchedule, Schedule secondLegPaymentSchedule, IborIndex secondLegIndex, DayCounter secondLegDayCount, double secondLegSpread, bool arithmeticAveragedCoupon) : this(NQuantLibcPINVOKE.new_GenericSwap__SWIG_0((int)type, DoubleVector.getCPtr(firstLegNominals), Schedule.getCPtr(firstLegResetSchedule), Schedule.getCPtr(firstLegPaymentSchedule), firstLegRate, DayCounter.getCPtr(firstLegDayCount), DoubleVector.getCPtr(secondLegNominals), Schedule.getCPtr(secondLegResetSchedule), Schedule.getCPtr(secondLegPaymentSchedule), IborIndex.getCPtr(secondLegIndex), DayCounter.getCPtr(secondLegDayCount), secondLegSpread, arithmeticAveragedCoupon), true)
 {
     if (NQuantLibcPINVOKE.SWIGPendingException.Pending)
     {
         throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
     }
 }
コード例 #2
0
 public GenericSwap(_GenericSwap.Type type, DoubleVector firstLegNominals, Schedule firstLegResetSchedule, Schedule firstLegPaymentSchedule, IborIndex firstLegIndex, DayCounter firstLegDayCount, DoubleVector secondLegNominals, Schedule secondLegResetSchedule, Schedule secondLegPaymentSchedule, IborIndex secondLegIndex, DayCounter secondLegDayCount) : this(NQuantLibcPINVOKE.new_GenericSwap__SWIG_6((int)type, DoubleVector.getCPtr(firstLegNominals), Schedule.getCPtr(firstLegResetSchedule), Schedule.getCPtr(firstLegPaymentSchedule), IborIndex.getCPtr(firstLegIndex), DayCounter.getCPtr(firstLegDayCount), DoubleVector.getCPtr(secondLegNominals), Schedule.getCPtr(secondLegResetSchedule), Schedule.getCPtr(secondLegPaymentSchedule), IborIndex.getCPtr(secondLegIndex), DayCounter.getCPtr(secondLegDayCount)), true)
 {
     if (NQuantLibcPINVOKE.SWIGPendingException.Pending)
     {
         throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
     }
 }
コード例 #3
0
 public _GenericSwap.Type type()
 {
     _GenericSwap.Type ret = (_GenericSwap.Type)NQuantLibcPINVOKE.GenericSwap_type(swigCPtr);
     if (NQuantLibcPINVOKE.SWIGPendingException.Pending)
     {
         throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
     }
     return(ret);
 }
コード例 #4
0
        public void ConstructSwap(IborIndex idx1 = null, IborIndex idx2 = null)
        {
            _GenericSwap.Type   type    = SwapType == "Payer" ? _GenericSwap.Type.Payer : _GenericSwap.Type.Receiver;
            EliteQuant.Calendar cal_gbp = new EliteQuant.UnitedKingdom(EliteQuant.UnitedKingdom.Market.Exchange);
            bool hasois = SecondLegIndex.Contains("OIS") ? true : false;            // OIS is only in FIXED-OIS pair

            if (IsScheduleGiven)
            {
                //************************** First Leg *******************************
                DoubleVector notional1 = new DoubleVector();
                foreach (var nl in FirstLegNotionals)
                {
                    notional1.Add(nl);
                }
                DateVector sch1 = new DateVector();
                foreach (var dt in FirstLegSchedules)
                {
                    sch1.Add(EliteQuant.EQConverter.DateTimeToDate(EliteQuant.EQConverter.StringToDateTime(dt)));
                }

                Calendar cal1 = EliteQuant.EQConverter.ConvertObject <Calendar>(FirstLegCalendar);
                if (!hasois)
                {
                    cal1 = new EliteQuant.JointCalendar(cal_gbp, cal1, EliteQuant.JointCalendarRule.JoinHolidays);
                }

                DayCounter            dc1  = EliteQuant.EQConverter.ConvertObject <DayCounter>(FirstLegDayCounter);
                BusinessDayConvention bdc1 = EliteQuant.EQConverter.ConvertObject <BusinessDayConvention>(FirstLegConvention);
                Schedule Schedule1         = new Schedule(sch1, cal1, bdc1);

                //************************** Second Leg *******************************
                DoubleVector notional2 = new DoubleVector();
                foreach (var nl in SecondLegNotionals)
                {
                    notional2.Add(nl);
                }
                DateVector sch2 = new DateVector();
                foreach (var dt in SecondLegSchedules)
                {
                    sch2.Add(EliteQuant.EQConverter.DateTimeToDate(EliteQuant.EQConverter.StringToDateTime(dt)));
                }

                Calendar cal2 = EliteQuant.EQConverter.ConvertObject <Calendar>(SecondLegCalendar);
                if (!hasois)
                {
                    cal2 = new EliteQuant.JointCalendar(cal_gbp, cal2, EliteQuant.JointCalendarRule.JoinHolidays);
                }

                DayCounter            dc2  = EliteQuant.EQConverter.ConvertObject <DayCounter>(SecondLegDayCounter);
                BusinessDayConvention bdc2 = EliteQuant.EQConverter.ConvertObject <BusinessDayConvention>(SecondLegConvention);
                Schedule Schedule2         = new Schedule(sch2, cal2, bdc2);

                //************************** swap ******************************
                if (FirstLegIndex == "FIXED")
                {
                    if (hasois)
                    {
                        eqswap_ = new GenericSwap(type, notional2, Schedule2, Schedule2, FirstLegSpread, dc2,
                                                  notional2, Schedule2, Schedule2, idx2, dc2, SecondLegSpread, hasois);
                    }
                    else
                    {
                        eqswap_ = new GenericSwap(type, notional1, Schedule1, Schedule1, FirstLegSpread, dc1,
                                                  notional2, Schedule2, Schedule2, idx2, dc2, SecondLegSpread, hasois);
                    }
                }
                else
                {
                    eqswap_ = new GenericSwap(type, notional1, Schedule1, Schedule1, idx1, dc1,
                                              notional2, Schedule2, Schedule2, idx2, dc2, 0.0, SecondLegSpread, hasois);
                }
            }  // end of schedule given swap construction
            else
            {
                //************************** First Leg *******************************
                Calendar cal1 = EliteQuant.EQConverter.ConvertObject <Calendar>(FirstLegCalendar);
                if (!hasois)
                {
                    cal1 = new EliteQuant.JointCalendar(cal_gbp, cal1, EliteQuant.JointCalendarRule.JoinHolidays);
                }
                DayCounter            dc1  = EliteQuant.EQConverter.ConvertObject <DayCounter>(FirstLegDayCounter);
                BusinessDayConvention bdc1 = EliteQuant.EQConverter.ConvertObject <BusinessDayConvention>(FirstLegConvention);
                Date tradedate             = EliteQuant.EQConverter.DateTimeToDate(EliteQuant.EQConverter.StringToDateTime(TradeDate));
                tradedate = cal1.adjust(tradedate);

                Date startdate;
                if (string.IsNullOrEmpty(SettlementDate))
                {
                    startdate = cal1.advance(tradedate, FixingDays, TimeUnit.Days);
                }
                else
                {
                    startdate = EliteQuant.EQConverter.DateTimeToDate(EliteQuant.EQConverter.StringToDateTime(SettlementDate));
                }

                Date terminatedate;
                if (string.IsNullOrEmpty(MaturityDate))
                {
                    // then tenor should not be zero
                    Period tenor = EliteQuant.EQConverter.ConvertObject <Period>(Tenor);
                    //Calendar nullcal = new NullCalendar();
                    terminatedate = cal1.advance(startdate, tenor);
                }
                else
                {
                    terminatedate = EliteQuant.EQConverter.DateTimeToDate(EliteQuant.EQConverter.StringToDateTime(MaturityDate));
                }

                DateGeneration.Rule dgr1 = EliteQuant.EQConverter.ConvertObject <DateGeneration.Rule>(FirstLegDateGenerationRule);

                Frequency freq1     = EliteQuant.EQConverter.ConvertObject <Frequency>(FirstLegFrequency);
                Schedule  schedule1 = new Schedule(startdate, terminatedate, new Period(freq1), cal1,
                                                   bdc1, bdc1, dgr1, FirstLegEOM);

                //************************** Second Leg *******************************
                Calendar cal2 = EliteQuant.EQConverter.ConvertObject <Calendar>(SecondLegCalendar);
                if (!hasois)
                {
                    cal2 = new EliteQuant.JointCalendar(cal_gbp, cal2, EliteQuant.JointCalendarRule.JoinHolidays);
                }
                DayCounter            dc2  = EliteQuant.EQConverter.ConvertObject <DayCounter>(SecondLegDayCounter);
                BusinessDayConvention bdc2 = EliteQuant.EQConverter.ConvertObject <BusinessDayConvention>(SecondLegConvention);


                DateGeneration.Rule dgr2 = EliteQuant.EQConverter.ConvertObject <DateGeneration.Rule>(SecondLegDateGenerationRule);

                Frequency freq2     = EliteQuant.EQConverter.ConvertObject <Frequency>(SecondLegFrequency);
                Schedule  schedule2 = new Schedule(startdate, terminatedate, new Period(freq2), cal2,
                                                   bdc2, bdc2, dgr2, SecondLegEOM);

                //************************** swap ******************************
                DoubleVector notional1 = new DoubleVector();
                DoubleVector notional2 = new DoubleVector();
                foreach (var nl in FirstLegNotionals)
                {
                    notional1.Add(nl);
                }
                foreach (var nl in SecondLegNotionals)
                {
                    notional2.Add(nl);
                }

                if (FirstLegIndex == "FIXED")
                {
                    if (hasois)
                    {
                        eqswap_ = new GenericSwap(type, notional2, schedule2, schedule2, FirstLegSpread, dc2,
                                                  notional2, schedule2, schedule2, idx2, dc2, SecondLegSpread, hasois);
                    }
                    else
                    {
                        eqswap_ = new GenericSwap(type, notional1, schedule1, schedule1, FirstLegSpread, dc1,
                                                  notional2, schedule2, schedule2, idx2, dc2, SecondLegSpread, hasois);
                    }
                }
                else
                {
                    eqswap_ = new GenericSwap(type, notional1, schedule1, schedule1, idx1, dc1,
                                              notional2, schedule2, schedule2, idx2, dc2, 0.0, SecondLegSpread, hasois);
                }
            } // end of schedule not given swap construction
        }