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(); } }
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(); } }
public _GenericSwap.Type type() { _GenericSwap.Type ret = (_GenericSwap.Type)NQuantLibcPINVOKE.GenericSwap_type(swigCPtr); if (NQuantLibcPINVOKE.SWIGPendingException.Pending) { throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }
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 }