CME STP FIX - Use Cases for BrokerTec Trades

This topic includes CME STP FIX session management use cases and FIX Client subscription and request use cases.   

CME STP FIX Session Management Use Cases

Logon Samples

Login sample and Login Ack sample

Trade Capture Report Request (tag 35-MsgType = AD) sample

Logon - Successful

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

  2. CME STP FIX responds with Logon (tag 35-MsgType = A) message.

  3. CME STP FIX session between FIX Client and CME STP FIX is established.

  4. CME STP FIX waits for a Trade Capture Report Request (tag 35-MsgType = AD) message from CME STP FIX Client.

Logon - Unsuccessful

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

  2. CME STP FIX rejects login attempt with Logout (tag 35-MsgType = 5) message.

  3. FIX session between FIX Client and CME STP FIX is not established.

if a Logon request is sent during the pending period between a Logout request and termination, the Logon request cannot establish a connection and will give an error.

FIX Session Log Off and Disconnect

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

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

  3. CME STP FIX waits for FIX Client to reestablish FIX session.

Sequence Number Reset

The FIX Client should reset incoming and outgoing sequence numbers every time a CME STP FIX session is established. 

This includes scenarios where connectivity has been lost. These sessions should not be reestablished.

  1. FIX Client sends Logon (tag 35-MsgType = A) message from FIX Client to contain tag 34-MsgSeqNum = 1 and tag 141-ResetSeqNumFlag = Y.

  2. CME STP FIX responds with Logon (tag 35-MsgType = A) message.

  3. CME STP FIX session between FIX Client and CME STP FIX is established.

  4. CME STP FIX waits for a Trade Capture Report Request (tag 35-MsgType = AD) message from CME STP FIX Client.

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.

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

     Note: MsgSeqNum must be incremented by 1 for each message sent.

  1. FIX Client sends a message (tag 35-MsgType ) with the following tags:

  2.  

    1. tag 34-MsgSeqNum = n

  3. CME STP FIX sends a message (tag 35-MsgType) with the following tags:

  4.  

    1. tag 34-MsgSeqNum = x

  5. FIX Client sends a message (tag 35-MsgType ) with the following tags:

  6.  

    1. tag 34-MsgSeqNum = n+1

  7. CME STP FIX sends a message (tag 35-MsgType) with the following tags:

  8.  

    1. tag 34-MsgSeqNum = x +1

  9. FIX Client sends a message (tag 35-MsgType ) with the following tags:

  10.  

    1. tag 34-MsgSeqNum = n

  11. CME STP FIX sends Logout  message (tag 35-MsgType = 5) message and 58-Text = 'MsgSeqNum too low, expecting n+2  but received n' to FIX Client and closes FIX session.

Service Availability – Internal Errors

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

In all scenarios, CME Group strongly recommends client systems resend messages no more frequently than one message every 30 seconds.

Internal Errors – Client Logon

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

When the client sends a Logon (tag 35-MsgType=A) message, CME STP FIX will send a Logon Reject with Logout (tag 35=5) message.

Then the client must send Logon messages until their session is successfully established and Acknowledged with a Logon (tag 35-MsgType = A) message,

And the client can send the Trade Capture Report Request (tag 35-MsgType = AD) message to retrieve trades.

Internal Errors – Before First Trade Capture Report Request (AD)

If the client has logged on successfully—

And CME STP FIX loses access to upstream CME Group systems after the client logon but before the client sends their first Trade Capture Report Request (tag 35-MsgType = AD):

Then as a result of first Trade Capture Report Request (tag 35-MsgType = AD), CME STP FIX will send a Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 99 (Other), tag 750-TradeRequestStatus = 1 (Completed) and 58-Text = 'Transport Error: Connection to CME was lost',

Then the client must resend Trade Capture Report Request (tag 35-MsgType = AD) messages until the request is successfully acknowledged with a Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 0 (Accepted)

Internal Errors – After First Trade Capture Report Request (AD)

If the client has logged on successfully—

And the client sends a Trade Capture Report Request (tag 35-MsgType = AD) that is successfully acknowledged with a Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 0 (Accepted) and any CME Group trades (Trade Capture Report (tag 35-MsgType = AE) message(s))

Then CME STP FIX loses access to upstream CME Group systems

Then CME STP FIX will send an unsolicited Trade Capture Report Request Ack (tag 35-MsgType = AQ ) with tag 749-TradeRequestResult = 99 (Other) tag 750-TradeRequestStatus = 1 (Completed) and 58-Text = 'Transport Error: Connection to CME was lost'

Then the client must resend Trade Capture Report Request (tag 35-MsgType = AD) messages until the request is successfully acknowledged with a Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 0 (Accepted)

Scenario

Triggering Client Message

Identifying CME STP FIX Message

Client Response

Scenario

Triggering Client Message

Identifying CME STP FIX Message

Client Response

Internal Errors at Client Login

Logon (35=A)

Logon Reject with Logout (35=5)

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

Internal Errors 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 Errors 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

