CME STP FIX Core

This topic describes the common and core rules of engagement for CME STP Financial Information Exchange (CME STP FIX) protocol, which is applicable to all markets and venues of CME Group.

Use this search bar to search topics within CME STP FIX Core:

Contents:

Related Content

Related Content

Connectivity 

Customers can connect to the CME STP FIX API New Release or Production environment via the following options:

New Release Environment

Connectivity Type

Products

IP Address

URL

Port

Connectivity Type

Products

IP Address

URL

Port

Internet (only)

This URL uses certificates signed by an official trusted Certificate Authority (CA). Additional certificates are not required.

All

n/a

fixstpnr.cmegroup.com

443

 Production Environment - Internet or Dedicated Connection

Connectivity Type

Products

IP Address

URL

Port

Connectivity Type

Products

IP Address

URL

Port

Internet

This URL uses certificates signed by an official trusted Certificate Authority (CA). Additional certificates are not required.

All

n/a

stpfixapi.cmegroup.com

443

Dedicated - CME Globex Connectivity

Futures and Options

167.204.41.90

stpfixapi.cmegroup.com

443

Dedicated - CME Globex Connectivity, Leased Lines

Fixed Income (BrokerTec)

167.204.72.90

Dedicated - CME Globex Connectivity, Leased Lines, Rnet

FX (EBS)

167.204.72.190

Dedicated CME Globex Connectivity includes standard options: CME GLink, CME EConnect, LNet and CME Globex Hub. Leased lines are connectivity solutions available for some legacy EBS and BrokerTec clients. 

See also - Network Connectivity

Customers using dedicated connections must create a Domain Name Service (DNS) record to associate the DNS name (stpfixapi.cmegroup.com) to the relevant IP or a certificate error may occur.

Disaster Recovery Considerations

During a Disaster Recovery (DR) event client systems will automatically be directed to the DR instance of CME STP FIX. Customers do not need to make any connectivity changes.

In the event of a DR, client systems should ensure that they can restart their Subscriptions and/or Query for missing trades.

Session Layer Management

Client systems are required to use TCP/IP over Transport Layer Security (TLS) 1.2 to initiate a socket connection to CME STP FIX Server.

Standard FIX Header and Trailer

All CME STP FIX messages to and from client systems must have FIX Standard Header and Trailer components.

Header from Client System to CME STP FIX

All applicable FIX Header tags are documented in Client Systems to CME STP FIX.

Below are the key FIX Header tags

Header Tag

Required

Usage

Header Tag

Required

Usage

tag 49-SenderCompID

Y

Indicates the sender of the message. Client assigned value. Could be a firm level identifier such as Trading firm name or Globex Firm ID (GFID)

tag 56-TargetCompID

Y

Assigned value used to identify the receiving firm.

Format: ‘CMESTPFIX#’

The value will be incremented for each new session at the Firm, e.g., CMESTPFIX1, CMESTPFIX2, CMESTPFIX3, etc. up to CMESTPFIX50

Note that the combined SenderCompID + TargetCompID must be unique per FIX session.

Header from CME STP to Client system

All applicable FIX Header tags are documented in CME STP FIX to Client Systems.

Messages outbound from CME STP FIX will swap values between tag 49-SenderCompID and tag 56-TargetCompID from the values populated in the inbound messages.

Establishing a FIX Session

To initiate a FIX session, the client system sends a FIX Logon message (tag 35-MsgType=A) as the first message after establishing the TCP/IP connection.

Client systems can create multiple FIX Session's using the same API ID on a single TCP/IP connection using a unique combination of SenderCompID and TargetCompID in the FIX Header of Logon message.

Logon Request

Logon request fields and their usage is described below.

Logon Tag

Expected value

Logon Tag

Expected value

tag 98-EncryptionMethod

must be 0 (zero)

 tag 108-HeartBInt

A negotiated Heartbeat interval between the client system and CME STP FIX.

Should be a value between 30 to 60 seconds 

 tag 141-ResetSeqNumFlag

As a FIX session initiator, client systems are required to set this tag value to "Y" on Logon, to reset both inbound and outbound sequence numbers.

Inbound FIX header tag 34-MsgSeqNum should be set to 1 in the Logon request.

tag 553-Username

The CME STP FIX entitled API ID.

tag 554-Password

The password associated with the API ID

Example Logon request
8=FIX.4.4|9=110|35=A|34=1|49=TEST_FIRM_1|52=20211021-18:08:46.041|56=CMESTPFIX1|57=STP|98=0|108=30|141=Y|553=API_ID|554=***|10=152|

Logon Response

