private DoubleArray buildNodeTimes(LocalDate valuationDate, CurveMetadata metadata) { if (metadata.getXValueType().equals(ValueType.YEAR_FRACTION)) { return DoubleArray.of(getParameterCount(), i -> { LocalDate nodeDate = ((DatedParameterMetadata) metadata.getParameterMetadata().get().get(i)).getDate(); return getDayCount().get().yearFraction(valuationDate, nodeDate); }); } else if (metadata.getXValueType().equals(ValueType.MONTHS)) { return DoubleArray.of(getParameterCount(), i -> { LocalDate nodeDate = ((DatedParameterMetadata) metadata.getParameterMetadata().get().get(i)).getDate(); return YearMonth.from(valuationDate).until(YearMonth.from(nodeDate), MONTHS); }); } else { throw new IllegalArgumentException("Metadata XValueType should be YearFraction or Months in curve definition"); } }
public void test_builder() { InterpolatedNodalCurveDefinition test = InterpolatedNodalCurveDefinition.builder() .name(CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.ZERO_RATE) .dayCount(ACT_365F) .nodes(NODES) .interpolator(CurveInterpolators.LINEAR) .extrapolatorLeft(CurveExtrapolators.FLAT) .extrapolatorRight(CurveExtrapolators.FLAT) .build(); assertEquals(test.getName(), CURVE_NAME); assertEquals(test.getXValueType(), ValueType.YEAR_FRACTION); assertEquals(test.getYValueType(), ValueType.ZERO_RATE); assertEquals(test.getDayCount(), Optional.of(ACT_365F)); assertEquals(test.getNodes(), NODES); assertEquals(test.getInterpolator(), CurveInterpolators.LINEAR); assertEquals(test.getExtrapolatorLeft(), CurveExtrapolators.FLAT); assertEquals(test.getExtrapolatorRight(), CurveExtrapolators.FLAT); assertEquals(test.getParameterCount(), 2); }