- 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 callgetValue(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 isbaseCurve.getValue(model, season)
whereseason = (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 usingCurveInterpolation.InterpolationMethod
withPIECEWISE_CONSTANT_RIGHTPOINT
.- Version:
- 1.0
- Author:
- Christian Fries
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SeasonalCurve.Builder
A builder (following the builder pattern) for SeasonalCurve objects.
-
Constructor Summary
Constructors Constructor Description 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.SeasonalCurve(String name, LocalDate referenceDate, Curve baseCurve)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description SeasonalCurve
clone()
Create a deep copied clone.static double[]
computeSeasonalAdjustments(double[] realizedCPIValues, int lastMonth, int numberOfYearsToAverage)
Computes annualized seasonal adjustments from given monthly realized CPI values.static double[]
computeSeasonalAdjustments(LocalDate referenceDate, Map<LocalDate,Double> indexFixings, int numberOfYearsToAverage)
SeasonalCurve.Builder
getCloneBuilder()
Returns a curve builder bases on a clone of this curve.Curve
getCloneForParameter(double[] value)
Create a clone with a modified parameter.double[]
getParameter()
Get the current parameter associated with the state of the objects.double
getValue(AnalyticModel model, double time)
Returns the value for the time using the interpolation method associated with this curve within a given context, i.e., a model.void
setParameter(double[] parameter)
Set the current parameter and change the state of the objects.-
Methods inherited from class net.finmath.marketdata.model.curves.AbstractCurve
getName, getReferenceDate, getValue, getValues, toString
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.finmath.marketdata.model.curves.Curve
getName, getReferenceDate, getValue
-
-
-
-
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
- AMap<Date, Double>
of consecutive monthly index fixings.numberOfYearsToAverage
- The number of years over which monthly log returns should be averaged.
-
-
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 interfaceParameterObject
- 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 interfaceParameterObject
- 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.
-
getCloneForParameter
public Curve getCloneForParameter(double[] value) throws CloneNotSupportedException
Description copied from interface:ParameterObject
Create a clone with a modified parameter.- Specified by:
getCloneForParameter
in interfaceCurve
- Specified by:
getCloneForParameter
in interfaceParameterObject
- Overrides:
getCloneForParameter
in classAbstractCurve
- Parameters:
value
- The new parameter.- Returns:
- A clone with an otherwise modified parameter.
- Throws:
CloneNotSupportedException
- Thrown, when the curve could not be cloned.
-
clone
public SeasonalCurve clone() throws CloneNotSupportedException
Description copied from interface:Curve
Create a deep copied clone.- Specified by:
clone
in interfaceCurve
- Overrides:
clone
in classAbstractCurve
- 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 interfaceCurve
- 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.
-
-