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); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(InterpolatedNodalCurveDefinition beanToCopy) { this.name = beanToCopy.getName(); this.xValueType = beanToCopy.getXValueType(); this.yValueType = beanToCopy.getYValueType(); this.dayCount = beanToCopy.dayCount; this.nodes = beanToCopy.getNodes(); this.interpolator = beanToCopy.getInterpolator(); this.extrapolatorLeft = beanToCopy.getExtrapolatorLeft(); this.extrapolatorRight = beanToCopy.getExtrapolatorRight(); }
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_filtered_dropThis_atStart() { DummyFraCurveNode node1 = DummyFraCurveNode.of(Period.ofDays(3), GBP_LIBOR_1M, TICKER, DROP_THIS_2D); DummyFraCurveNode node2 = DummyFraCurveNode.of(Period.ofDays(4), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node3 = DummyFraCurveNode.of(Period.ofDays(11), GBP_LIBOR_1M, TICKER); ImmutableList<DummyFraCurveNode> nodes = ImmutableList.of(node1, node2, node3); 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.filtered(VAL_DATE, REF_DATA).getNodes(), ImmutableList.of(node2, node3)); }
InterpolatedNodalCurveDefinition createCurveDefinition(List<CurveNode> nodes) { return InterpolatedNodalCurveDefinition.builder() .name(curveName) .xValueType(xValueType) .yValueType(yValueType) .dayCount(dayCount) .nodes(nodes) .interpolator(interpolator) .extrapolatorLeft(extrapolatorLeft) .extrapolatorRight(extrapolatorRight) .build(); }
public void test_filtered_exception_atStart() { DummyFraCurveNode node1 = DummyFraCurveNode.of(Period.ofDays(3), GBP_LIBOR_1M, TICKER, EXCEPTION_2D); DummyFraCurveNode node2 = DummyFraCurveNode.of(Period.ofDays(4), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node3 = DummyFraCurveNode.of(Period.ofDays(11), GBP_LIBOR_1M, TICKER); ImmutableList<DummyFraCurveNode> nodes = ImmutableList.of(node1, node2, node3); 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(); assertThrowsIllegalArg(() -> test.filtered(VAL_DATE, REF_DATA), "Curve node dates clash.*"); }
public void test_toCurveParameterSize() { 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.toCurveParameterSize(), CurveParameterSize.of(CURVE_NAME, NODES.size())); }
public void test_metadata() { 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(); DefaultCurveMetadata expected = DefaultCurveMetadata.builder() .curveName(CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.ZERO_RATE) .dayCount(ACT_365F) .parameterMetadata(NODES.get(0).metadata(VAL_DATE, REF_DATA), NODES.get(1).metadata(VAL_DATE, REF_DATA)) .build(); assertEquals(test.metadata(VAL_DATE, REF_DATA), expected); }
public void test_curve() { 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(); DefaultCurveMetadata metadata = DefaultCurveMetadata.builder() .curveName(CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.ZERO_RATE) .dayCount(ACT_365F) .parameterMetadata(NODES.get(0).metadata(VAL_DATE, REF_DATA), NODES.get(1).metadata(VAL_DATE, REF_DATA)) .build(); InterpolatedNodalCurve expected = InterpolatedNodalCurve.builder() .metadata(metadata) .xValues(DoubleArray.of(ACT_365F.yearFraction(VAL_DATE, DATE1), ACT_365F.yearFraction(VAL_DATE, DATE2))) .yValues(DoubleArray.of(1d, 1.5d)) .interpolator(CurveInterpolators.LINEAR) .extrapolatorLeft(CurveExtrapolators.FLAT) .extrapolatorRight(CurveExtrapolators.FLAT) .build(); assertEquals(test.curve(VAL_DATE, metadata, DoubleArray.of(1d, 1.5d)), expected); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 3373707: // name return ((InterpolatedNodalCurveDefinition) bean).getName(); case -868509005: // xValueType return ((InterpolatedNodalCurveDefinition) bean).getXValueType(); case -1065022510: // yValueType return ((InterpolatedNodalCurveDefinition) bean).getYValueType(); case 1905311443: // dayCount return ((InterpolatedNodalCurveDefinition) bean).dayCount; case 104993457: // nodes return ((InterpolatedNodalCurveDefinition) bean).getNodes(); case 2096253127: // interpolator return ((InterpolatedNodalCurveDefinition) bean).getInterpolator(); case 1271703994: // extrapolatorLeft return ((InterpolatedNodalCurveDefinition) bean).getExtrapolatorLeft(); case 773779145: // extrapolatorRight return ((InterpolatedNodalCurveDefinition) bean).getExtrapolatorRight(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_filtered_dropOther_atEnd() { DummyFraCurveNode node1 = DummyFraCurveNode.of(Period.ofDays(5), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node2 = DummyFraCurveNode.of(Period.ofDays(10), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node3 = DummyFraCurveNode.of(Period.ofDays(11), GBP_LIBOR_1M, TICKER, DROP_OTHER_2D); ImmutableList<DummyFraCurveNode> nodes = ImmutableList.of(node1, node2, node3); 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.filtered(VAL_DATE, REF_DATA).getNodes(), ImmutableList.of(node1, node3)); }
public void test_serialization() { 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(); assertSerialization(test); }
public void test_filtered_exception_atEnd() { DummyFraCurveNode node1 = DummyFraCurveNode.of(Period.ofDays(5), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node2 = DummyFraCurveNode.of(Period.ofDays(10), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node3 = DummyFraCurveNode.of(Period.ofDays(11), GBP_LIBOR_1M, TICKER, EXCEPTION_2D); ImmutableList<DummyFraCurveNode> nodes = ImmutableList.of(node1, node2, node3); 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(); assertThrowsIllegalArg(() -> test.filtered(VAL_DATE, REF_DATA), "Curve node dates clash.*"); }
public void test_filtered_dropThis_middle() { DummyFraCurveNode node1 = DummyFraCurveNode.of(Period.ofDays(3), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node2 = DummyFraCurveNode.of(Period.ofDays(4), GBP_LIBOR_1M, TICKER, DROP_THIS_2D); DummyFraCurveNode node3 = DummyFraCurveNode.of(Period.ofDays(11), GBP_LIBOR_1M, TICKER); ImmutableList<DummyFraCurveNode> nodes = ImmutableList.of(node1, node2, node3); 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.filtered(VAL_DATE, REF_DATA).getNodes(), ImmutableList.of(node1, node3)); }
public void coverage() { 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(); coverImmutableBean(test); InterpolatedNodalCurveDefinition test2 = InterpolatedNodalCurveDefinition.builder() .name(CurveName.of("Foo")) .nodes(NODES2) .interpolator(CurveInterpolators.LOG_LINEAR) .extrapolatorLeft(CurveExtrapolators.LOG_LINEAR) .extrapolatorRight(CurveExtrapolators.LOG_LINEAR) .build(); coverBeanEquals(test, test2); }
public void test_filtered() { DummyFraCurveNode node1 = DummyFraCurveNode.of(Period.ofDays(5), GBP_LIBOR_1M, GBP_LIBOR_1M_ID); DummyFraCurveNode node2 = DummyFraCurveNode.of(Period.ofDays(10), GBP_LIBOR_1M, GBP_LIBOR_1M_ID); DummyFraCurveNode node3 = DummyFraCurveNode.of(Period.ofDays(11), GBP_LIBOR_1M, GBP_LIBOR_1M_ID, DROP_THIS_2D); ImmutableList<DummyFraCurveNode> nodes = ImmutableList.of(node1, node2, node3); LocalDate valuationDate = date(2015, 6, 30); InterpolatedNodalCurveDefinition curveDefn = InterpolatedNodalCurveDefinition.builder() .name(CURVE_NAME1) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.ZERO_RATE) .dayCount(ACT_365F) .nodes(nodes) .interpolator(CurveInterpolators.LINEAR) .extrapolatorLeft(CurveExtrapolators.FLAT) .extrapolatorRight(CurveExtrapolators.FLAT) .build(); RatesCurveGroupDefinition test = RatesCurveGroupDefinition.builder() .name(CurveGroupName.of("Test")) .addCurve(curveDefn, GBP, GBP_LIBOR_1M, GBP_LIBOR_3M) .build(); RatesCurveGroupDefinition expected = RatesCurveGroupDefinition.builder() .name(CurveGroupName.of("Test")) .addCurve(curveDefn.filtered(valuationDate, REF_DATA), GBP, GBP_LIBOR_1M, GBP_LIBOR_3M) .build(); assertEquals(test.filtered(valuationDate, REF_DATA), expected); }
public void test_filtered_dropThis_atEnd() { DummyFraCurveNode node1 = DummyFraCurveNode.of(Period.ofDays(5), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node2 = DummyFraCurveNode.of(Period.ofDays(10), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node3 = DummyFraCurveNode.of(Period.ofDays(11), GBP_LIBOR_1M, TICKER, DROP_THIS_2D); ImmutableList<DummyFraCurveNode> nodes = ImmutableList.of(node1, node2, node3); 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.filtered(VAL_DATE, REF_DATA).getNodes(), ImmutableList.of(node1, node2)); }
public void calibration_present_value_simple_forward() { InterpolatedNodalCurveDefinition dsc = InterpolatedNodalCurveDefinition.builder() .name(DSCON_CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION) .nodes(DSC_NODES).build(); InterpolatedNodalCurveDefinition fwd = InterpolatedNodalCurveDefinition.builder() .name(FWD3_CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION)
public void test_filtered_dropOther_atStart() { DummyFraCurveNode node1 = DummyFraCurveNode.of(Period.ofDays(3), GBP_LIBOR_1M, TICKER, DROP_OTHER_2D); DummyFraCurveNode node2 = DummyFraCurveNode.of(Period.ofDays(4), GBP_LIBOR_1M, TICKER); DummyFraCurveNode node3 = DummyFraCurveNode.of(Period.ofDays(11), GBP_LIBOR_1M, TICKER); ImmutableList<DummyFraCurveNode> nodes = ImmutableList.of(node1, node2, node3); 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.filtered(VAL_DATE, REF_DATA).getNodes(), ImmutableList.of(node1, node3)); }
CurveExtrapolator extrapLeft = CurveExtrapolators.QUADRATIC_LEFT; InterpolatedNodalCurveDefinition dsc = InterpolatedNodalCurveDefinition.builder() .name(DSCON_CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION) .nodes(DSC_NODES).build(); InterpolatedNodalCurveDefinition fwd = InterpolatedNodalCurveDefinition.builder() .name(FWD3_CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION)