Class SeasonalCurve

  • All Implemented Interfaces:
    Serializable, Cloneable, ParameterObject, Curve

    public class SeasonalCurve
    extends AbstractCurve
    implements Curve
    The curve returns a value depending on the month of the time argument, that is, a call getValue(model, time) will map time to a 30/360 value using the day and month only and delegate the call to a given base curve. The value returned then is baseCurve.getValue(model, season) where season = (month-1) / 12.0 + (day-1) / (double)numberOfDays / 12.0; The base curve has to be constructed according to this time convention (e.g., as a piecewise constant curve with values at i / 12 for i=1,...,12 using CurveInterpolation.InterpolationMethod with PIECEWISE_CONSTANT_RIGHTPOINT.
    Version:
    1.0
    Author:
    Christian Fries
    See Also:
    Serialized Form
    • Constructor Detail

      • SeasonalCurve

        public SeasonalCurve​(String name,
                             LocalDate referenceDate,
                             Map<LocalDate,​Double> indexFixings,
                             int numberOfYearsToAverage)
        Create a monthly seasonality adjustment curve by estimating historic log-returns from monthly index fixings.
        Parameters:
        name - The name of this curve.
        referenceDate - The reference date for this curve (i.e. t=0).
        indexFixings - A Map<Date, Double> of consecutive monthly index fixings.
        numberOfYearsToAverage - The number of years over which monthly log returns should be averaged.
      • SeasonalCurve

        public SeasonalCurve​(String name,
                             LocalDate referenceDate,
                             Curve baseCurve)
        Parameters:
        name - The name of this curve.
        referenceDate - The reference date for this curve (i.e. t=0).
        baseCurve - The base curve, i.e., the discount curve used to calculate the seasonal adjustment factors.
    • Method Detail

      • getParameter

        public double[] getParameter()
        Description copied from interface: ParameterObject
        Get the current parameter associated with the state of the objects.
        Specified by:
        getParameter in interface ParameterObject
        Returns:
        The parameter.
      • setParameter

        public void setParameter​(double[] parameter)
        Description copied from interface: ParameterObject
        Set the current parameter and change the state of the objects.
        Specified by:
        setParameter in interface ParameterObject
        Parameters:
        parameter - The parameter associated with the new state of the objects.
      • getValue

        public double getValue​(AnalyticModel model,
                               double time)
        Description copied from interface: Curve
        Returns the value for the time using the interpolation method associated with this curve within a given context, i.e., a model. The model (context) is needed only if the curve relies on another curve. Examples are a forward curve which relies on a discount curve or a discount curve which is defined via a spread over another curve.
        Specified by:
        getValue in interface Curve
        Parameters:
        model - An analytic model providing a context.
        time - Time for which the value should be returned.
        Returns:
        The value at the give time.
      • getCloneBuilder

        public SeasonalCurve.Builder getCloneBuilder()
                                              throws CloneNotSupportedException
        Description copied from interface: Curve
        Returns a curve builder bases on a clone of this curve. Using that curve builder you may create a new curve from this curve by adding points or changing properties. Note: The clone has the same name than this one.
        Specified by:
        getCloneBuilder in interface Curve
        Returns:
        An object implementing the CurveBuilderInterface where the underlying curve is a clone of this curve.
        Throws:
        CloneNotSupportedException - Thrown, when this curve could not be cloned.
      • computeSeasonalAdjustments

        public static double[] computeSeasonalAdjustments​(LocalDate referenceDate,
                                                          Map<LocalDate,​Double> indexFixings,
                                                          int numberOfYearsToAverage)
      • computeSeasonalAdjustments

        public static double[] computeSeasonalAdjustments​(double[] realizedCPIValues,
                                                          int lastMonth,
                                                          int numberOfYearsToAverage)
        Computes annualized seasonal adjustments from given monthly realized CPI values.
        Parameters:
        realizedCPIValues - An array of consecutive monthly CPI values (minimum size is 12*numberOfYearsToAverage))
        lastMonth - The index of the last month in the sequence of realizedCPIValues (corresponding to the enums in Month).
        numberOfYearsToAverage - The number of years to go back in the array of realizedCPIValues.
        Returns:
        Array of annualized seasonal adjustments, where [0] corresponds to the adjustment for from December to January.