CME STP FIX Client Subscribes for CME Group Trades

Subscription Samples

Trade Capture Report Request Ack (tag 35-MsgType = AQ)

CME STP FIX Client Subscribes for CME Group Trades after Successful Log In - Successful Subscription With Filters

FIX Client Subscribes for CME Group Trades after Successful Log In - Successful Subscription Without Filters

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 = 1 (Subscribe)

    • 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 779-LastUpdateTime is within timeframe supported by CME STP

    • Subscription specific filters are not specified (see Trade Capture Report Request (AD) for list of supported filters)

  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 sends all CME Group trades (Trade Capture Report (tag 35-MsgType = AE) message(s)) received from CME STP back to FIX Client.

  4. CME STP FIX waits for new message from FIX Client

FIX Client Subscribes for CME Group Trades after Successful Log In - Successful Subscription With Filters

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 = 1 (Subscribe)

    • 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 779-LastUpdateTime is within timeframe supported by CME STP

    • One or multiple filters are specified (see Trade Capture Report Request (AD) for list of supported filters)

  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 sends CME Group trades limited to specified filters (Trade Capture Report (tag 35-MsgType = AE) message(s)) to FIX Client.

  4. CME STP FIX waits for new message from FIX Client

FIX Client Duplicated Subscription Request for CME Group Trades

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.

  4. CME STP FIX waits for new message from FIX Client.

FIX Client Subscribes for CME Group Trades after Successful Log In - Resend 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 Resend Request (tag 35-MsgType = 2) with the following tags:

    • tag 7-BeginSeqNo = # (Valid sequence number for session)

    • tag 16-EndSeqNo =0,1 (0=Up to 2500 messages, when available. 1 - 2500=Up to specified number of messages, when available)

  2. CME STP FIX resends all requested CME Group trades (Trade Capture Report (tag 35-MsgType = AE) message(s)) received from CME STP back to FIX Client.

  3. CME STP FIX waits for new message from FIX Client.

FIX Client Requests Snapshot of CME Group Trades

FIX Client Requests Snapshot of CME Group Trades after Successful Log In (Successful Request – CME Group Trades Match Request Criteria)

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)

    • 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 specified and is within timeframe supported by CME STP

    • for optional use: snapshot specific filters (see "Trade Capture Report Request (tag 35=AD)" for list of supported filters) and/or tag 9594-EndTime are 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 sends CME Group trades matching requested criteria (Trade Capture Report (tag 35-MsgType = AE) message(s)) to FIX Client.

  4. CME STP FIX notifies FIX Client that all CME Group trades matching request criteria are sent and snapshot is processed with Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 1 (Completed) to FIX Client.

  5. CME STP FIX waits for new message from FIX Client.

FIX Client Requests Snapshot of CME Group Trades after Successful Log In (Successful Request – No CME Group Trades Match Request Criteria)

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)

    • 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 specified and is within timeframe supported by CME STP

    • for optional use: snapshot specific filters (see "Trade Capture Report Request (tag 35=AD)" for list of supported filters) and/or tag 9594-EndTime are 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. There are no CME Group trades matching requested criteria.

  4. CME STP FIX notifies FIX Client that all CME Group trades matching request criteria have been sent and snapshot is complete with Trade Capture Report Request Ack (tag 35-MsgType = AQ) with tag 749-TradeRequestResult = 0 (Successful) and tag 750-TradeRequestStatus = 1 (Completed) to FIX Client.

  5. CME STP FIX waits for new message from FIX Client.

FIX Client Requests Snapshot of CME Group Trades after Successful Log In (Failed Request – Missing Start Time or Invalid Combination of Filters)

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)

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

  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.

  4. CME STP FIX waits for new message from FIX Client.

FIX Client Requests CME Group Trades Using Multiple FirmIDs

FIX Client Requests CME Group Trades with Multiple FirmIDs (Successful Request)

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-PartyID = Firm ID_B and tag 452-PartyRole = Firm Role (the same for all entries)

      • …

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

  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 waits for new message from FIX Client.

FIX Client Requests CME Group Trades 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 API_CMESTP_EPAM_SYSTEMS can NOT query on behalf of [FirmID_A] as [Firm Role value]' to FIX Client.

  3. CME STP FIX waits for new message from FIX Client

FIX Client Requests CME Group Trades 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.

  3. CME STP FIX waits for new message from FIX Client.

FIX Client Requests CME Group Trades with Invalid Credentials after Successful Log In

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 (Subscribe)

      • tag 453-NoPartyIDs ≥ 1 and tag 448-PartyID = Firm ID and tag 452-PartyRole = Firm Role
        Note: All Party Roles must be identical within a single request to CME STP FIX.

  2. CME STP FIX sends Logout message (tag 35-MsgType = 5) message and 58-Text = 'Unable to satisfy the request' to FIX Client and closes FIX session.

  3. CME STP FIX waits for FIX Client to reestablish FIX session.




How was your Client Systems Wiki Experience? Submit Feedback

Copyright © 2024 CME Group Inc. All rights reserved.