Page tree
Skip to end of metadata
Go to start of metadata

Clearing Firms can restrict Execution Firms from entering orders by submitting Block instructions through the API that will cause all subsequent order entries (including new orders, order modifies, and cross orders) to be rejected.

Block instructions must include the following parameters:

  • Executing Firm (bytes 4-6 of SenderCompID) AND
  • Account number AND
  • Derivative type (futures or options) AND
  • Side (buy or sell from message value: Side)
  • Optionally, Product may also be designated. If Product is not included, the block instruction will apply to all products within the designated derivative type.
  • Exchange is also available by default for the selected product
Blocked Execution Firm order entries are rejected with a Session Level Reject (tag35-MsgType=3).

Block and unblock instructions allow Clearing Firms to manage their Execution Firms’ market exposure at the firm/account level. Once a block is applied, Execution Firms can resume trading for the identified account only after an Unblock instruction is submitted via the RMI.

WARNING

RMI enforcement is at the account level whereas GC2 is at the Execution Firm/exchange group level. Submitting Unblock instructions via the RMI will not unblock the Execution Firm to resume trading if its credit limits are exceeded based upon the restrictions implemented in GC2

Block and unblock instructions are placed with the following parameters:

Block/Unblock – Levels of Granularity

Level of Granularity

Required

Description

1st qualifier

Y

Execution Firm

2nd qualifier

Y

Account Number

3rd  qualifier

Y

Derivative Type – Options on Futures or Futures

4th qualifier

Y

Side – Buy or Sell

5th qualifier

N

Product Group (if not included, all product groups will be affected)

Block instructions submitted through the API use the Party Entitlement Definition message, which must conform to the following rules:

Each entitlement must be limited to a combination of one Execution Firm and one account.

  • Different entitlements within a message can pertain to different accounts, but all accounts within a message must come under one firm.
  • An entitlement carries either a block or unblock instruction – it cannot contain both.
  • Each entitlement is limited to only one side; however, it can carry multiple instruments to be blocked on a given side.
  • Multiple concurrent requests per Account are not supported. The risk system must receive an acknowledgement to an entitlement request for a given account prior to submitting a new entitlement request for that account.
  • Each message can contain multiple entitlements. Within an entitlement, there can be multiple instructions to block/unblock multiple product groups.
    • There will be a maximum configurable n number of instructions allowed per Party Entitlement Definition message.

No other requests are unblocked.

The Block instructions are active across all sessions until an Unblock instruction is submitted. In case of an emergency, Clearing Member Firm RMI Risk Administrators can contact GCC Support to request all Block instructions be removed for a Firm and Account.

Block instructions are applied at the Firm and Account level; they cannot be restricted at the Trader ID, SenderCompID, or SenderSubID level.

Block/Unblock Hierarchy

The RMI uses a hierarchal approach to implement the Block/Unblock instructions. A Block instruction with less granularity supersedes a Block instruction with greater granularity.

For example, if a risk system submits a Block instruction on two Product Groups and sends another Block instruction to restrict All Product Groups, the All Product Groups Block instruction supersedes the former, because the instruction for All Product Groups is at a less granular level than the two Product Groups.

Alternately, if there is a Block instruction for two Product Groups and an Unblock instruction is received for All Product Groups, then the latter is enforced and overrides the former, more granular Block instruction.

An Unblock instruction will be accepted even when there is no Block instruction in place.
Block/Unblock Reject

Block/Unblock instructions with errors will be rejected with a Business Reject message. If a Risk system submits a Block instruction for either the Buy or Sell side of a Product, a Request for Cross (RFC) for that Product is rejected. The RMI recognizes the order is a cross from the FIX message. Possible reasons for rejected Block/Unblock instructions include:

  • Instructions do not meet the criteria for FIXML validation
  • Instructions are missing required values
  • Different instruction types within one message (Block/Unblock instructions and Cancel instructions cannot be in a single message)
  • Format of given Account information does not meet formatting constraints
  • Number of instructions in one message exceeds the maximum allowed

