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

CME Globex Self-Match Prevention (SMP) is optional functionality that allows a customer to prevent the matching of orders for accounts with common ownership, across different Executing Firms, within or across clearing firms.

Customers may submit orders and quotes with an SMP Identifier (SMP ID), and the platform will prevent the orders from trading when the SMP IDs match, by cancelling either the aggressing or resting order.

The customer can indicate whether to cancel the aggressing or resting order using the SMP Instruction in tag 8000-SelfMatchPreventionInstruction. Default behavior is to cancel the resting order.

  • Tag 8000-SelfMatchPreventionInstruction will be returned on the corresponding Execution Reports.
  • SMP does not prevent self-matches during implied trades or during the pre-open and new price indication market states.
  • In FIFO markets, SMP cancels the orders that would have executed. In all other markets, SMP cancels the orders that could have executed.

All users of CME Group Self Match Prevention agree that they have read and understand the functionality and limitations expressed in the CME Group Self Match Prevention FAQ, Client Systems Wiki, as well as Rule 534-Wash Trades Prohibited.

  • Customer messages with unregistered SMP IDs, or SMP IDs that are not registered to the submitting Executing Firm, will be rejected. Customers receiving rejects should contact their Clearing Firm Admin and/or stop submitting orders with SMP ID(s) until the issue is resolved.
  • Resting orders with an unregistered SMP ID will be eliminated after 4:30 pm CT Monday-Thursday and 9:30 am CT Sunday.

CME Direct SMP

CME Direct supports SMP and a Self-Match Protection feature at the firm and user level that only affects orders entered via CME Direct.

Contents

Customer Registration

New Release and Certification Testing

Customer registration is required for testing in New Release. Contact your Global Account Manager to obtain registered New Release SMP IDs. New SMP IDs and updates are valid same-day after 8 pm CT.

Production

Customer registration is required for Production use. Customers may register their Executing Firm IDs and SMP ID via the Firm Administrator Dashboard (FADB). Customer registration is required to access FADB or contact your Global Account Manager for an offline registration. New SMP IDs and updates are valid same-day after 4:30 pm CT Monday-Thursday and 9:30 am CT Sunday. During these times, CME Globex will eliminate any resting orders with unregistered SMP IDs. Orders submitted with new or modified SMP IDs before activation will be rejected.

More than one account number can be associated with an SMP ID. All accounts using a single SMP ID must have common ownership.

Self-Match Prevention Identifier Attributes

  • Randomly generated and universally unique number generated by CME Group
  • Numeric and will not start with a zero
  • 7 digits with no blank spaces

Partner Exchanges

Self-Match Prevention functionality is applicable on the following Partner Exchange markets hosted on the CME Globex platform:

  • Dubai Mercantile Exchange (DME)
  • Minneapolis Grain Exchange (MGEX)
  • Bursa Malaysia Derivatives (BMD)

Self-Match Prevention functionality is not applicable on Korea Exchange (KRX) markets.

Self-Match Prevention Video Overview

Watch this video for a quick overview of how SMP works.

Self-Match Prevention video

Self-Match Prevention Functionality

Customers who opt to leverage Self-Match Prevention functionality by registering via the Firm Admin Dashboard will submit tag 7928-SelfMatchPreventionID on each quote and order message to prevent trading against an opposite side order with the same SMP ID.

When CME Globex detects a Buy order and a Sell order with the same SMP ID at the same executable price level, it automatically cancels the resting or incoming (aggressing) order(s) based on the Self-Match Prevention Instruction. If the Self-Match Prevention Instruction is not submitted, CME Globex will cancel the resting order(s) by default and continue processing the incoming order. 

The unsolicited cancel due to Self-Match Prevention is included in the CME Globex Messaging Efficiency Program with a pre-defined weighting factor = 3.

Self-Match Prevention Messaging

SMP prevents the matching of orders for accounts with common ownership if both the buy and sell orders contain the same Self-Match Prevention Identifier (SMP ID).

