///<summary> ///</summary> ///<param name="unadjustedStartDate"></param> ///<param name="unadjustedEndDate"></param> ///<param name="discountingType"></param> ///<param name="dateAdjustmentConvention"></param> ///<param name="businessCenters"></param> ///<returns></returns> public static AdjustableDate ToAdjustableDate(DateTime unadjustedStartDate, DateTime unadjustedEndDate, DiscountingTypeEnum discountingType, string dateAdjustmentConvention, string businessCenters) { return(ToAdjustableDate(GetUnadjustedPaymentDate(unadjustedStartDate, unadjustedEndDate, GetPaymentRelativeTo(discountingType)), dateAdjustmentConvention, businessCenters)); }
public static Calculation CreateFloating(decimal fixedRate, Money notional, FloatingRateIndex floatingRateIndex, Period tenor, DayCountFraction dayCountFraction, DiscountingTypeEnum discountingType) { var calculation = new Calculation { Item = NotionalFactory.Create(notional), compoundingMethod = CompoundingMethodEnum.None, compoundingMethodSpecified = true, dayCountFraction = dayCountFraction, discounting = DiscountingHelper.Create(fixedRate, dayCountFraction, discountingType), Items = new object[] { FloatingRateCalculationHelper.CreateFloating(floatingRateIndex, tenor) } }; return(calculation); }
/// <summary> /// Gets the payment relative to. /// </summary> /// <param name="discountingType">Type of the discounting.</param> /// <returns></returns> public static PayRelativeToEnum GetPaymentRelativeTo(DiscountingTypeEnum discountingType) { var payRelativeTo = PayRelativeToEnum.CalculationPeriodEndDate; switch (discountingType) { case DiscountingTypeEnum.FRA: payRelativeTo = PayRelativeToEnum.CalculationPeriodStartDate; break; case DiscountingTypeEnum.Standard: payRelativeTo = PayRelativeToEnum.CalculationPeriodEndDate; break; } return(payRelativeTo); }
/// <summary> /// Gets the adjusted calculation date schedule. /// </summary> /// <param name="cache">The cache.</param> /// <param name="effectiveDate">The effective date.</param> /// <param name="intervalToTerminationDate">The interval to termination date.</param> /// <param name="periodInterval">The period interval.</param> /// <returns></returns> /// <param name="businessDayAdjustments">The necessary date adjustment details.</param> /// <param name="discountingTypeEnum"></param> /// <param name="nameSpace">The clients namespace</param> public List <PaymentCalculationPeriod> GetAdjustedPaymentCalculationDateSchedule(ICoreCache cache, DateTime effectiveDate, Period intervalToTerminationDate, Period periodInterval, BusinessDayAdjustments businessDayAdjustments, DiscountingTypeEnum discountingTypeEnum, string nameSpace) { var adjustedPaymentCalculationDateScheduleList = new List <PaymentCalculationPeriod>(); List <CalculationPeriod> adjustedDateScheduleList = GetAdjustedCalculationDateSchedule(cache, effectiveDate, intervalToTerminationDate, periodInterval, businessDayAdjustments, nameSpace); foreach (CalculationPeriod period in adjustedDateScheduleList) { var paymentCalculationPeriod = new PaymentCalculationPeriod { adjustedPaymentDate = discountingTypeEnum == DiscountingTypeEnum.Standard ? period.adjustedEndDate : period.adjustedStartDate, adjustedPaymentDateSpecified = true }; var calc = new object[1]; calc[0] = period; paymentCalculationPeriod.Items = calc; adjustedPaymentCalculationDateScheduleList.Add(paymentCalculationPeriod); } return(adjustedPaymentCalculationDateScheduleList); }
public static Discounting Parse(decimal discountingRate, string dayCountFraction, DiscountingTypeEnum discountingTypeEnum) { var discounting = new Discounting { discountingType = discountingTypeEnum, discountRate = discountingRate, discountRateDayCountFraction = DayCountFractionHelper.Parse(dayCountFraction) //discountRateSpecified = true }; return(discounting); }
public static Discounting Create(decimal?discountingRate, DayCountFraction dayCountFraction, DiscountingTypeEnum discountingTypeEnum) { var discounting = new Discounting { discountingType = discountingTypeEnum, discountRateDayCountFraction = dayCountFraction //discountRateSpecified = true }; if (discountingRate != null) { discounting.discountRate = (decimal)discountingRate; } return(discounting); }
public static Discounting Create(decimal discountingRate, DayCountFraction dayCountFraction, DiscountingTypeEnum discountingTypeEnum) { var discounting = new Discounting { discountingType = discountingTypeEnum, discountRate = discountingRate, discountRateDayCountFraction = dayCountFraction //discountRateSpecified = true }; return(discounting); }
public static Calculation CreateFixed(decimal fixedRate, decimal discountRate, Money notional, CompoundingMethodEnum compoundingMethod, DayCountFraction dayCountFraction, DiscountingTypeEnum discountingType) { var calculation = new Calculation { Item = NotionalFactory.Create(notional), compoundingMethod = compoundingMethod, compoundingMethodSpecified = true, dayCountFraction = dayCountFraction, discounting = DiscountingHelper.Create(discountRate, dayCountFraction, discountingType), Items = new object[] { FixedRateScheduleHelper.Create(fixedRate) } }; return(calculation); }
public static Calculation CreateFloating(Money notional, FloatingRateIndex floatingRateIndex, Period tenor, DayCountFraction dayCountFraction, DiscountingTypeEnum discountingType) { var calculation = new Calculation { Item = NotionalFactory.Create(notional), compoundingMethod = CompoundingMethodEnum.None, compoundingMethodSpecified = true, dayCountFraction = dayCountFraction }; var discounting = new Discounting { discountingType = discountingType, discountRateDayCountFraction = dayCountFraction }; calculation.discounting = discounting; calculation.Items = new object[] { FloatingRateCalculationHelper.CreateFloating(floatingRateIndex, tenor) }; return(calculation); }
public Discounting(XmlNode xmlNode) { XmlNodeList discountingTypeNodeList = xmlNode.SelectNodes("discountingType"); if (discountingTypeNodeList.Count > 1 ) { throw new Exception(); } foreach (XmlNode item in discountingTypeNodeList) { if (item.Attributes["href"] != null || item.Attributes["id"] == null) { if (item.Attributes["id"] != null) { discountingTypeIDRef = item.Attributes["id"].Name; DiscountingTypeEnum ob = DiscountingTypeEnum(); IDManager.SetID(discountingTypeIDRef, ob); } else if (item.Attributes.ToString() == "href") { discountingTypeIDRef = item.Attributes["href"].Name; } else { discountingType = new DiscountingTypeEnum(item); } } } XmlNodeList discountRateNodeList = xmlNode.SelectNodes("discountRate"); if (discountRateNodeList.Count > 1 ) { throw new Exception(); } foreach (XmlNode item in discountRateNodeList) { if (item.Attributes["href"] != null || item.Attributes["id"] == null) { if (item.Attributes["id"] != null) { discountRateIDRef = item.Attributes["id"].Name; XsdTypeDecimal ob = XsdTypeDecimal(); IDManager.SetID(discountRateIDRef, ob); } else if (item.Attributes.ToString() == "href") { discountRateIDRef = item.Attributes["href"].Name; } else { discountRate = new XsdTypeDecimal(item); } } } XmlNodeList discountRateDayCountFractionNodeList = xmlNode.SelectNodes("discountRateDayCountFraction"); if (discountRateDayCountFractionNodeList.Count > 1 ) { throw new Exception(); } foreach (XmlNode item in discountRateDayCountFractionNodeList) { if (item.Attributes["href"] != null || item.Attributes["id"] == null) { if (item.Attributes["id"] != null) { discountRateDayCountFractionIDRef = item.Attributes["id"].Name; DayCountFraction ob = DayCountFraction(); IDManager.SetID(discountRateDayCountFractionIDRef, ob); } else if (item.Attributes.ToString() == "href") { discountRateDayCountFractionIDRef = item.Attributes["href"].Name; } else { discountRateDayCountFraction = new DayCountFraction(item); } } } }