Class IborFutureCurveNode

  • All Implemented Interfaces:
    CurveNode, Serializable, org.joda.beans.Bean, org.joda.beans.ImmutableBean

    public final class IborFutureCurveNode
    extends Object
    implements CurveNode, org.joda.beans.ImmutableBean, Serializable
    A curve node whose instrument is an Ibor Future.

    The trade produced by the node will be a long for a positive quantity and a short for a negative quantity. This convention is line with other nodes where a positive quantity is similar to long a bond or deposit.

    See Also:
    Serialized Form
    • Method Detail

      • of

        public static IborFutureCurveNode of​(IborFutureTemplate template,
                                             QuoteId rateId)
        Obtains a curve node for an Ibor Future using the specified template and rate key.
        Parameters:
        template - the template used for building the instrument for the node
        rateId - the identifier of the market rate for the security
        Returns:
        a node whose instrument is built from the template using a market rate
      • of

        public static IborFutureCurveNode of​(IborFutureTemplate template,
                                             QuoteId rateId,
                                             double additionalSpread)
        Obtains a curve node for an Ibor Future using the specified template, rate key and spread.
        Parameters:
        template - the template defining the node instrument
        rateId - the identifier of the market rate for the security
        additionalSpread - the additional spread amount added to the rate
        Returns:
        a node whose instrument is built from the template using a market rate
      • of

        public static IborFutureCurveNode of​(IborFutureTemplate template,
                                             QuoteId rateId,
                                             double additionalSpread,
                                             String label)
        Obtains a curve node for an Ibor Future using the specified template, rate key, spread and label.
        Parameters:
        template - the template defining the node instrument
        rateId - the identifier of the market rate for the security
        additionalSpread - the additional spread amount added to the rate
        label - the label to use for the node, if empty an appropriate default label will be generated
        Returns:
        a node whose instrument is built from the template using a market rate
      • requirements

        public Set<ObservableId> requirements()
        Description copied from interface: CurveNode
        Determines the market data that is required by the node.

        This returns the market data needed to build the trade that the node represents.

        Specified by:
        requirements in interface CurveNode
        Returns:
        requirements for the market data needed to build a trade representing the instrument at the node
      • date

        public LocalDate date​(LocalDate valuationDate,
                              ReferenceData refData)
        Description copied from interface: CurveNode
        Calculates the date associated with the node.

        Each curve node has an associated date which defines the x-value in the curve. This date is visible in the parameter metadata.

        Specified by:
        date in interface CurveNode
        Parameters:
        valuationDate - the valuation date used when calibrating the curve
        refData - the reference data to use to resolve the trade
        Returns:
        the date associated with the node
      • metadata

        public DatedParameterMetadata metadata​(LocalDate valuationDate,
                                               ReferenceData refData)
        Description copied from interface: CurveNode
        Returns metadata for the node.

        This provides curve metadata for the node at the specified valuation date.

        Specified by:
        metadata in interface CurveNode
        Parameters:
        valuationDate - the valuation date used when calibrating the curve
        refData - the reference data to use to resolve the trade
        Returns:
        metadata for the node
      • trade

        public IborFutureTrade trade​(double quantity,
                                     MarketData marketData,
                                     ReferenceData refData)
        Description copied from interface: CurveNode
        Creates a trade representing the instrument at the node.

        This uses the observed market data to build the trade that the node represents. The reference data is typically used to find the start date of the trade from the valuation date. The resulting trade is not resolved. The notional of the trade is taken from the 'quantity' variable. The quantity is signed and will affect whether the trade is Buy or Sell. The valuation date is defined by the market data.

        Specified by:
        trade in interface CurveNode
        Parameters:
        quantity - the quantity or notional of the trade
        marketData - the market data required to build a trade for the instrument, including the valuation date
        refData - the reference data, used to resolve the trade dates
        Returns:
        a trade representing the instrument at the node
      • resolvedTrade

        public ResolvedIborFutureTrade resolvedTrade​(double quantity,
                                                     MarketData marketData,
                                                     ReferenceData refData)
        Description copied from interface: CurveNode
        Creates a resolved trade representing the instrument at the node.

        This uses the observed market data to build the trade that the node represents. The trade is then resolved using the specified reference data if necessary. The valuation date is defined by the market data.

        Resolved objects may be bound to data that changes over time, such as holiday calendars. If the data changes, such as the addition of a new holiday, the resolved form will not be updated. Care must be taken when placing the resolved form in a cache or persistence layer.

        Specified by:
        resolvedTrade in interface CurveNode
        Parameters:
        quantity - the quantity or notional of the trade
        marketData - the market data required to build a trade for the instrument, including the valuation date
        refData - the reference data, used to resolve the trade
        Returns:
        a trade representing the instrument at the node
      • sampleResolvedTrade

        public ResolvedIborFutureTrade sampleResolvedTrade​(LocalDate valuationDate,
                                                           FxRateProvider fxProvider,
                                                           ReferenceData refData)
        Description copied from interface: CurveNode
        Creates a resolved trade representing the instrument at the node.

        This uses an arbitrary quantity, typically 1, and an arbitrary market data quote, typically 0, to create a trade. This is useful when the trade is to be used to calculate the current par value. The FX provider is typically only used for cross-currency trades. In many cases, FxRateProvider.minimal() can be passed in.

        Resolved objects may be bound to data that changes over time, such as holiday calendars. If the data changes, such as the addition of a new holiday, the resolved form will not be updated. Care must be taken when placing the resolved form in a cache or persistence layer.

        Specified by:
        sampleResolvedTrade in interface CurveNode
        Parameters:
        valuationDate - the valuation date
        fxProvider - the FX rate provider
        refData - the reference data, used to resolve the trade
        Returns:
        a trade representing the instrument at the node
      • initialGuess

        public double initialGuess​(MarketData marketData,
                                   ValueType valueType)
        Description copied from interface: CurveNode
        Gets the initial guess used for calibrating the node.

        This uses the observed market data to select a suitable initial guess. For example, a Fixed-Ibor swap would return the market quote, which is the fixed rate, providing that the value type is 'ZeroRate'. The valuation date is defined by the market data.

        This is primarily used as a performance hint. Since the guess is refined by calibration, in most cases any suitable number can be returned, such as zero.

        Specified by:
        initialGuess in interface CurveNode
        Parameters:
        marketData - the market data required to build a trade for the instrument, including the valuation date
        valueType - the type of y-value that the curve will contain
        Returns:
        the initial guess of the calibrated value
      • withDate

        public IborFutureCurveNode withDate​(CurveNodeDate date)
        Returns a copy of this node with the specified date.
        Parameters:
        date - the date to use
        Returns:
        the node based on this node with the specified date
      • meta

        public static IborFutureCurveNode.Meta meta()
        The meta-bean for IborFutureCurveNode.
        Returns:
        the meta-bean, not null
      • builder

        public static IborFutureCurveNode.Builder builder()
        Returns a builder used to create an instance of the bean.
        Returns:
        the builder, not null
      • getTemplate

        public IborFutureTemplate getTemplate()
        Gets the template for the Ibor Futures associated with this node.
        Returns:
        the value of the property, not null
      • getRateId

        public QuoteId getRateId()
        Gets the identifier of the market data value which provides the price.
        Returns:
        the value of the property, not null
      • getAdditionalSpread

        public double getAdditionalSpread()
        Gets the additional spread added to the price. This amount is directly added to the price, where 0.993 represents a 0.7% rate.
        Returns:
        the value of the property
      • getLabel

        public String getLabel()
        Gets the label to use for the node, may be empty.

        If empty, a default label will be created when the metadata is built. The default label depends on the valuation date, so cannot be created in the node.

        Specified by:
        getLabel in interface CurveNode
        Returns:
        the value of the property, not null
      • getDate

        public CurveNodeDate getDate()
        Gets the method by which the date of the node is calculated, defaulted to 'End'.
        Returns:
        the value of the property
      • toBuilder

        public IborFutureCurveNode.Builder toBuilder()
        Returns a builder that allows this bean to be mutated.
        Returns:
        the mutable builder, not null
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object