public virtual void of_construction_additive_1() { InflationNodalCurve curveComputed = InflationNodalCurve.of(CURVE_NOFIX, VAL_DATE_1, LAST_FIX_MONTH_1, LAST_FIX_VALUE, SEASONALITY_ADDITIVE_DEF); assertEquals(curveComputed.Underlying.XValues.get(0), NB_MONTHS_1, TOLERANCE_TIME); assertEquals(curveComputed.Underlying.YValues.get(0), LAST_FIX_VALUE, TOLERANCE_TIME); assertEquals(curveComputed.yValue(NB_MONTHS_1), LAST_FIX_VALUE, TOLERANCE_TIME); }
public virtual void of_construction_multiplicative_2() { InflationNodalCurve curveComputed = InflationNodalCurve.of(CURVE_NOFIX, VAL_DATE_2, LAST_FIX_MONTH_2, LAST_FIX_VALUE, SEASONALITY_MULTIPLICATIVE_DEF); assertEquals(curveComputed.Underlying.XValues.get(0), NB_MONTHS_2, TOLERANCE_TIME); assertEquals(curveComputed.Underlying.YValues.get(0), LAST_FIX_VALUE, TOLERANCE_TIME); assertEquals(curveComputed.yValue(NB_MONTHS_2), LAST_FIX_VALUE, TOLERANCE_TIME); }
public virtual void value_multiplicative() { InflationNodalCurve curveComputed = InflationNodalCurve.of(CURVE_NOFIX, VAL_DATE_2, LAST_FIX_MONTH_2, LAST_FIX_VALUE, SEASONALITY_MULTIPLICATIVE_DEF); for (int i = 1; i < TEST_MONTHS.Length; i++) { double nbMonths = YearMonth.from(VAL_DATE_2).until(TEST_MONTHS[i], MONTHS); double valueComputed = curveComputed.yValue(nbMonths); int x = (int)((nbMonths + 12) % 12); double valueNoAdj = EXTENDED_CURVE_2.yValue(nbMonths); double adj = SEASONALITY_MULTIPLICATIVE_COMP_2.get(x); double valueExpected = valueNoAdj * adj; assertEquals(valueExpected, valueComputed, TOLERANCE_VALUE); } }
public virtual void value_additive() { InflationNodalCurve curveComputed = InflationNodalCurve.of(CURVE_NOFIX, VAL_DATE_2, LAST_FIX_MONTH_2, LAST_FIX_VALUE, SEASONALITY_ADDITIVE_DEF); for (int i = 1; i < TEST_MONTHS.Length; i++) { double nbMonths = YearMonth.from(VAL_DATE_2).until(TEST_MONTHS[i], MONTHS); double valueComputed = curveComputed.yValue(nbMonths); int x = (int)((nbMonths + 12) % 12); double valueNoAdj = EXTENDED_CURVE_2.yValue(nbMonths); DoubleArray seasonalityAdditiveCompounded = seasonalityCompounded(VAL_DATE_2, LAST_FIX_MONTH_2, SEASONALITY_ADDITIVE, (v, a) => v + a); double adj = seasonalityAdditiveCompounded.get(x); double valueExpected = valueNoAdj + adj; assertEquals(valueExpected, valueComputed, TOLERANCE_VALUE); } }
public virtual void parameter_sensitivity_additive() { InflationNodalCurve curve = InflationNodalCurve.of(CURVE_NOFIX, VAL_DATE_2, LAST_FIX_MONTH_2, LAST_FIX_VALUE, SEASONALITY_ADDITIVE_DEF); double shift = 1.0E-2; for (int i = 1; i < TEST_MONTHS.Length; i++) { double nbMonths = YearMonth.from(VAL_DATE_2).until(TEST_MONTHS[i], MONTHS); UnitParameterSensitivity psComputed = curve.yValueParameterSensitivity(nbMonths); for (int j = 0; j < TIMES.size(); j++) { double[] valuePM = new double[2]; for (int pm = 0; pm < 2; pm++) { DoubleArray shiftedValues = VALUES.with(j, VALUES.get(j) + (1 - 2 * pm) * shift); InterpolatedNodalCurve intCurveShifted = InterpolatedNodalCurve.of(METADATA, TIMES, shiftedValues, INTERPOLATOR); InflationNodalCurve seaCurveShifted = InflationNodalCurve.of(intCurveShifted, VAL_DATE_2, LAST_FIX_MONTH_2, LAST_FIX_VALUE, SEASONALITY_ADDITIVE_DEF); valuePM[pm] = seaCurveShifted.yValue(nbMonths); } assertEquals(psComputed.Sensitivity.get(j), (valuePM[0] - valuePM[1]) / (2 * shift), TOLERANCE_DELTA); } } }