The SMP ID is sent in tag 7928-SelfMatchPreventionID and must be submitted on the following inbound application iLink messages by market participants on each quote and order to prevent self-trading:

CME Globex will send tag 7928-SelfMatchPreventionID on the following outbound application iLink Messages (only if present in incoming messages):

The incoming value will be sent back to customers in the Execution Report. If the tag value is greater than the max length, the quote or order will be rejected with tag 58=Business Reject: Fix Field Length Exceeds Max Length '7928 (SELF_MATCH_PREVENTION_ID) length: <Field Length> max: 12':

Sample Messages

 Expand for sample messages

New Order - SMP ID Value Exceeds Max Length

8=FIX.4.2|9=250|35=D|11=NMQ339|21=1|34=339|38=25|40=2|1=CSETTEST|44=1587.0000000|49=NMQ004N|50=CSET|52=20171103-17:01:47.453|54=1|55=DC|56=CME|57=G|59=0|1091=N|60=20171103-17:01:47.453|107=DCZ7|142=US,IL|1028=N|204=0|9702=4|9717=NMQ339|7928=927822777777777777777777|10=076|

New Order Reject

8=FIX.4.2|9=210|35=3|34=2648|369=339|52=20171103-17:01:47.482|49=CME|50=G|56=NMQ004N|57=CSET|143=US,IL|45=339|58=Business Reject: Fix Field Length Exceeds Max Length '7928 (SELF_MATCH_PREVENTION_ID) length: 24 max: 12'|1028=N|10=018|

Mass Quote - SMP ID Value Exceeds Max Length

8=FIX.4.2|9=267|35=i|34=343|49=NMQ004N|50=CSET|52=20171103-17:03:47.483|56=CME|57=G|1091=N|117=1234|142=US,IL|1028=N|204=0|9702=1|9706=C|9771=CSETACCT|9773=N|296=1|302=QS1|307=CLZ7|304=1|295=1|299=TEST4|55=XE|107=LOZ7 C20500|132=1|134=50|133=2|135=50|167=OPT|7928=839677999999999999|10=030|

Mass Quote Reject

8=FIX.4.2|9=231|35=j|34=2652|369=343|52=20171103-17:03:47.520|49=CME|50=G|56=NMQ004N|57=CSET|143=US,IL|45=343|58=Business Reject: Fix Field Length Exceeds Max Length '7928 (SELF_MATCH_PREVENTION_ID) length: 18 max: 12'|372=i|379=1234|380=5|1028=N|10=055|

New Order - SMP ID has a special character to show it is an invalid value

8=FIX.4.2|9=242|35=D|11=9Q3842|21=1|34=842|38=5|40=2|1=CSETTEST|44=9815.5000000|49=9Q3099N|50=CSET|52=20171031-19:21:12.429|54=2|55=GE|56=CME|57=G|59=0|1091=N|60=20171031-19:21:12.430|107=GEU8|142=US,IL|167=FUT|1028=N|204=0|9702=4|9717=9Q3842|7928=839&6779*|10=029|

New Order Reject

8=FIX.4.2|9=412|35=8|34=958|369=842|52=20171031-19:21:12.455|49=CME|50=G|56=9Q3099N|57=CSET|143=US,IL|1=CSETTEST|6=0|11=9Q3842|14=0|17=82347:825808|20=0|37=82627764551|38=5|39=8|40=2|41=0|44=9815.5|48=804055|54=2|55=GE|58=Self Match Prevention ID is not associated with the given Firm ID|59=0|60=20171031-19:21:12.454|103=7614|107=GEU8|150=8|151=0|167=FUT|432=20171031|1028=N|5979=1509477672454255548|7928=839&6779*|9717=9Q3842|10=211|

New Quote - SMP ID has a space at the being to show it is an invalid value

8=FIX.4.2|9=257|35=i|34=879|49=9Q3000N|50=CSET|52=20171031-19:39:56.648|56=CME|57=G|1091=N|117=1234|142=US,IL|1028=N|204=0|9702=1|9706=C|9771=CSETACCT|9773=N|296=1|302=QS1|307=CLZ7|304=1|295=1|299=TEST4|55=XE|107=LOZ7 C20500|132=1|134=50|133=2|135=50|167=OPT|7928= 8396779|10=179|

