## Class FxResetNotionalExchange

• java.lang.Object
• com.opengamma.strata.product.swap.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
• ### Nested Class Summary

Nested Classes
Modifier and Type Class Description
static class  FxResetNotionalExchange.Meta
The meta-bean for FxResetNotionalExchange.
• ### Method Summary

All Methods
Modifier and Type Method Description
FxResetNotionalExchange adjustPaymentDate​(java.time.temporal.TemporalAdjuster adjuster)
Adjusts the payment date using the rules of the specified adjuster.
boolean equals​(java.lang.Object obj)
Currency getCurrency()
Gets the payment currency.
double getNotional()
Gets the amount of the notional.
CurrencyAmount getNotionalAmount()
Gets the notional amount, positive if receiving, negative if paying.
FxIndexObservation getObservation()
Gets the FX index observation.
java.time.LocalDate getPaymentDate()
Gets the date that the payment is made.
Currency getReferenceCurrency()
Gets the reference currency, as defined in the contract.
int hashCode()
static FxResetNotionalExchange.Meta meta()
The meta-bean for FxResetNotionalExchange.
FxResetNotionalExchange.Meta metaBean()
static FxResetNotionalExchange of​(CurrencyAmount notionalAmount, java.time.LocalDate paymentDate, FxIndexObservation observation)
Obtains an instance from the amount, date and FX index observation.
java.lang.String toString()
• ### Methods inherited from class java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
• ### Methods inherited from interface org.joda.beans.Bean

property, propertyNames
• ### 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.
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
• #### meta

public static FxResetNotionalExchange.Meta meta()
The meta-bean for FxResetNotionalExchange.
Returns:
the meta-bean, not null
• #### metaBean

public FxResetNotionalExchange.Meta metaBean()
Specified by:
metaBean in interface Bean
• #### 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