RMI API Cancel Functionality
The RMI API allows CMFs to programmatically cancel working orders, including Good Till Cancel (GTC) and Good Till Date (GTD) order types.
RMI API Cancel functionality allows a CMF to to submit instructions to cancel orders at the following levels:
Account + Execution Firm + Exchange
Account + Execution Firm + All Exchanges supported by Clearing Firm
Cancel instructions are submitted through the RMI API only.
Cancels cannot be submitted through the API at the Product group level (e.g. GE) or Product Type (future or option) level.
Contents
Testing and Certification Requirements
RMI API certification via Autocert+ is mandatory for Clearing Firms who wish to use the API. The Risk Management Interface for cancel functionality is available for testing in New Release.
For technical development support, please contact:
Certification Support for Electronic Trading (CSET)
312.930.2322
cset@cmegroup.com
For all other inquiries, please contact:
Global Account Management (GAM)
312.634.8700 (Chicago)
44 203 379 3754 (London)
65 6593 5574 (Asia)
globalaccountmanagement@cmegroup.com
RMI API Cancel Functionality
This topic describes the message level details for implementation of RMI API cancel functionality. For RMI API functionality, the client system must be able to process the following message types:
Order Mass Action Request (tag 35-MsgType=CA)
Order Mass Action Report (tag 35-MsgType=BZ)
Business Level Reject (tag 35-MsgType=j)
Logical System Flow
The diagram shows how the Clearing Member Firm (CMF) Risk Admin can use the RMI to cancel orders in addition to existing RMI functionality.
Order Mass Action Request Submission
Orders can be cancelled at three levels according to the following parameters defined in the Order Mass Action Request message:
Executing Firm
Account Number
Exchange (can be submitted for a given Exchange or all Exchanges)
Cancellation Level | Required | Description | FIX Tag |
1st qualifier | Y | Execution Firm | tag 49-SenderCompID (bytes 4-6) |
2nd qualifier | Y | Account Number | tag 448-PartyID |
3rd qualifier | N | Exchange (required if cancel is not for all exchanges) | tag 207-SecurityExchange |
For Order Cancel, The Account value submitted in tag 448-PartyID in the Order Mass Action Request must match that submitted by the execution firm, including case sensitivity.
Example:
Clearing Firm submits cancel to the RMI API for Account=AbCdE.
Resting order for Executing Firm with Account=AbCdE is cancelled.
Resting order for Executing Firm with Account=abcde is NOT cancelled and continues working in the market.
For current RMI API Block/Unblock functionality, this value is not case sensitive.
Risk Administrators must also specify a Client Order ID (tag 11-ClOrdID) on each request, which is used to uniquely identify the response for correlation with the request.
Orders cannot be cancelled by TraderID, tag49-SenderCompID, or tag 50-SenderSubID values.
Message Flow
CMFs can cancel working orders by submitting an Order Mass Action Request message to the RMI API, which will cancel the order(s) specified in the request . Risk administrators can submit one cancel instruction per Order Mass Action Request message.
RMI API acknowledges an accepted Order Mass Action Request (tag 35-MsgType=CA) message with an Order Mass Action Report (tag 35-MsgType=BZ) message.
RMI API rejects an Order Mass Action Request message with a Business Level Reject (tag 35-MsgType=j) message.
If the message contains more than one cancel instruction, RMI API rejects the order.
Cancel Request Accepted
This diagram shows the message flow for an accepted Order Mass Action Request message.
Cancel Request Rejected
This diagram shows the message flow for a rejected Order Mass Action Request message.
Message Specification
These messages support RMI API Cancel functionality only. See the complete RMI API message layout in the RMI API Message Specification.
The → symbol indicates a repeating group.
Standard Header from Client System to RMI API
Tag | Field Name | Req | FIXML Element | Data Type | Max Length | Description |
---|---|---|---|---|---|---|
→ | Component <StandardHeader> |
| Hdr |
|
|
|
49 | SenderCompID | Y | SID | String | 7 | Sender Company Identifier. Value will be provided by CME. |
56 | TargetCompID | Y | TID | String | 7 | Target Company Identifier. Supported Value: CME |
57 | TargetSubID | Y | TSub | String | 5 | Target Sub Identifier. Supported Value: RMAPI |
Standard Header from RMI API to Client System
Tag | Field Name | Req | FIXML Element | Data Type | Max Length | Description |
---|---|---|---|---|---|---|
→ | Component <StandardHeader> |
| Hdr |
|
|
|
49 | SenderCompID | Y | SID | String | 7 | Sender Company Identifier. Supported Value: CME |
50 | SenderSubID | Y | SSub | String | 5 | Sender Sub Identifier. Supported Value:RMAPI |
56 | TargetCompID | Y | TID | String | 7 | Target Company Identifier. Value will be provided by CME. |
Order Mass Action Request (tag 35-MsgType=CA)
Tag | Field Name | Req | FIXML Element | Data Type | Max Length | Description |
---|---|---|---|---|---|---|
35 | OrderMassActionRequest | Y | OrdMassActReq | String | 2 | MsgType=CA |
11 | ClOrdID | Y | CIOrdID | String | 16 | Identifier of Order Mass Action Request. It is recommended that customers send unique identifiers but uniqueness is not enforced by the API. |
1373 | MassActionType | Y | MassActionType | Int | 1 | Specifies the type of action requested. Supported Values: 3 - Cancel Orders |
1374 | MassActionScope | Y | MassActionScope | Int | 3 | Specifies scope of Order Mass Action Request. Supported Values: 100 – All orders for an exchange. 101 – All orders for all exchanges. |
60 | TransactTime | Y | TxnTm | UTCTimestamp | 23 | Timestamp when the business transaction represented by the message occurred. UTC Timestamps are sent in number of nanoseconds since Unix epoch synced to a master clock to microsecond accuracy. |
→ | Component <Parties> | Y | Pty |
|
|
|
448 | PartyID | Y | ID | String | 12 | Specific value for a specified Party Role. |
452 | PartyRole | Y | R | Int | 2 | Indicates the party the request is being made for. Supported Values: 1 – Trading Member Firm. 24 – Customer Account. Each incoming Order Mass Action Request can only have one account and one firm. |
→ | End Component </Parties> |
|
|
|
|
|
→ | Component <Instrument> | Conditional | Instrmt |
|
|
|
207 | SecurityExchange | Conditional | Exch | String | 4 | Needed to specify the product exchange for which all open orders will be cancelled. Required only when Mass Action Scope=100. |
→ | End Component </Instrument> |
|
|
|
|
|
Order Mass Action Report (tag 35-MsgType=BZ)
Tag | Field Name | Req | FIXML Element | Data Type | Max Length | Description |
---|---|---|---|---|---|---|
35 | OrderMassActionReport | Y | OrdMassActRpt | String | 2 | MsgType=BZ |
11 | ClOrdID | Y | CIOrdID | String | 16 | Pancake flip of the ClientOrder ID provided on the incoming Order Mass Action Request message. |
1369 | MassActionReportID | Y | MassActionReportID | String | 20 | Unique ID of Order Mass Action Report as assigned by RMI API. |
1373 | MassActionType | Y | MassActionType | Int | 3 | Specifies the type of action requested. This is a pancake flip of the incoming value provided on the Order Mass Action Request message. |
1374 | MassActionScope | Y | MassActionScope | Int | 3 | Specifies the scope of the Action – this is a pancake flip of the incoming value provided on the Order Mass Action Request message. |
1375 | MassActionResponse | Y |
MassActionResponse | Int | 1 | Specifies the action taken by RMI API when it receives the Order Mass Action Request. Supported Values: 1 – Accepted. |
1376 | MassActionReject Reason | Conditional | MassActionRejectReason | Int | 3 | Reason Order Mass Action Request was rejected. Required if Mass Action Response=0. Supported Values: 99 – Other |
58 | Text | Optional | Txt | String | 250 | Text further explaining the Party Entitlement Definition Request Result. |
→ | Component <Parties> | Y | Pty |
|
|
|
448 | PartyID | Y | ID | String | 12 | Specific value for a specified Party Role. |
452 | PartyRole | Y | R | Int | 2 | Indicates the party the request is being made for. Supported Values: 1 – Trading Member Firm 24 – Customer Account |
→ | End Component </Parties> |
|
|
|
|
|
→ | Component <Instrument> | Y | Instrmt |
|
|
|
207 | SecurityExchange | Y | Exch | String | 4 | Specifies the exchange requested for which orders are to be cancelled. This is a flip of the incoming value unless it is missing or null in which case it will not be sent. |
→ | End Component </Instrument> |
|
|
|
|
|
Business Level Reject (tag 35-MsgType=j)
Tag | Field Name | Req | FIXML Element | Data Type | Max Length | Description |
---|---|---|---|---|---|---|
35 | BusinessMessageReject | Y | BizMsgRej | String | 1 | MsgType=j |
372 | RefMsgType | Y | RefMsgTyp | String | 2 | The MsgType (35) of the FIXML message being rejected. |
379 | BusinessRejectRefID | Y | BizRejRefID | Int | 16 | The value of the business-level "ID" field on the message being referenced. |
380 | BusinessRejectReason | Y | BizRejRsn | Int | 1 | Code to identify reason for a business reject message. Supported Values: 0 – Other 1 – Unknown ID 2 – Unknown Security Group 3 – Unsupported message type 4 – Application not available 5 – Conditionally required field is missing 6 – Not Authorized 100 – Request accepted but unable to construct response 101 – Request timed out 102 – Invalid Exchange 103 – Only one customer account allowed 104 – Only one executing firm allowed 105 – Only one security exchange allowed 106 – Mismatch between mass action scope and security exchange |
58 | Text | Optional | Txt | String | 250 | Reason for rejection. |
Sample Messages
<?xml version="1.0" encoding="utf-8"?>
<FIXML v="FIX.5.0SP2" xv="130" s="2010-11-16" cv="CME.1000" xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2">
<OrdMassActReq ClOrdID=”HT1234” MassActionType=”3” MassActionScope=”100” TxnTm=”2012-04-
10T12:00:00.253”>
<Hdr SID="CMF" TID="CME" TSub="RMAPI"/>
<Pty ID=”330” R=”1”/>
<Pty ID=”123456” R=”24”/>
<Instrmt Exch=”XCME”/>
</OrdMassActReq>
</FIXML>
<?xml version="1.0" encoding="utf-8"?>
<FIXML v="FIX.5.0SP2" xv="130" s="2010-11-16" cv="CME.1000" xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2">
<OrdMassActRpt ClOrdID=”HT1234” MassActionReportID=”456” MassActionType=”3” MassActionScope=”100”
MassActionResponse=”1” >
<Hdr SID="CME" SSub="RMAPI" TID="CMF"/>
<Pty ID=”330” R=”1”/>
<Pty ID=”123456” R=”24”/>
<Instrmt Exch=”XCME”/>
</OrdMassActRpt>
</FIXML>
<FIXML v="FIX.5.0SP2" xv="130" cv="CME.1000" s="2010-11-16" xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2">
<BizMsgRej RefMsgTyp="CA" BizRejRefID="0" BizRejRsn="0" Txt="Value 'abc1234567890' with length = '13' is not facet-valid with respect to maxLength '12' for type 'PartyID_t'.">
<Hdr SID="CME" TID="CMC" SSub="RMAPI"/>
</BizMsgRej>
</FIXML>
How was your Client Systems Wiki Experience? Submit Feedback
Copyright © 2024 CME Group Inc. All rights reserved.