public final class UnitParameterSensitivity extends Object implements org.joda.beans.ImmutableBean, Serializable
Parameter sensitivity is the sensitivity of a value to the parameters of a
parameterized market data object that is used to determine the value.
Common ParameterizedData
implementations include Curve
and Surface
.
The sensitivity is expressed as an array, with one entry for each parameter in the ParameterizedData
.
The sensitivity has no associated currency.
A single UnitParameterSensitivity
represents the sensitivity to a single ParameterizedData
instance.
However, a ParameterizedData
instance can itself be backed by more than one underlying instance.
For example, a curve formed from two underlying curves.
Information about the split between these underlying instances can optionally be stored.
Modifier and Type | Class and Description |
---|---|
static class |
UnitParameterSensitivity.Meta
The meta-bean for
UnitParameterSensitivity . |
Modifier and Type | Method and Description |
---|---|
static UnitParameterSensitivity |
combine(MarketDataName<?> marketDataName,
UnitParameterSensitivity... sensitivities)
Combines two or more instances to form a single sensitivity instance.
|
int |
compareKey(UnitParameterSensitivity other)
Compares the key of two sensitivity objects, excluding the parameter sensitivity values.
|
boolean |
equals(Object obj) |
MarketDataName<?> |
getMarketDataName()
Gets the market data name.
|
int |
getParameterCount()
Gets the number of parameters.
|
ImmutableList<ParameterMetadata> |
getParameterMetadata()
Gets the list of parameter metadata.
|
ParameterMetadata |
getParameterMetadata(int parameterIndex)
Gets the parameter metadata at the specified index.
|
Optional<List<ParameterSize>> |
getParameterSplit()
Gets the split of parameters between the underlying parameterized data.
|
DoubleArray |
getSensitivity()
Gets the parameter sensitivity values.
|
int |
hashCode() |
UnitParameterSensitivity |
mapSensitivity(DoubleUnaryOperator operator)
Returns an instance with the specified operation applied to the sensitivity values.
|
static UnitParameterSensitivity.Meta |
meta()
The meta-bean for
UnitParameterSensitivity . |
UnitParameterSensitivity.Meta |
metaBean() |
CurrencyParameterSensitivity |
multipliedBy(Currency currency,
double amount)
Returns an instance converted this sensitivity to a monetary value, multiplying by the specified factor.
|
UnitParameterSensitivity |
multipliedBy(double factor)
Returns an instance with the sensitivity values multiplied by the specified factor.
|
static UnitParameterSensitivity |
of(MarketDataName<?> marketDataName,
DoubleArray sensitivity)
Obtains an instance from the market data name and sensitivity.
|
static UnitParameterSensitivity |
of(MarketDataName<?> marketDataName,
List<? extends ParameterMetadata> parameterMetadata,
DoubleArray sensitivity)
Obtains an instance from the market data name, metadata and sensitivity.
|
static UnitParameterSensitivity |
of(MarketDataName<?> marketDataName,
List<? extends ParameterMetadata> parameterMetadata,
DoubleArray sensitivity,
List<ParameterSize> parameterSplit)
Obtains an instance from the market data name, metadata, sensitivity and parameter split.
|
UnitParameterSensitivity |
plus(DoubleArray otherSensitivty)
Returns an instance with the specified sensitivity array added to the array in this instance.
|
UnitParameterSensitivity |
plus(UnitParameterSensitivity otherSensitivty)
Returns an instance with the specified sensitivity array added to the array in this instance.
|
ImmutableList<UnitParameterSensitivity> |
split()
Splits this sensitivity instance.
|
String |
toString() |
double |
total()
Returns the total of the sensitivity values.
|
UnitParameterSensitivity |
withSensitivity(DoubleArray sensitivity)
Returns an instance with new parameter sensitivity values.
|
public static UnitParameterSensitivity of(MarketDataName<?> marketDataName, List<? extends ParameterMetadata> parameterMetadata, DoubleArray sensitivity)
The market data name identifies the 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.
marketDataName
- the name of the market data that the sensitivity refers toparameterMetadata
- the parameter metadatasensitivity
- the sensitivity values, one for each parameterpublic static UnitParameterSensitivity of(MarketDataName<?> marketDataName, DoubleArray sensitivity)
The market data name identifies the ParameterizedData
instance that was queried.
The parameter metadata will be empty.
The size of the parameter metadata list must match the size of the sensitivity array.
marketDataName
- the name of the market data that the sensitivity refers tosensitivity
- the sensitivity values, one for each parameterpublic static UnitParameterSensitivity of(MarketDataName<?> marketDataName, List<? extends ParameterMetadata> parameterMetadata, DoubleArray sensitivity, List<ParameterSize> parameterSplit)
The market data name identifies the 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.
The parameter split allows the sensitivity to represent the split between two or more
underlying ParameterizedData
instances. The sum of the parameters in the split
must equal the size of the sensitivity array, and each name must be unique.
marketDataName
- the name of the market data that the sensitivity refers toparameterMetadata
- the parameter metadatasensitivity
- the sensitivity values, one for each parameterparameterSplit
- the split between the underlying ParameterizedData
instancespublic static UnitParameterSensitivity combine(MarketDataName<?> marketDataName, UnitParameterSensitivity... sensitivities)
The result will store information about the separate instances allowing it to be split()
later.
marketDataName
- the combined name of the market data that the sensitivity refers tosensitivities
- the sensitivity instances to combine, two or morepublic int getParameterCount()
This returns the number of parameters in the ParameterizedData
instance
which is the same size as the sensitivity array.
public ParameterMetadata getParameterMetadata(int parameterIndex)
If there is no specific parameter metadata, an empty instance will be returned.
parameterIndex
- the zero-based index of the parameter to getIndexOutOfBoundsException
- if the index is invalidpublic int compareKey(UnitParameterSensitivity other)
other
- the other sensitivity objectpublic CurrencyParameterSensitivity multipliedBy(Currency currency, double amount)
Each value in the sensitivity array will be multiplied by the specified factor.
currency
- the currency of the amountamount
- the amount to multiply bypublic UnitParameterSensitivity multipliedBy(double factor)
Each value in the sensitivity array will be multiplied by the factor.
factor
- the multiplicative factorpublic UnitParameterSensitivity mapSensitivity(DoubleUnaryOperator operator)
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.
inverse = base.mapSensitivity(value -> 1 / value);
operator
- the operator to be applied to the sensitivitiespublic UnitParameterSensitivity withSensitivity(DoubleArray sensitivity)
sensitivity
- the new sensitivity valuespublic UnitParameterSensitivity plus(DoubleArray otherSensitivty)
The specified array must match the size of the array in this instance.
otherSensitivty
- the other parameter sensitivityIllegalArgumentException
- if the market data name, metadata or parameter split differspublic UnitParameterSensitivity plus(UnitParameterSensitivity otherSensitivty)
The specified instance must have the same name, metadata and parameter split as this instance.
otherSensitivty
- the other parameter sensitivityIllegalArgumentException
- if the market data name, metadata or parameter split differspublic ImmutableList<UnitParameterSensitivity> split()
A single sensitivity instance may be based on more than one underlying ParameterizedData
,
as represented by getParameterSplit()
. Calling this method returns a list
where the sensitivity of this instance has been split into multiple instances as per
the parameter split definition. In the common case where there is a single underlying
ParameterizedData
, the list will be of size one containing this instance.
public double total()
public static UnitParameterSensitivity.Meta meta()
UnitParameterSensitivity
.public UnitParameterSensitivity.Meta metaBean()
metaBean
in interface org.joda.beans.Bean
public MarketDataName<?> getMarketDataName()
This name is used in the market data system to identify the data that the sensitivities refer to.
public ImmutableList<ParameterMetadata> getParameterMetadata()
There is one entry for each parameter.
public DoubleArray getSensitivity()
There is one sensitivity value for each parameter.
public Optional<List<ParameterSize>> getParameterSplit()
A single UnitParameterSensitivity
represents the sensitivity to a single ParameterizedData
instance.
However, a ParameterizedData
instance can itself be backed by more than one underlying instance.
For example, a curve formed from two underlying curves.
This list is present, it represents how to split this sensitivity between the underlying instances.
Copyright 2009-Present by OpenGamma Inc. and individual contributors
Apache v2 licensed
Additional documentation can be found at strata.opengamma.io.