Quote Rejected

8=FIX.4.2|9=232|35=b|34=995|369=879|52=20171031-19:39:56.669|49=CME|50=G|56=9Q3000N|57=CSET|143=US,IL|117=1234|297=0|1028=N|7928= 8396779|9771=CSETACCT|9772=0|296=1|302=QS1|304=1|295=1|299=TEST4|55=LO|107=LOZ7 C20500|167=OPT|48=165239|22=4|368=102|10=221|

Self-Match Prevention at Execution

When CME Globex detects a buy and a sell order with the same SMP ID (tag 7928-SelfMatchPreventionID), it will automatically cancel the order if they are on the same executable price level can occur subject to the following conditions:

  • For the FIFO matching algorithm (tag 1142-MatchAlgorithm= F), SMP functionality is triggered when qualifying opposite side orders will match at a given price level.
  • For all other matching algorithms, SMP functionality is triggered when qualifying opposite side orders may potentially match due to presence at a given price level.
  • For Mass Quotes, if an SMP scenario is detected, all resting quotes in that group code are cancelled.

Self-Match Prevention Instruction

Self-Match Prevention instruction allows customers to indicate whether to cancel the resting or incoming (aggressing) order in the event of a self-match. To use SMP Instruction functionality, customers must submit tag 7928-SelfMatchPreventionID and tag 8000-SelfMatchPreventionInstruction on each order.

In the event of a self-match:

  • Tag 8000 on the aggressing order always determines which order(s) is cancelled.
  • When tag 8000 is not present on the aggressing order, the resting order(s) is cancelled.
  • Tag 8000 on the resting order(s) do not determine which order(s) is cancelled.
For Mass Quotes, Self-Match Prevention instruction indicating to cancel the resting or incoming (aggressing) side is not available. If SMP functionality is triggered, only resting quotes are cancelled.  

Tag 8000-SelfMatchPreventionInstruction can be submitted on the following messages and will acknowledged back on the corresponding Execution Reports:

If tag 8000-SelfMatchPreventionInstruction is sent in a client message other than New Order Single (35=D) or Order Cancel Replace Request (35=G), the message is accepted but tag 8000-SelfMatchPreventionInstruction is ignored and is not returned.

New Orders (35=D) and Order Cancel-Replace Requests (35=G) are rejected with a Session Level Reject (35=3) message when

  • the tag value is greater than the max length
  • the value is invalid

A modification to the value of tag 8000-SelfMatchPreventionInstruction does not cause the order to lose priority in the book. However, if tag 8000-SelfMatchPreventionInstruction is not present on the Cancel-Replace Request (35=G) message, CME Globex will remove the SMP Instruction from the resting order.

Self-Match Prevention ID and Self-Match Prevention Instruction

The following table illustrates how Self-Match Prevention functions based on the values for tag 7928-SelfMatchPreventionID and tag 8000-SelfMatchPreventionInstruction submitted in the originating message:

Originating Message

Execution Report

 

SMP ID tag 7928 is present

SMP Instruction tag 8000 value

tag 7928 is returned

tag 8000 value

Result

Yes

N (New)

Yes

N (New)

Self-Match prevented

Aggressing order cancelled

Yes

O (Old)

Yes

O (Old)

Self-Match prevented

Resting order cancelled

Yes

Not sent

Yes

Not returned

Self-Match prevented

Resting order cancelled

Yes

Invalid value

N/A

N/A

Session Level Reject sent for orders and cancel/replace

Business Level Reject sent for Mass Quotes

Yes – unregistered or not registered to Executing Firm ID

Not sent

N/A

N/A

Session Level Reject sent for orders and cancel/replace

Business Level Reject sent for Mass Quotes

No

N

No

Not returned

Self-Match occurs

No

O

No

Not returned

Self-Match occurs

No

Not sent

