public void test_withMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA, XVALUES, YVALUES, INTERPOLATOR); InterpolatedNodalCurve test = base.withMetadata(METADATA_ENTRIES); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getMetadata()).isEqualTo(METADATA_ENTRIES); assertThat(test.getXValues()).isEqualTo(XVALUES); assertThat(test.getYValues()).isEqualTo(YVALUES); }
public void test_withValues() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA, XVALUES, YVALUES, INTERPOLATOR); InterpolatedNodalCurve test = base.withYValues(YVALUES_BUMPED); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.getXValues()).isEqualTo(XVALUES); assertThat(test.getYValues()).isEqualTo(YVALUES_BUMPED); }
public void test_withValuesXy() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA, XVALUES, YVALUES, INTERPOLATOR); InterpolatedNodalCurve test = base.withValues(XVALUES2, YVALUES_BUMPED); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.getXValues()).isEqualTo(XVALUES2); assertThat(test.getYValues()).isEqualTo(YVALUES_BUMPED); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(InterpolatedNodalCurve beanToCopy) { this.metadata = beanToCopy.getMetadata(); this.xValues = beanToCopy.getXValues(); this.yValues = beanToCopy.getYValues(); this.interpolator = beanToCopy.getInterpolator(); this.extrapolatorLeft = beanToCopy.getExtrapolatorLeft(); this.extrapolatorRight = beanToCopy.getExtrapolatorRight(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case -450004177: // metadata return ((InterpolatedNodalCurve) bean).getMetadata(); case 1681280954: // xValues return ((InterpolatedNodalCurve) bean).getXValues(); case -1726182661: // yValues return ((InterpolatedNodalCurve) bean).getYValues(); case 2096253127: // interpolator return ((InterpolatedNodalCurve) bean).getInterpolator(); case 1271703994: // extrapolatorLeft return ((InterpolatedNodalCurve) bean).getExtrapolatorLeft(); case 773779145: // extrapolatorRight return ((InterpolatedNodalCurve) bean).getExtrapolatorRight(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_withNode_inMiddle_withMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES, INTERPOLATOR); LabelDateParameterMetadata item = LabelDateParameterMetadata.of(date(2015, 6, 30), TNR_1Y); InterpolatedNodalCurve test = base.withNode(2.5d, 4d, item); List<ParameterMetadata> list = new ArrayList<>(METADATA_ENTRIES.getParameterMetadata().get()); list.add(2, item); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE + 1); assertThat(test.getMetadata()).isEqualTo(METADATA_ENTRIES.withParameterMetadata(list)); assertThat(test.getXValues()).isEqualTo(DoubleArray.of(1d, 2d, 2.5d, 3d)); assertThat(test.getYValues()).isEqualTo(DoubleArray.of(5d, 7d, 4d, 8d)); }
public void test_withNode_replace_withMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES, INTERPOLATOR); LabelDateParameterMetadata item = LabelDateParameterMetadata.of(date(2015, 6, 30), TNR_1Y); InterpolatedNodalCurve test = base.withNode(2d, 4d, item); List<ParameterMetadata> list = new ArrayList<>(METADATA_ENTRIES.getParameterMetadata().get()); list.set(1, item); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getMetadata()).isEqualTo(METADATA.withParameterMetadata(list)); assertThat(test.getXValues()).isEqualTo(DoubleArray.of(1d, 2d, 3d)); assertThat(test.getYValues()).isEqualTo(DoubleArray.of(5d, 4d, 8d)); }
public void test_withNode_atEnd_withoutMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA, XVALUES, YVALUES, INTERPOLATOR); LabelDateParameterMetadata item = LabelDateParameterMetadata.of(date(2015, 6, 30), TNR_1Y); InterpolatedNodalCurve test = base.withNode(0.5d, 4d, item); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE + 1); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.getXValues()).isEqualTo(DoubleArray.of(0.5d, 1d, 2d, 3d)); assertThat(test.getYValues()).isEqualTo(DoubleArray.of(4d, 5d, 7d, 8d)); }
public void test_withNode_atStart_withMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES, INTERPOLATOR); LabelDateParameterMetadata item = LabelDateParameterMetadata.of(date(2015, 6, 30), TNR_1Y); InterpolatedNodalCurve test = base.withNode(0.5d, 4d, item); List<ParameterMetadata> list = new ArrayList<>(); list.add(item); list.addAll(ParameterMetadata.listOfEmpty(SIZE)); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE + 1); assertThat(test.getMetadata()).isEqualTo(METADATA_ENTRIES.withParameterMetadata(list)); assertThat(test.getXValues()).isEqualTo(DoubleArray.of(0.5d, 1d, 2d, 3d)); assertThat(test.getYValues()).isEqualTo(DoubleArray.of(4d, 5d, 7d, 8d)); }
private void assertUsd3ml(Curve curve) { assertTrue(curve instanceof InterpolatedNodalCurve); InterpolatedNodalCurve nodalCurve = (InterpolatedNodalCurve) curve; assertEquals(nodalCurve.getMetadata().getCurveName(), CurveName.of("USD-3ML")); assertThat(actualYearFraction).isCloseTo(expectedYearFraction, offset(TOLERANCE)); ParameterMetadata nodeMetadata = nodalCurve.getMetadata().getParameterMetadata().get().get(i); assertEquals(nodeMetadata.getLabel(), labels[i]);
private void assertUsdDisc(Curve curve) { assertTrue(curve instanceof InterpolatedNodalCurve); InterpolatedNodalCurve nodalCurve = (InterpolatedNodalCurve) curve; assertEquals(nodalCurve.getMetadata().getCurveName(), CurveName.of("USD-Disc")); assertThat(actualYearFraction).isCloseTo(expectedYearFraction, offset(TOLERANCE)); ParameterMetadata nodeMetadata = nodalCurve.getMetadata().getParameterMetadata().get().get(i); assertEquals(nodeMetadata.getLabel(), labels[i]);
public void test_load_all_curves() { ListMultimap<LocalDate, RatesCurveGroup> allGroups = RatesCurvesCsvLoader.loadAllDates( ResourceLocator.of(GROUPS_1), ResourceLocator.of(SETTINGS_1), ImmutableList.of(ResourceLocator.of(CURVES_1), ResourceLocator.of(CURVES_2), ResourceLocator.of(CURVES_3))); assertEquals(allGroups.size(), 2); assertCurves(allGroups.get(CURVE_DATE)); List<RatesCurveGroup> curves3 = allGroups.get(CURVE_DATE_CURVES_3); assertEquals(curves3.size(), 1); RatesCurveGroup group = curves3.get(0); // All curve points are set to 0 in test data to ensure these are really different curve instances Curve usdDisc = group.findDiscountCurve(Currency.USD).get(); InterpolatedNodalCurve usdDiscNodal = (InterpolatedNodalCurve) usdDisc; assertEquals(usdDiscNodal.getMetadata().getCurveName(), CurveName.of("USD-Disc")); assertTrue(usdDiscNodal.getYValues().equalZeroWithTolerance(0d)); Curve usd3ml = group.findForwardCurve(IborIndices.USD_LIBOR_3M).get(); InterpolatedNodalCurve usd3mlNodal = (InterpolatedNodalCurve) usd3ml; assertEquals(usd3mlNodal.getMetadata().getCurveName(), CurveName.of("USD-3ML")); assertTrue(usd3mlNodal.getYValues().equalZeroWithTolerance(0d)); }
public void test_of_CurveMetadata() { InterpolatedNodalCurve test = InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES, INTERPOLATOR); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getParameter(0)).isEqualTo(YVALUES.get(0)); assertThat(test.getParameter(1)).isEqualTo(YVALUES.get(1)); assertThat(test.getParameterMetadata(0)).isSameAs(METADATA_ENTRIES.getParameterMetadata().get().get(0)); assertThat(test.getParameterMetadata(1)).isSameAs(METADATA_ENTRIES.getParameterMetadata().get().get(1)); assertThat(test.withParameter(0, 2d)).isEqualTo( InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES.with(0, 2d), INTERPOLATOR)); assertThat(test.withPerturbation((i, v, m) -> v - 2d)).isEqualTo( InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES_BUMPED, INTERPOLATOR)); assertThat(test.getExtrapolatorLeft().getName()).isEqualTo(FLAT_EXTRAPOLATOR.getName()); assertThat(test.getInterpolator().getName()).isEqualTo(INTERPOLATOR.getName()); assertThat(test.getExtrapolatorRight().getName()).isEqualTo(FLAT_EXTRAPOLATOR.getName()); assertThat(test.getMetadata()).isEqualTo(METADATA_ENTRIES); assertThat(test.getXValues()).isEqualTo(XVALUES); assertThat(test.getYValues()).isEqualTo(YVALUES); }
ImmutableList.of(CurveParameterSize.of(curveDefinition.getName(), nNodes)), MATRIX_ALGEBRA.getInverse(sensi)); NodalCurve curveWithParamMetadata = curve.withMetadata( curve.getMetadata().withInfo(CurveInfoType.JACOBIAN, jacobian).withParameterMetadata(parameterMetadata)); return IsdaCreditDiscountFactors.of(currency, curveValuationDate, curveWithParamMetadata); NodalCurve curveWithParamMetadata = curve.withMetadata(curve.getMetadata().withParameterMetadata(parameterMetadata)); return IsdaCreditDiscountFactors.of(currency, curveValuationDate, curveWithParamMetadata);
DoubleArray time = DoubleArray.of(nNode, i -> curve.getXValues().get(i) - shift); DoubleArray rate = DoubleArray.of(nNode, i -> (curve.getYValues().get(i) * curve.getXValues().get(i) - eta) / time.get(i)); CurveMetadata metadata = curve.getMetadata().withParameterMetadata(parameterMetadata); if (computeJacobian) { double[][] transf = new double[nNode][nNode]; JacobianCalibrationMatrix jacobian = JacobianCalibrationMatrix.of( ImmutableList.of(CurveParameterSize.of(curve.getName(), nNode)), jacobianMatrix); return ConstantNodalCurve.of(curve.getMetadata().withInfo(CurveInfoType.JACOBIAN, jacobian), time, rate); return ConstantNodalCurve.of(curve.getMetadata(), time, rate); double eta = (curve.getYValues().get(index - 1) * tt1 + curve.getYValues().get(index) * tt2) / interval; int m = nNode - index; CurveMetadata metadata = curve.getMetadata().withParameterMetadata(parameterMetadata.subList(index, nNode)); final int indexFinal = index; DoubleArray time = DoubleArray.of(m, i -> curve.getXValues().get(i + indexFinal) - shift);