CME STP FIX will respond with a FIX Logon message (tag 35-MsgType=A) when the inbound Logon request is validated.

Example Logon response
8=FIX.4.4|9=88|35=A|34=1|49=CMESTPFIX1|50=STP|52=20211021-18:08:51.575|56=TEST_FIRM_1|98=0|108=30|141=Y|10=164|

Logout

Client systems are required to use the Logout (tag 35-MsgType=5) message to gracefully terminate a FIX Session with CME STP.

  • Client system sends Logout (tag 35-MsgType = 5) message to CME STP FIX to close the FIX session.

  • CME STP FIX sends Logout (tag 35-MsgType = 5) message to FIX Client and closes the FIX session.

Example Logout Request
8=FIX.4.4|9=70|35=5|34=4|49=TEST_FIRM_1|52=20211021-18:10:16.188|56=CMESTPFIX1|57=STP|10=077|
Example Logout Response

HeartBeat

To keep a FIX Session alive

  • Client systems are expected to send a FIX Heartbeat message (tag 35-MsgType = 0) at the negotiated time interval on the Logon request.

  • CME STP FIX will send a FIX Heartbeat message (tag 35-MsgType = 0) to the client session, at the negotiated time interval if there are no Business level messages.

Trade Snapshot and Subscriptions

The following section outlines the trade snapshot and subscription functionality of CME STP FIX.

Data Retrieval

CME STP FIX supports trade data retrieval using FIX Trade Capture Report Request (tag 35-MsgType = AD)

  • Snapshot: Client systems can request a snapshot of trades with tag 569-TradeRequestType = 1 (Initial request) and tag 263-SubscriptionRequestType = 0 (Snapshot) limited by tag 9593-StartTime and optional tag 9594-EndTime. 

  • Subscriptions: Client systems can request a snapshot and initiate a continued subscription for trades with tag 569-TradeRequestType = 1 (Initial request) and tag 263-SubscriptionRequestType = 1 (Snapshot + Updates) with the optional tag 779-LastUpdateTime. If LastUpdateTime is not provided then the subscription will start from the time the FIX Trade Capture Report Request (tag 35-MsgType = AD) is received by the CME STP FIX server.

For both Snapshot and Subscriptions client systems must supply a unique identifier in tag 568-TradeRequestID of the FIX Trade Capture Report Request (tag 35-MsgType = AD), which the CME STP FIX will echo back in FIX Trade Capture Report Request Acknowledgment (tag 35-MsgType = AQ), FIX Trade Capture Report (tag 35-MsgType = AE) and FIX Collateral Report (tag 35-MsgType = BA). This enables client systems to match the messages from CME STP FIX to their specific request for a FIX Session.

Snapshot and Subscription Parameters

The following are key parameters to be used in Trade Capture Report Request (tag 35-MsgType = AD) for snapshot and / or subscriptions.

Filter tag

Request type

Comments

Subscription

Snapshot

tag 779-LastUpdateTime

Y

N

Timestamp from which the trades are requested by the clients system from CME STP FIX.

It is recommended that client systems specify a value in request, one or more minutes prior to the timestamp value from the last FIX Trade Capture Report (tag 35-MsgType = AE) that they received to avoid missing trades between Subscriptions.

tag 9593-StartTime

tag 9594-EndTime

N

Y

Client systems can request a snapshot of trades within a time frame.

tag 9593-StartTime is required. tag 9594-EndTime is optional and defaults to the current time of the request.

Party Details.

  • tag 448-PartyID

  • tag 452-PartyRole

Y

Y

Party details are required.

Multiple valid PartyID's can be in the request as long as they belong to the same PartyRole.

Requests with different PartyRole's will be rejected.

Snapshot

Client systems can request a snapshot of trades within the past 30 calendar days, using Trade Capture Report Request (tag 35-MsgType = AD).

Key request tags are noted below.

  • tag 569-TradeRequestType = 1 (Matching trades)

  • tag 263-SubscriptionRequestType = 0 (Snapshot)

  • tag 453-NoPartyIDs ≥ 1 and tag 448-PartyID = Firm ID and tag 452-PartyRole = Firm Role

    • Note: All PartyRoles must be identical roles within a single request.

  • tag 9593-StartTime is specified and is within timeframe supported by CME STP FIX

  • for optional use: snapshot specific filters and/or tag 9594-EndTime are specified 

For a valid Snapshot request CME STP FIX will respond with 

  • Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 0 (Accepted) to the client system.

  • List of trades matching the criteria in the Snapshot request.

  • Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 1 (Completed) indicating completion of trade Snapshot to client system.

Example Snapshot Request
Example Snapshot Accepted
Example Snapshot Completed

Subscription