No

Not returned

Self-Match occurs

No

Invalid value

N/A

N/A

Session Level Reject sent for orders and cancel/replace

Business Level Reject sent for Mass Quotes

Values for Cancel Type Indicator

In the Execution Report - Order Cancel (tag 35-MsgType=8, tag 39-OrdStatus=4) message, tag 378-ExecRestatementReason indicates whether the resting or aggressing order was cancelled due to Self-Match Prevention.

Tag

Name

Req

Format

Values

Description

378

ExecRestatementReason

N

Int (3)

103=Cancel Oldest (Resting) due to Self-Match Prevention

107=Cancel Newest (Aggressing) due to Self-Match Prevention

Identifies origin of the order cancel.

In the Quote Cancel Acknowledgment (tag 35-MsgType=b) message, tag 9775-UnsolicitedCancelType=H indicates that quotes were cancelled due to Self-Match Prevention.

Note Regarding Stop Orders

If a triggered Stop order causes a Self-Match Event, the default behavior of cancel resting order applies, unless tag 8000=N, in which case the aggressor is canceled.

Order 1: Buy GEU0 10-lot @ 13

SMP Instruction - Cancel Resting SMP ID – 1234567 & FirmID - 400

Order 2: Triggered Stop acting as aggressing order Sell GEU0 

20-lot @ 13 

SMP Instruction - Cancel Aggressing SMP ID – 1234567 & FirmID - 400


Results:

Order 1—the resting buy order, remains on the order book. 

Order 2—the aggressing sell order, is cancelled.

The aggressing order is cancelled regardless of quantity.

Scenarios

FIFO Market with SMP functionality configured across multiple CME Globex Firm IDs

This scenario illustrates a Self-Match event in a FIFO market.

SMP configuration:

  • SMP ID: 1234567
    • Registered to Executing Firm IDs 400 and 600

A 1000 lot buy limit order at price 1302 is submitted with

  • SMP ID 1234567
  • Executing Firm ID 600 and
  • Cancel Resting SMP Instruction.
Aggressing Buy Order

Remaining Quantity

Resting Sell OrdersAction
OrderSMP ID & FirmID
100010 lot @ 13012345678 & 100Executed 10 lot @1301
99020 lot @ 13013456789 & 200Executed 20 lot @1301
97030 lot @ 13014567890 & 300Executed 30 lot @1301
940500 lot @ 13015678901 & 500Executed 500 lot @1301
44010 lot @ 1302

8765432 & 800

Executed 10 lot @1301

430

20 lot @ 1302

1234567 & 400 (Cancel Aggressing instruction)

The aggressing order’s instructions take priority and the resting 20 lot order is cancelled.

43030 lot @ 13027890123 & 700Executed 30 lot @ 1302
400


The aggressing buy order's remaining 410 lot @ 1302 rests on the order book.

FIFO Market without Self-Match Event

This scenario illustrates a FIFO market without a Self-Match event. A 1000-lot buy order (SMP ID:1234567 and FirmID:400) is entered at 1302, with a 'Cancel Resting' instruction.

Aggressing Buy Order Remaining Quantity

Resting Sell Orders

Action


Order

SMP ID & FirmID


1000

10-lot @ 1301

2345678 & 100

Executed 10-lot @1301

990

20-lot @ 1301

3456789 & 200

Executed 20-lot @1301

970

30-lot @ 1301

4567890 & 300

Executed 30-lot @1301

940

500-lot @ 1301

5678901 & 500

Executed 500-lot @1301

440

450-lot @ 1302

6789012 & 600

Executed 440-lot @1302
Aggressing buy order is fully filled. 

 

20-lot @ 1302

1234567 & 400 (Cancel Resting instruction)

 

 

30-lot @ 1302

7890123 & 700


FIFO Market with Cancel Resting

This scenario illustrates a Self-Match event in a FIFO market. A 1000-lot buy order (SMP ID:1234567 and FirmID:400) is entered at 1302, with a Cancel Resting instruction.

Aggressing Buy Order Remaining Quantity

