@Override public UnitParameterSensitivity build() { return new UnitParameterSensitivity( marketDataName, parameterMetadata, sensitivity, parameterSplit); }
/** * Returns an instance with new parameter sensitivity values. * * @param sensitivity the new sensitivity values * @return an instance based on this one, with the specified sensitivity values */ public UnitParameterSensitivity withSensitivity(DoubleArray sensitivity) { return new UnitParameterSensitivity(marketDataName, parameterMetadata, sensitivity, parameterSplit); }
/** * Obtains an instance from the market data name, metadata and sensitivity. * <p> * The market data name identifies the {@link ParameterizedData} instance that was queried. * The parameter metadata provides information on each parameter. * The size of the parameter metadata list must match the size of the sensitivity array. * * @param marketDataName the name of the market data that the sensitivity refers to * @param parameterMetadata the parameter metadata * @param sensitivity the sensitivity values, one for each parameter * @return the sensitivity object */ public static UnitParameterSensitivity of( MarketDataName<?> marketDataName, List<? extends ParameterMetadata> parameterMetadata, DoubleArray sensitivity) { return new UnitParameterSensitivity(marketDataName, parameterMetadata, sensitivity, null); }
/** * Obtains an instance from the market data name, metadata, sensitivity and parameter split. * <p> * The market data name identifies the {@link ParameterizedData} instance that was queried. * The parameter metadata provides information on each parameter. * The size of the parameter metadata list must match the size of the sensitivity array. * <p> * The parameter split allows the sensitivity to represent the split between two or more * underlying {@link ParameterizedData} instances. The sum of the parameters in the split * must equal the size of the sensitivity array, and each name must be unique. * * @param marketDataName the name of the market data that the sensitivity refers to * @param parameterMetadata the parameter metadata * @param sensitivity the sensitivity values, one for each parameter * @param parameterSplit the split between the underlying {@code ParameterizedData} instances * @return the sensitivity object */ public static UnitParameterSensitivity of( MarketDataName<?> marketDataName, List<? extends ParameterMetadata> parameterMetadata, DoubleArray sensitivity, List<ParameterSize> parameterSplit) { return new UnitParameterSensitivity(marketDataName, parameterMetadata, sensitivity, parameterSplit); }
/** * Returns an instance with the specified operation applied to the sensitivity values. * <p> * Each value in the sensitivity array will be operated on. * For example, the operator could multiply the sensitivities by a constant, or take the inverse. * <pre> * inverse = base.mapSensitivity(value -> 1 / value); * </pre> * * @param operator the operator to be applied to the sensitivities * @return an instance based on this one, with the operator applied to the sensitivity values */ public UnitParameterSensitivity mapSensitivity(DoubleUnaryOperator operator) { return new UnitParameterSensitivity(marketDataName, parameterMetadata, sensitivity.map(operator), parameterSplit); }
return new UnitParameterSensitivity( marketDataName, combinedMeta.build(), DoubleArray.ofUnsafe(combinedSensitivities), split.build());