Exemplo n.º 1
0
        public override bool isConsistent(InflationTermStructure iTS)
        {
            // If multi-year is the specification consistent with the term structure start date?
            // We do NOT test daily seasonality because this will, in general, never be consistent
            // given weekends, holidays, leap years, etc.
            if (this.frequency() == Frequency.Daily)
            {
                return(true);
            }
            if ((int)this.frequency() == seasonalityFactors().Count)
            {
                return(true);
            }

            // how many years do you need to test?
            int nTest = seasonalityFactors().Count / (int)this.frequency();
            // ... relative to the start of the inflation curve
            KeyValuePair <Date, Date> lim = Utils.inflationPeriod(iTS.baseDate(), iTS.frequency());
            Date   curveBaseDate          = lim.Value;
            double factorBase             = this.seasonalityFactor(curveBaseDate);

            double eps = 0.00001;

            for (int i = 1; i < nTest; i++)
            {
                double factorAt = this.seasonalityFactor(curveBaseDate + new Period(i, TimeUnit.Years));
                Utils.QL_REQUIRE(Math.Abs(factorAt - factorBase) < eps, () =>
                                 "seasonality is inconsistent with inflation " +
                                 "term structure, factors " + factorBase + " and later factor "
                                 + factorAt + ", " + i + " years later from inflation curve "
                                 + " with base date at " + curveBaseDate);
            }

            return(true);
        }
Exemplo n.º 2
0
        public override double correctYoYRate(Date d, double r, InflationTermStructure iTS)
        {
            KeyValuePair <Date, Date> lim = Utils.inflationPeriod(iTS.baseDate(), iTS.frequency());
            Date curveBaseDate            = lim.Value;

            return(seasonalityCorrection(r, d, iTS.dayCounter(), curveBaseDate, false));
        }
      public virtual bool isConsistent(InflationTermStructure iTS) 
      {

         // If multi-year is the specification consistent with the term structure start date?
         // We do NOT test daily seasonality because this will, in general, never be consistent
         // given weekends, holidays, leap years, etc.
         if(this.frequency() == Frequency.Daily) return true;
         if( (int)this.frequency() == seasonalityFactors().Count ) return true;

         // how many years do you need to test?
         int nTest = seasonalityFactors().Count / (int)this.frequency();
         // ... relative to the start of the inflation curve
         KeyValuePair<Date,Date> lim = Utils.inflationPeriod(iTS.baseDate(), iTS.frequency());
         Date curveBaseDate = lim.Value;
         double factorBase = this.seasonalityFactor(curveBaseDate);

         double eps = 0.00001;
         for (int i = 1; i < nTest; i++) 
         {
            double factorAt = this.seasonalityFactor(curveBaseDate+new Period(i,TimeUnit.Years));
            if (Math.Abs(factorAt-factorBase)>=eps)
               throw new ApplicationException("seasonality is inconsistent with inflation " +
                        "term structure, factors " + factorBase + " and later factor " 
                        + factorAt + ", " + i + " years later from inflation curve "
                        + " with base date at " + curveBaseDate);
         }

         return true;

      }
 public virtual double correctYoYRate(Date d, double r, InflationTermStructure iTS)
 {
    KeyValuePair<Date,Date> lim = Utils.inflationPeriod(iTS.baseDate(), iTS.frequency());
    Date curveBaseDate = lim.Value;
    return seasonalityCorrection(r, d, iTS.dayCounter(), curveBaseDate, false);
 }