Common Messages

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)

These fields relate to the quote as a whole rather than than the near leg or the far leg.

Trade Fields

Field Name Description Example

BidQuoteID

A unique ID which identifies this 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 which identifies this 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.

1.2345

SpotAskRate

See SpotBidRate

1.2345

CurrencyPair

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

USDGBP

BaseCurrency

The first part of the currency pair, e.g for USDGBPthis 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.

Usually 2 or 0

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 always 2.

2

NumberOfFractionalPips

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 of1.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.

Could be 0, 1 (for half pips e.g 0.5) or 2 (for quarter pips e.g .25)

GFA

The maximum amount the client is allowed to trade.

10000000

Optional Fields:

DigitsBeforePoint

Precision-related field that tells the client how to display rates. This is the maximum number of digits that can appear to the left of the decimal point, not the current number of digits left of the point for the current update. For example, EURJPY hovers around the 99.000 mark and can go over 100, so EURJPY rates will sometimes have 2 digits left of the point and sometimes 3. But the value of this DigitsBeforePoints field should always be 3.

Usually 2 or 3

Indicative

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

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 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, i.e the SPOT rate plus the points. This is the primary rate that should be displayed.

1.2345

L1_AllInAskRate

See L1_AllInBidRate, but this field contains the rate for ask

1.2345

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.

4.50

L1_FwdAskPips

See L1_FwdBidPips

5.55

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.000450

L1_FwdAskPoints

[optional] See L1_FwdBidPoints

0.000550

L1_NumberOfFractionalPoints

[optional] 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_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 recieved from the back-end trading system.

1.2340

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: