コード例 #1
0
        /// <summary>
        /// A slightly  ore complicated date scheduler.
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="rollsMetaSchedule"></param>
        /// <param name="backwardGeneration"></param>
        /// <param name="businessDayAdjustments"></param>
        /// <param name="businessCalendar"></param>
        /// <returns></returns>
        public static List <DateTime> GetAdjustedDates3(DateTime startDate, DateTime endDate, List <MetaScheduleItem> rollsMetaSchedule,
                                                        bool backwardGeneration, BusinessDayAdjustments businessDayAdjustments, IBusinessCalendar businessCalendar)
        {
            var unadjustedDates = DatesMetaSchedule.GetUnadjustedDates3(startDate, endDate, rollsMetaSchedule, backwardGeneration);

            return(unadjustedDates.Select(date => AdjustedDateHelper.ToAdjustedDate(businessCalendar, date, businessDayAdjustments)).ToList());
        }
コード例 #2
0
        ///<summary>
        /// Gets the adjusted dates from a provided date schedule.
        ///</summary>
        ///<param name="metaScheduleDefinition"></param>
        ///<param name="startDate"></param>
        ///<param name="businessDayAdjustments"></param>
        ///<param name="businessCalendar"></param>
        ///<returns></returns>
        public static List <DateTime> GetAdjustedDates(List <Triplet <Period, Period, RollConventionEnum> > metaScheduleDefinition,
                                                       DateTime startDate, BusinessDayAdjustments businessDayAdjustments, IBusinessCalendar businessCalendar)
        {
            var unadjustedDates = DatesMetaSchedule.GetUnadjustedDates(metaScheduleDefinition, startDate);

            return(unadjustedDates.Select(date => AdjustedDateHelper.ToAdjustedDate(businessCalendar, date, businessDayAdjustments)).ToList());
        }
コード例 #3
0
        /// <summary>
        /// A simple date scheduler.
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="interval"></param>
        /// <param name="rollConventionEnum"></param>
        /// <param name="backwardGeneration"></param>
        /// <param name="businessDayAdjustments"></param>
        /// <param name="businessCalendar"></param>
        /// <returns></returns>
        public static List <DateTime> GetAdjustedDates2(DateTime startDate, DateTime endDate, Period interval, RollConventionEnum rollConventionEnum,
                                                        bool backwardGeneration, BusinessDayAdjustments businessDayAdjustments, IBusinessCalendar businessCalendar)
        {
            var unadjustedDates = DatesMetaSchedule.GetUnadjustedDates2(startDate, endDate, interval, rollConventionEnum, backwardGeneration);

            return(unadjustedDates.Select(date => AdjustedDateHelper.ToAdjustedDate(businessCalendar, date, businessDayAdjustments)).ToList());
        }
コード例 #4
0
        /// <summary>
        /// Gets a dates schedule.
        /// </summary>
        /// <param name="metaScheduleDefinitionRange"></param>
        /// <param name="startDate"></param>
        /// <param name="calendar"></param>
        /// <param name="businessCentreAsString">This should not be blank.</param>
        /// <param name="businessDayAdjustment">This should not be blank.</param>
        /// <returns></returns>
        public static DateTime[] GetDatesSchedule(List <ThreeStringsRangeItem> metaScheduleDefinitionRange,
                                                  DateTime startDate,
                                                  IBusinessCalendar calendar,
                                                  string businessCentreAsString,
                                                  string businessDayAdjustment)
        {
            var             metaScheduleDefinition = metaScheduleDefinitionRange.Select(item => new Triplet <Period, Period, RollConventionEnum>(PeriodHelper.Parse(item.Value1), PeriodHelper.Parse(item.Value2), RollConventionEnumHelper.Parse(item.Value3))).ToList();
            List <DateTime> resultAsListOfDates;

            if (calendar == null)
            {
                resultAsListOfDates = DatesMetaSchedule.GetUnadjustedDates(metaScheduleDefinition, startDate);
            }
            if (String.IsNullOrEmpty(businessCentreAsString) | String.IsNullOrEmpty(businessDayAdjustment))
            {
                resultAsListOfDates = DatesMetaSchedule.GetUnadjustedDates(metaScheduleDefinition, startDate);
            }
            else
            {
                var businessDayAdjustments = BusinessDayAdjustmentsHelper.Create(businessDayAdjustment, businessCentreAsString);
                resultAsListOfDates = GetAdjustedDates(metaScheduleDefinition, startDate, businessDayAdjustments, calendar);
            }
            var result = resultAsListOfDates.ToArray();

            return(result);
        }
コード例 #5
0
        public void GetUnadjustedDates3Forward()
        {
            DateTime startDate = new DateTime(2008, 04, 10);
            DateTime endDate = new DateTime(2009, 04, 24);

            //Period interval = IntervalHelper.FromMonths(3);
            RollConventionEnum rollConventionEnum = RollConventionEnumHelper.Parse(startDate.Day.ToString());

            List<MetaScheduleItem> rollsMetaSchedule = new List<MetaScheduleItem>();

            MetaScheduleItem item1 = new MetaScheduleItem();
            item1.Period = IntervalHelper.FromMonths(6);
            item1.RollFrequency = IntervalHelper.FromMonths(1);
            item1.RollConvention = rollConventionEnum;
            rollsMetaSchedule.Add(item1);

            MetaScheduleItem item2 = new MetaScheduleItem();
            item2.Period = IntervalHelper.FromMonths(6);
            item2.RollFrequency = IntervalHelper.FromMonths(3);
            item2.RollConvention = rollConventionEnum;
            rollsMetaSchedule.Add(item2);

            List<DateTime> unadjustedDates = DatesMetaSchedule.GetUnadjustedDates3(startDate, endDate, rollsMetaSchedule, false);

            Debug.Print("Meta schedule:");
            //         Debug.Print(ParameterFormatter.FormatObject(ObjectToArrayOfPropertiesConverter.ConvertListToHorizontalArrayRange(rollsMetaSchedule)));

            Debug.Print("Start date: {0}", startDate);
            Debug.Print("End date: {0}", endDate);

            Debug.Print("Schedule:");
            PrintListOfDates(unadjustedDates);
        }
