QLNet.MultiplicativePriceSeasonality.seasonalityCorrection C# (CSharp) Метод

seasonalityCorrection() защищенный Метод

protected seasonalityCorrection ( double rate, Date atDate, DayCounter dc, Date curveBaseDate, bool isZeroRate ) : double
rate double
atDate Date
dc DayCounter
curveBaseDate Date
isZeroRate bool
Результат double
        protected virtual double seasonalityCorrection(double rate, Date atDate, DayCounter dc,
            Date curveBaseDate, bool isZeroRate)
        {
            // need _two_ corrections in order to get: seasonality = factor[atDate-seasonalityBase] / factor[reference-seasonalityBase]
             // i.e. for ZERO inflation rates you have the true fixing at the curve base so this factor must be normalized to one
             //      for YoY inflation rates your reference point is the year before

             double factorAt = this.seasonalityFactor(atDate);

             //Getting seasonality correction for either ZC or YoY
             double f;
             if (isZeroRate)
             {
            double factorBase = this.seasonalityFactor(curveBaseDate);
            double seasonalityAt = factorAt / factorBase;
            double timeFromCurveBase = dc.yearFraction(curveBaseDate, atDate);
            f = Math.Pow(seasonalityAt, 1 / timeFromCurveBase);
             }
             else
             {
            double factor1Ybefore = this.seasonalityFactor(atDate - new Period(1, TimeUnit.Years));
            f = factorAt / factor1Ybefore;
             }

             return (rate + 1) * f - 1;
        }