/** * Sets the day count. * <p> * This stores the day count in the additional information map using the * key {@link CurveInfoType#DAY_COUNT}. * <p> * This is stored in the additional information map using {@code Map.put} semantics, * removing the key if the day count is null. * * @param dayCount the day count, may be null * @return this, for chaining */ public DefaultCurveMetadataBuilder dayCount(DayCount dayCount) { return addInfo(CurveInfoType.DAY_COUNT, dayCount); }
/** * Sets the calibration information. * <p> * This stores the calibration information in the additional information map * using the key {@link CurveInfoType#JACOBIAN}. * <p> * This is stored in the additional information map using {@code Map.put} semantics, * removing the key if the jacobian is null. * * @param jacobian the calibration information, may be null * @return this, for chaining */ public DefaultCurveMetadataBuilder jacobian(JacobianCalibrationMatrix jacobian) { return addInfo(CurveInfoType.JACOBIAN, jacobian); }
@Override public <T> DefaultCurveMetadata withInfo(CurveInfoType<T> type, T value) { return toBuilder().addInfo(type, value).build(); }
public void test_builder2() { DefaultCurveMetadata test = DefaultCurveMetadata.builder() .curveName(CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.DISCOUNT_FACTOR) .addInfo(CurveInfoType.DAY_COUNT, ACT_360) .jacobian(JACOBIAN_DATA) .parameterMetadata(ParameterMetadata.empty()) .build(); assertThat(test.getCurveName()).isEqualTo(CURVE_NAME); assertThat(test.getXValueType()).isEqualTo(ValueType.YEAR_FRACTION); assertThat(test.getYValueType()).isEqualTo(ValueType.DISCOUNT_FACTOR); assertThat(test.getInfo(CurveInfoType.DAY_COUNT)).isEqualTo(ACT_360); assertThat(test.findInfo(CurveInfoType.DAY_COUNT)).isEqualTo(Optional.of(ACT_360)); assertThat(test.getInfo(CurveInfoType.JACOBIAN)).isEqualTo(JACOBIAN_DATA); assertThat(test.findInfo(CurveInfoType.JACOBIAN)).isEqualTo(Optional.of(JACOBIAN_DATA)); assertThat(test.findInfo(CurveInfoType.of("Rubbish"))).isEqualTo(Optional.empty()); assertThat(test.getParameterMetadata().isPresent()).isTrue(); assertThat(test.getParameterMetadata().get()).containsExactly(ParameterMetadata.empty()); }
/** * Creates a curve as the sum of a base curve and a spread curve. * <p> * The metadata of the combined curve will be created form the base curve and spread curve. * * @param baseCurve the base curve * @param spreadCurve the spread curve * @return the combined curve */ public static CombinedCurve of(Curve baseCurve, Curve spreadCurve) { CurveMetadata baseMetadata = baseCurve.getMetadata(); CurveMetadata spreadMetadata = spreadCurve.getMetadata(); List<ParameterMetadata> paramMeta = Stream.concat( IntStream.range(0, baseCurve.getParameterCount()) .mapToObj(i -> baseCurve.getParameterMetadata(i)), IntStream.range(0, spreadCurve.getParameterCount()) .mapToObj(i -> spreadCurve.getParameterMetadata(i))) .collect(toImmutableList()); DefaultCurveMetadataBuilder metadataBuilder = DefaultCurveMetadata.builder() .curveName(baseCurve.getName().getName() + "+" + spreadMetadata.getCurveName().getName()) .xValueType(baseMetadata.getXValueType()) .yValueType(baseMetadata.getYValueType()) .parameterMetadata(paramMeta); if (baseMetadata.findInfo(CurveInfoType.DAY_COUNT).isPresent()) { metadataBuilder.addInfo( CurveInfoType.DAY_COUNT, baseMetadata.getInfo(CurveInfoType.DAY_COUNT)); } return of(baseCurve, spreadCurve, metadataBuilder.build()); }
public void test_builder1() { DefaultCurveMetadata test = DefaultCurveMetadata.builder() .curveName(CURVE_NAME.toString()) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.DISCOUNT_FACTOR) .dayCount(ACT_360) .jacobian(JACOBIAN_DATA) .addInfo(CurveInfoType.DAY_COUNT, null) .parameterMetadata(ImmutableList.of(ParameterMetadata.empty())) .build(); assertThat(test.getCurveName()).isEqualTo(CURVE_NAME); assertThat(test.getXValueType()).isEqualTo(ValueType.YEAR_FRACTION); assertThat(test.getYValueType()).isEqualTo(ValueType.DISCOUNT_FACTOR); assertThat(test.findInfo(CurveInfoType.DAY_COUNT)).isEmpty(); assertThat(test.getInfo(CurveInfoType.JACOBIAN)).isEqualTo(JACOBIAN_DATA); assertThat(test.findInfo(CurveInfoType.JACOBIAN)).isEqualTo(Optional.of(JACOBIAN_DATA)); assertThat(test.findInfo(CurveInfoType.of("Rubbish"))).isEqualTo(Optional.empty()); assertThat(test.getParameterMetadata().isPresent()).isTrue(); assertThat(test.getParameterMetadata().get()).containsExactly(ParameterMetadata.empty()); }
.xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.ZERO_RATE) .addInfo(CurveInfoType.COMPOUNDING_PER_YEAR, 4) .build(); InterpolatedNodalCurve notDayCount = InterpolatedNodalCurve.of( .yValueType(ValueType.ZERO_RATE) .dayCount(ACT_365F) .addInfo(CurveInfoType.COMPOUNDING_PER_YEAR, -1) .build(); InterpolatedNodalCurve curveNegativeNb = InterpolatedNodalCurve.of(