コード例 #6
0
        public void GetUnadjustedDates()
        {
            DateTime startDate = DateTime.Today;
            Debug.Print("Start date: {0}", startDate);

            List<DateTime> unadjustedDates = DatesMetaSchedule.GetUnadjustedDates(DatesScheduleGeneratorTests.GetMetaScheduleDefinition(), startDate);

            PrintListOfDates(unadjustedDates);
        }
コード例 #7
0
        public void GetUnadjustedDates2Forward()
        {
            DateTime startDate = new DateTime(2008, 04, 10);
            DateTime endDate = new DateTime(2009, 04, 24);

            Period interval = IntervalHelper.FromMonths(3);
            RollConventionEnum rollConventionEnum = RollConventionEnumHelper.Parse(startDate.Day.ToString());

            List<DateTime> unadjustedDates = DatesMetaSchedule.GetUnadjustedDates2(startDate, endDate, interval, rollConventionEnum, false);

            PrintListOfDates(unadjustedDates);
        }
コード例 #8
0
        public void GetUnadjustedDatesfromStartToEndDate()
        {
            DateTime startDate = DateTime.Today;
            DateTime endDate = new DateTime(startDate.Year + 15, startDate.Month, startDate.Day);

            Debug.Print("Start date: {0}", startDate);
            Debug.Print("End date: {0}", endDate);

            DateTime[] unadjustedDates = DatesMetaSchedule.GetUnadjustedDates(GetMetaScheduleDefinition2(), startDate, endDate, PeriodHelper.Parse("1Y"), RollConventionEnumHelper.Parse("17"), true);

            PrintListOfDates(new List<DateTime>(unadjustedDates));
        }
コード例 #9
0
        ///<summary>
        ///</summary>
        ///<param name="termsRange"></param>
        ///<param name="metaScheduleDefinitionRange"></param>
        ///<param name="paymentCalendar"></param>
        ///<returns></returns>
        public static List <AmortisingResultItem> GenerateCashflowSchedule(BillsSwapPricer2TermsRange termsRange,
                                                                           List <MetaScheduleRangeItem> metaScheduleDefinitionRange, IBusinessCalendar paymentCalendar)
        {
            RollConventionEnum     rollConventionEnum     = RollConventionEnumHelper.Parse(termsRange.RollDay);
            BusinessDayAdjustments businessDayAdjustments = BusinessDayAdjustmentsHelper.Create(termsRange.DateRollConvention, termsRange.Calendar);
            bool            backwardGeneration            = (termsRange.BuildDates.ToLower() == "backward");
            List <DateTime> adjustedDatesResult;
            List <DateTime> unadjustedDatesResult;

            if (termsRange.RollFrequency.ToLower().Contains("custom"))
            {
                var rollsMetaSchedule = metaScheduleDefinitionRange.Select(item => new MetaScheduleItem
                {
                    RollFrequency = PeriodHelper.Parse(item.RollFrequency), Period = PeriodHelper.Parse(item.Period), RollConvention = RollConventionEnumHelper.Parse(item.RollConvention)
                }).ToList();
                unadjustedDatesResult = DatesMetaSchedule.GetUnadjustedDates3(termsRange.StartDate, termsRange.EndDate,
                                                                              rollsMetaSchedule, backwardGeneration);
                adjustedDatesResult = AdjustedDatesMetaSchedule.GetAdjustedDates3(termsRange.StartDate, termsRange.EndDate,
                                                                                  rollsMetaSchedule, backwardGeneration, businessDayAdjustments, paymentCalendar);
            }
            else
            {
                Period interval = PeriodHelper.Parse(termsRange.RollFrequency);
                unadjustedDatesResult = DatesMetaSchedule.GetUnadjustedDates2(termsRange.StartDate, termsRange.EndDate,
                                                                              interval, rollConventionEnum, backwardGeneration);
                adjustedDatesResult = AdjustedDatesMetaSchedule.GetAdjustedDates2(termsRange.StartDate, termsRange.EndDate,
                                                                                  interval, rollConventionEnum, backwardGeneration, businessDayAdjustments, paymentCalendar);
            }
            var result = new List <AmortisingResultItem>();

            for (int i = 0; i < adjustedDatesResult.Count; i++)
            {
                DateTime adjustedTime         = adjustedDatesResult[i];
                DateTime unadjustedTime       = unadjustedDatesResult[i];
                var      amortisingResultItem = new AmortisingResultItem
                {
                    WasRolled        = (adjustedTime == unadjustedTime) ? "No" : "Yes",
                    RollDate         = adjustedTime,
                    AmortisingAmount = 0,
                    OutstandingValue = termsRange.FaceValue
                };
                result.Add(amortisingResultItem);
            }
            return(result);
        }