/** * 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 CurrencyParameterSensitivity withSensitivity(DoubleArray sensitivity) { return new CurrencyParameterSensitivity(marketDataName, parameterMetadata, currency, sensitivity, parameterSplit); }
@Override public CurrencyParameterSensitivity build() { return new CurrencyParameterSensitivity( marketDataName, parameterMetadata, currency, sensitivity, parameterSplit); }
/** * Obtains an instance from the market data name, metadata, currency 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 currency the currency of the sensitivity * @param sensitivity the sensitivity values, one for each parameter * @return the sensitivity object */ public static CurrencyParameterSensitivity of( MarketDataName<?> marketDataName, List<? extends ParameterMetadata> parameterMetadata, Currency currency, DoubleArray sensitivity) { return new CurrencyParameterSensitivity(marketDataName, parameterMetadata, currency, sensitivity, null); }
/** * Obtains an instance from the market data name, metadata, currency, 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 currency the currency of the sensitivity * @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 CurrencyParameterSensitivity of( MarketDataName<?> marketDataName, List<? extends ParameterMetadata> parameterMetadata, Currency currency, DoubleArray sensitivity, List<ParameterSize> parameterSplit) { return new CurrencyParameterSensitivity(marketDataName, parameterMetadata, currency, sensitivity, parameterSplit); }
private CurrencyParameterSensitivity mapSensitivity(DoubleUnaryOperator operator, Currency currency) { return new CurrencyParameterSensitivity(marketDataName, parameterMetadata, currency, sensitivity.map(operator), parameterSplit); }
/** * Obtains an instance from the market data name, currency and a map of metadata to sensitivity. * <p> * The market data name identifies the {@link ParameterizedData} instance that was queried. * The parameter metadata provides information on each parameter. * One use of this method is to provide tenor-based sensitivity via {@link TenorParameterMetadata}. * * @param marketDataName the name of the market data that the sensitivity refers to * @param currency the currency of the sensitivity * @param sensitivityMetadataMap the map of parameter metadata to sensitivity * @return the sensitivity object */ public static CurrencyParameterSensitivity of( MarketDataName<?> marketDataName, Currency currency, Map<? extends ParameterMetadata, Double> sensitivityMetadataMap) { // only loop input map once and don't use size() to ensure no concurrency issues ImmutableList.Builder<ParameterMetadata> metadataList = ImmutableList.builder(); ImmutableList.Builder<Double> sensList = ImmutableList.builder(); for (Entry<? extends ParameterMetadata, Double> entry : sensitivityMetadataMap.entrySet()) { metadataList.add(entry.getKey()); sensList.add(entry.getValue()); } DoubleArray sensArray = DoubleArray.copyOf(sensList.build()); return new CurrencyParameterSensitivity(marketDataName, metadataList.build(), currency, sensArray, null); }
return new CurrencyParameterSensitivity( marketDataName, combinedMeta.build(), currency, DoubleArray.ofUnsafe(combinedSensitivities), split.build());