The Party Entitlement Definition message may be partially accepted/rejected when contradictory Block instructions are sent (e.g., If there are more than one entitlements and one of them says unblock few product groups, when all product groups are blocked).

If a Risk system submits a Block instruction, all new orders or cancel/replace requests for that Execution Firm and Account are rejected with a Session Level Reject and  error text describing the scenario, e.g.: “<Futures>_<Buy> is blocked for Account : <7897> for Product Group : <GE>”in the Text field. Rejects derived from GC2 will continue to use the Session Level Reject and have “Credit Limit Violation: Order Quantity x exceeds Clip Size: y” in the Text field.

The following diagram shows the message flow for Party Entitlement Definition Request and Acknowledge (Accept) messages for both Block and Unblock instructions initiated by clients’ automated risk systems.

Blocking Order Entry

Block instructions submitted through the API can be applied to All Product Groups or one or more Product Groups. The sections below detail procedures to restrict order entry through the API.

For additional instructions on submitting Block instructions through the user interface, see CME Globex Credit Controls WebHelp - RMI.

Firm and Account | Product type | All Product Groups | Side

To submit Block instructions through the API for All Product Groups:

  1. Clearing Member Firm (CMF) automated risk management system submits a Block instruction to restrict order entry from a specific Execution Firm/account on Options or Futures (Product type) on either the Buy or Sell side. If no product group(s) specified, all Product Groups is default.
  2. The Block instructions are validated for user credentials and FIXML messaging.
  3. The Block instructions are validated for any pre-existing instructions and pre-existing higher level instructions.
  4. A confirmation message is returned via the RMI API, stating that the Block instructions have been accepted.
  5. After the Block instructions pass the validation check, the Execution Firm is restricted from entering orders, cancel/replace requests or cross requests with the referenced account number.
If All Product Groups are restricted and the Risk Administrator wants to unblock order entry for just one Product, they must unblock order entry for All Products, then submit Block instructions for the specific Products individually.
Firm and Account | Product Type | Product Group | Side

Risk systems can submit Block instructions for one or more Product Groups for either Futures or Options (Product Type) on the Buy or Sell side.

Unblocking Order Entry

Risk systems can submit Unblock instructions through the API to resume order entry after the Execution Firm and Account has been restricted. The sections below detail procedures to resume order entry through the API only.

For instructions on submitting block / unblock instructions through the user interface, see CME Globex Credit Controls WebHelp - RMI.

Firm and Account | Product Type | Side| All Product Groups
  1. CMF’s automated risk system submits an Unblock instruction to lift the previously applied Block instructions for a specific Execution Firm/account for Product Type on either the buy or sell side. If no product group(s) specified, order entry for all Product Groups is default.
  2. The Unblock instructions are validated for user credentials and FIXML messaging.
  3. The Unblock instructions are validated for any pre-existing instructions and pre-existing higher level instructions.
  4. A confirmation message is sent to the risk system stating that the Unblock instructions have been accepted.
  5. After the Unblock instruction is implemented, the Execution Firm can resume order entry, cancel/replace requests, and cross requests with the referenced account number.
Resuming order entry for one Account by removing Block instructions does not change restrictions that have been applied to another Account for the same Execution Firm
Firm and Account | Product type | Side| Product Group

Clearing Member Firm (CMF)risk system can submit Unblock instructions for one or more Product Groups for either Futures or Options (Product Type) on the Buy or Sell side.

Block/Unblock Instructions Message Example

The Block/Unblock Definition Request message is sent for Block/Unblock order entry for multiple Accounts within an Execution Firm.

The maximum number of instructions per message is configured from and enforced by the API. If this limit is exceeded, the following error displays: “Number of instrument scopes exceeds the maximum unblocked count.SentCount=3, UnblockedCount=2”.

