FX Swap

An FX Swap is a financial instrument that represents the exchange of an equivalent amount in two different currencies between counterparties on two different dates.

For example, an FX swap might represent the payment of USD 1,000 and the receipt of EUR 932 on the near date, and the payment of EUR 941 and the receipt of USD 1,000 on the far date.

Key classes

An FX Swap is represented in Strata using the FxSwap class. The FxSwap class stores details of the product that was agreed. The trade details are stored in FxSwapTrade class.

An FxSwap can be created as follows:

FxSwap fx = FxSwap.ofForwardPoints(CurrencyAmount.of(Currency.USD, 1000),  // amount
                                   EUR                                     // other currency
                                   0.932,                                  // FX rate at near date
                                   0.009,                                  // forward points
                                   LocalDate.of(2015, 6, 15),              // near date
                                   LocalDate.of(2015, 9, 15));             // far date

TIP: The strata-loader project provides the ability to load an FX Swap from FpML and CSV.

Risk measures

The strata-measure module provides high-level risk measures for FX Swaps. The main entry point is FxSwapTradeCalculations.

The following measures are available:

  • present value, and associated sensitivity
  • par spread
  • currency exposure
  • current cash

These measures are also available using the calculation API.

The strata-pricer module provides lower-level pricing support for FX Swaps:

  • DiscountingFxSwapTradePricer, see Javadoc.
  • DiscountingFxSwapProductPricer, see Javadoc.

Product model

The following table summarizes the fields on FxSwap that can be used to control the product. For more detail on the meaning of each field, see the Javadoc;

Property name Description Required/Optional
nearLeg The FxSingle near leg Required
farLeg The FxSingle far leg Required