示例#1
0
        /// <summary>
        /// Prepare for valuation anything that will be shared between scenarios.
        /// </summary>
        public override void PreCloneInitialize(PriceFactorList factors, BaseTimeGrid baseTimes, RequiredResults requiredResults)
        {
            base.PreCloneInitialize(factors, baseTimes, requiredResults);

            var deal = (BondLendingBase)fDeal;

            DateGenerationRequest dateGenerationRequest = new DateGenerationRequest
            {
                RequiresPayDates      = true,
                RequiresYearFractions = true,
                RequiresPrincipals    = true,
            };

            DateGenerationParams dateGenerationParams = new DateGenerationParams
            {
                EffectiveDate         = deal.Issue_Date,
                MaturityDate          = deal.Bond_Maturity_Date,
                CouponPeriod          = deal.Coupon_Interval,
                FirstCouponDate       = deal.First_Coupon_Date,
                PenultimateCouponDate = deal.Penultimate_Coupon_Date,
                AccrualCalendar       = deal.GetHolidayCalendar(),
                AccrualDayCount       = deal.Accrual_Day_Count,
                Principal             = deal.Notional,
                Amortisation          = deal.Amortisation
            };

            DateGenerationResults dateGenerationResults = CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams);

            fPayDates       = dateGenerationResults.PayDates;
            fAccruals       = dateGenerationResults.AccrualYearFractions;
            fPrincipals     = dateGenerationResults.Principals;
            fFinalPrincipal = dateGenerationResults.FinalPrincipal;
        }
示例#2
0
        /// <summary>
        /// Prepare for valuation anything that is not dependent upon the scenario.
        /// </summary>
        public override void PreCloneInitialize(PriceFactorList factors, BaseTimeGrid baseTimes, RequiredResults resultsRequired)
        {
            base.PreCloneInitialize(factors, baseTimes, resultsRequired);

            // Set up date lists
            DateGenerationRequest dateGenerationRequest = new DateGenerationRequest
            {
                RequiresPayDates      = true,
                RequiresAccrualDates  = true,
                RequiresYearFractions = true
            };

            DateGenerationParams dateGenerationParams = new DateGenerationParams
            {
                EffectiveDate   = fDeal.Effective_Date,
                MaturityDate    = fDeal.Maturity_Date,
                CouponPeriod    = fDeal.Pay_Frequency,
                AccrualCalendar = fDeal.GetHolidayCalendar(),
                AccrualDayCount = fDeal.Accrual_Day_Count,
            };

            DateGenerationResults dateGenerationResults = CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams);

            AccrualDates = dateGenerationResults.AccrualDates;
            PayDates     = dateGenerationResults.PayDates;
            Accruals     = dateGenerationResults.AccrualYearFractions;

            bool cashRequired = resultsRequired.CashRequired();

            fT.AddPayDate(fDeal.Upfront_Date, cashRequired);
            fT.AddPayDates(PayDates, cashRequired);
        }
示例#3
0
        /// <summary>
        /// Prepare for valuation anything that is not dependent upon the scenario.
        /// </summary>
        public override void PreCloneInitialize(PriceFactorList Factors, BaseTimeGrid BaseTimes, RequiredResults ResultsRequired)
        {
            base.PreCloneInitialize(Factors, BaseTimes, ResultsRequired);

            DealCreditLinkedNoteBase deal = (DealCreditLinkedNoteBase)fDeal;

            DateGenerationRequest dateGenerationRequest = new DateGenerationRequest
            {
                RequiresPayDates      = true,
                RequiresResetDates    = true,
                RequiresYearFractions = true,
            };

            DateGenerationParams dateGenerationParams = new DateGenerationParams
            {
                EffectiveDate   = deal.Effective_Date,
                MaturityDate    = deal.Maturity_Date,
                CouponPeriod    = deal.Coupon_Interval,
                AccrualCalendar = deal.GetHolidayCalendar(),
                AccrualDayCount = deal.Accrual_Day_Count,
            };

            DateGenerationResults dateGenerationResults = CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams);

            PayDates   = dateGenerationResults.PayDates;
            Accruals   = dateGenerationResults.AccrualYearFractions;
            ResetDates = dateGenerationResults.ResetDates;

            // Add to valuation time grid
            bool cashRequired = ResultsRequired.CashRequired();

            fT.AddPayDate(deal.Effective_Date, cashRequired);
            fT.AddPayDates(PayDates, cashRequired);
        }