Below are two examples of the Party Entitlement Definition Request message:

Block for Execution Firm 330 and Client Account - 123456:

  • Five Product Groups for Futures (Buy)
  • Four Product Groups for Futures (Sell)
  • Five Product Groups for Options (Buy)
  • Four Product Groups for Options (Sell)

Block for Execution Firm 330 and Client Account - 67890:

  • All Product Groups for Futures (Buy)
  • Four Product Groups for Futures (Sell)
  • All Product Groups for Options (Buy)
  • Four Product Groups for Options (Sell)


<?xml version="1.0" encoding="utf-8"?>

    <FIXML v="FIX5.0 SP2" xv="130" s="2010-11-16" cv="CME.1000" xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2">

        <PtyEntlmntDefReq ReqID=”12337”>

            <Hdr SID="CMF" TID="CME" TSub="RMI"/>

            <PtyEntlmntUpd ListUpdActn=”M”>

                <PtyDetl ID=”330” R=”1”>

                    <ReltdPtyDetl ID=”123456” R=”24”/>

                </PtyDetl>

                <Entlmnt Ind=”N” Typ=”0” ID=”123”>

                    <Attrib Typ=”4000” Value=”1”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NN”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”CL”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NG”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”F3”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”GE”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”456”>

                    <Attrib Typ=”4000” Value=”2”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NN”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”CL”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NG”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”F3”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”789”>

                    <Attrib Typ=”4000” Value=”1”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”1O”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”3Q”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”6B”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”F3”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT”  SecGrp=”GE”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”012”>

                    <Attrib Typ=”4000” Value=”2”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”6M”>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”6J”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”GE”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”F3”/>

                </Entlmnt>

            </PtyEntlmntUpd>

            <PtyEntlmntUpd ListUpdActn=”M”>

                <PtyDetl ID=”330” R=”1”/>

                    <ReltdPtyDetl ID=”67890” R=”24”/>

                </PtyDetl>

                <Entlmnt Ind=”N” Typ=”0” ID=”345”>

                    <Attrib Typ=”4000” Value=”1”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”678”>

                    <Attrib Typ=”4000” Value=”2”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NNT”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NKD”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NYM”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”OFB”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”901”>

                    <Attrib Typ=”4000” Value=”1”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”234”>

                    <Attrib Typ=”4000” Value=”2”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”OEH”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”O7I”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”NFP”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”NQ”/>

                </Entlmnt>

            </PtyEntlmntUpd>

        </PtyEntlmntDefReq>

    </FIXML>

Block/Unblock Instructions Accept Message Example

Below is an example of the Party Entitlement Definition Request Acknowledge – Accept message:


<?xml version="1.0" encoding="utf-8"?>

    <FIXML v="5.0 SP2" xv="130" s="2010-11-16" cv="CME.0001" xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2">

        <PtyEntlmntDefReqAck ReqID=”123” ReqStat=”0” ReqRslt=”0”>

            <Hdr SID="CME" SSub="RMI" TID="CMF"/>

        </PartyEntlmntDefReqAck>

    </FIXML>

Block/Unblock Instructions Rejected Message Example

Below is an example of the Party Entitlement Definition Request Acknowledge – Reject message:


<?xml version="1.0" encoding="utf-8"?>

    <FIXML v="5.0 SP2" xv="130" s="2010-11-16" cv="CME.0001" xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2">

        <PtyEntlmntDefReqAck ReqID=”123” ReqStat=”2” ReqRslt=”2” RejTxt=”Invalid Operation in EntlmntID 890”>

            <Hdr SID="CME" SSub="RMI" TID="CMF"/>

        </PartyEntlmntDefReqAck>

    </FIXML>

Block/Unblock Instructions Accept With Changes Message Example

Below is an example of the Party Entitlement Definition Request Acknowledge – Accept with changes message:


