Ejemplo n.º 1
0
 ///<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));
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        public static Discounting Create(decimal discountingRate, DayCountFraction dayCountFraction, DiscountingTypeEnum discountingTypeEnum)
        {
            var discounting = new Discounting
            {
                discountingType = discountingTypeEnum,
                discountRate    = discountingRate,
                discountRateDayCountFraction = dayCountFraction
                                               //discountRateSpecified = true
            };

            return(discounting);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
             }
         }
     }
     
 
 }