Resting Sell Orders

Action


Order

SMP ID & FirmID


1000

10-lot @ 1301

2345678 & 100

Executed 10-lot @1301

990

20-lot @ 1301

3456789 & 200

Executed 20-lot @1301

970

30-lot @ 1301

4567890 & 300

Executed 30-lot @1301

940

500-lot @ 1301

5678901 & 500

Executed 500-lot @1301

440

10-lot @ 1302

6789012 & 600

Executed 10-lot @ 1302

430

20-lot @ 1302

1234567 & 400 (Cancel Aggressing instruction)

The aggressing order's instructions take priority and the resting 20-lot order is cancelled.

430

30-lot @ 1302

7890123 & 700

Executed 30-lot @ 1302

400



The aggressing buy order's remaining 400-lot @ 1302 rests on the order book.

Pro-Rata Market with Cancel Aggressing

This scenario illustrates a Self-Match event in a pro-rata market. A 1000-lot buy order (SMP ID:1234567 and FirmID:400) is entered at 1302, with a 'Cancel Aggressing' instruction.

Aggressing Buy Order Remaining Quantity

Resting Sell Orders

Action


Order

SMP ID & FirmID


1000

500-lot @ 1301

2345678 & 100

A potential self-match at price level 1302 is recognized and the Self-Match event is triggered even though the aggressing order would not have reached the resting self-match order.

The aggressing order's instructions take priority and the entire aggressing order is cancelled.

0

300-lot @ 1301

3456789 & 200


0

200-lot @ 1301

4567890 & 300


0

500-lot @ 1301

5678901 & 500



20-lot @ 1302

1234567 & 400, Cancel Resting instruction

Resting order at same price with same SMP ID triggers the cancel of the aggressing order per the aggressing Instruction

 

30-lot @ 1302

7890123 & 700

 

Pro-Rata Market with Cancel Resting

This scenario illustrates a Self-Match event in a pro-rata market. A 1000-lot buy order (SMP ID:1234567 and FirmID:400) is entered at 1302, with a 'Cancel Resting' instruction.

Aggressing Buy Order Remaining Quantity

Resting Sell Orders


  Action


Order

SMP ID & FirmID


1000

500-lot @ 1301

2345678 & 100

A potential self-match at price level 1302 is recognized and the Self-Match event is triggered even though the aggressing order would not have reached the resting self-match order.

The aggressing order's instructions take priority and the resting order is cancelled even though it would not have matched.

The aggressing order is then matched according to standard priority rules.

Matched 500 @ 1301

500

300-lot @ 1301

3456789 & 200

Matched 300 @ 1301

200

200-lot @ 1301

4567890 & 300

Matched 200 @ 1301

0

500-lot @ 1301

5678901 & 500


0

20-lot @ 1301

1234567 & 400, Cancel Resting instruction

Resting order at same price with same SMP ID triggers the cancel of the resting order per the aggressing Instruction

Feature File

Expand for a logical SMP scenario.