<?xml version="1.0" encoding="utf-8"?>

    <FIXML v="FIX5.0 SP2" xv="130" s="2010-11-16" cv="CME.1000" xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2">

        <PtyEntlmntDefReqAck ReqID=”123” ReqStat=”1” ReqRslt=”0”>

            <Hdr SID="CME" SSub="RMI" TID="CMF"/>

            <PtyEntlmntAck ListUpdActn=”M” Stat=”0” Rslt=”0”>

                <PtyDetl ID=”330” R=”1”/>

                    <ReltdPtyDetl ID=”123456” R=”24”/>

                </PtyDetl>

                <Entlmnt Ind=”N” Typ=”0” ID=”123”>

                    <Attrib Typ=”4000” Value=”1”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NN”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”CL”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NG”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”F3”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”GE”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”456”>

                    <Attrib Typ=”4000” Value=”2”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NN”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”CL”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NG”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”F3”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”789”>

                    <Attrib Typ=”4000” Value=”1”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”1O”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”3Q”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”F6”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”F3”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT”  SecGrp=”GE”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”012”>

                    <Attrib Typ=”4000” Value=”2”/>

                   <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”6M”>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”6J”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”GE”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”F3”/>

                </Entlmnt>              

            </PtyEntlmntAck>

            <PtyEntlmntAck ListUpdActn=”M” Stat=”0” Rslt=”0”>

                <PtyDetl ID=”330” R=”1”/>

                    <ReltdPtyDetl ID=”123456” R=”24”/>

                </PtyDetl>

                <Entlmnt Ind=”N” Typ=”0” ID=”345”>

                    <Attrib Typ=”4000” Value=”1”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”901”>

                    <Attrib Typ=”4000” Value=”1”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT”/>

                </Entlmnt>

                <Entlmnt Ind=”N” Typ=”0” ID=”234”>

                    <Attrib Typ=”4000” Value=”2”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”OEH”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”O7I”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”NFP”/>

                    <InstrmtScope Oper=”1” SecTyp=”OPT” SecGrp=”NQ”/>

                </Entlmnt>            

            </PtyEntlmntAck>

            <PtyEntlmntAck ListUpdActn=”M” Stat=”2” Rslt=”100” RejTxt=”Higher level block supersedes current request">

                <PtyDetl ID=”330” R=”1”/>

                    <ReltdPtyDetl ID=”123456” R=”24”/>

                </PtyDetl>

                <Entlmnt Ind=”Y” Typ=”0” ID=”678”>

                    <Attrib Typ=”4000” Value=”2”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NNT”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NKD”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SecGrp=”NYM”/>

                    <InstrmtScope Oper=”1” SecTyp=”FUT” SeSecGrp=”OFB”/>

                </Entlmnt>

            </PtyEntlmntAck>

        </PartyEntlmntDefReqAck>

    </FIXML>

Party Blocks

Party blocks are used to identify required Execution Firm and Account information in messages submitted to the API. They are required in the following RMI API messages:

  • Required in Party Entitlement Definition Request Messages
  • Not used in the Security List Messages, Login and Logout
  • Execution Firm is required for Party Entitlements Messages; Account is optional
    • If Account is not included, the RMI API will return all active Block instructions for the identified Execution Firm

The table below details the two elements that consist of Parties Block.

Party Block Elements

FIXML Element

Max Length

Valid Values

Description

PtyDtl



Signals that the following will contain the Execution Firm information

ID

3


Execution Firm number

R

1

1 = Execution Firm

Designates the ID value as the Execution Firm number

ReltdPtyDetl



Signals that the following will contain the Account information

ID

12


Account number

R

2

24 = Account number

Designates the ID value as the Account number

All risk management services are offered by CME Group on a best-efforts basis. Clearing Member Firm (CMF) Risk Administrators only have access to the Execution Firms and Exchanges that they guarantee. Any attempt to take action on an Executing Firm and Exchange assigned to a different CMF will be rejected.