Common Messages

This documentation is for FX Professional 2.18 and earlier. From version 2.19 (2 Jun 2019), FX Professional requires back end adapters to implement the FX Integration API 3. For documentation on FX Integration API 3 messages, see FX Integration API.

Many of the trade models share common states and transitions. This page provides fields and values for those messages. For each of the messages below, [c] denotes that the message is sent by the client, [s] denotes that the message is sent by the server.

Price Update Messages [s] (for Streaming Rates)

The fields in the table below relate to the quote as a whole rather than the near leg or the far leg.

Trade fields
Field Name Description Example

BidQuoteID

A unique ID that identifies the bid side of this quote. This is typically provided by the OMS (Order Management System) and needs to be sent back to the OMS when you want to trade on the bid side, i.e client sells.

EUR_USD_TIER1_B_15.12563.342.12

AskQuoteID

A unique ID that identifies the ask side of this quote. This is typically provided by the OMS (Order Management System) and needs to be sent back to the OMS when you want to trade on the ask side, i.e client buys.

EUR_USD_TIER1_A_15.12563.342.12

SpotBidRate

For SPOT quotes this value will be identical to the L1_AllInBidRate. For forward quotes this will contain the SPOT rate that the forward all-in rate was derived from. For forward quotes the value in this field should always equal L1_AllInBidRate - L1_FwdBidPoints.

0.1566

SpotAskRate

See SpotBidRate

0.1116

SwapBidPoints

This field represents the difference between L1_FwdBidPoints and L2_FwdBidPointsSwap, see below in Trade Leg Fields. Points and Margins are also sent in a Swap Price Update Message.

SwapAskPoints

See SwapBidPoints

CurrencyPair

The currency pair that the quote relates to, in the form "<Base Currency><Term Currency>". Note that the FX Professional Motif 2 does not use a forward slash between the base and term currencies.

USDGBP

BaseCurrency

The first part of the currency pair, e.g for USDGBP this would be USD.

USD

TermCurrency

The second part of the currency pair, e.g for USDGBP this would be GBP.

GBP

DealtCurrency

The currency that the amount is specified in, which can either be the base currency or the term currency. The client is allowed to specify the dealt currency when they make the market data request or RFS request.

The dealt currency does not affect the rate, but it might affect your volume band. For example if the client wants rates for USDGBP and you specify an amount of 1,000,000 and dealt currency GBP, then you would be trading more currency than if you specify an amount of 1,000,000 and a dealt currency of USD. It also affects your GFA, for the same reason - you’re allowed to trade a higher quantity of lower value currencies.

USD

DigitsBeforePips

Precision-related field that tells the client how to display rates. This is the number of digits between the decimal point and the pips (i.e the "big digits" that the client wants to look at). For most currency pairs the value of this field will be 2, for example for a USDGBP rate of 1.23456 the pips are 45 so there are two digits between the decimal point and the pips. For USDJPY the rate could be 103.256 and the pips are the 25, so in this case the value of DigitsBeforePips should be 0.

2

NumberOfPips

Precision-related field that tells the client how to display rates. This is the number of pips the client wants to look at. Normally this value is 2.

2

NumberOfFractionalPips

Deprecated in favour of SpotRateDPS (as of FX Integration API 2.6.0). Precision-related field that tells the client how to display rates. This is the number of digits after the pips. For example, for a USDGBP rate of 1.23456 the pips are the 45 and there is one digit (the 6) after the pips, so the value of the NumberOfFractionalPips field should be 1. There are typically more fractional pips on forward rates than spot rates.

0

SpotRateDPS

The number of decimal places to display after the decimal point. Available as of FX Integration API 2.6.0.

4

GFA

The maximum amount the client is allowed to trade.

10000000

Indicative

[Optional] If this field is included and has the value "true" then the quote is indicative only and not tradeable. If the field is absent or has the value "false" then the quote is tradeable.

true

SwapGFA

[Optional] For forward quotes, this value indicates the maximum tradeable amount for even SPOT/FWD swaps involving this tenor. For example, if you send a quote for the "1M" tenor with GFA=1000000 and SwapGFA=50000000 it indicates that the user can trade up to 1 million on a 1M forward outright, but up to 50 million on an even SPOT/1M swap.

The GFA/liquidity for even swaps is usually much higher than that for SPOT or forward GFA; where it’s typically ten times higher. This is because an even swap has less risk for the bank than an outright trade - if you buy an amount (even a very large amount) and sell it back in a month’s time then the potential loss for the bank is fairly small, barring unusual price fluctuations.

50000000