SMPID.feature
Feature: Self Trade Prevention Identification Tag

  ##################################################################################
  #                                                                                #
  #  Self-Match prevention is an optional order/mass quote feature that prevents   #
  #  two orders or quotes from the same Participating Organization or Member Firm  #
  #  from executing against each other unintentionally based on a unique trading   #
  #  key defined by the Participant/Member.                                        #
  #                                                                                #
  ##################################################################################

  Background: 
    Given the following:
        * Instrument Group Configurations:
           | groupName |
           | ZB        |
        * Contracts:
           | symbol |
           | T5F1   |

  Scenario: test selfMatchPreventionID length of 11 and 12
    Given the following events occur:
        * these "new order" message(s) are sent to Globex:
           | identifier | securityDescription | price | side | orderQty | timeInForce | selfMatchPreventionID |
           | length11   | T5F1                | 101.0 | bid  | 10       | session     | ABCDEFHIJK            |
           | length12   | T5F1                | 102.0 | bid  | 10       | session     | ABCDEFHIJKL           |
    When the following events occur:
        * these "cancel" message(s) are sent to Globex:
           | OrderId  | securityDescription |
           | length11 | T5F1                |
           | length12 | T5F1                |
    Then the following should happen:
        * expect execution message(s) with values:
           | messageType | securityDescription | price | side | orderQty |
           | order ack   | T5F1                | 101.0 | bid  | 10       |
           | order ack   | T5F1                | 102.0 | bid  | 10       |
        * expect execution message(s) with values:
           | messageType | securityDescription | price | side | orderQty | selfMatchPreventionID |
           | cancel      | T5F1                | 101.0 | bid  | 10       | ABCDEFHIJK            |
           | cancel      | T5F1                | 102.0 | bid  | 10       | ABCDEFHIJKL           |

  Scenario: selfMatchPreventionID with length greater than 13 characters
    When the following events occur:
        * these "new order" message(s) are sent to Globex:
           | ordType | securityDescription | price | side | orderQty | timeInForce | selfMatchPreventionID  |
           | limit   | T5F1                | 101.0 | bid  | 10       | session     | ABCDEFGHIJKLMNNNNNNNNN |
    Then the following should happen:
        * expect execution message(s) with values:
           | messageType | businessRejectReason | text                              |
           | bus rej     | 5                    | %7928 (SELF_MATCH_PREVENTION_ID)% |
                                                # % is wild card in the test framework

  Scenario: selfMatchPreventionID is null
    When the following events occur:
        * these "new order" message(s) are sent to Globex:
           | ordType | securityDescription | price | side | orderQty | timeInForce | selfMatchPreventionID |
           | limit   | T5F1                | 100.0 | bid  | 10       | session     |                       |
    Then the following should happen:
        * expect execution message(s) with values:
           | messageType | businessRejectReason | text                              |
           | bus rej     | 5                    | %7928 (SELF_MATCH_PREVENTION_ID)% |
                                                # % is wild card in the test framework

  Scenario: selfMatchPreventionID is all spaces
    When the following events occur:
        * these "new order" message(s) are sent to Globex:
           | ordType | securityDescription | price | side | orderQty | timeInForce | selfMatchPreventionID |
           | limit   | T5F1                | 105.0 | ask  | 10       | session     | '     '               |
    Then the following should happen:
        * expect execution message(s) with values:
           | messageType | businessRejectReason | text   |
           | bus rej     | 5                    | %Tag value is all spaces: 7928% |
                                                # % is wild card in the test framework

  Scenario: Test leading spaces
    When the following events occur:
        * these "new order" message(s) are sent to Globex:
           | ordType | securityDescription | price | side | orderQty | timeInForce | selfMatchPreventionID |
           | limit   | T5F1                | 105.0 | ask  | 10       | session     | ' abcdef'             |
    Then the following should happen:
        * expect execution message(s) with values:
           | messageType | securityDescription | price | selfMatchPreventionID |
           | order ack   | T5F1                | 105.0 | ' abcdef'             |

  Scenario: Test selfMatchPreventionID with value '=' gets accepted
    When the following events occur:
        * these "new order" message(s) are sent to Globex:
           | ordType | securityDescription | price | side | orderQty | timeInForce | selfMatchPreventionID |
           | limit   | T5F1                | 105.0 | ask  | 10       | session     | =                     |
    Then the following should happen:
        * expect execution message(s) with values:
           | messageType | securityDescription | price | selfMatchPreventionID |
           | order ack   | T5F1                | 105.0 | =                     |

  Scenario: Test upper/lower case and special characters are accepted
    When the following events occur:
        * these "new order" message(s) are sent to Globex:
           | ordType | securityDescription | price | side | orderQty | timeInForce | selfMatchPreventionID |
           | limit   | T5F1                | 105.0 | ask  | 10       | session     | AsHr@F!               |
    Then the following should happen:
        * expect execution message(s) with values:
           | messageType | securityDescription | price | selfMatchPreventionID |
           | order ack   | T5F1                | 105.0 | AsHr@F!               |