Client systems can request a snapshot of trades along with a continued subscription of realtime trades using Trade Capture Report Request (tag 35-MsgType = AD).

Key request tags are noted below.

  • tag 569-TradeRequestType = 1 (Matching trades)

  • tag 263-SubscriptionRequestType = 1 (Snapshot + Subscription)

  • tag 453-NoPartyIDs ≥ 1 and tag 448-PartyID = Firm ID and tag 452-PartyRole = Firm Role

    • Note: All PartyRoles must be identical roles within a single request.

  • tag 779-LastUpdateTime can be optionally specified and is within timeframe supported by CME STP FIX

For a valid Subscription request CME STP FIX will respond with

  • Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 0 (Accepted) to the client system.

  • If tag 779-LastUpdateTime value is specified, a list of past trades will be delivered before realtime trades.

  • If tag 779-LastUpdateTime isn't provided in the request, only realtime trades are delivered to the client system.

After a successful subscription CME STP FIX will continue to send realtime trade data, as well as FIX Heartbeat messages (tag 35-MsgType = 0) at negotiated intervals in cases of no trade data.

Client systems must send FIX Heartbeat messages (tag 35-MsgType = 0) at negotiated intervals to keep the FIX Session alive.

Example Subscription Request
Example Subscription Accepted

Restarting a Subscription

CME STP FIX does not support the Unsubscribe feature (FIX: tag 263-SubscriptionRequestType = 2(Unsubscribe)) using the Trade Capture Report Request (tag 35-MsgType = AD).

When client systems detect a lost connection or session that is established with CME STP FIX, they are expected to re-login to re-establish the session and restart a new subscription.

Client systems should follow the Logon and Subscription sections described above while reestablish their FIX Session to CME STP FIX.

It is recommended that client systems specify a value in tag 779-LastUpdateTime of the Trade Capture Report Request (tag 35-MsgType = AD) with one or more minutes prior to the value of tag 779-LastUpdateTime from the last trade they received, to cover any missing trades.

Duplicate message detection

To detect duplicate trades, client systems can use tag 571-TradeReportID which is a unique message ID for the trade being reported.

Legs of spreads can share the same message ID.  However, tag 1040-SecondaryTradeID and tag 571-TradeReportID together will form a unique key.

Error Handling

Client systems should note that Error conditions or failures could occur while establishing a new FIX session and/or during an on-going session.

Logon - Unsuccessful

  1. The FIX Client sends a Logon (tag 35-MsgType = A) message to CME STP FIX in order to establish a FIX session.

  2. CME STP FIX rejects login attempts with a Logout (tag 35-MsgType = 5) message, with tag 58-Text populated with the reason for Reject.

  3. The FIX sessions between the FIX Client and CME STP FIX is not established and the TCP/IP connection is terminated.

Clients will fix issues on their end and re-login to establish the FIX Session.

Client Sequence Number Less Than Expected

The FIX Client will be disconnected if it sends a sequence number less than what is expected by CME STP FIX.

Clients will fix issues on their end and re-login to establish the FIX Session.

Trade Snapshot Request: Failed Request – Missing Start Time or Invalid Combination of Filters

  1. FIX Client sends Trade Capture Report Request (tag 35-MsgType = AD) with the following tags:

    • tag 569-TradeRequestType = 1 (All trades)

    • tag 263-SubscriptionRequestType = 0 (Snapshot)

    • tag 453-NoPartyIDs ≥ 1 and tag 448-PartyID = Firm ID and tag 452-PartyRole = Firm Role
      Note: All PartyRoles must be identical within a single request.

    • tag 9593-StartTime is absent or invalid combination of snapshot specific filters is specified.

  2. CME STP FIX sends Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 0 (Accepted) to FIX Client.

  3. CME STP FIX rejects subscription with Trade Capture Report Request Ack (tag 35-MsgType =AQ) with tag 750-TradeRequestStatus = 2 (Rejected), tag 749-TradeRequestResult = 9 (Unauthorized for Trade Capture Report Request) and tag 58-Text containing the reject reason.

Subscription with Multiple FirmIDs: Failed Request – at Least One FirmID is Invalid

