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.

top

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.

top

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

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

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

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

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

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.

top

Sample Messages
Order Mass Action Request

<?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>

Order Mass Action Report

<?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>

Business Level Reject

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

 

top




How was your Client Systems Wiki Experience? Submit Feedback

Copyright © 2024 CME Group Inc. All rights reserved.