Maker API Development Considerations

Development Considerations include the following:

FIX Version

This specification is based upon FIX 4.4 but includes some elements of FIX 5.0SP2 which has a richer set of tags to support FX Trading. A ready customized FIX Data Dictionary is available to download from the EBS Support Portal.

Where fields contain custom fields or elements of later versions of the FIX protocol these have been highlighted.

General Considerations

It is best practice to observe the following:

  • Before Logout issue a TestRequest to ensure no messages are missing.

  • Wait for a response to your Logout message before closing a connection.

Client Settings

For each client, the following settings will be configured. All settings are customizable per client pricing stream, please discuss with your Client Integration Manager if you have specific requirements.

Client Setting

Setting Description

Client Setting

Setting Description

Expected times of operation

The period in which Market Data is expected to be streamed.

Quote type

Whether quotes are Firm or Non-Firm (configurable per Instrument).

Time To Live (TTL) of LP Quotes

For stale quote management (configurable per instrument).

Subscription Methodology

Dynamic Amounts – Each MD Snapshot contains the full set of price/amounts available per instrument. The Maker may dynamically determine the sizes of each MD Snapshot. This is the preferred method.

Discrete Amounts – Quote sizes are pre-configured per instrument, a separate MDRequest is sent for each configured MDEntrySize.

Execution Method

Sweepable – Taker orders may be executed against any number of sweepable bid/offers to reach the desired cumulative size. Bids/offers will be hit in order of descending attractiveness from TOB.

Single Ticket – Takers order will be filled by a single Maker bid/offer which best meets the size and price constraints of the order.

Additional Maker preferences regarding supported instruments and client entitlements may be set by the Maker in the EBS LPM Liquidity Provider Manager) web application.

EBS Configuration Settings

The following configuration settings are determined by EBS and communicated to all Market Makers:

Setting

Setting Description

Setting

Setting Description

FIX Heartbeat Interval

Interval in seconds at which heartbeats are expected.

Deal timeout in milliseconds

Non-firm workflow: As an offset from order submission. Determines when a deal will be rejected if an execution report is received after this interval.
Firm workflow: As an offset from order submission. Determines when an alert will be raised if an execution report is not received within this time.

List of supported instruments.

  • Minimum quote size

  • Minimum fill size of IOC orders (for future use)

  • Minimum tick increment.

Settlement Date Management

Market Data Requests will include a settlement date. When the value date rolls, EBS will unsubscribe to market data, and re-subscribe with a new value date. If you are not in agreement with the EBS-provided settlement date, then you should reject the Market Data subscription.

Settlement Date will be provided on all FX NewOrderSingle messages. Maker is expected to echo back this date on their ExecutionReports.

Request and Order IDs

Request/Order IDs are provided by EBS on the following requests:

  • Market Data Request (MDReqID)

  • New Order Single (ClOrdID)

  • Test Request (TestReqID)

All Request IDs are a maximum length of 40 ASCII characters (printable characters 32-126).

In addition the ExecID provided by Makers on the Execution Report should be no longer than 28 ASCII characters.

It is recommended you do not include the below characters in your ids:

  • !    Exclamation Mark           decimal 33

  • "    Double Quote                decimal 34

  • #   Hash                               decimal 35

  • $   Dollar                              decimal 36

  • %  Percentage                     decimal 37

  • &  Ampersand                     decimal 38

  • '    Single Quote                  decimal 39

  • (   Open Bracket                  decimal 40

  • )   Close Bracket                  decimal 41

  • *   Asterisk                           decimal 42

  • ,   Comma                            decimal 44

  • :   Colon                               decimal 58

  • =  Equals Sign                     decimal 61

  • [   Left Square Bracket         decimal 91

  • \  Backslash                         decimal 92

  • ]  Right Square Bracket       decimal 93

  • ^ Caret                                decimal 94

  • `  Accent                              decimal 95

  • '  Single Quote                    decimal 96

  • (  Open Curly Bracket          decimal 123

  • |  Pipe                                  decimal 124

  • }  Close Curly Bracket          decimal 125

  • ~ Tilda                                 decimal 126

Timestamps

EBS timestamps will be provided to millisecond granularity. It is recommended clients provide timestamps to millisecond granularity except for TransactTime(60) on ExecutionReport(35=8) messages where microseconds are preferred if possible.

SendingTime [52] is a standard field in the FIX header and should be populated by the FIX engine at the time the FIX message is transmitted.

Application level timestamp on select messages indicate when the business transaction represented by the message occurred. Application level timestamps will appear in TransactTime [60] in the following EBS Maker API messages:

FIX Message

Description

FIX Message

Description

NewOrderSingle

Time the NOS to the Maker was created by the EBS system.

ExecutionReport

Timestamp of the Deal as recorded in the Maker system.

Applicable when ExecType=F [Trade].

DKTrade

Time the rejected Execution Report was processed by the EBS system.

ExecutionAck

Time of confirmation by the EBS system.

Message Rejection

There are two types of message rejections – rejections specific to the request and session level rejections.

A session level reject message can be sent by either side to indicate that it has received an invalid message. For example, a message missing a required field will be responded to with a session level reject.

Wherever possible application messages should be used to reject invalid requests.

Invalid Message

Rejection Message

Invalid Message

Rejection Message

Logon

Logout

NewOrderSingle

ExecutionReport (ExecType = Rejected)

Market Data Subscription Request

Market Data Request Reject




How was your Client Systems Wiki Experience? Submit Feedback

Copyright © 2024 CME Group Inc. All rights reserved.