Class SeasonalCurve

java.lang.Object
net.finmath.marketdata.model.curves.AbstractCurve
net.finmath.marketdata.model.curves.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:
  • Constructor Details

    • 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 Details

    • 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.
    • getCloneForParameter

      public Curve getCloneForParameter(double[] value) throws CloneNotSupportedException
      Description copied from interface: ParameterObject
      Create a clone with a modified parameter.
      Specified by:
      getCloneForParameter in interface Curve
      Specified by:
      getCloneForParameter in interface ParameterObject
      Overrides:
      getCloneForParameter in class AbstractCurve
      Parameters:
      value - The new parameter.
      Returns:
      A clone with an otherwise modified parameter.
      Throws:
      CloneNotSupportedException - Thrown, when the curve could not be cloned.
    • clone

      Description copied from interface: Curve
      Create a deep copied clone.
      Specified by:
      clone in interface Curve
      Overrides:
      clone in class AbstractCurve
      Returns:
      A clone (deep copied).
      Throws:
      CloneNotSupportedException - Thrown, when the curve could not be cloned.
    • 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.