示例#4
0
        /// <summary>
        /// Returns a <see cref="DateGenerationResults"/> which contains bond futures option's dates and accrual information.
        /// </summary>
        /// <returns></returns>
        public DateGenerationResults GetDateGenerationResults(double issueDate, double maturityDate, double couponInterval, double firstCouponDate, double penultimateCouponDate, DayCount dayCount, IHolidayCalendar calendar)
        {
            var dateGenerationRequest = new DateGenerationRequest
            {
                RequiresPayDates      = true,
                RequiresYearFractions = true,
            };

            var dateGenerationParams = new DateGenerationParams
            {
                EffectiveDate         = issueDate,
                MaturityDate          = maturityDate,
                CouponPeriod          = couponInterval,
                FirstCouponDate       = firstCouponDate,
                PenultimateCouponDate = penultimateCouponDate,
                AccrualCalendar       = calendar,
                AccrualDayCount       = dayCount
            };

            return(CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams));
        }
示例#5
0
        /// <summary>
        /// Generate CTD dates and set CTD coupon rate and conversion factor.
        /// </summary>
        protected void GenerateCTD(double issueDate, double maturityDate, double couponInterval, double firstCouponDate, double penultimateCouponDate, DayCount dayCount, IHolidayCalendar calendar, double couponRate, double conversionFactor)
        {
            if (conversionFactor <= 0.0)
            {
                return; // No CTD details or details invalid
            }
            BondFuture deal = (BondFuture)fDeal;

            if (deal.Settlement_Date >= maturityDate)
            {
                throw new AnalyticsException("Settlement date must be before cheapest-to-deliver maturity date.");
            }

            DateGenerationRequest dateGenerationRequest = new DateGenerationRequest
            {
                RequiresPayDates      = true,
                RequiresYearFractions = true,
            };

            DateGenerationParams dateGenerationParams = new DateGenerationParams
            {
                EffectiveDate         = issueDate,
                MaturityDate          = maturityDate,
                CouponPeriod          = couponInterval,
                FirstCouponDate       = firstCouponDate,
                PenultimateCouponDate = penultimateCouponDate,
                AccrualCalendar       = calendar,
                AccrualDayCount       = dayCount
            };

            DateGenerationResults dateGenerationResults = CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams);

            fPayDates = dateGenerationResults.PayDates;
            fAccruals = dateGenerationResults.AccrualYearFractions;

            fIssueDate        = issueDate;
            fMaturityDate     = maturityDate;
            fCouponRate       = couponRate;
            fConversionFactor = conversionFactor;
        }
示例#6
0
        /// <summary>
        /// Returns a <see cref="DateGenerationResults"/> which contains bond option's payment dates, pricipals and accrual year fractions information.
        /// </summary>
        public DateGenerationResults GetDateGenerationResults()
        {
            var dateGenerationRequest = new DateGenerationRequest
            {
                RequiresPayDates      = true,
                RequiresPrincipals    = true,
                RequiresYearFractions = true
            };

            var dateGenerationParams = new DateGenerationParams
            {
                EffectiveDate         = Issue_Date,
                MaturityDate          = Bond_Maturity_Date,
                CouponPeriod          = Coupon_Interval,
                FirstCouponDate       = First_Coupon_Date,
                PenultimateCouponDate = Penultimate_Coupon_Date,
                AccrualCalendar       = GetHolidayCalendar(),
                AccrualDayCount       = Accrual_Day_Count,
                Principal             = Notional,
                Amortisation          = Amortisation
            };

            return(CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams));
        }