Preconditions: Customer has successfully logged in to CME STP FIX interface using Logon (tag 35-MsgType=A) message.

  1. FIX Client sends Trade Capture Report Request (tag 35-MsgType = AD) with the following tags:

    • tag 569-TradeRequestType = 1 (All trades)

    • tag 263-SubscriptionRequestType = 0 (Snapshot) or 1 (Subscription)

    • tag 453-NoPartyIDs = 2

      • tag 448-PartyID = Firm ID_A and tag 452-PartyRole = Firm Role (the same for all entries)

      • tag 448-PatryID = Firm ID_B and tag 452-PartyRole = Firm Role (the same for all entries)

  2. CME STP FIX sends Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 750-TradeRequestStatus = 2 (Rejected), tag 749-TradeRequestResult = 9 (Unauthorized for Trade Capture Report Request) and tag 58-Text = 'Authorization FAILED: Authenticated User <<Logged in API ID>> can NOT query on behalf of [FirmID_A] as [Firm Role value]' to FIX Client.

Subscription with Multiple FirmIDs: Failed Request – Specified FirmIDs have Different Party Roles

Preconditions: Customer has successfully logged in to CME STP FIX interface using Logon (tag 35-MsgType=A) message.

  1. FIX Client sends Trade Capture Report Request (tag 35-MsgType = AD) with the following tags:

    • tag 569-TradeRequestType = 1 (All trades)

    • tag 263-SubscriptionRequestType = 0 (Snapshot) or 1 (Subscription)

    • tag 453-NoPartyIDs = 2

      • tag 448-PartyID = Firm ID_A and tag 452-PartyRole = Firm Role (different from the second entry)

      • tag 448-PartyID = Firm ID_B and tag 452-PartyRole = Firm Role (different from the first entry)

  2. CME STP FIX sends Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 750-TradeRequestStatus = 2 (Rejected), tag 749-TradeRequestResult = 9 (Unauthorized for Trade Capture Report Request) and tag 58-Text = 'Invalid PtyR. Only one role may be queried for at a time' to FIX Client.

Duplicate Subscription Request

Preconditions: FIX session between FIX Client and CME STP FIX is established; FIX Client is successfully subscribed for CME STP data

  1. FIX Client sends duplicate Trade Capture Report Request (tag 35-MsgType=AD) to CME STP FIX.

  2. CME STP FIX rejects subscription with Trade Capture Report Request Ack (tag 35-MsgType =AQ) having tag 750-TradeRequestStatus = 2 (Rejected), tag 749-TradeRequestResult = 9 (Unauthorized for Trade Capture Report Request) and tag 58-Text = Illegal subscription request.

  3. CME STP FIX does not interrupt existing FIX Client's subscription to CME Group trades.

Service Availability - Internal Errors

On rare occasions, the CME STP FIX gateway may be available to clients but upstream CME Group systems are unavailable. In these scenarios, CME STP FIX clients would experience the following messaging flows.

Internal Error – Client Logon

If CME STP FIX does not have access to upstream CME Group systems:

  • Logon requests will be rejected by CME STP FIX with a Logout message.

  • Clients should continue to retry Logons no more frequently than one message every 30 seconds.

Internal Error – Before First TradeCaptureReportRequest (AD)

If CME STP FIX losses access to upstream CME Group systems after a successful Logon:

  • CME STP FIX will send a TradeCaptureReportRequestAck with error in tag 58-Text, on loss of access to upstream CME Group systems.

  • Clients should retry a TradeCaptureReportRequest no more frequently than one message every 30 seconds.

Internal Error – After First TradeCaptureReportRequest (AD)

If CME STP FIX losses access to upstream CME Group systems after a successful TradeCaptureReportRequest:

  • CME STP FIX will send an unsolicited TradeCaptureReportRequestAck with error in tag 58-Text.

  • Clients should resend Trade Capture Report Requests no more frequently than one message every 30 seconds.

 

Scenario

Triggering Client Message

Identifying CME STP FIX Message

Client Response

Scenario

Triggering Client Message

Identifying CME STP FIX Message

Client Response

Internal Error at Client Login

Logon (35=A)

Logon Reject with Logout (35=5)

Resend Logon (35=A) every 30 seconds until successful

Internal Error Before Trade Capture Report Request

Trade Capture Report Request (35=AD)

Trade Capture Report Request Acknowledgment (35=AQ) where

tag 749-TradeRequestResult = 99 (Other)

tag 750 TradeRequestStatus = 1 (Completed)

tag 58-Text = Transport Error: Connection to CME was lost

Resend Trade Capture Report Request (35=AD) every 30 seconds until successful

Internal Error After a Successful Trade Capture Report Request

Unsolicited

Trade Capture Report Request Acknowledgment (35=AQ) where

tag 749-TradeRequestResult = 99 (Other)

tag 750 TradeRequestStatus = 1 (Completed)

tag 58-Text = Transport Error: Connection to CME was lost

Resend Trade Capture Report Request (35=AD) every 30 seconds until successful




How was your Client Systems Wiki Experience? Submit Feedback

Copyright © 2024 CME Group Inc. All rights reserved.