Maker API Application Layer FIX Message Definitions
Application Layer FIX Message Definitions include the following:
Supported Application Layer Messages
Supported messages together with the sessions they are applicable for are outlined below:
Message Name | MsgType | Session Type | Sent by EBS | Sent by Maker |
---|---|---|---|---|
Market Data Request | V | Market Data | √ | - |
Market Data Full Refresh | W | Market Data | - | √ |
Market Data Request Reject | Y | Market Data | - | √ |
New Order Single | D | Trading | √ | - |
Execution Report | 8 | Trading | - | √ |
Execution Ack | BN | Trading | √ | - |
Don't Know Trade | Q | Trading | √ | - |
In the following section where fields contain custom values or elements of later versions of the FIX protocol these have been highlighted.
Where possible we recommend clients only populate mandatory tags on any given message, omitting any optional tags. Tags which we recommend are omitted are highlighted in a light blue background.
Market Data (ESP)
Market Data Request (35=V)
A separate subscription request will be sent for each instrument of each pricing tier.
When a single FIX session supports multiple pricing segments, the pricing segment will be identified on the MDRequest using the MDStreamID (1500) field.
A single subscription supports all size buckets. Quantities are dynamic and are not specified in the MDRequest.
Tag | Field Name | Req | Ver | Comments | ||
---|---|---|---|---|---|---|
262 | MDReqID | Y | 4.4 | Unique identifier for the MarketDataRequest assigned by EBS. | ||
263 | SubscriptionRequestType | Y | 4.4 | 1 = Subscribe 2 = Unsubscribe (MDReqID will match original subscription) | ||
265 | MDUpdateType | C | 4.4 | Required when SubscriptionRequestType=1 [Subscribe]. 0 = Snapshot Message | ||
264 | MarketDepth | C | 4.4 | Number of price levels requested. Required when SubscriptionRequestType=1 [Subscribe]. 0 = Full book 1 = Top of book. n = number of price levels | ||
MDReqGrp | ||||||
267 | NoMDEntryTypes | Y | 4.4 | For Subscribe: Set to '2' (All requests must be two-sided price requests) For Unsubscribe, the value will be ignored by EBS. | ||
→ | 269 | MDEntryType | Y | 4.4 | For Unsubscribe, the value will be ignored. 1 = Offer | |
END – MDReqGrp | ||||||
InstrmtMDReqGrp - All values in this group will be ignored on unsubscribe requests. | ||||||
146 | NoRelatedSym | Y | 4.4 | Always '1' | ||
→ | 55 | Symbol | Y | 4.4 | The currency pair requested, in CCY1/CCY2 format, where CCY1 and CCY2 are the ISO codes of the base and local currencies for which a price is requested, e.g. EUR/USD. | |
→ | 167 | SecurityType | N | 4.4 | Valid Values: FXSPOT | |
→ | 63 | SettlType | N | 4.4 | Instrument tenor. | |
→ | 64 | SettlDate | C | 4.4 | Settlement date of (near leg of) instrument in YYYYMMDD format. Not provided for weekly subscriptions. | |
→ | 1500 | MDStreamID | N | 4.4 | Name of the pricing segment (tier). | |
END - InstrmtMDReqGrp | ||||||
58 | Text | N | 4.4* | Reason for the Market Data unsubscription (Optionally provided when SubscriptionRequestType=2 [Unsubscribe]). Custom field on this message. |
Market Data Snapshot Full Refresh (35=W)
Each snapshot stands alone and overrides any previously sent snapshot for that subscription. Snapshots should be sent whenever at least one of the rungs on the Snapshot has been changed in price or size.
Additionally, if no change has occurred within the pre-configured stale quote interval for this instrument, a snapshot should be re-sent to keep the prices active. This interval can be configured by instrument and/or disabled. Discuss your requirements with you EBS representative.
If Market Data becomes unavailable for an instrument, a snapshot should be sent indicating "Empty Book" to indicate that the instrument's last snapshot should be invalidated. When market data is again available, a new snapshot can be sent.
Tag | Field Name | Req | Ver | Comments | |
---|---|---|---|---|---|
262 | MDReqID | Y | 4.4 | Unique identifier for the initial MarketDataRequest. Echo back the value on the MDRequest message. | |
1500 | MDStreamID | N | 5.0 | Name of the pricing segment (tier). | |
55 | Symbol | N | 4.4 | Currency pair in CCY1/CCY2 format. | |
64 | SettlDate | N | 4.4 | Settlement date of instrument in YYYYMMDD format. Note EBS will not validate this date; the date on the corresponding Market Data Request will prevail. | |
541 | MaturityDate | N | 4.4 | For NDF instruments, represents the fixing date of the instrument in YYYYMMDD format. | |
MDFullGrp | |||||
268 | NoMDEntries | Y | 4.4 | Number of entries in the MarketData message. Must be ≥ 1 | |
→ | 269 | MDEntryType | Y | 5.0 | 0 = Bid 1 = Offer J = Empty Book - Indicates no bids or offers. |
→ | 270 | MDEntryPx | C | 4.4 | Price of the market data entry. Must be > 0 |
→ | 271 | MDEntrySize | C | 4.4 | LP's quantity available at this price. Must be > 0 |
→ | 299 | QuoteEntryID | N | 4.4 | Unique identifier of a Market Data quote. Maximum of 20 characters supported. Should only be sent if Maker require EBS to use Previously Quoted orders (as opposed to limit orders) in which case this tag is mandatory. |
END - MDFullGrp |
Market Data Request Reject (35=Y)
This message may be sent by a Maker to reject a Market Data Request or to indicate that market data will no longer be available on the current subscription.
A MarketDataRequestReject message may be sent by the Maker at the end of rollover to force the EBS system to re-issure a new Market Data subscription.
Tag | Field Name | Req | Ver | Comments |
---|---|---|---|---|
262 | MDReqID | Y | 4.4 | Market Data request id which is being rejected. |
281 | MDReqRejReason | N | 4.4* | Rejection reason code: 1 – Duplicate MDReqID 2 – Insufficient Bandwidth 3 – Insufficient Permissions 4 – Unsupported SubscriptionRequestType 5 – Unsupported MarketDepth 6 – Unsupported MDUpdateType 8 – Unsupported MDEntryType x – Market Data Unavailable (Custom) y – Trade Date rollover (Custom) z – Other – Reason to be provided in Text field (Custom) |
58 | Text | C | 5.0 | Textual description of the reason for the market data request rejection. |
Trading
New Order Single (35=D)
Tag | Field Name | Req | Ver | Comments | |
---|---|---|---|---|---|
11 | ClOrdID | Y | 4.4 | A unique identifier for the order assigned by the EBS. | |
1 | Account | Y | 4.4 | Client account at the Maker where this transaction will settle. | |
55 | Symbol | Y | 4.4 | Currency pair to be traded, in CCY1/CCY2 format. | |
167 | SecurityType | N | 4.4 | Valid Values: FXSPOT | |
63 | SettlType | N | 4.4 | Instrument tenor. | |
64 | SettlDate | Y | 4.4 | Settlement date of the instrument (value date). | |
541 | MaturityDate | N | 4.4 | Supplied for NDF instruments only. Represents the fixing date of the instrument in YYYYMMDD format. | |
54 | Side | Y | 4.4 | Trading intention from Taker perspective. 1 = Taker Buys 2 = Taker Sells | |
40 | OrdType | Y | 4.4 | Type of order: 2 = Limit D = Previously Quoted (targeted to a specific Quote) QuoteID must be provided. | |
59 | TimeInForce | N | 5.0 | Specifies how long the order will remain in effect. Not currently supplied but may be in the future. | |
1070 | MDQuoteType | N | 4.4* | Type of quote on which this trade proposal is based: 1 = Tradeable. LP may reject NOS. (Default) 99 = Firm quote. LP must confirm trade.(Custom) | |
38 | OrderQty | Y | 4.4 | Quantity of order, in units of the specified Currency. | |
15 | Currency | N | 4.4 | 3 character ISO code of the dealing currency. May be either base (CCY1) or term (CCY2) currency. | |
44 | Price | Y | 4.4 | Limit price of order. | |
117 | QuoteID | C | 4.4 | Provided for PQ orders (OrdType=D) only, to indicate the target quote. | |
60 | TransactTime | Y | 4.4 | UTC Timestamp (Date/Time) of order. | |
1028 | ManualOrderIndicator | N | 5.0 | Y = Indicates that LC order was received via a manual interface. | |
1500 | MDStreamID | N | 5.0 | Name of the pricing segment (tier) targeted by this order. Provided when multiple pricing segments are provided on a single FIX session. | |
110 | MinQty | N | 4.4 | On orders for which partial fill is supported (TIF=IOC), indicates minimum acceptable fill quantity of the order. Not used currently. | |
Parties - Identifies party involved in the NewOrderSingle. | |||||
453 | NoPartyIDs | N | 4.4 | Number of PartyID (448), PartyIDSource (447), and PartyRole (452) entries. | |
→ | 448 | PartyID | Y | 4.4 | Identifier of the party. |
→ | 447 | PartyIDSource | Y | 5.0 | Identifies the source of PartyID value. Always: |
→ | 452 | PartyRole | Y | 4.4 | 1 = Executing LC Firm (Disclosed/Non-disclosed alias) 12 = Executing LC Trader (Disclosed/Non-disclosed TraderId) |
END - Parties |
Execution Report (35=8)
An Execution Report is sent from the Maker to indicate whether a deal has been filled or rejected.
Tag | Field Name | Req | Ver | Comments | ||||
---|---|---|---|---|---|---|---|---|
37 | OrderID | Y | 4.4 | Unique identifier of the order assigned by the client. | ||||
11 | ClOrdID | Y | 4.4 | Unique identifier of the order/request as assigned by EBS. | ||||
17 | ExecID | Y | 4.4 | Unique identifier for this fill when ExecType=F [Trade]. Maximum length is 28 characters. For other ExecTypes 0 may be supplied in this field. | ||||
150 | ExecType | Y | 4.4 | Purpose of this Execution Report 0 = New (order accepted) 4 = Cancelled 8 = Rejected F = Trade (Partial or full) | ||||
39 | OrdStatus | Y | 4.4 | Status of order 2 = Filled (Completed) 4 = Cancelled 8 = Rejected | ||||
1 | Account | N | 4.4 | Trader's floor code echoed from NOS. | ||||
55 | Symbol | N | 4.4 | Currency pair in CCY1/CCY2 format. | ||||
54 | Side | Y | 4.4 | Side of the order from the Taker perspective. (Echoed from request) 2 = Taker Sells | ||||
64 | SettlDate | N | 4.4 | The settlement date of this trade in YYYYMMDD format. | ||||
541 | MaturityDate | C | 4.4 | For NDF trades only, represents the fixing date of the trade in YYYYMMDD format. Echoed from NOS, if provided, for all ExecType values. | ||||
40 | OrdType | N | 4.4 | Type of order: D = Previously Quoted (targeted to a specific Quote) Echoed from NOS if provided. | ||||
38 | OrderQty | N | 4.4 | Quantity of order, in units of the specified Currency. Echoed from NOS if provided. | ||||
15 | Currency | N | 4.4 | 3 character ISO code of the dealt Currency. (Echoed from NOS) The Size and Quantity fields of the order and trade are expressed in terms of the specified Currency. | ||||
59 | TimeInForce | N | 4.4 | Specifies how long the order will remain in effect. Echoed from NOS, if provided | ||||
44 | Price | N | 4.4 | Price submitted on the order. Echoed from NOS, if provided | ||||
1500 | MDStreamID | N | 5.0 | Name of the pricing segment (tier). Custom on this message type. | ||||
60 | TransactTime | C | 4.4 | The UTC Timestamp (Date/Time) the transaction represented by this ExecutionReport occurred. Condtionally required when ExecType=F [Trade]. Microsecond precision preferred. | ||||
31 | LastPx | C | 4.4 | The dealt price of this trade. Price improvement is supported on non-firm orders however for firm orders this must equal the price of the NOS. Conditionally required when ExecType=F [Trade]. | ||||
32 | LastQty | C | 4.4 | The quantity of this trade in terms of the dealt Currency. Provided when ExecType=F [Trade]. | ||||
14 | CumQty | N | 4.4 | Total amount of the order which has been filled in terms of the dealt Currency. | ||||
151 | LeavesQty | N | 4.4 | Quantity of the order which is open for execution in terms of the dealt Currency. If the order is no longer active, then LeavesQty = 0. (OrdStatus = Cancelled, Rejected, Filled). | ||||
6 | AvgPx | N | 4.4 | Average price at which this order has been filled (weighted by size). Same as LastPx | ||||
103 | OrdRejReason | N | 4.4 | Code indicating why the order was rejected or cancelled. | ||||
58 | Text | N | 4.4 | Human-readable text field regarding the execution. For ExecType=8 \[Reject\] or ExecType=4 \[Cancelled\], provides additional information regarding order rejection. | ||||
Parties - Identifies the parties of the trade. | ||||||||
453 | NoPartyIDs | C | 4.4 | Echoed from NewOrderSingle (when provided) and ExecType= New (1) or Rejected (8). | ||||
→ | 448 | PartyID | Y | 4.4 | Identifier of the party. Provided when NoPartyIDs > 0 | |||
→ | 447 | PartyIDSource | Y | 5.0 | Identifies the source of PartyID valueD = Proprietary Provided when NoPartyIDs > 0 | |||
→ | 452 | PartyRole | Y | 4.4 | 1 = Executing LC Firm (Disclosed/Non-disclosed alias) 12 = Executing LC Trader Provided when NoPartyIDs > 0 | |||
END – Parties |
Execution Ack (35=BN)
The ExecutionAck message is sent by EBS to the Market Maker to confirm receipt and acceptance of an LP trade. This is configurable so can be turned off if desired. This is a FIX 5.0 message, therefore all tags are represented as version 5.0 even if the tag appeared in earlier versions of FIX protocol on other message types. Only positive confirmation is sent via the ExecutionAck message (negative confirmation will be sent via the DontKnowTrade message).
Tag | Field Name | Req | Ver | Comments |
---|---|---|---|---|
37 | OrderID | Y | 5.0 | References the OrderID of the acknowledged trade. Echoed from ER |
11 | ClOrdID | Y | 5.0 | The ClOrdID of the acknowledged trade. Echoed from ER |
1036 | ExecAckStatus | Y | 5.0 | 1 = Accepted |
17 | ExecID | Y | 5.0 | The ExecID of the acknowledged trade. Echoed from ER |
55 | Symbol | N | 5.0 | Currency pair in CCY1/CCY2 format. Echoed from ER if present. |
64 | SettlDate | Y | 5.0 | The settlement date of this trade in YYYYMMDD format. |
54 | Side | Y | 5.0 | Side of the order from the Taker perspective. 2 = Taker Sells |
541 | MaturityDate | C | 5.0 | For NDF trades only, represents the fixing date of the trade in YYYYMMDD format. |
38 | OrderQty | Y | 5.0 | OrderQty of the NOS. |
15 | Currency | N | 5.0 | 3 character ISO code of the dealt Currency. |
31 | LastPx | Y | 5.0 | The trade price of this execution. |
32 | LastQty | Y | 5.0 | The quantity of this trade in terms of the dealt Currency. |
1056 | CalculatedCcyLastQty | N | 5.0 | Calculated quantity of the contra currency. |
60 | TransactTime | Y | 5.0 | Time of trade confirmation by EBS. Microsecond precision preferred but milliseconds can be configured. |
58 | Text | N | 5.0 | Optional text field. |
Don't Know Trade (35=Q)
A Don't Know Trade may be issued by EBS in the event an invalid trade is received, or a stale trade is received (after the configured EBS deal timeout).
Tag | Field Name | Req | Ver | Comments |
---|---|---|---|---|
37 | OrderID | Y | 4.4 | Unique identifier of the order assigned by the Maker. Echoed from ER. |
11 | ClOrdID | Y | 4.4 | Unique identifier of the order/request as assigned by EBS. Echoed from ER. |
17 | ExecID | Y | 4.4 | The ExecID of the rejected trade. Echoed from ER. |
127 | DKReason | C | 4.4 | Reason code for the execution rejection. F = Calculation difference. w = Order constraints not satisfied (custom) x = Invalid trade parameter (custom) y = Deal Timeout (custom) Z = Other. Human readable rejection reason will be provided in the Text field. |
55 | Symbol | C | 4.4 | Instrument symbol. Echoed from ER. |
54 | Side | Y | 4.4 | Trading intention from client perspective. Echoed from ER. 1 = Client Buys 2 = Client Sells |
38 | OrderQty | Y | 4.4 | Quantity of order, in units of the specified Currency. |
31 | LastPx | N | 4.4 | The price of this execution. |
32 | LastQty | N | 4.4 | The size of this execution. |
60 | TransactTime | Y | 4.4 | Time the rejected ExecutionReport was processed by the EBS system. |
58 | Text | N | 4.4 | Text field with additional explanation for execution rejection. |
Order Rejection Reason Codes
When an order is rejected or cancelled without being filled, the OrdRejReason (103) may be provided on the Execution Report to indicate the reason for rejection. Makers are encouraged to provide explicit reason codes for order rejection. When explicit reasons are provided, clients can more appropriately adjust their order flow to conform to the requirements of the Maker. For example, orders rejected due to credit exhaustion should not be automatically resubmitted to the Maker, whereas orders rejected due to speed bumps may be resubmitted after a pause.
Code | Description | Comment |
---|---|---|
0 | Broker Credit | Client has insufficient credit to execute order. |
1 | Unknown Symbol | Symbol not recognized. |
2 | Exchange Closed | Market currently unavailable. |
3 | Order Exceeds Limit | Size of order exceeds limit. |
4 | Too Late To Enter | Trading in this instrument not currently available. |
5 | Unknown Order | N/A |
6 | Duplicate Order | ClOrdID of NOS is not unique. |
8 | Stale Order | SendingTime on NOS indicates that a network delivery delay has caused the order to be stale. |
11 | Unsupported Order Characteristic | Property on order not supported. |
13 | Incorrect Quantity | OrderQty does not meet instrument's min, max or size increment restrictions. |
15 | Unknown Account | Account not recognized. |
16 | Price Exceeds Current Price Band | Price on order does not comply with price range limits. |
18 | Invalid Price Increment | Price does not meet instrument's price increment restrictions. |
20 | Notional Value Exceeds Threshold | OrderQty of FOK order too large for current market conditions. |
21 | Algorithm Risk Threshold Breached | Order rejected due to Maker's risk parameters, e.g. instrument volatility. |
23 | Settlement date mismatch | Settlement date of NOS does not match LP calculated settlement date. (custom) |
99 | Other | Catch all for other rejection reasons. |
102 | Speed Bump | Order rejected due to speed bump restrictions. (Custom) |
113 | Price Tolerance | Requested price is outside of LP tolerance range, e.g. due to market movement. (Custom) |
114 | Unsupported Price Improvement | Market has moved in favour of LC, but settings do not support price improvement. (Custom) |
How was your Client Systems Wiki Experience? Submit Feedback
Copyright © 2024 CME Group Inc. All rights reserved.