Class UnitParameterSensitivities

  • All Implemented Interfaces:
    java.io.Serializable, Bean, ImmutableBean

    public final class UnitParameterSensitivities
    extends java.lang.Object
    implements ImmutableBean, java.io.Serializable
    Unit parameter sensitivity for parameterized market data, such as curves.

    Parameter sensitivity is the sensitivity of a value to the parameters of parameterized market data objects that are used to determine the value. Common ParameterizedData implementations include Curve and Surface.

    For example, par rate sensitivity to an underlying curve would be expressed using this class as there is no associated currency.

    The sensitivity is expressed as a single entry for piece of parameterized market data. The sensitivity has no associated currency. The order of the list has no specific meaning.

    One way of viewing this class is as a Map from a specific sensitivity key to DoubleArray sensitivity values. However, instead of being structured as a Map, the data is structured as a List, with the key and value in each entry.

    See Also:
    Serialized Form
    • Method Detail

      • of

        public static UnitParameterSensitivities of​(UnitParameterSensitivity... sensitivities)
        Obtains an instance from an array of sensitivity entries.

        The order of sensitivities is typically unimportant, however it is retained and exposed in equals(Object).

        Parameters:
        sensitivities - the sensitivities
        Returns:
        the sensitivities instance
      • of

        public static UnitParameterSensitivities of​(java.util.List<? extends UnitParameterSensitivity> sensitivities)
        Obtains an instance from a list of sensitivity entries.

        The order of sensitivities is typically unimportant, however it is retained and exposed in equals(Object).

        Parameters:
        sensitivities - the list of sensitivity entries
        Returns:
        the sensitivities instance
      • size

        public int size()
        Gets the number of sensitivity entries.
        Returns:
        the size of the internal list of point sensitivities
      • getSensitivity

        public UnitParameterSensitivity getSensitivity​(MarketDataName<?> name)
        Gets a single sensitivity instance by name.
        Parameters:
        name - the curve name to find
        Returns:
        the matching sensitivity
        Throws:
        java.lang.IllegalArgumentException - if the name and currency do not match an entry
      • findSensitivity

        public java.util.Optional<UnitParameterSensitivity> findSensitivity​(MarketDataName<?> name)
        Finds a single sensitivity instance by name.

        If the sensitivity is not found, optional empty is returned.

        Parameters:
        name - the curve name to find
        Returns:
        the matching sensitivity
      • combinedWith

        public UnitParameterSensitivities combinedWith​(UnitParameterSensitivity other)
        Combines this parameter sensitivities with another instance.

        This returns a new sensitivity instance with the specified sensitivity added. This instance is immutable and unaffected by this method. The result may contain duplicate parameter sensitivities.

        Parameters:
        other - the other parameter sensitivity
        Returns:
        an instance based on this one, with the other instance added
      • combinedWith

        public UnitParameterSensitivities combinedWith​(UnitParameterSensitivities other)
        Combines this parameter sensitivities with another instance.

        This returns a new sensitivity instance with a combined list of parameter sensitivities. This instance is immutable and unaffected by this method. The result may contain duplicate parameter sensitivities.

        Parameters:
        other - the other parameter sensitivities
        Returns:
        an instance based on this one, with the other instance added
      • multipliedBy

        public CurrencyParameterSensitivities multipliedBy​(Currency currency,
                                                           double amount)
        Converts this sensitivity to a monetary value, multiplying by the specified factor.

        The result will consist of the entries based on the entries of this instance. Each entry in the result will be in the specified currency and multiplied by the specified amount.

        Parameters:
        currency - the currency of the amount
        amount - the amount to multiply by
        Returns:
        the resulting sensitivity object
      • multipliedBy

        public UnitParameterSensitivities multipliedBy​(double factor)
        Returns an instance with the sensitivity values multiplied by the specified factor.

        The result will consist of the same entries, but with each sensitivity value multiplied. This instance is immutable and unaffected by this method.

        Parameters:
        factor - the multiplicative factor
        Returns:
        an instance based on this one, with each sensitivity multiplied by the factor
      • mapSensitivities

        public UnitParameterSensitivities mapSensitivities​(java.util.function.DoubleUnaryOperator operator)
        Returns an instance with the specified operation applied to the sensitivity values.

        The result will consist of the same entries, but with the operator applied to each sensitivity value. This instance is immutable and unaffected by this method.

        This is used to apply a mathematical operation to the sensitivity values. For example, the operator could multiply the sensitivities by a constant, or take the inverse.

           inverse = base.mapSensitivities(value -> 1 / value);
         
        Parameters:
        operator - the operator to be applied to the sensitivities
        Returns:
        an instance based on this one, with the operator applied to the sensitivity values
      • split

        public UnitParameterSensitivities split()
        Splits this sensitivity instance.

        This examines each individual sensitivity to see if it can be split. If any can be split, the result will contain the combination of the split sensitivities.

        Returns:
        this sensitivity, with any combined sensitivities split
      • equalWithTolerance

        public boolean equalWithTolerance​(UnitParameterSensitivities other,
                                          double tolerance)
        Checks if this sensitivity equals another within the specified tolerance.

        This returns true if the two instances have the same keys, with arrays of the same length, where the double values are equal within the specified tolerance.

        Parameters:
        other - the other sensitivity
        tolerance - the tolerance
        Returns:
        true if equal up to the tolerance
      • getSensitivities

        public com.google.common.collect.ImmutableList<UnitParameterSensitivity> getSensitivities()
        Gets the parameter sensitivities.

        Each entry includes details of the ParameterizedData it relates to.

        Returns:
        the value of the property, not null
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object