The fields in the table below all relate to a leg. For non-swap quotes you will only receive fields with the 'L1_' prefix because the trade only has one leg. For swap quotes these fields will be repeated with an 'L2_' prefix, representing the far leg.

Trade leg fields
Field Name Description Example

L1_AllInBidRate

For SPOT quotes this will be the bid rate. For forward quotes this will be the bid all-in rate (SPOT + L1_FwdBidPoints). This is the primary rate that should be displayed.

0.111455

L1_AllInAskRate

For SPOT quotes this will be the ask rate. For forward quotes this will be the ask all-in rate (SPOT + L1_FwdAskPoints). This is the primary rate that should be displayed.

0.156808

L1_FwdBidPips

For forward quotes this field contains the bid points, specified in pips. The pip rules differ by currency pair and should be handled by the back end. For SPOT quotes, this field is not sent.

-1.45

L1_FwdAskPips

For forward quotes this field contains the ask points, specified in pips. The pip rules differ by currency pair and should be handled by the back end. For SPOT quotes, this field is not sent.

2.08

L1_Tenor

The tenor for the near leg. This will either be a tenor code such as "SPOT", "1M", "1Y", or if the value date is not a tenor, this field will contain the string "BROKEN".

SPOT

L1_FwdBidPoints

[Optional] For forward quotes this field contains the raw amount to add to the SPOT rate in order to produce the forward all-in rate, i.e this field contains the forward points specified as a normal decimal number rather than in pips. For forward quotes the value of L1_SpotBidRate + L1_FwdBidPoints should always equal L1_AllInBidRate. For SPOT quotes this field is not sent.

0.000145

L1_FwdAskPoints

[Optional] For forward quotes this field contains the raw amount to add to the SPOT rate in order to produce the forward all-in rate, i.e this field contains the forward points specified as a normal decimal number rather than in pips. For forward quotes the value of L1_SpotAskRate + L1_FwdAskPoints should always equal L1_AllInBidRate. For SPOT quotes this field is not sent.

0.000208

L1_NumberOfFractionalPoints

[Optional] Deprecated in favour of L*_AllInRateDPS (as for FX Integration API 2.6.0). Number of decimal places the displayed value of the forward points may have, usually 2 but may be other values. Can vary per tenor, so they need to be specified at the leg level as a swap could have different values per leg. If not sent the front end will need derive this data from the L1_FwdBidPips if it needs it.

2

L1_AllInRateDPS

[Optional] Number of digits to display after the decimal point. Available as of FX Integration API 2.6.0.

6

L1_MidRate

[Optional] This field represents the midrate; which is usually shown for regulatory purposes and not traded on. The midrate should be the rate that represents the median average between the bid all-in rate and the ask all-in rate, before the bank applies it’s spread. The midrate is not calculated in the adapter, but should be received from the back-end trading system.

0.134132

Reject Message [s]

At various states (see the trade model above) the server may send a Reject message, this may be due to validation failing on the values of the trade open message, another internal adapter reason, or the back-end trading system may reject the trade. In all cases an error code and message is provided in order to discern the nature of the problem.

Field Name Value Example

RequestID

The client generated ID that is unique for this request.

112314243333

MsgType

The transition that the server wants to make in the state model

Reject

ErrorCode

A code for the error message. The client will display a translation of this code using i18n

1232

ErrorMessage

The error message

Quote rejected by provider

Error Message [s]

At various states the server may send an Error message. A state will transition the Error state if a problem occurs internally in the adapter, for example the back-end trading system may send a message that could not be parsed, or an interim database connection failed so certain data could not be retrieved in order to execute the trade. These kinds of errors should be less frequent.

Field Name Value Example

RequestID

The client generated ID that is unique for this request.

112314243333

MsgType

The transition that the server wants to make in the state model

Error

Hold Message [s]

At various states (see the trade model above) the server may send a Hold message. This message is sent to notify the client that the trade has been held by an auto trade or manual dealer.

Field Name Value Example

RequestID

The client generated ID that is unique for this request.

112314243333

MsgType

The transition that the server wants to make in the state model

Hold

ClientClose Message [c]

This is the message the client sends in close a current trade

Field Name Value Example

RequestID

The client generated ID that is unique for this request.

112314243333

MsgType

The transition that the client wants to make in the state model

ClientClose

ClientCloseAck Message [s]

At various states (see the trade model above) the server may send a Hold message. The message is sent to notify the client that the trade has been held by an auto trade or manual dealer.

Field Name Value Example

RequestID

The client generated ID that is unique for this request.

112314243333

MsgType

The transition that the server wants to make in the state model

ClientCloseAck


See also: