@Override public ParameterizedFunctionalCurve curve(LocalDate valuationDate, CurveMetadata metadata, DoubleArray parameters) { return ParameterizedFunctionalCurve.of( metadata, parameters, valueFunction, derivativeFunction, sensitivityFunction); }
public void test_withPerturbation() { ParameterizedFunctionalCurve base = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); DoubleArray parameters = PARAMETERS.minus(2d); ParameterizedFunctionalCurve expected = ParameterizedFunctionalCurve.of( METADATA, parameters, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); assertEquals(base.withPerturbation((i, v, m) -> v - 2d), expected); }
public void test_withParameters() { ParameterizedFunctionalCurve base = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); DoubleArray parameters = DoubleArray.of(1d, 2d, 3d); ParameterizedFunctionalCurve expected = ParameterizedFunctionalCurve.of( METADATA, parameters, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); assertEquals(base.withParameters(parameters), expected); }
public void test_withParameter() { ParameterizedFunctionalCurve base = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); DoubleArray parameters = DoubleArray.of(1.2, 1d, 8.9); ParameterizedFunctionalCurve expected = ParameterizedFunctionalCurve.of( METADATA, parameters, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); assertEquals(base.withParameter(1, 1d), expected); }
public void test_values() { ParameterizedFunctionalCurve test = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); double x = 5.2; assertEquals(test.yValue(x), VALUE_FUNCTION.apply(PARAMETERS, x)); assertEquals(test.firstDerivative(x), DERIVATIVE_FUNCTION.apply(PARAMETERS, x)); assertEquals(test.yValueParameterSensitivity(x), UnitParameterSensitivity.of( METADATA.getCurveName(), METADATA.getParameterMetadata().get(), SENSITIVITY_FUNCTION.apply(PARAMETERS, x))); }
public void test_withMetadata() { ParameterizedFunctionalCurve base = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); CurveMetadata metadata = DefaultCurveMetadata.builder() .curveName("test") .yValueType(ValueType.DISCOUNT_FACTOR) .xValueType(ValueType.YEAR_FRACTION) .build(); ParameterizedFunctionalCurve expected = ParameterizedFunctionalCurve.of( metadata, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); assertEquals(base.withMetadata(metadata), expected); }
public void test_of() { ParameterizedFunctionalCurve test = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); assertEquals(test.getValueFunction(), VALUE_FUNCTION); assertEquals(test.getDerivativeFunction(), DERIVATIVE_FUNCTION); assertEquals(test.getSensitivityFunction(), SENSITIVITY_FUNCTION); assertEquals(test.getMetadata(), METADATA); assertEquals(test.getName(), METADATA.getCurveName()); assertEquals(test.getParameter(2), PARAMETERS.get(2)); assertEquals(test.getParameterCount(), PARAMETERS.size()); assertEquals(test.getParameterMetadata(1), METADATA.getParameterMetadata(1)); assertEquals(test.getParameters(), PARAMETERS); }
public void test_sensitivities() { ParameterizedFunctionalCurve test = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); DoubleArray sensiVal = DoubleArray.of(1d, 2d, 3d); assertEquals(test.createParameterSensitivity(sensiVal), UnitParameterSensitivity.of(METADATA.getCurveName(), METADATA.getParameterMetadata().get(), sensiVal)); assertEquals(test.createParameterSensitivity(USD, sensiVal), CurrencyParameterSensitivity.of(METADATA.getCurveName(), METADATA.getParameterMetadata().get(), USD, sensiVal)); }
public void coverage() { ParameterizedFunctionalCurve test1 = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); coverImmutableBean(test1); ParameterizedFunctionalCurve test2 = ParameterizedFunctionalCurve.of( metadata, params, value, deriv, sensi); coverBeanEquals(test1, test2);