FX Vanilla Option

An FX option is a financial instrument that provides an option based on the future value of a foreign exchange. The option is European, exercised only on the exercise date.

For example, a call on a ‘EUR 1.00 / USD -1.41’ exchange is the option to perform a foreign exchange on the expiry date, where USD 1.41 is paid to receive EUR 1.00.

Key classes

An FX Vanilla Option is represented in Strata using the FxVanillaOption class. The FxVanillaOption class stores details of the product that was agreed. The trade details are stored in FxVanillaOptionTrade class.

The underlying FX transaction that will occur if the option is in the money is represented by an FxSingle.

An FxVanillaOption can be created as follows:

FxSingle fx = FxSingle.of(CurrencyAmount.of(Currency.USD, 1000),
                          FxRate.of(EUR, USD, 1.115),
                          LocalDate.of(2016, 10, 5));
FxVanillaOption fxOpt = FxVanillaOption.builder()
                                       .expiryDate(LocalDate.of(2016, 10, 7))
                                       .expiryTime(LocalTime.of(13, 00))

TIP: The strata-loader project provides the ability to load an FX Vanilla Option from CSV.

Risk measures

The strata-measure module provides high-level risk measures for FX Vanilla Options. The main entry point is FxVanillaOptionTradeCalculations.

Two methods of calculation are supported:

  • Black
  • Vanna Volga

The following measures are available:

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

These measures are also available using the calculation API.

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

  • BlackFxVanillaOptionTradePricer, see Javadoc.
  • BlackFxVanillaOptionProductPricer, see Javadoc.
  • VannaVolgaFxVanillaOptionTradePricer, see Javadoc.
  • VannaVolgaFxVanillaOptionProductPricer, see Javadoc.

Product model

The following table summarizes the fields on FxVanillaOption 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
longShort Whether the option is long or short Required
expiryDate The date that the option expires Required
expiryTime The time-of-day when the option expires Required
expiryZone The time-zone of the expiry time Required
underlying The FxSingle that the option is based on Required