Esempio n. 1
0
        ///<summary>
        ///</summary>
        ///<param name="baseDate"></param>
        ///<param name="frequency"></param>
        ///<param name="dayCountFraction"></param>
        ///<returns></returns>
        ///<exception cref="NotImplementedException"></exception>
        public static decimal PeriodFractionFromCompoundingFrequency(DateTime baseDate, CompoundingFrequencyEnum frequency, DayCountFraction dayCountFraction)
        {
            switch (frequency)
            {
            case CompoundingFrequencyEnum.Continuous:
                return(0.0m);

            case CompoundingFrequencyEnum.Daily:
                IDayCounter dc = DayCounterHelper.Parse(dayCountFraction.Value);
                return((decimal)dc.YearFraction(baseDate, baseDate.AddDays(1.0d)));

            case CompoundingFrequencyEnum.Weekly:
                return((decimal)1 / 52);

            case CompoundingFrequencyEnum.Monthly:
                return((decimal)1 / 12);

            case CompoundingFrequencyEnum.Quarterly:
                return((decimal)1 / 4);

            case CompoundingFrequencyEnum.SemiAnnual:
                return((decimal)1 / 2);

            case CompoundingFrequencyEnum.Annual:
                return(1.0m);

            default:
                throw new NotImplementedException();
            }
        }
 /// <summary>
 /// Gets the year fraction.
 /// </summary>
 /// <returns></returns>
 public decimal[] GetYearFractions()
 {
     return
         (new[]
     {
         (decimal)
         DayCounterHelper.Parse(Deposit.dayCountFraction.Value).YearFraction(
             AdjustedEffectiveDate, GetRiskMaturityDate())
     });
 }
Esempio n. 3
0
        private void SetDayCounter(ICoreCache cache, string nameSpace, string currency)
        {
            Instrument instrument = InstrumentDataHelper.GetInstrumentConfigurationData(cache, nameSpace, currency, "ZeroRate");

            if (instrument.InstrumentNodeItem is ZeroRateNodeStruct zeroRateNode)
            {
                DayCounter = DayCounterHelper.Parse(zeroRateNode.DayCountFraction.Value);
            }
            if (DayCounter == null)
            {
                throw new InvalidOperationException($"DayCounter is invalid for '{currency}'");
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PriceableSimpleFra"/> class.
        /// </summary>
        /// <param name="baseDate">The base date.</param>
        /// <param name="nodeStruct"></param>
        /// <param name="fixingCalendar"></param>
        /// <param name="paymentCalendar"></param>
        /// <param name="fixedRate">The fixed rate.</param>
        public PriceableSimpleRevenueInflationSwap(DateTime baseDate, SimpleIRSwapNodeStruct nodeStruct,
                                                   IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, BasicQuotation fixedRate)
            : base(baseDate, nodeStruct.DateAdjustments, fixedRate)
        {
            Id = nodeStruct.SimpleIRSwap.id;
            SimpleInflationSwap = nodeStruct.SimpleIRSwap;
            SpotDateOffset      = nodeStruct.SpotDate;
            Calculation         = nodeStruct.Calculation;
            UnderlyingRateIndex = nodeStruct.UnderlyingRateIndex;
            AdjustedStartDate   = GetSpotDate(baseDate, fixingCalendar, SpotDateOffset);
            DayCounter          = DayCounterHelper.Parse(Calculation.dayCountFraction.Value);
            List <DateTime> unadjustedDateSchedule = DateScheduler.GetUnadjustedDateSchedule(AdjustedStartDate, SimpleInflationSwap.term, SimpleInflationSwap.paymentFrequency);

            AdjustedPeriodDates = AdjustedDateScheduler.GetAdjustedDateSchedule(unadjustedDateSchedule, nodeStruct.DateAdjustments.businessDayConvention, paymentCalendar);
        }
        /// <summary>
        /// Gets the year fractions for dates.
        /// </summary>
        /// <param name="periodDates">The period dates.</param>
        /// <param name="dayCountFraction">The day count fraction.</param>
        /// <returns></returns>
        private static decimal[] GetYearFractionsForDates(IList <DateTime> periodDates, DayCountFraction dayCountFraction)
        {
            var yearFractions        = new List <decimal>();
            int index                = 0;
            int periodDatesLastIndex = periodDates.Count - 1;

            foreach (DateTime periodDate in periodDates)
            {
                if (index == periodDatesLastIndex)
                {
                    break;
                }
                var yearFraction = (decimal)DayCounterHelper.Parse(dayCountFraction.Value).YearFraction(periodDate, periodDates[index + 1]);
                yearFractions.Add(yearFraction);
                index++;
            }
            return(yearFractions.ToArray());
        }
 /// <summary>
 /// Gets the year fraction to maturity.
 /// </summary>
 /// <returns></returns>
 public decimal GetTimeToMaturity(DateTime baseDate, DateTime maturityDate)
 {
     return((decimal)DayCounterHelper.ToDayCounter(DayCountFractionEnum.ACT_365_FIXED).YearFraction(baseDate, maturityDate));
 }