/** * Obtains an instance. * * @param metadata the metadata * @param parameters the parameters * @param valueFunction the value function * @param derivativeFunction the derivative function * @param sensitivityFunction the parameter sensitivity function * @return the instance */ public static ParameterizedFunctionalCurve of( CurveMetadata metadata, DoubleArray parameters, BiFunction<DoubleArray, Double, Double> valueFunction, BiFunction<DoubleArray, Double, Double> derivativeFunction, BiFunction<DoubleArray, Double, DoubleArray> sensitivityFunction) { return ParameterizedFunctionalCurve.builder() .metadata(metadata) .parameters(parameters) .valueFunction(valueFunction) .derivativeFunction(derivativeFunction) .sensitivityFunction(sensitivityFunction) .build(); }
public void test_curve() { ParameterizedFunctionalCurveDefinition test = ParameterizedFunctionalCurveDefinition.builder() .dayCount(ACT_365F) .valueFunction(VALUE_FUNCTION) .derivativeFunction(DERIVATIVE_FUNCTION) .sensitivityFunction(SENSITIVITY_FUNCTION) .initialGuess(INITIAL_PARAMS) .name(CURVE_NAME) .nodes(NODES) .parameterMetadata(PARAM_METADATA) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.ZERO_RATE) .build(); DefaultCurveMetadata metadata = DefaultCurveMetadata.builder() .curveName(CURVE_NAME) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.ZERO_RATE) .dayCount(ACT_365F) .parameterMetadata(PARAM_METADATA) .build(); DoubleArray parameters = DoubleArray.of(1d, 1.5d, -0.5d); ParameterizedFunctionalCurve expected = ParameterizedFunctionalCurve.builder() .metadata(metadata) .valueFunction(VALUE_FUNCTION) .derivativeFunction(DERIVATIVE_FUNCTION) .sensitivityFunction(SENSITIVITY_FUNCTION) .parameters(parameters) .build(); assertEquals(test.curve(VAL_DATE, metadata, parameters), expected); }