Class FxResetNotionalExchange

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

    public final class FxResetNotionalExchange
    extends java.lang.Object
    implements SwapPaymentEvent, ImmutableBean, java.io.Serializable
    An exchange of notionals between two counterparties where FX reset applies.

    In most swaps, the notional amount is not exchanged, with only the interest being exchanged. However, in the case of an FX reset swap, the notional is exchanged. The swap contract will define a notional, which may vary over time, in one currency however payments are defined to occur in a different currency. An FX conversion is used to convert the amount.

    For example, a swap may have a notional of GBP 1,000,000 but be paid in USD. At the start of the first swap period, there is a notional exchange at the prevailing FX rate, say of USD 1,520,000. At the end of the first swap period, that amount is repaid and the new FX rate is used to determine the exchange for the second period, say of USD 1,610,000. In general, only the net difference due to FX will be exchanged at intermediate swap period boundaries.

    The reference currency is the currency in which the notional is actually defined. ISDA refers to the payment currency as the variable currency and the reference currency as the constant currency. An FX reset swap is also known as a Mark-to-market currency swap.

    Defined by the 2006 ISDA definitions article 10.

    See Also:
    Serialized Form
    • Method Detail

      • of

        public static FxResetNotionalExchange of​(CurrencyAmount notionalAmount,
                                                 java.time.LocalDate paymentDate,
                                                 FxIndexObservation observation)
        Obtains an instance from the amount, date and FX index observation.
        Parameters:
        notionalAmount - the notional amount that will be FX converted
        paymentDate - the date that the payment is made
        observation - the FX observation to perform
        Returns:
        the FX reset notional exchange
      • getCurrency

        public Currency getCurrency()
        Gets the payment currency.

        This returns the currency that the payment is made in. ISDA refers to this as the variable currency.

        Specified by:
        getCurrency in interface SwapPaymentEvent
        Returns:
        the payment currency
      • getReferenceCurrency

        public Currency getReferenceCurrency()
        Gets the reference currency, as defined in the contract.

        This is the currency of notional amount as defined in the contract. The notional will be converted from this currency to the payment currency using the specified index. ISDA refers to this as the constant currency.

        The reference currency must be one of the two currencies of the index.

        Returns:
        the reference currency, as defined in the contract
      • getNotional

        public double getNotional()
        Gets the amount of the notional.

        See getNotionalAmount().

        Returns:
        the amount of the notional
      • adjustPaymentDate

        public FxResetNotionalExchange adjustPaymentDate​(java.time.temporal.TemporalAdjuster adjuster)
        Description copied from interface: SwapPaymentEvent
        Adjusts the payment date using the rules of the specified adjuster.

        The adjuster is typically an instance of BusinessDayAdjustment. Implementations must return a new instance unless they are immutable and no change occurs.

        Specified by:
        adjustPaymentDate in interface SwapPaymentEvent
        Parameters:
        adjuster - the adjuster to apply to the payment date
        Returns:
        the adjusted payment event
      • getNotionalAmount

        public CurrencyAmount getNotionalAmount()
        Gets the notional amount, positive if receiving, negative if paying.

        The notional amount applicable during the period. The currency of the notional is specified by referenceCurrency but will be paid after FX conversion using the index.

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

        public java.time.LocalDate getPaymentDate()
        Gets the date that the payment is made.

        Each payment event has a single payment date. This date has been adjusted to be a valid business day.

        Specified by:
        getPaymentDate in interface SwapPaymentEvent
        Returns:
        the value of the property, not null
      • getObservation

        public FxIndexObservation getObservation()
        Gets the FX index observation.

        This defines the observation of the index used to obtain the FX reset rate.

        An FX index is a daily rate of exchange between two currencies. Note that the order of the currencies in the index does not matter, as the conversion direction is fully defined by the currency of the reference amount.

        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