80
Allocation Management API Message Specification Version: 2.4 6/3/13 CME Front End Clearing FIXML API

Allocation Management API Message Specification

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Allocation Management API Message Specification

Allocation Management API

Message Specification

Version: 2.4

6/3/13

CME Front End Clearing FIXML API

Page 2: Allocation Management API Message Specification
Page 3: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 1

Futures trading is not suitable for all investors, and involves the risk of loss. Futures are a leveraged investment, and because only a percentage of a contract’s value is required to trade, it is possible to lose more than the amount of money deposited for a futures position. Therefore, traders should only use funds that they can afford to lose without affecting their lifestyles. And only a portion of those funds should be devoted to any one trade because they cannot expect to profit on every trade.

All references to options refer to options on futures.

CME Group is a trademark of CME Group Inc. The Globe Logo, CME, Chicago Mercantile Exchange, Globex,

iLink, E-mini, CME EOS Trader, Galax-C, FirmSoft, CME DataSuite, and CME

DataMine are trademarks of Chicago Mercantile Exchange Inc. New York Mercantile Exchange, NYMEX, miNY, and ClearPort are registered trademarks of the New York Mercantile Exchange, Inc. COMEX is a trademark of Commodity Exchange, Inc.

FIX™ and FAST™ are trademarks of FIX Protocol Limited. FIX/FASTsm

is a service mark of FIX Protocol Limited.

Dow Jonessm

, Dow Jones AIG Commodity Indexsm

, The Dowsm

, Dow Jones Industrial Averagesm

, and DJIA

sm are service marks of Dow Jones & Company, Inc. and American International Group,

Inc. (AIG) and have been licensed for use for certain purposes by the Board of Trade of the City of Chicago, Inc (CBOT

®). CBOT futures and options on futures contracts based on the Dow

Jones Industrial Averagesm

are not sponsored, endorsed, sold or promoted by Dow Jonessm

, and Dow Jones

sm makes no representation regarding the advisability of trading such product(s).

BM&FBOVESPA™ is a trademark of BM&FBOVESPA, KRX™ is a trademark of Korea Exchange, DME™ is a trademark of Dubai Mercantile Exchange, BMD™ is a trademark of Bursa Malaysia, BMV™ is a trademark of Bolsa Mexicana De Valores.

All other trademarks are the property of their respective owners.

The information within this document has been compiled by CME Group for general purposes only. CME Group assumes no responsibility for any errors or omissions. Additionally, all examples in this brochure are hypothetical situations, used for explanation purposes only, and should not be considered investment advice or the results of actual market experience.

All matters pertaining to rules and specifications herein are made subject to and are superseded by official CME, CBOT, and NYMEX rules. Current rules should be consulted in all cases concerning contract specifications.

Copyright © 2013 CME Group Inc. All rights reserved.

Page 4: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management 2

Contents

1.0 API SUBMISSION AND USAGE RULES .............................................................................. 4

1.1 GENERAL USAGE RULES ....................................................................................................... 4 1.2 GIVE-UP USAGE RULES ......................................................................................................... 4 1.3 AVERAGE PRICE USAGE RULES ............................................................................................. 5 1.4 SUB-ALLOCATION USAGE RULES ........................................................................................... 5 1.5 REVERSAL USAGE RULES ..................................................................................................... 5 1.6 CROSS-EXCHANGE GIVE-UP USAGE RULES ............................................................................ 6

2.0 FIXML MESSAGE FLOWS .................................................................................................... 7

2.1 FIXML MESSAGE AND ATTRIBUTE USAGE IN ALLOCATION MESSAGES ..................................... 7 2.1.1 Message Types .......................................................................................................... 7 2.1.2 Allocation Identifiers ................................................................................................... 9 2.1.3 Quantity and Price Attributes ................................................................................... 11 2.1.4 Grouping and Rollup Attributes ................................................................................ 13 2.1.5 Buy Sell Convention................................................................................................. 14 2.1.6 Allocation and Average Price Group State Transition ............................................. 15 2.1.7 Prior Executing Firm for Sub-allocation ................................................................... 16

2.2 GIVE-UP ALLOCATION MESSAGE FLOWS .............................................................................. 17 2.2.1 Marking a Trade for Give-up Allocation ................................................................... 17 2.2.2 Creating an Allocation .............................................................................................. 19 2.2.3 Claiming an Allocation ............................................................................................. 21 2.2.4 Refusing an Allocation ............................................................................................. 22 2.2.5 Executing Firm Amending an Allocation Pre-claim .................................................. 23 2.2.6 Claiming Firm Amending an Allocation Pre-claim ................................................... 25 2.2.7 Cancelling an Allocation Pre-claim .......................................................................... 26 2.2.8 Amending an Allocation Post-claim ......................................................................... 27 2.2.9 Cancelling a Give-up Group .................................................................................... 28 2.2.10 Un-marking a Trade for Give-up .......................................................................... 29

2.3 AVERAGE PRICE ALLOCATION MESSAGE FLOWS .................................................................. 30 2.3.1 Marking Trades for Average Price Allocation .......................................................... 30 2.3.2 Completing an Average Price Group ....................................................................... 33 2.3.3 Allocating an Average Price Group, Clearing System Splits Allocation .................. 34 2.3.4 Un-marking a Trade from an Average Price Group ................................................. 35 2.3.5 Changing a Trade to Another Average Price Group ................................................ 36 2.3.6 Un-completing an Average Price Group .................................................................. 37 2.3.7 Cancelling an Average Price Group ........................................................................ 38 2.3.8 Transitions Between Give-up Allocation and Average Price Allocation Message Flows 38

2.4 SUB-ALLOCATION MESSAGE FLOWS ..................................................................................... 39 2.4.1 Sub-allocation for Give-up ....................................................................................... 39 2.4.2 Sub-allocation for Give-up with Specific Allocation Instructions .............................. 40 2.4.3 Sub-allocation for Average Pricing .......................................................................... 41

2.5 REVERSAL OF ACCEPTED ALLOCATIONS MESSAGE FLOWS ................................................... 42 2.5.1 Allocation Reversal Requested ................................................................................ 42 2.5.2 Allocation Reversal Accepted .................................................................................. 43 2.5.3 Allocation Reversal Refused .................................................................................... 44 2.5.4 Allocation Reversal Cancelled ................................................................................. 45

3.0 FIXML COMPONENTS AND MESSAGE SPECIFICATIONS ............................................. 46

3.1 FIXML MESSAGE ELEMENTS AND ATTRIBUTES .................................................................... 46 3.1.1 Version Attributes for All Messages ......................................................................... 46

3.2 MESSAGE HEADERS ............................................................................................................ 47 3.2.1 Standard Header for Request and Submissions ..................................................... 47 3.2.2 Standard Header for Responses ............................................................................. 47

Page 5: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management 3

3.3 MALFORMED MESSAGES ..................................................................................................... 48 3.4 MESSAGE LAYOUTS ............................................................................................................ 48

3.4.1 Allocation Instruction Message Layout .................................................................... 48 3.4.2 Allocation Instruction Ack Message Layout ............................................................. 49 3.4.3 Allocation Instruction Alert Message Layout ............................................................ 49 3.4.4 Allocation Report Message Layout .......................................................................... 50

3.5 MESSAGE SPECIFICATIONS ................................................................................................. 50 3.5.1 Business Reject Message Specification .................................................................. 50 3.5.2 Allocation Instruction Alert Message Specification .................................................. 51 3.5.3 Allocation Instruction Message Specification .......................................................... 57 3.5.4 Allocation Report Message Specification ................................................................ 61 3.5.5 Allocation Instruction Ack Message Specification ................................................... 69

4.0 APPENDIX ............................................................................................................................ 73

4.1 STATE CHANGES BY SCENARIO ........................................................................................... 73 5.0 REVISION HISTORY ............................................................................................................ 77

Page 6: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 4

1.0 API Submission and Usage Rules This section describes the Front End Clearing (FEC) FIXML Allocation Management API validation and usage rules.

1.1 General Usage Rules This section lists the API rules that are common to all types of allocations:

vanilla give-up

average pricing

cross-exchange give-up

1. Allocations cannot be cancelled if the claiming firm has accepted the allocation.

2. The executing firm may cancel the allocation if the claiming firm has refused the allocation. This prevents the claiming firm from later claiming the allocation.

3. The claiming firm may claim an allocation if it has not been cancelled. This includes refusing an allocation and later claiming it.

4. An executing firm cannot amend the allocation after the claiming firm has claimed the allocation.

5. An executing firm may amend an allocation after the claiming firm has refused it. The claiming firm may then claim the amended allocation.

6. Trades may not transition directly between give-up, average pricing, or cross-exchange give up. They must first be un-marked for allocation, then be marked for allocation using the other methodology.

7. On a Trade Capture Report, setting the Allocation Indicator to Allocation Not Required (AllocInd=0) requires that the Average Pricing Indicator be set to No Average Pricing (AvgPxInd=0), or the AvgPxInd attribute should be omitted; otherwise, the Trade Capture Report is rejected.

1.2 Give-up Usage Rules This list describes the API rules that are applicable to vanilla give-ups in the API.

1. The clearing system does not validate for claimed or unclaimed allocations in the group when an executing firm un-marks trades from group. This could result in the quantity of a give-up group being reduced below the quantity of claimed allocations, which could cause the executing firm to be out of balance.

2. An executing firm cannot cancel a give-up group if it has any claimed allocations.

3. By default, trades that meet grouping criteria are grouped together when marked for give-up. The executing firm can opt out of this by designating that a trade not be added to an existing allocation group.

4. If the executing firm designates multiple allocations to the same firm and account, the clearing system by default rolls up all of these allocations into a single allocation. Both the executing and claiming firms see only one allocation. However, the executing firm can choose to override rollup, which results in multiple individual allocations.

5. The executing firm cannot amend an allocation to change the instruction to override rollup.

6. The clearing system will not group any NYMEX, COMEX, CMD, or SX trades. When marked for give-up, the clearing system will create a new group for each of these trades. Additionally,

Page 7: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 5

firms can opt out of grouping; the clearing system will create a new group for each trade when the firm marks each trade for allocation.

1.3 Average Price Usage Rules This list describes the applicable average pricing API rules.

1. Trades may not be un-marked for average price allocation or removed from an average price group if the group is complete.

2. To remove trades from a completed average price group, the executing firm must un-complete the group.

3. An executing firm cannot un-complete an average price group if the group contains any claimed allocations.

4. Un-completing an average price group cancels all unclaimed allocations.

5. Trades may be moved from one average price group to another if both groups are incomplete.

6. The executing firm cannot allocate before completing an average price group.

7. The executing firm can only cancel an incomplete average price group.

8. Cancelling an average price group will leave the trade (if any) unmarked from the group, but the trades will still remain marked for average pricing.

9. Marking a trade for give-up allocation that was previously marked for average pricing requires that the executing firm first un-mark the trade from average pricing and mark it for give-up.

10. Removing a trade from an average pricing group, but keeping it in the average pricing system as unassigned requires specifying an Average Price Indicator of Average price trade removed from group (AvgPxInd=100) in a Trade Capture Report that modifies the trade. Modifying the trade and omitting the Average Price Group ID (AvgPxGrpID) is not sufficient.

11. Rollup is never performed for average pricing groups. If the executing firm designates multiple allocations to the same firm and account, the clearing system will not roll up the allocations, which results in multiple individual allocations. The executing firm cannot override this behavior.

12. The clearing system may split an allocation into two or more allocations if the allocation could not be satisfied by trades having the same fee characteristics.

1.4 Sub-allocation Usage Rules This list describes all of the applicable sub-allocation API rules.

1. A claiming firm wanting to sub-allocate a trade must first claim the allocation and then sub-allocate it using distinct messages. Claiming and sub-allocating in a single message is not supported.

2. If a sub-allocation is being average priced, an Average Price Group ID (AvgPxGrpID) must be specified.

1.5 Reversal Usage Rules This list describes all the allocation reversal API rules.

1. A claiming firm must first claim an allocation before either party can reverse it.

2. Either the executing firm or the claiming firm can request a reversal.

3. A reversal, once refused, can later be accepted, provided the party that initiated the reversal has not cancelled it.

Page 8: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 6

4. The party that initiates a reversal may cancel a reversal, but only if the other party has not accepted or refused it.

1.6 Cross-exchange Give-up Usage Rules This section describes all of the API rules that are applicable for cross-exchange allocations in the API differing from those already specified as General Usage Rules, Give-up Usage Rules, and Reversal Usage Rules.

1. The executing firm must specify claiming firm information when marking a trade for cross-exchange allocation. It is not possible to mark a trade for cross-exchange allocation without indicating one or more claiming firms.

2. A trade may be marked for MOS and only partially allocated. The executing firm will then keep the unallocated quantity if it takes no further action. The executing firm may also submit additional MOS allocations for the unallocated quantity remaining on the same trade. However, any unallocated quantity may not be allocated via give-up or average pricing.

3. If a CME executing firm cancels an allocation pre-trade, the cancel may be ignored if SGX clearing has claimed or refused an allocation.

4. An SGX firm cannot initiate a reversal.

5. Cancelling a reversal is not currently supported.

6. If cancellation of reversal is supported in a future release, in a scenario where a CME firm cancels a reversal that it initiated, the cancel may be ignored if SGX clearing has claimed or refused the reversal.

Page 9: Allocation Management API Message Specification

CME Front End Clearing

Allocate and Claim API 7

2.0 FIXML Message Flows This section contains detailed message flows using FIXML message, element, and attribute names. It also indicates attributes used to identify allocations, describe their status, and express their quantities, amounts, prices, and side.

2.1 FIXML Message and Attribute Usage in Allocation Messages

2.1.1 Message Types

The following table lists the message types and messages supported by the API:

Message Type Description Message

Mark Trade for Give-up

Mark Trade for Give-up with Specific Instructions

Mark Trade for Average Pricing

Un-mark Trade

Change Average Price Group

Sent by the executing firm as a new trade or an amendment to a previously submitted trade.

TradeCaptureReport

Mark Trade Acknowledgment

Un-mark Trade Acknowledgement

Change Average Price Group Acknowledgment

Sent by the API in response to marking a trade, un-marking a trade, or changing allocation parameters of a marked trade.

TradeCaptureReportAck

Group Summary notifications

For trades marked for give-up, these messages are sent by the API in response to the creation of a group, addition of a trade to an existing group, or cancellation of a group.

For trades marked for average pricing, these messages are sent by the API in response to adding or removing a trade from an average price group, when a group is completed or un-completed, or when a group is cancelled.

AllocationInstructionAlert

Page 10: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 8

Message Type Description Message

Complete Average Price Group

Un-complete Average Price Group

Sent by the executing firm to complete an average price group.

Sent by the executing firm to un-complete an average price group.

AllocationInstruction

Submit Allocation Instruction

Amend Allocation Instruction

Cancel Allocation Instruction

Sent by the executing firm to submit, amend, or cancel an allocation instruction.

AllocationInstruction

Allocation Instruction Acknowledgment

Sent by the clearing system to the executing firm acknowledging the submission, amendment, or cancellation of an allocation instruction, or reporting an error.

AllocationReport

Notify Claiming Firm

Notify Claiming Firm of Cancellation

Notify Claiming Firm of Amendment

Sent by the clearing house to notify the claiming firm of a new allocation, cancellation of an allocation, or amendment of an allocation proposed by the executing firm.

AllocationReport

Claim an Allocation

Refuse an Allocation

Sent by the claiming firm to the clearing system to indicate whether the claiming firm accepts or refuses an allocation proposed by the executing firm.

AllocationInstruction

Allocation Claim Notification

Allocation Refusal Notification

Sent by the clearing system to the executing firm to indicate status changes to an allocation, such as those caused by a claiming firm accepting or refusing an allocation.

AllocationReport

Allocation Claim Acknowledgment

Allocation Refusal Acknowledgment

Sent by the clearing system to the claiming firm acknowledging and processing the claim or refusal from the claiming firm.

AllocationReport

Sub Allocate an Allocation

Sent by the claim firm to sub-allocate an allocation after claiming the allocation.

AllocationInstruction

Request Allocation Reversal

Initiated by either the executing firm or the claiming firm to the clearing system to request the release or reversal of a claimed allocation.

AllocationInstruction

Reversal Request Acknowledgment

Sent by the clearing system to acknowledge the reversal request.

AllocationReport

Page 11: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 9

Message Type Description Message

Reversal Request Notification

Sent by the clearing system to notify the opposite side of the proposed reversal.

AllocationReport

Accept a Reversal

Refuse a Reversal

Sent to the clearing system to accept or refuse the proposed reversal.

AllocationInstruction

Reversal Acceptance Acknowledgment

Reversal Refusal Acknowledgment

Sent by the clearing system to the initiator of the claim or refusal of the reversal, acknowledging acceptance or refusal of the reversal.

AllocationReport

Reversal Acceptance Notification

Reversal Refusal Notification

Sent by the clearing system to the initiator of the reversal, to notify the firm of the acceptance or refusal of the reversal.

AllocationReport

Cancel Reversal Request

Sent by the firm that initiated the reversal to the clearing system.

AllocationInstruction

Cancel Reversal Acknowledgment

Sent by the clearing system to the firm that initiated the reversal.

AllocationReport

Cancel Reversal Notification

Sent by the clearing system to the firm that did not initiate the reversal, notifying that firm of the reversal’s cancellation.

AllocationReport

Clearing System Reject

Sent by the clearing system in response to an invalid request.

AllocationInstructionAck

2.1.2 Allocation Identifiers

The API allows and provides the following identifiers when submitting and reporting allocations to

the clearing system. Identifiers are both provided by the submitter and assigned by the CME

clearing system. All identifiers provided by a firm will be reported back on all the subsequent

acknowledgements and notifications to the firm. Submitters must reference allocations using

CME clearing system assigned identifiers.

Name Attribute Message Usage

Message Identifiers

Message ID @ID Allocation Instruction Unique message ID. Used by both executing and claiming firms.

Reference ID @RptRefID Allocation Report Used by clearing system when responding to an Allocation Instruction. Contains the same value specified in ID for the Allocation Instruction.

Page 12: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 10

Name Attribute Message Usage

Reference ID @RefAllocID Allocation Instruction Ack

Allocation Instruction Alert

Used by clearing system when responding to an Allocation Instruction. Contains the same value specified in ID for the Allocation Instruction.

Allocation Group Identifiers

Clearing assigned Group ID

@GrpID Allocation Instruction Alert

Sent by clearing system to identify allocation groups (give up, average price, or cross exchange give up)

@GrpID Allocation Instruction Must be sent by the executing firm and must equal the GrpID the clearing system sent in an Allocation Instruction Alert. Required on all Allocation Instruction messages sent by the executing firm except for sub-allocation.

@GrpID Allocation Report Sent by clearing system to the executing firm on all messages to identify the allocation group.

Average Price Group ID

@AvgPxGrpID

Trade Capture Report Sent by the executing firm to assign a trade to an average price group.

@AvgPxGrpID

Allocation Instruction Alert

Allocation Report

Echoed by the clearing system to the executing firm for average price groups. Will match the AvgPxGrpID specified in a Trade Capture Report.

Allocation identifiers

Clearing assigned Allocation ID

Alloc/@IndAllocID2

Allocation Report Sent by clearing system to the executing firm and claiming firm on all messages to identify the allocation.

Alloc/@IndAllocID2

Allocation Instruction Sent by the claiming firm to the clearing system to reference an allocation.

Sent by the executing firm to the clearing system to reference an allocation. For example when amending, cancelling, or reversing an allocation.

In sub-allocations, sent by the original claiming firm to identify the allocation to sub-allocate.

Page 13: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 11

Name Attribute Message Usage

Firm assigned Allocation ID

Alloc/@IndAllocID

Allocation Instruction Sent by firms (both executing and claiming) to provide an additional identifier for the allocation. Optional.

Alloc/@IndAllocID

Allocation Instruction Alert

Allocation Report

If Alloc/@IndAllocID is specified by the firm in an Allocation Instruction, the clearing system will store this and send it back to the claiming firm when referencing the allocation.

Trade ID AllExc/@TradeID

Allocation Instruction Alert

Sent by the clearing system to the executing firm to indicate the Trade ID of a trade added to or removed from a group.

2.1.3 Quantity and Price Attributes

The following attributes indicate quantity and prices used in messages from the clearing system to firms.

Name Attribute Message Usage

Transaction Quantity @Qty Allocation Instruction Alert

Indicates the quantity by which the group changes as part of the current transaction. Positive when adding a trade to a group. Zero when changing just the status of a group, e.g. completing or un-completing a group. Negative when removing trades from a group.

Group Quantity @GrpQty Allocation Instruction Alert

Total quantity in the group. This only changes if trades are added or removed from the group.

Note: Allocating from a group, or reversing allocations, does not affect the group quantity.

Total Allocation Quantity

@Qty Allocation Instruction

Allocation Report

Total quantity being allocated by this message.

Allocation Quantity Alloc/@Qty Allocation Instruction

Allocation Report

Quantity allocated to the party identified in the <Pty> element.

Requested Allocation Quantity

Alloc/@ReqQty

Allocation Report Quantity allocated to the party identified in the <Pty> element in the requested allocation. Can differ from Alloc/@Qty when the clearing system splits an allocation. Sent to executing firm for average price allocations.

Page 14: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 12

Name Attribute Message Usage

Trade Quantity AllExc/@LastQty

Allocation Instruction Alert

Indicates the quantity of a trade added to or removed from a group. Is always positive.

Average Price @AvgPx Allocation Instruction Alert

Average price computed by the clearing system for a completed group. Incomplete groups generally will not have an average price specified.

Average Price @AvgPx Allocation Report Average price at which allocation occurs.

Give-up Price (Trade Price)

@AvgPx Allocation Report For vanilla give-ups this contains the trade price.

Trade Price AllExc/@LastPx

Allocation Instruction Alert

Indicates the price of a trade added to or removed from a group.

Page 15: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 13

2.1.4 Grouping and Rollup Attributes

The following attributes indicate instructions pertaining to grouping and rollup, which the executing firm uses to override default behavior.

Name Attribute Message Usage

Allocation Group Instruction

RptSide/@AllocGrpInst

Trade Capture Report

Trade Capture Report Ack

Instruction on how to add a trade to an allocation group when it is being given-up. The default behavior is to add the trade to an existing allocation group if one exists.

0 = Add to an existing allocation group if one exists

1 = Do not add the trade to an existing allocation group

Allocation Rollup Instruction

Alloc/@AllocRollupInst

Allocation Instruction

Allocation Report

An indicator to override the normal procedure to roll up allocations for the same Carry Firm. Note that this may not be used for average pricing groups.

0 = Roll up

1 = Do not roll up

Allocation Rollup Instruction

RptSide/Alloc/@AllocRollupInst

Trade Capture Report

Trade Capture Report Ack

An indicator to override the normal procedure to roll up allocations for the same Carry Firm. Note that this may not be used for average pricing groups.

0 = Roll up

1 = Do not roll up

Page 16: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 14

2.1.5 Buy Sell Convention

This section describes the convention used for buy sell code convention in allocation messages.

In this scenario the executing firm is giving up a trade, which is a buy. For transactions where the executing firm makes a trade to sell, the side in all of the above scenarios is reversed. The clearing system reverses the buy sell code when an allocation is initiated.

Scenario Message Type Executing Firm

Claiming Firm

Original Trade TrdCaptRpt BUY

Group Summary Notification after a trade is allocated

AllocInstrctnAlert BUY

New Allocation Notification

AllocRpt SELL BUY

Allocation Claimed / Refused by the Claim side

AllocRpt SELL BUY

Allocation Reversal confirmation

AllocRpt (allocation released and release accepted)

SELL BUY

Page 17: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 15

2.1.6 Allocation and Average Price Group State Transition

This diagram shows the allocation state transition when a trade is marked for give-up.

Allocation Pending

Rejected by Intermediary

Claimed

Reversal Pending

Reversed

Refused

Cancelled

Reversal

Rejected/Cancelled

Sub Allocate

Allocation

Allocate Trade

Reject Allocation

Cancel Allocation

Claim Allocation

Reverse Allocation

Claim Reversal

Allocate Trade

Allocate State Transition

Claim Allocation

Cancel Allocation

Update Allocation

Update Allocation

Claim Reversal

(When a pending

Reversal was rejected)

Page 18: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 16

This diagram shows the state of a group, beginning with the creation of a give-up or average price group.

Incomplete GroupComplete Group

Cancel Group

Create

Average

Price Group

Cancel Group

Create

Give-up

Group

Group State Transition

Complete

Group

Reopen Group

2.1.7 Prior Executing Firm for Sub-allocation

When sub-allocating an allocation to another account within one's own firm, the clearing system may send the identity of the prior executing firm. This will appear within AllocRpt/Pty/@ID with AllocRpt/Pty/@R="201" signifying the prior executing firm. Example:

1. Firm A trades.

2. Firm A allocates to Firm A: Not present. (There is no prior executing firm.)

3. Firm A sub-allocates to Firm A: Not present. (There is no prior executing firm.)

4. Firm A sub-allocates to Firm B: Not present. (This is not a sub-allocation to self.)

5. Firm B sub-allocates to Firm B: Present. Pty[R="201"]@ID="A"

6. Firm B sub-allocates to Firm B: Present. Pty[R="201"]@ID="A"

7. Firm B sub-allocates to Firm C: Not present. (This is not a sub-allocation to self.)

8. Firm C sub-allocates to Firm C: Present. Pty[R="201"]@ID="B"

9. Firm C sub-allocates to Firm C: Present. Pty[R="201"]@ID="B"

Page 19: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 17

2.2 Give-up Allocation Message Flows

2.2.1 Marking a Trade for Give-up Allocation

Scenario 1: Trade amendment marked for give-up without carry information

1. The executing firm sends a new Trade Capture Report with a TransTyp of Replace, a RptTyp of Submit, an AllocInd of Allocating Trade (No Claim Info provided), and the AvgPxInd is absent or set to No Average Pricing.

2. The clearing system responds by:

Sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, RptTyp of Submit and a TrdRptStat of Accepted.

Creating a give-up group, and sending the executing firm an Allocation Instruction Alert with a TransTyp of New, a Typ of Complete Group, and a Stat of Allocation Pending.

Note: Submission of a new trade marked for give-up without carry information functions identically, except in steps 1 and 2 above TransTyp is New, rather than Replace.

Trade Amendment Marked for Give-up Allocation

Executing FirmFront End

Clearing

AllocInstrctnAlert ( New, Complete Group,

Allocation Pending )

TrdCaptRpt ( Replace, Submit )

TrdCaptRptAck ( Replace, Submit, Accepted )

Page 20: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 18

Scenario 2: Trade amendment marked for give-up with instructions

1. The executing firm sends a Trade Capture Report with a TransTyp of Replace, a RptTyp of Submit, an AllocInd of Allocate Trade – Carry info Provided, and with the AvgPxInd absent or set to No Average Pricing. The claiming firm is provided in the Alloc/Pty element. Optionally:

a. The executing firm could specify grouping instructions in RptSide/AllocGrpInst.

b. The executing firm could specify rollup instructions in RptSide/AllocRollupInst.

2. The clearing system responds by:

Sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, RptTyp of Submit and a TrdRptStat of Accepted.

Creating a give-up group, and sending the executing firm an Allocation Instruction Alert with a TransTyp of New, a Typ of Complete Group, and a Stat of Allocation Pending.

Sending an Allocation Report to the executing firm with a TransTyp of New, a RptTyp of Give-up, and a Stat of Allocation Pending.

Sending an Allocation Report to the claiming firm with a TransTyp of New, a RptTyp of Take-up, and a Stat of Allocation Pending.

Note: Submission of a new trade marked for give-up with carry information functions identically, except in steps 1 and 2a above, where TransTyp is New rather than Replace.

Marking a Trade with Specific Allocation Instructions

Executing FirmFront End

Clearing

AllocRpt ( New, Give-up, Allocation Pending )

Claiming Firm

AllocRpt ( New, Take-up, Allocation Pending )

TrdCaptRpt ( Replace, Submit )

TrdCaptRptAck ( Replace, Submit, Accepted )

AllocInstrctnAlert ( New, Complete Group,

Allocation Pending )

Page 21: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 19

2.2.2 Creating an Allocation Scenario 1: Creating an allocation – success

This scenario begins with the executing firm marking a trade for give-up allocation.

1. The executing firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Give-up. The executing firm identifies the group using the GrpID field, and identifies the claiming firm in the Alloc/Pty element.

2. The clearing system responds by:

Sending an Allocation Report to the executing firm with a TransTyp of New, a RptTyp of Give-up, and a Stat of Allocation Pending.

Sending an Allocation Report to the claiming firm with a TransTyp of New, a RptTyp of Take-up, and a Stat of Allocation Pending.

Creating an Allocation - Success

Executing FirmFront End

Clearing

AllocInstrctn ( New, Give-up )

AllocRpt ( New, Give-up,

Allocation Pending )

Claiming Firm

AllocRpt ( New, Take-up,

Allocation Pending )

Page 22: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 20

Scenario 2: Creating an allocation – Rejected by CME Clearing

This scenario begins with the executing firm marking a trade for give-up allocation.

1. The executing firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Give-up. The executing firm identifies the group using the GrpID field, and identifies the claiming firm in the Alloc/Pty element. This message contains an error, such as specifying an invalid GrpID, or an allocation quantity in excess of the unallocated quantity available in the group.

2. The clearing system responds by sending the executing firm an Allocation Instruction Ack message with TransTyp of New, Typ of Give-up, and Stat of Rejected by Intermediary.

Note: The clearing system can use the Allocation Instruction Ack message to reject any Allocation Instruction message.

Creating an Allocation – Rejected by CME Clearing

Executing FirmFront End

Clearing

AllocInstrctn ( New, Give-up )

AllocInstrctnAck ( New, Give-up, Rejected

by Intermediary )

Claiming Firm

Page 23: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 21

2.2.3 Claiming an Allocation

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to the claiming firm. The next steps are:

1. The claiming firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Take-up. It identifies the allocation to claim using IndAllocID2.

2. The clearing system responds by:

Sending an Allocation Report to the claiming firm with a TransTyp of New, a RptTyp of Take-up, and a Stat of Claimed.

Sending an Allocation Report to the executing firm with a TransTyp of New, a RptTyp of Give-up, and a Stat of Claimed.

Claiming an Allocation

Executing FirmFront End

Clearing

AllocRpt ( New, Give-up, Claimed )

Claiming Firm

AllocRpt ( New, Take-up, Claimed )

AllocInstrctn ( New, Take-up )

Page 24: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 22

2.2.4 Refusing an Allocation

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to the claiming firm. The next steps are:

1. The claiming firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Refuse Take-up. It identifies the allocation to refuse using IndAllocID2.

2. The clearing system responds by:

Sending an Allocation Report to the claiming firm with a TransTyp of New, a RptTyp of Take-up, and a Stat of Refused.

Sending an Allocation Report to the executing firm with a TransTyp of New, a RptTyp of Give-up, and a Stat of Refused.

Rejecting an Allocation

Executing FirmFront End

Clearing

AllocRpt ( New, Give-up, Refused )

Claiming Firm

AllocRpt ( New, Take-up, Refused )

AllocInstrctn ( New, Refuse Take-up )

Page 25: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 23

2.2.5 Executing Firm Amending an Allocation Pre-claim Scenario 1: Amendment with new claiming firm

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to claiming firm 1.

1. The executing firm sends an Allocation Instruction message with a TransTyp of Replace and a Typ of Give-up. It identifies the allocation to amend using GrpID and IndAllocID2, and identifies claiming firm 2 in the Alloc/Pty element.

2. The clearing system responds by:

Sending an Allocation Report to the executing firm with a TransTyp of Replace, a RptTyp of Give-up, and a Stat of Allocation Pending.

Sending an Allocation Report to claiming firm 1 with a TransTyp of Cancel, a RptTyp of Take-up, and a Stat of Cancelled.

Sending an Allocation Report to claiming firm 2 with a TransTyp of New, a RptTyp of Take-up, and a Stat of Allocation Pending.

Executing Firm Amending an Allocation Pre-Claim – New Claiming Firm

Executing FirmFront End

ClearingClaiming Firm 1 Claiming Firm 2

AllocRpt ( Replace, Give-up, Allocation

Pending )

AllocRpt ( Cancel, Take-up,

Cancelled )

AllocInstrctn ( Replace, Give-up )

AllocRpt ( New, Take-up,

Allocation Pending )

Page 26: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 24

Scenario 2: Amendment with same claiming firm

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to the claiming firm.

1. The executing firm sends an Allocation Instruction message with a TransTyp of Replace and a Typ of Give-up. It identifies the allocation to amend using GrpID and IndAllocID2.

2. The clearing system responds by:

Sending an Allocation Report to the executing firm with a TransTyp of Replace, a RptTyp of Give-up, and a Stat of Allocation Pending.

Sending an Allocation Report to the claiming firm with a TransTyp of Replace, a RptTyp of Take-up, and a Stat of Allocation Pending.

Executing Firm Amending an Allocation Pre-claim – Same Claiming Firm

Executing FirmFront End

Clearing

AllocRpt ( Replace, Give-up, Allocation

Pending )

Claiming Firm

AllocRpt ( Replace, Take-up,

Allocation Pending )

AllocInstrctn ( Replace, Give-up )

Page 27: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 25

2.2.6 Claiming Firm Amending an Allocation Pre-claim

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to the claiming firm.

1. The claiming firm sends an Allocation Instruction message with a TransTyp of Replace and a Typ of Take-up. It identifies the allocation to amend using IndAllocID2.

2. The clearing system responds by sending an Allocation Report to the claiming firm with a TransTyp of Replace, a RptTyp of Take-up, and a Stat of Allocation Pending.

Claiming Firm Amending an Allocation Pre-claim

Executing FirmFront End

ClearingClaiming Firm

AllocRpt ( Replace, Take-up,

Allocation Pending )

AllocInstrctn ( Replace, Take-up )

Page 28: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 26

2.2.7 Cancelling an Allocation Pre-claim

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to the claiming firm.

1. The executing firm sends an Allocation Instruction message with a TransTyp of Cancel and a Typ of Give-up. It identifies the allocation to cancel using GrpID and IndAllocID2.

2. The clearing system responds by:

Sending an Allocation Report to the executing firm with a TransTyp of Cancel, a RptTyp of Give-up, and a Stat of Cancelled.

Sending an Allocation Report to the claiming firm with a TransTyp of Cancel, a RptTyp of Take-up, and a Stat of Cancelled.

Cancelling an Allocation Pre-claim

Executing FirmFront End

Clearing

AllocRpt ( Cancel, Give-up, Cancelled )

Claiming Firm

AllocRpt ( Cancel, Take-up, Cancelled )

AllocInstrctn ( Cancel, Give-up )

Page 29: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 27

2.2.8 Amending an Allocation Post-claim

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to the claiming firm, and the claiming firm claiming the allocation.

1. The executing firm sends an Allocation Instruction message with a TransTyp of Replace and a Typ of Take-up. It identifies the allocation to amend using IndAllocID2. Example amendments include changing the carry account, origin, and CTI.

2. The clearing system responds by sending an Allocation Report to the claiming firm with a TransTyp of Replace, a RptTyp of Take-up, and a Stat of Claimed.

Note: The clearing system will not notify the executing firm.

Amending an Allocation Post-claim

Executing FirmFront End

ClearingClaiming Firm

AllocRpt ( Replace, Take-up, Claimed )

AllocInstrctn ( Replace, Take-up )

Page 30: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 28

2.2.9 Cancelling a Give-up Group

The executing firm can cancel a give-up group, provided that no allocations from that group have been claimed.

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to the claiming firm.

1. The executing firm sends an Allocation Instruction message with a TransTyp of Cancel and a Typ of Cancel Group. It identifies the group to cancel using GrpID.

2. The clearing system responds by:

Sending an Allocation Instruction Alert to the executing firm with a TransTyp of Cancel, a Typ of Cancel Group, and a Stat of Allocation Pending.

Sending an Allocation Report to the executing firm for each allocation pending with a TransTyp of Cancel, a Typ of Give-up, and a Stat of Cancelled.

Sending an Allocation Report to the claiming firm for each allocation pending with a TransTyp of Cancel, a Typ of Take-up, and a Stat of Cancelled.

Cancelling a Give-up Group

Executing FirmFront End

Clearing

AllocInstrctn ( Cancel, Cancel Group )

AllocInstrctnAlert ( Cancel, Cancel Group,

Allocation Pending )

AllocRpt ( Cancel, Give-up, Cancelled ) AllocRpt ( Cancel, Take-up, Cancelled )

Claiming Firm

Page 31: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 29

2.2.10 Un-marking a Trade for Give-up

This scenario begins with the executing firm marking a trade for allocation and allocating the trade to the claiming firm. The claiming firm has not claimed the allocation. This trade is the only trade in the give-up group.

1. The executing firm sends a Trade Capture Report with a TransTyp of Replace, a RptTyp of Submit, and an AllocInd of Allocation not required.

2. The clearing system responds by:

Sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, a RptTyp of Submit and a TrdRptStat of Accepted.

Sending the executing firm an Allocation Instruction Alert with a TransTyp of Cancel, a Typ of Incomplete Group, a Stat of Allocation Pending, and a GrpQty of 0.

Sending an Allocation Report to the executing firm with a TransTyp of Cancel, a Typ of Give-up, and a Stat of Cancelled.

Sending an Allocation Report to the claiming firm with a TransTyp of Cancel, a Typ of Take-up, and a Stat of Cancelled.

Note: The third and fourth bullets in Step 2 repeat if more than one allocation is pending, or are omitted if no allocations are pending. If a group includes more than one trade, the second bullet will show a reduction of GrpQty which is non-zero, and Typ will be Replace.

Un-marking a Trade for Give-up

Executing FirmFront End

ClearingClaiming Firm

TrdCaptRpt ( Replace,

Submit ) with AllocInd = 0

TrdCaptRptAck ( Replace, Submit, Accepted )

AllocInstrctnAlert ( Cancel,

Incomplete Group, Allocation

Pending ) with GrpQty = 0

AllocRpt ( Cancel, Give-up, Cancelled )AllocRpt ( Cancel, Take-up, Cancelled )

Page 32: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 30

2.3 Average Price Allocation Message Flows The following message flows illustrate message flows specific to average price allocation groups. Average price allocation differs from give-up allocation in that the executing firm controls the assignment of trades to average price groups. However, once an average price group is complete, it functions almost identically to a give-up group.

2.3.1 Marking Trades for Average Price Allocation

Scenario 1: Group ID specified at time of marking

1. The executing firm sends a Trade Capture Report with a TransTyp of Replace, a RptTyp of Submit, an AllocInd of Allocating Trade (No Claim Info provided), and an AvgPxInd of Trade is part of an average price group. The executing firm supplies the name of a new average price group in the AvgPxGrpID field.

2. The clearing system responds by:

Sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, a RptTyp of Submit and a TrdRptStat of Accepted.

Creating an average price group, and sending the executing firm an Allocation Instruction Alert with a TransTyp of New (as this is a new average price group), a Typ of Incomplete Group, and a Stat of Allocation Pending.

3. The executing firm amends a second trade for average price allocation, as in step 1, but specifies the same AvgPxGrpID used above.

4. The clearing system responds by:

Sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, a RptTyp of Submit and a TrdRptStat of Accepted.

Modifying the average price group, and sending the executing firm an Allocation Instruction Alert with a TransTyp of Replace (as this is now an existing average price group), a Typ of Incomplete Group, and a Stat of Allocation Pending.

Note: Submission of a new trade marked for average pricing functions almost identically, except that TransTyp is New, not Replace, in steps 1 and 3 and the first bullet in steps 2 and 4 above.

Page 33: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 31

Marking a Trade for Average Price Allocation

Executing FirmFront End

Clearing

TrdCaptRpt ( Replace, Submit )

AllocInstrctnAlert ( New, Incomplete Group, Allocation

Pending )

TrdCaptRptAck ( Replace, Submit, Accepted )

TrdCaptRpt ( Replace, Submit )

TrdCaptRptAck ( Replace, Submit, Accepted )

AllocInstrctnAlert ( Replace, Incomplete Group, Allocation

Pending )

New Average

Price Group

created

Update Average

Price Group

created

Page 34: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 32

Scenario 2: Group ID specified later

1. The executing firm sends a Trade Capture Report with a TransTyp of Replace, a RptTyp of Submit, an AllocInd of Allocating Trade (No Claim Info provided), and an AvgPxInd of Trade is part of an average price group. The executing firm will not send AvgPxGrpID at this time.

2. The clearing system responds by sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, a RptTyp of Submit and a TrdRptStat of Accepted. The trade is now marked for average price allocation, but is not part of any average price group.

3. The executing firm sends a Trade Capture Report with a TransTyp of Replace, a RptTyp of Submit, an AllocInd of Allocating Trade (No Claim Info provided), and an AvgPxInd of Trade is part of an average price group. The executing firm supplies the name of a new average price group in the AvgPxGrpID field.

4. The clearing system responds by:

Sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, a RptTyp of Submit and a TrdRptStat of Accepted.

Creating an average price group, and sending the executing firm an Allocation Instruction Alert with a TransTyp of New, a Typ of Incomplete Group, and a Stat of Allocation Pending.

Note: The executing firm could also specify the name of an existing average price group in step 3, which would cause TransTyp to be Replaced in the second bullet in step 4.

Specifying Average Price Group Later

Executing FirmFront End

Clearing

TrdCaptRpt ( Replace, Submit ) with no LinkID

TrdCaptRptAck ( Replace, Submit, Accepted )

AllocInstrctnAlert ( New, Incomplete Group, Allocation

Pending )

TrdCaptRpt ( Replace, Submit ) with a new LinkID

TrdCaptRptAck ( Replace, Submit, Accepted )

New Average

Price Group

created

Page 35: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 33

2.3.2 Completing an Average Price Group

In this scenario the executing firm marks a trade for average price allocation by specifying an average price group.

1. The executing firm sends an Allocation Instruction message with a TransTyp of Replace and a Typ of Complete Group. It identifies the group to complete using GrpID.

2. The clearing system responds by sending an Allocation Instruction Alert message with a TransTyp of Replace, a Typ of Complete Group, and a Stat of Allocation Pending. This contains the average price used for allocation.

At this point, the executing firm may begin submitting allocations for the average price group.

Completing an Average Price Group

Executing FirmFront End

Clearing

AllocInstrctn ( Replace, Complete Group )

AllocInstrctnAlert ( Replace, Complete Group,

Allocation Pending )

Page 36: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 34

2.3.3 Allocating an Average Price Group, Clearing System Splits Allocation

This scenario begins with the executing firm marking trades for average price allocation and completing the average price group.

1. The executing firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Give-up. The executing firm identifies the group using the GrpID field, and identifies the claiming firm in the Alloc/Pty element.

2. The clearing system responds by:

Sending two or more Allocation Report messages to the executing firm with a TransTyp of New, a RptTyp of Give-up, and a Stat of Allocation Pending. The Alloc/Qty of the individual allocation is less than Alloc/Qty on the Allocation Instruction, but Alloc/ReqQty (sent to executing firm only) equals the Alloc/Qty of the Allocation Instruction, and the sum of all Alloc/Qty of the individual allocations equals Alloc/Qty on the Allocation Instruction.

Sending an Allocation Report to the claiming firm with a TransTyp of New, a RptTyp of Take-up, and a Stat of Allocation Pending. The Alloc/Qty of the individual allocation is less than Alloc/Qty on the Allocation Instruction, but Alloc/ReqQty (sent to executing firm only) equals the Alloc/Qty of the Allocation Instruction, and the sum of all Alloc/Qty of the individual allocations equal Alloc/Qty on the Allocation Instruction.

Note: This is an exceptional scenario. The clearing system attempts to avoid splitting allocations when possible. In most cases, allocations are not split and are identical to give-up allocation, hence they are not illustrated.

Note: The clearing system carries forward Alloc/ReqQty on future messages to the executing firm until the clearing system has reason to split the allocation or an amendment to the allocation.

Allocating an Average Price Group – Allocation Split by Clearing System

Executing FirmFront End

Clearing

AllocInstrctn ( New, Give-up )

AllocRpt ( New, Give-up,

Allocation Pending ) Part 1

Claiming Firm

AllocRpt ( New, Take-up,

Allocation Pending ) Part 1Multiple messages are

sent to the Executing

Firm and Claiming Firm

based on the number of

parts the Clearing

System must split the

allocation into.

AllocRpt ( New, Give-up,

Allocation Pending ) Part 2

AllocRpt ( New, Take-up,

Allocation Pending ) Part 2

Page 37: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 35

2.3.4 Un-marking a Trade from an Average Price Group

In this scenario the executing firm marks a trade for average price allocation by specifying an average price group.

1. The executing firm sends a Trade Capture Report with a TransTyp of Replace, a RptTyp of Submit, and either:

a. An AllocInd of Allocating Trade (No Claim Info provided), an AvgPxInd of Average price trade removed from group, and AvgPxGrpID is absent, or

b. An AllocInd of Allocation not required, AvgPxInd is absent or No Average Pricing, and AvgPxGrpID is absent.

2. The clearing system responds by:

Sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, a RptTyp of Submit and a TrdRptStat of Accepted.

Sending the executing firm an Allocation Instruction Alert with a TransTyp of Replace (if this is not the only trade in the group) or Cancel (if this is the only trade in the group), a Typ of Incomplete Group, and a Stat of Allocation Pending. The group quantity decreases by the quantity of the unmarked trade.

Note: In option 1a, the trade remains marked for average pricing, and the executing firm specifies

an average price group at a later time. In option 1b, the trade is unmarked from allocation entirely.

Un-marking a Trade from an Average Pricing Group

Executing FirmFront End

Clearing

TrdCaptRpt ( Replace, Submit )

TrdCaptRptAck ( Replace, Submit, Accepted )

AllocInstrctnAlert ( Replace or Cancel,

Incomplete Group, Allocation Pending )

Page 38: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 36

2.3.5 Changing a Trade to Another Average Price Group

In this scenario the executing firm marks a trade for average price allocation by specifying an average price group.

1. The executing firm sends a Trade Capture Report with a TransTyp of Replace, a RptTyp of Submit, an AllocInd of Allocating Trade (No Claim Info provided), and an AvgPxInd of Trade is part of an average price group. The executing firm provides a new average price group in the AvgPxGrpID field.

2. The clearing system responds by:

Sending the executing firm a Trade Capture Report Ack with a TransTyp of Replace, a RptTyp of Submit and a TrdRptStat of Accepted.

Sending the executing firm an Allocation Instruction Alert with a TransTyp of Replace, a Typ of Incomplete Group, and a Stat of Allocation Pending. Note: This message is an update to the old group where the old group quantity is reduced.

Creating an average price group, and sending the executing firm an Allocation Instruction Alert with a TransTyp of New (as this is a new average price group), a Typ of Incomplete Group, and a Stat of Allocation Pending.

Note: The executing firm can also change a trade to an existing average price group. The third bullet in Step 2 will have a TransTyp of Replace.

Changing Average Pricing Group

Executing FirmFront End

Clearing

TrdCaptRpt ( Replace, Submit )

TrdCaptRptAck ( Replace, Submit, Accepted )

AllocInstrctnAlert ( Replace, Incomplete Group,

Allocation Pending )

AllocInstrctnAlert ( New, Incomplete Group,

Allocation Pending )

Page 39: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 37

2.3.6 Un-completing an Average Price Group

In this scenario the executing firm marks trades for average pricing, completes the group, and allocates to a claiming firm. The next steps are:

1. The executing firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Reopen Group. It identifies the group to un-complete using GrpID.

2. The clearing system responds by:

Sending an Allocation Instruction Alert message with a TransTyp of Replace, a Typ of Incomplete Group, and a Stat of Allocation Pending.

Sending an Allocation Report to the executing firm with a TransTyp of Cancel, a RptTyp of Give-up, and a Stat of Cancelled.

Sending an Allocation Report to the claiming firm with a TransTyp of Cancel, a RptTyp of Take-up, and a Stat of Cancelled.

Note: If more than one pending allocation was submitted for the average price group, un-completing the group results in repeating the second and third bullets in steps 2 for each additional allocation. If no allocations were submitted for the average price group, un-completing the group results in omitting the second and third bullets in step 2.

Un-completing an Average Price Group

Executing FirmFront End

Clearing

AllocInstrctn ( Replace, Reopen Group )

AllocInstrctnAlert ( Replace, Incomplete Group,

Allocation Pending )

Claiming Firm

AllocRpt ( Cancel, Give-up, Cancelled ) AllocRpt ( Cancel, Take-up, Cancelled )

Page 40: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 38

2.3.7 Cancelling an Average Price Group

In this scenario the executing firm first marks trades for average pricing.

1. The executing firm sends an Allocation Instruction message with a TransTyp of Cancel and a Typ of Cancel Group. It identifies the group to un-complete using GrpID.

2. The clearing system responds by sending an Allocation Instruction Alert message with a TransTyp of Cancel, a Typ of Cancel Group, and a Stat of Allocation Pending.

Note: The trade that was part of the group will still be considered marked for average pricing, but not as part of any group.

Cancelling an Average Price Group

Executing FirmFront End

Clearing

AllocInstrctn ( Cancel, Cancel Group )

AllocInstrctnAlert ( Cancel, Cancel Group,

Allocation Pending )

2.3.8 Transitions Between Give-up Allocation and Average Price Allocation Message Flows

Transitioning between give-up allocation, average price allocation, and cross-exchange allocation cannot be performed as one action. The executing firm must first un-mark the trade from allocation entirely, and then mark the trade for the new type of allocation. Un-marking and marking trades are both documented above.

Page 41: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 39

2.4 Sub-allocation Message Flows A claiming firm can accept an allocation, and then sub-allocate the allocation. Sub-allocation only marks the allocation for further allocation; the original claiming firm must then provide instructions to allocate to new claiming firms.

2.4.1 Sub-allocation for Give-up In this scenario, claiming firm 1 first claims an allocation.

1. Claiming firm 1 sends an Allocation Instruction message with a TransTyp of New and a Typ of Sub-Allocate. It identifies the allocation to sub-allocate using IndAllocID2 within the Alloc element, and specifies only one Alloc element, corresponding to the claimed allocation.

2. The clearing system creates a new Give-up Group for the sub-allocation and sends claiming firm 1 an Allocation Instruction Alert with a TransTyp of New, a Typ of Complete Group, and a Stat of Allocation Pending. Within the AllExc element, IndAllocID2 contains the IndAllocID2 of the sub-allocated allocation.

3. Claiming firm 1 sends an Allocation Instruction message with a TransTyp of New and a Typ of Give-up. It identifies the group for the sub-allocation using the GrpID field, and identifies claiming firm 2 in the Alloc/Pty element.

4. The clearing system responds by:

Sending an Allocation Report to claiming firm 1 with a TransTyp of New, a RptTyp of Give-up, and a Stat of Allocation Pending.

Sending an Allocation Report to claiming firm 2 with a TransTyp of New, a RptTyp of Take-up, and a Stat of Allocation Pending.

Sub-allocation for Give-up

Claiming Firm 1Front End

Clearing

AllocInstrctn ( New, Sub-allocate )

Claiming Firm 2

AllocInstrctnAlert ( New, Complete Group,

Allocation Pending )

AllocInstrctn ( New, Give-up )

AllocRpt ( New, Give-up, Allocation Pending )AllocRpt ( New, Take-up, Allocation Pending )

Page 42: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 40

2.4.2 Sub-allocation for Give-up with Specific Allocation Instructions

In this scenario, claiming firm 1 first claims an allocation.

1. Claiming firm 1 sends an Allocation Instruction message with a TransTyp of New and a Typ of Sub-Allocate. It identifies the allocation to sub-allocate using IndAllocID2 within an Alloc element. It specifies a second Alloc element, identifying claiming firm 2 in the Alloc/Pty element.

2. The clearing system responds by:

Sending claiming firm 1 an Allocation Instruction Alert with a TransTyp of New, a Typ of Complete Group, and a Stat of Allocation Pending. Within the AllExc element, IndAllocID2 contains the IndAllocID2 of the sub-allocated allocation. This is a new give-up group containing the sub-allocation.

Sending an Allocation Report to claiming firm 1 with a TransTyp of New, a RptTyp of Give-up, and a Stat of Allocation Pending.

Sending an Allocation Report to claiming firm 2 with a TransTyp of New, a RptTyp of Take-up, and a Stat of Allocation Pending.

Note: Claiming firm 1 can allocate to more than one firm by specifying additional Alloc elements in step 1. This will result in the duplication of the second and third bullets in step 2 for each new allocation.

Sub-allocation for Give-up with Specific Allocation Instructions

Claiming Firm 1Front End

Clearing

AllocInstrctn ( New, Sub-allocate )

Claiming Firm 2

AllocInstrctnAlert ( New, Complete Group,

Allocation Pending )

AllocRpt ( New, Give-up, Allocation Pending )AllocRpt ( New, Take-up, Allocation Pending )

Page 43: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 41

2.4.3 Sub-allocation for Average Pricing

In this scenario, claiming firm 1 first claims an allocation.

1. Claiming firm 1 sends an Allocation Instruction message with a TransTyp of New and a Typ of Sub-Allocate. It identifies the allocation to sub-allocate using IndAllocID2 within the Alloc element, and specifies only one Alloc element, corresponding to the allocation claimed. It also specifies that this is an average price sub-allocation by specifying an AvgPxInd of Trade is part of an average price group and indicates a new average price group using the AvgPxGrpID field.

2. The clearing system responds by sending claiming firm 1 an Allocation Instruction Alert with a TransTyp of New, a Typ of Incomplete Group, and a Stat of Allocation Pending. Within the AllExc element, IndAllocID2 contains the IndAllocID2 of the sub-allocated allocation added to the average price group. This is a new average price group containing the sub-allocation.

Claiming firm 1 can then treat the resulting average price group just as any other average price group, e.g. completing the group and submitting allocations. However, claiming firm 1 cannot modify a sub-allocation to transition it to unassigned in the average pricing system.

Note: The average price group specified in step 1 may be an existing average price group, in which case TransTyp in step 2 will be Replace. Both sub-allocations and trades may share the

same average price group.

Sub-allocation for Average Pricing

Claiming Firm 1Front End

Clearing

AllocInstrctn ( New, Sub-allocate Give-up )

with AvgPxGrpID

AllocInstrctnAlert ( New, Incomplete Group,

Allocation Pending )

Page 44: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 42

2.5 Reversal of Accepted Allocations Message Flows Either the executing firm or the claiming firm can initiate a reversal, and the resulting FIXML messages will be similar. The scenarios below illustrate a claiming firm initiating a reversal.

2.5.1 Allocation Reversal Requested This scenario begins with the executing firm making an allocation, which the claiming firm claims.

1. The claiming firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Initiate Reversal. It identifies the allocation to reverse using IndAllocID2.

2. The clearing system responds by:

Sending an Allocation Report to the claiming firm with a TransTyp of New, a RptTyp of Reversal, and a Stat of Reversal Pending.

Sending an Allocation Report to the executing firm with a TransTyp of New, a RptTyp of Alleged Reversal, and a Stat of Reversal Pending.

Allocation Reversal Request

Executing FirmFront End

Clearing

AllocRpt ( New, Alleged Reversal,

Reversal Pending )

Claiming Firm

AllocRpt ( New, Reversal, Reversal Pending )

AllocInstrctn ( New, Initiate Reversal )

Page 45: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 43

2.5.2 Allocation Reversal Accepted

This scenario begins with the executing firm making an allocation, which the claiming firm claims. Then, the claiming firm requests a reversal.

1. The executing firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Claim Reversal. It identifies the allocation to reverse using IndAllocID2.

2. The clearing system responds by:

Sending an Allocation Report to the executing firm with a TransTyp of New, a RptTyp of Alleged Reversal, a Stat of Reversed, and a RvrslStat of Completed.

Sending an Allocation Report to the claiming firm with a TransTyp of New, a RptTyp of Reversal, a Stat of Reversed, and a RvrslStat of Completed.

Allocation Reversal Accepted

Executing FirmFront End

Clearing

AllocRpt ( New, Alleged Reversal, Reversed )

with RvrslStat = Completed

Claiming Firm

AllocRpt ( New, Reversal, Reversed )

with RvrslStat = Completed

AllocInstrctn ( New, Claim Reversal )

Page 46: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 44

2.5.3 Allocation Reversal Refused

This scenario begins with the executing firm making an allocation, which the claiming firm claims. Then, the claiming firm requests a reversal.

1. The executing firm sends an Allocation Instruction message with a TransTyp of New and a Typ of Refuse Reversal. It identifies the allocation to refuse the reversal using IndAllocID2.

2. The clearing system responds by:

Sending an Allocation Report to the executing firm with a TransTyp of New, a RptTyp of Alleged Reversal, a Stat of Claimed, and a RvrslStat of Refused.

Sending an Allocation Report to the claiming firm with a TransTyp of New, a RptTyp of Reversal, a Stat of Claimed, and a RvrslStat of Refused.

Allocation Reversal Refused

Executing FirmFront End

Clearing

AllocRpt ( New, Alleged Reversal, Claimed )

with RvrslStat = Refused

Claiming Firm

AllocRpt ( New, Reversal, Claimed )

with RvrslStat = Refused

AllocInstrctn ( New, Refuse Reversal )

Page 47: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 45

2.5.4 Allocation Reversal Cancelled

This scenario begins with the executing firm making an allocation, which the claiming firm claims. Then, the claiming firm requests a reversal.

1. The claiming firm sends an Allocation Instruction message with a TransTyp of Cancel and a Typ of Initiate Reversal. It identifies the allocation with the reversal to cancel using IndAllocID2.

2. The clearing system responds by:

Sending an Allocation Report to the claiming firm with a TransTyp of Cancel, a RptTyp of Reversal, a Stat of Claimed, and a RvrslStat of Cancelled.

Sending an Allocation Report to the executing firm with a TransTyp of Cancel, a RptTyp of Alleged Reversal, a Stat of Claimed and a RvrslStat of Cancelled.

Allocation Reversal Cancelled

Executing FirmFront End

Clearing

AllocRpt ( Cancel, Alleged Reversal, Claimed )

with RvrslStat = Cancelled

Claiming Firm

AllocRpt ( Cancel, Reversal, Claimed )

with RvrslStat = Cancelled

AllocInstrctn ( Cancel, Initiate Reversal )

Page 48: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 46

3.0 FIXML Components and Message Specifications This section describes the following:

Versioning attributes of FIXML messages

Attributes of a FIXML Header

Message Layout

Message Specifications

3.1 FIXML Message Elements and Attributes

3.1.1 Version Attributes for All Messages

The following attributes should be included on the FIXML element of each message sent to the API.

Field Description Valid Value XPath

FIX Version Number

Indicates the version of FIX being used (including Service Pack).

5.0 SP2 /FIXML/@v

FIXML Extension Version

Indicates the FIX Extension version.

109 /FIXML/@xv

Custom Application Version

Indicates the Custom Application version.

CME.0001 /FIXML/@cv

Page 49: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 47

3.2 Message Headers

3.2.1 Standard Header for Request and Submissions

Field Description Reqd (R/O)

Valid Value XPath

Sender ID This attribute identifies the party, firm or the Submitter of the message. The value is assigned by CME Clearing.

R 230 /FIXML/TrdCaptRpt/Hdr/@SID

Sender Qualifier

This attribute qualifies the Sender or the Exchange of the Firm submitting the message.

R CME /FIXML/TrdCaptRpt/Hdr/@SSub

Target ID This attribute identifies the receiver of the message. This represents the firm exchange.

R CME /FIXML/TrdCaptRpt/Hdr/@TID

Target Qualifier This qualifies the receiver of the message. This is optional and can represent the firm exchange.

O CME /FIXML/TrdCaptRpt/Hdr/@TSub

3.2.2 Standard Header for Responses

Field Description Reqd

(R/O) Example XPath

Sender ID This attribute identifies the party or the Submitter of the message. This represents the firm exchange.

R CME /FIXML/TrdCaptRpt/Hdr/@SID

Sender Qualifier

This attribute qualifies the Sender. This is optional and can represent the firm exchange.

O CME /FIXML/TrdCaptRpt/Hdr/@SSub

Target ID This attribute identifies the receiver of the message. This could be a Broker, Platform or any other valid Trading entity. This value is pre-assigned by CME.

R 230 /FIXML/TrdCaptRpt/Hdr/@TID

Target Qualifier This qualifies the receiver of the message or the exchange of the Firm submitting the message.

R CME /FIXML/TrdCaptRpt/Hdr/@TSub

Page 50: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 48

3.3 Malformed Messages Responses to malformed messages will use the FIXML Business Message Reject (located under Application Level Messages- Infrastructure in the FIX Specification). Malformed messages sent over MQ, including messages sent with an invalid Sender Comp ID (SID) and/or Target Comp ID (TID) will not receive a response.

The following actions can result in a Business Message Reject response:

If the Header information is incorrect.

If the message type is not recognized or supported.

If a component of a recognized message is missing.

3.4 Message Layouts This section contains the FIXML message layouts for allocation messages. The FIXML schema enforces sequence of elements. The attribute sequence within an element is not enforced by the schema.

3.4.1 Allocation Instruction Message Layout

This message is always sent by the executing/give-up firms and claim/carry firms to provide instructions to the clearing system to take an action such as allocating, claiming, reversing, sub-allocating etc.

Page 51: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 49

3.4.2 Allocation Instruction Ack Message Layout

This message is used by the clearing system to reject any instruction submitted by an executing/give-up firm or the claim/take-up firm when it cannot process the instruction.

3.4.3 Allocation Instruction Alert Message Layout

This message is sent by the clearing system as a notification of group level information.

Page 52: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 50

3.4.4 Allocation Report Message Layout

This message is always sent by the clearing system to executing/give-up firms and claim/carry firms to report on the current state of a give-up/claim. For the claim firm, the AllocationReport is also used by the clearing system to notify that there is an allocation alleged to the claim firm.

3.5 Message Specifications

3.5.1 Business Reject Message Specification

Field Name FIXM Attribute Name

Data Type

Description Supported Values

BizMsgRej

Message Name RefMsgTyp String The MsgType of the FIX message being referenced.

Reject Reason Code BizRejRsn int Code to identify reason for a Business Message Reject message.

0 = Other 1 = Unknown ID 2 = Unknown Security 3 = Unsupported Message Type 4 = Application not available 5 = Conditionally required field missing 6 = Not Authorized 7 = DeliverTo firm not available at this time 18 = Invalid price increment

Reject Text Txt String Where possible, message to explain reason for rejection

Page 53: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 51

3.5.2 Allocation Instruction Alert Message Specification

Field Name FIXML Attribute Name

Data Type

Description Supported Values

AllocInstrctnAlert

Message ID ID String Unique identifier for this Allocation Instruction Alert message

Transaction Type TransTyp char i.e. New, Cancel, Replace 0 = New

1 = Replace

2 = Cancel

Allocation Type Typ int Specifies the purpose or type of Allocation message

12 = Incomplete Group

13 = Complete Group

16 = Cancel Group

Allocation Instruction Ref ID

RefAllocID String When responding to an Allocation Instruction, references the ID.

Group ID GrpID String Used by the CCP to group allocations.

Buy Sell Code Side char Side of allocation group. 1 = Buy

2 = Sell

Quantity Qty Qty Quantity of the group changed in this transaction. When adding trades to a group, this is the quantity added. When removing trades from a group, this is the quantity to be removed, and is negative. When the group quantity is unchanged, such as when the group changes status to Completed, this is 0.

Group Quantity GrpQty Qty Indicates the total quantity of an allocation group. Includes any allocated quantity.

Trading Session SesID String Identifier for the Trading Session.

EOD = End of Day

ETH = Electronic Trading Hours

ITD = Intra Day

RTH = Regular Trading Hours

[N/A] = N/A

Page 54: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 52

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Trading Session Sub ID

SesSub String Optional market assigned sub identifier for a trading phase within a trading session.

E = Electronic

P = Pit

X = X-Pit

Price Type PxTyp int In most cases, represents the type of price in the Last Price field.

1 = Percentage (i.e. percent of par)

2 = Per unit (i.e. per share or contract)

6 = Spread (basis points spread)

10 = Fixed cabinet trade price (primarily for listed futures and options)

11 = Variable cabinet trade price (primarily for listed futures and options)

Average Price AvgPx Price The average price of all trades in the allocation group.

Trade Date TrdDt LocalMktDate

The trade date assigned to an execution on the trading platform. For privately negotiated trades, the date on which the trade has been received by the CCP.

Transaction Time TxnTm UTCTimestamp

Date/time of the action performed on the allocation group.

Status Stat int Identifies status of allocation. 6 = allocation pending

Average Price Group ID

AvgPxGrpID String Firm designated group identifier for the average price group.

Clear Date ClrDt LocalMktDate

The Clearing Date for the allocation or trade.

Page 55: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 53

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Trade Type TrdTyp int Indicates Trade Type of Allocation.

0 = Regular Trade

1 = Block Trade

2 = EFP (Exchange for physical)

3 = Transfer

11 = Exchange for Risk (EFR)

12 = Exchange for Swap (EFS)

22 = Over the Counter Privately Negotiated Trades (OPNT)

23 = Substitution of Futures for Forwards

Trade Sub Type TrdSubTyp int Indicates TradeSubType of Allocation. Necessary for defining groups.

1 = Internal transfer or adjustment

7 = Differential spread

8 = Implied spread leg executed against an outright

9 = Transaction from exercise

10 = Transaction from assignment

36 = Converted SWAP (Aged Deal)

40 = TAS - Traded at settlement

42 = Auction Trade

43 = TAM - Traded at marker

Input Source InptSrc String Indicates input source of original trade marked for allocation.

Input Device InptDev String Specific device number, terminal number or station where the trade was entered.

API = API submitted

SYSGEN = System Generated

UI = GUI used for Submission

Post Trade Type PostTrdTyp int Defines the post trade type, e.g. give up, average price, cross exchange give up, etc.

0 = Give up

1 = Average price

2 = Cross Exchange Give up

Multi Leg Reporting Type

MLegRptTyp char Indicates MultiLegReportType of original trade marked for allocation.

1 = Single security (default if not specified)

2 = Individual leg of a multi-leg security

3 = Multi-leg security

Rounded Price RndPx Price Specifies the rounded price to quoted precision.

Page 56: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 54

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Customer Order Handling Instruction

CustOrdHdlInst

MultipleStringValue

Contains the FIA Execution Source.

A = Phone simple

B = Phone complex

C = FCM-provided screen

D = Other-provided screen

E = Client provided platform controlled by FCM

F = Client provided platform direct to exchange

G = FCM API or FIX

H = Algo Engine

J = Price at Execution (price added at Initial order entry, trading, middle office or time of give-up)

W = Desk - Electronic

X = Desk - Pit

Y = Client - Electronic

Z = Client - Pit

Price Sub Type PxSubTyp int This is a further qualification of the Price Type. For example if the Last Price is a TAS Price, the Price Sub Type conveys whether it is an initial price when the trade is first being reported or the final settlement price.

0 = Initial Price

1 = Final Price

Differential Price DiffPx float Differential price for allocations of TAS or TAM trades.

AllocInstrctnAlert/OrdAlloc (Repeating)

Client Order ID ClOrdID String Client Order ID of the trade being added to or removed from the group.

AllocInstrctnAlert/AllExc (Repeating)

Trade Quantity LastQty Qty Quantity of the trade being added to or removed from the group.

Trade Price LastPx Price Price of the trade being added to or removed from the group.

Trade ID TrdID String Trade ID of the trade being added to or removed from the group.

Page 57: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 55

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Secondary Individual Alloc ID

IndAllocID2 String Used for sub-allocation. Contains the IndAllocID2 of the parent allocation.

AllocInstrctnAlert/Instrmt

Product Code ID String Used as the primary identifier for the traded instrument. For listed derivatives this is generally an exchange or CCP defined value. For CDS this is a value assigned by CME Clearing.

CFI Code CFI String Indicates the type of security using ISO 10962 standard, Classification of Financial Instruments (CFI code) values.

Security Type SecTyp String Indicates type of instrument or security being traded or defined. It is required on inbound trade submissions and is used as one of the identifiers of the instrument. This is required because CME usage of CFI Code is in the process of being deprecated.

CDS = Credit Default Swap

COMBO = Multileg (Combo)

FUT = Future

FWD = Forward

IRS = Interest Rate Swap

MLEG = Multi Leg (Combo)

OOC = Options on Combo

OOF = Options on Futures

OOP = Options on Physical - use not recommended

OPT = Option

Contract Period Code

MMY MonthYear

Specifies the month and year of maturity. Applicable for standardized derivatives which are typically only referenced by month and year (e.g. S&P futures).

Strike Price StrkPx Price Used for derivatives, such as options and covered warrants.

Put Or Call PutCall int Used to express option right. 0 = Put

1 = Call

Page 58: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 56

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Product Exchange Exch Exchange The exchange where the Security is listed.

CBT

CCE

CEE

CMD

CME

COMEX

DME

GEX

KCB

NYMEX

Price Quote Currency

PxQteCcy Currency The currency at which the Price is quoted.

AllocInstrctnAlert/Pty (Repeating)

Party ID ID String Used to identify the Party.

Party ID Source Src char Used to identify class source of PartyID value (e.g. BIC). Required if PartyID is specified. Required if NoPartyIDs > 0.

C = Generally accepted market participant identifier (e.g. NASD mnemonic)

D = Proprietary / Custom code

H = CSD participant/member code (e.g.. Euroclear, DTC, CREST or Kassenverein number)

Party Role R int Indicates the type of Party or the role of the party in the Party Block. Note that Clearing Organization (21) is always "CME" while Exchange (22) represents the firm exchange.

1 = Executing Firm

12 = Executing Trader (associated with Executing Firm - actually executes)

21 = Clearing Organization

22 = Exchange

24 = Customer Account

44 = Order Entry Operator ID

200 = FEC GUI User ID

AllocInstrctnAlert/Pty/Sub (Repeating)

Party Qualifier ID ID String A Sub ID provides additional information about the Party.

Party Qualifier Type Typ int The Type of Party Sub ID in the Party Sub Tag.

3 = System

26 = Account type or Origin

Page 59: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 57

Field Name FIXML Attribute Name

Data Type

Description Supported Values

AllocInstrctnAlert/Amt (Repeating)

Amount Type Typ String The type of amount being expressed in the Trade Report.

CRES = Cash Residual Amount

Amount Amt Amt The amount associated with the trade.

Amount Currency Ccy String The currency in which the Amount associated with the trade is being denominated in.

3.5.3 Allocation Instruction Message Specification

Field Name FIXML Attribute Name

Data Type

Description Supported Values

AllocInstrctn

Message ID ID String Unique identifier for this Allocation Instruction message.

Transaction Type TransTyp char i.e. New, Cancel, Replace 0 = New

1 = Replace

2 = Cancel

Allocation Type Typ int Specifies the purpose or type of the Allocation Instruction message.

13 = Complete Group

15 = Un-complete Group

16 = Cancel Group

17 = Give-up

18 = Take-up

19 = Refuse Take-up

20 = Initiate Reversal

21 = Claim Reversal

22 = Refuse Reversal

23 = Sub-allocate Give-up

Group ID GrpID String CCP assigned ID for grouping trades for allocation.

Buy Sell Code Side char Side of the allocation. 1 = Buy

2 = Sell

Quantity Qty Qty Total quantity allocated to all accounts in this allocation.

Page 60: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 58

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Trading Session Sub ID

SesSub String Optional market assigned sub identifier for a trading phase within a trading session.

E = Electronic

P = Pit

X = X-Pit

Trade Date TrdDt LocalMktDate

The trade date assigned to an execution on the trading platform. For privately negotiated trades, the date on which the trade has been received by the CCP.

Average Pricing Indicator

AvgPxInd int Specifies if an allocation is being directed into an average price group. This is used for sub-allocation.

0 = No Average Pricing

1 = Trade is part of an average price group identified by the AvgPxGrpID

Average Price Group ID

AvgPxGrpID String Firm designated group identifier for the average price group. This is used for sub-allocation, and is required for sub-allocation to an average price group.

Executing or Claiming Indicator

ExecOrClaimInd

int Differentiates between messages sent by the Executing Firm vs. the Claiming Firm. Required on all inbound messages.

0 = Executing Firm

1 = Claiming Firm

Post Trade Type PostTrdTyp int Defines the post trade type, e.g. give up, average price, cross exchange give up, etc. Required on inbound messages.

0 = Give up

1 = Average price

2 = Cross Exchange Give up

Multi Leg Reporting Type

MLegRptTyp char Indicates MultiLegReportType of original trade marked for allocation.

1 = Single security (default if not specified)

2 = Individual leg of a multi-leg security

3 = Multi-leg security

AllocInstrctn/OrdAlloc (Repeating)

Client Order ID ClOrdID String Client Order ID of the trade being added to or removed from the group.

AllocInstrctn/Instrmt

Page 61: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 59

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Product Code ID String Used as the primary identifier for the traded instrument. For listed derivatives this is generally an exchange or CCP defined value. For CDS this is a value assigned by CME Clearing.

CFI Code CFI String Indicates the type of security using ISO 10962 standard, Classification of Financial Instruments (CFI code) values.

Security Type SecTyp String Indicates type of instrument or security being traded or defined. It is required on inbound trade submissions and is used as one of the identifiers of the instrument. This is required because CME usage of CFI Code is in the process of being deprecated.

CDS = Credit Default Swap

COMBO = Multileg (Combo)

FUT = Future

FWD = Forward

IRS = Interest Rate Swap

MLEG = Multi Leg (Combo)

OOC = Options on Combo

OOF = Options on Futures

OOP = Options on Physical - use not recommended

OPT = Option

Contract Period Code

MMY MonthYear

Specifies the month and year of maturity. Applicable for standardized derivatives which are typically only referenced by month and year (e.g. S&P futures).

Strike Price StrkPx Price Used for derivatives, such as options and covered warrants.

Put Or Call PutCall int Used to express option right. 0 = Put

1 = Call

Page 62: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 60

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Product Exchange Exch Exchange The exchange where the Security is listed.

CBT

CCE

CEE

CMD

CME

COMEX

DME

GEX

KCB

NYMEX

AllocInstrctn/Pty (Repeating)

Party ID ID String Used to identify the Party.

Party Role R int Indicates the type of Party or the role of the party in the Party Block. Note that for Clearing Organization (21), the ID is always "CME" while for Exchange (22), the ID is the firm exchange.

1 = Executing Firm

4 = Clearing Firm

21 = Clearing Organization

22 = Exchange

24 = Customer Account

38 = Position account

AllocInstrctn/Pty/Sub (Repeating)

Party Qualifier ID ID String A Sub ID provides additional information about the Party.

Party Qualifier Type Typ int The Type of Party Sub ID in the Party Sub Tag.

3 = System

26 = Account type or Origin

AllocInstrctn/Alloc (Repeating)

Allocation Quantity Qty Qty Quantity of the individual allocation.

Individual Alloc ID IndAllocID String Firm assigned individual allocation ID.

Secondary Individual Alloc ID

IndAllocID2 String CME assigned individual allocation ID.

Allocation Rollup Instruction

AllocRollupInst int An indicator to override the normal procedure to roll up allocations for the same Carry Firm. May not be used for average pricing allocations.

0 = Roll up

1 = Do not roll up

Page 63: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 61

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Alloc Customer Capacity

CustCpcty String Can be used for granular reporting of separate allocation detail within a single trade report or allocation message.

Secondary Trade ID TrdID2 String Trade part ID of the allocation.

Original Secondary Trade ID

OrigTrdID2 String Trade part ID of the original trade.

AllocInstrctn/Alloc/Pty (Repeating)

Party ID ID String Used to identify the Party that is the claiming firm.

Party Role R int Indicates the type of Party or the role of the party in the Party Block. Note that for Clearing Organization (21), the ID is always "CME" while for Exchange (22), the ID is the firm exchange.

1 = Executing Firm

4 = Clearing Firm

21 = Clearing Organization

22 = Exchange

24 = Customer Account

38 = Position account

AllocInstrctn/Alloc/Pty/Sub (Repeating)

Party Qualifier ID ID String A Sub ID provides additional information about the Party.

Party Qualifier Type Typ int The Type of Party Sub ID in the Party Sub Tag.

3 = System

26 = Account type or Origin

3.5.4 Allocation Report Message Specification

Field Name FIXML Attribute Name

Data Type

Description Supported Values

AllocRpt

Message ID RptID String Unique identifier for this Allocation Report message.

Transaction Type TransTyp char i.e. New, Cancel, Replace 0 = New

1 = Replace

2 = Cancel

Allocation Instruction Ref ID

RptRefID String When responding to an Allocation Instruction, references the ID.

Page 64: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 62

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Group ID GrpID String CCP assigned ID for grouping trades for allocation.

Trade Match ID MtchID String Identifier assigned to a trade by a matching system.

Report Type RptTyp int Specifies the purpose or type of Allocation Report message.

15 = Give-up

16 = Take-up

17 = Reversal

18 = Alleged Reversal

Status Stat int Identifies status of the allocation. 6 = allocation pending

7 = reversed

9 = Claimed

10 = refused

12 = cancelled

14 = reversal pending

Reversal Status RvrslStat int Identifies the status of the reversal.

0 = Completed

1 = Refused

2 = Cancelled

Clear Date ClrDt LocalMktDate

The Clearing Date for the allocation or trade.

Trade Type TrdTyp int Indicates Trade Type of Allocation.

0 = Regular Trade

1 = Block Trade

2 = EFP (Exchange for physical)

3 = Transfer

11 = Exchange for Risk (EFR)

12 = Exchange for Swap (EFS)

22 = Over the Counter Privately Negotiated Trades (OPNT)

23 = Substitution of Futures for Forwards

Page 65: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 63

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Trade Sub Type TrdSubTyp int Indicates TradeSubType of Allocation. Necessary for defining groups.

1 = Internal transfer or adjustment

7 = Differential spread

8 = Implied spread leg executed against an outright

9 = Transaction from exercise

10 = Transaction from assignment

36 = Converted SWAP (Aged Deal)

40 = TAS - Traded at settlement

42 = Auction Trade

43 = TAM - Traded at marker

Executing or Claiming Indicator

ExecOrClaimInd

int Differentiates between messages sent to the Executing Firm vs. the Claiming Firm.

0 = Executing Firm

1 = Claiming Firm

Multi Leg Reporting Type

MLegRptTyp char Indicates MultiLegReportType of original trade marked for allocation.

1 = Single security (default if not specified)

2 = Individual leg of a multi-leg security

3 = Multi-leg security

Input Source InptSrc String Indicates input source of original trade marked for allocation.

Post Trade Type PostTrdTyp int Defines the post trade type, e.g. give up, average price, cross exchange give up, etc.

0 = Give up

1 = Average price

2 = Cross Exchange Give up

Rounded Price RndPx Price Specifies the rounded price to quoted precision.

Input Device InptDev String Specific device number, terminal number or station where trade was entered.

API = API submitted

SYSGEN = System Generated

UI = GUI used for Submission

Average Price Group ID

AvgPxGrpID String Firm designated group identifier for the average price group.

Buy Sell Code Side char Side of the allocation. 1 = Buy

2 = Sell

Quantity Qty Qty Total quantity allocated to all accounts in this allocation.

Page 66: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 64

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Trading Session SesID String Identifier for the Trading Session.

EOD = End of Day

ETH = Electronic Trading Hours

ITD = Intra Day

RTH = Regular Trading Hours

[N/A] = N/A

Trading Session Sub ID

SesSub String Optional market assigned sub identifier for a trading phase within a trading session.

E = Electronic

P = Pit

X = X-Pit

Price Type PxTyp int In most cases, represents the type of price in the Last Price field.

1 = Percentage (i.e. percent of par)

2 = Per unit (i.e. per share or contract)

6 = Spread (basis points spread)

10 = Fixed cabinet trade price (primarily for listed futures and options)

11 = Variable cabinet trade price (primarily for listed futures and options)

Price Sub Type PxSubTyp int This is a further qualification of the Price Type. For example if the Last Price is a TAS Price, the Price Sub Type conveys whether it is an initial price when the trade is first being reported or the final settlement price.

0 = Initial Price

1 = Final Price

Average Price AvgPx Price The average price of all trades in the allocation group.

Trade Date TrdDt LocalMktDate

The trade date assigned to an execution on the trading platform. For privately negotiated trades, the date on which the trade has been received by the CCP.

Transaction Time TxnTm UTCTimestamp

Date/time of the action performed on the allocation.

Page 67: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 65

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Customer Order Handling Instruction

CustOrdHdlInst

MultipleStringValue

Contains the FIA Execution Source.

A = Phone simple

B = Phone complex

C = FCM-provided screen

D = Other-provided screen

E = Client provided platform controlled by FCM

F = Client provided platform direct to exchange

G = FCM API or FIX

H = Algo Engine

J = Price at Execution (price added at Initial order entry, trading, middle office or time of give-up)

W = Desk - Electronic

X = Desk - Pit

Y = Client - Electronic

Z = Client - Pit

Differential Price DiffPx float Differential price for allocations of TAS or TAM trades.

AllocRpt/OrdAlloc (Repeating)

Client Order ID ClOrdID String Client Order ID of the trade being added to or removed from the group.

AllocRpt/Instrmt

Product Code ID String Used as the primary identifier for the traded instrument. For listed derivatives this is generally an exchange or CCP defined value. For CDS this is a value assigned by CME Clearing.

CFI Code CFI String Indicates the type of security using ISO 10962 standard, Classification of Financial Instruments (CFI code) values.

Page 68: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 66

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Security Type SecTyp String Indicates type of instrument or security being traded or defined. It is required on inbound trade submissions and is used as one of the identifiers of the instrument. This is required because CME usage of CFI Code is in the process of being deprecated.

CDS = Credit Default Swap

COMBO = Multileg (Combo)

FUT = Future

FWD = Forward

IRS = Interest Rate Swap

MLEG = Multi Leg (Combo)

OOC = Options on Combo

OOF = Options on Futures

OOP = Options on Physical - use not recommended

OPT = Option

Contract Period Code

MMY MonthYear

Specifies the month and year of maturity. Applicable for standardized derivatives which are typically only referenced by month and year (e.g. S&P futures).

Strike Price StrkPx Price Used for derivatives, such as options and covered warrants.

Put Or Call PutCall int Used to express option right. 0 = Put

1 = Call

Product Exchange Exch Exchange The exchange where the Security is listed.

CBT

CCE

CEE

CMD

CME

COMEX

DME

GEX

KCB

NYMEX

Price Quote Currency

PxQteCcy Currency The currency at which the Price is quoted.

AllocRpt/Pty (Repeating)

Party ID ID String Used to identify the Party.

Page 69: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 67

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Party ID Source Src char Used to identify class source of PartyID value (e.g. BIC). Required if PartyID is specified. Required if NoPartyIDs > 0.

C = Generally accepted market participant identifier (e.g. NASD mnemonic)

D = Proprietary / Custom code

H = CSD participant/member code (e.g.. Euroclear, DTC, CREST or Kassenverein number)

Party Role R int Indicates the type of Party or the role of the party in the Party Block. Note that for Clearing Organization (21), the ID is always "CME" while for Exchange (22), the ID is the firm exchange.

1 = Executing Firm

4 = Clearing Firm

12 = Executing Trader (associated with Executing Firm - actually executes)

21 = Clearing Organization

22 = Exchange

24 = Customer Account

38 = Position account

44 = Order Entry Operator ID

200 = FEC GUI User ID

201 = Previous Executing Firm

AllocRpt/Pty/Sub (Repeating)

Party Qualifier ID ID String A Sub ID provides additional information about the Party.

Party Qualifier Type Typ int The Type of Party Sub ID in the Party Sub Tag.

3 = System

26 = Account type or Origin

AllocRpt/Amt (Repeating)

Amount Type Typ String The type of amount being expressed in the Trade Report.

CRES = Cash Residual Amount

Amount Amt Amt The amount associated with the trade.

Amount Currency Ccy String The currency in which the Amount associated with the trade is being denominated in.

AllocRpt/Alloc (Repeating)

Allocation Quantity Qty Qty Quantity of the individual allocation.

Page 70: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 68

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Requested Allocation Quantity

ReqQty Qty Quantity of the individual allocation originally requested.

Individual Alloc ID IndAllocID String Firm assigned individual allocation ID.

Secondary Individual Alloc ID

IndAllocID2 String CME assigned individual allocation ID.

Allocation Rollup Instruction

AllocRollupInst int An indicator to override the normal procedure to roll up allocations for the same Carry Firm.

0 = Roll up

1 = Do not roll up

Alloc Customer Capacity

CustCpcty String Can be used for granular reporting of separate allocation detail within a single trade report or allocation message.

Parent Alloc ID ParentAllocID String Used for sub-allocation. Contains the OrigTrdID2 of the parent allocation.

Secondary Trade ID TrdID2 String Trade part ID of the allocation.

Original Secondary Trade ID

OrigTrdID2 String Trade part ID of the original trade.

AllocRpt/Alloc/Pty (Repeating)

Party ID ID String Used to identify the Party that is the claiming firm.

Party ID Source Src char Used to identify class source of PartyID value.

C = Generally accepted market participant identifier (e.g. NASD mnemonic)

D = Proprietary / Custom code

H = CSD participant/member code (e.g.. Euroclear, DTC, CREST or Kassenverein number)

Party Role R int Indicates the type of Party or the role of the party in the Party Block. Note that for Clearing Organization (21), the ID is always "CME" while for Exchange (22), the ID is the firm exchange.

1 = Executing Firm

4 = Clearing Firm

21 = Clearing Organization

22 = Exchange

24 = Customer Account

38 = Position account

44 = Order Entry Operator ID

200 = FEC GUI User ID

Page 71: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 69

Field Name FIXML Attribute Name

Data Type

Description Supported Values

AllocRpt/Alloc/Pty/Sub (Repeating)

Party Qualifier ID ID String A Sub ID provides additional information about the Party.

Party Qualifier Type Typ int The Type of Party Sub ID in the Party Sub Tag.

3 = System

26 = Account type or Origin

3.5.5 Allocation Instruction Ack Message Specification

Field Name FIXML Attribute Name

Data Type

Description Supported Values

AllocInstrctnAck

Message ID ID String Unique identifier for this Allocation Instruction ack message.

Reference Message ID

RefAllocID String ID of the Allocation Instruction message being referenced.

Group ID GrpID String CCP assigned ID for grouping trades for allocation.

Average Price Group ID

AvgPxGrpID String Firm designated group identifier for the average price group.

Trade Date TrdDt LocalMktDate

The trade date assigned to an execution on the trading platform. For privately negotiated trades, the date on which the trade has been received by the CCP.

Transaction Time TxnTm UTCTimestamp

Date/time when Allocation Instruction Ack is generated

Status Stat int Denotes the status of the Allocation Instruction.

5 = rejected by intermediary

Transaction Type TransTyp char i.e. New, Cancel, Replace of the Allocation Instruction message being referenced.

0 = New

1 = Replace

2 = Cancel

Page 72: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 70

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Allocation Type Typ int Specifies the purpose or type of the Allocation Instruction message being referenced.

12 = Incomplete Group

13 = Complete Group

15 = Un-complete Group

16 = Cancel Group

17 = Give-up

18 = Take-up

19 = Refuse Take-up

20 = Initiate Reversal

21 = Claim Reversal

22 = Refuse Reversal

23 = Sub-allocate Give-up

Executing or Claiming Indicator

ExecOrClaimInd

int Differentiates between messages sent to the Executing Firm vs. the Claiming Firm.

0 = Executing Firm

1 = Claiming Firm

Post Trade Type PostTrdTyp int Defines the post trade type, e.g. give up, average price, cross exchange give up, etc.

0 = Give up

1 = Average price

2 = Cross Exchange Give up

Additional Text Txt String Can include explanation for rejection of an Allocation Instruction.

AllocInstrctnAck/Pty (Repeating)

Party ID ID String Used to identify the Party.

Party ID Source Src char Used to identify class source of PartyID value (e.g. BIC). Required if PartyID is specified. Required if NoPartyIDs > 0.

C = Generally accepted market participant identifier (e.g. NASD mnemonic)

D = Proprietary / Custom code

H = CSD participant/member code (e.g.. Euroclear, DTC, CREST or Kassenverein number)

Party Role R int Indicates the type of Party or the role of the party in the Party Block. Note that for Clearing Organization (21), the ID is always "CME" while for Exchange (22), the ID is the firm exchange.

1 = Executing Firm

4 = Clearing Firm

21 = Clearing Organization

22 = Exchange

24 = Customer Account

38 = Position account

Page 73: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 71

Field Name FIXML Attribute Name

Data Type

Description Supported Values

AllocInstrctnAck/Pty/Sub (Repeating)

Party Qualifier ID ID String A Sub ID provides additional information about the Party.

Party Qualifier Type Typ int The Type of Party Sub ID in the Party Sub Tag.

3 = System

26 = Account type or Origin

AllocInstrctnAck/AllocAck (Repeating)

Individual Alloc ID IndAllocID String Firm assigned individual allocation ID.

Secondary Individual Alloc ID

IndAllocID2 String CME assigned individual allocation ID. May not be present if a new allocation is being rejected.

Alloc Customer Capacity

CustCpcty String Indicates CTI of the allocation.

Allocation Quantity Qty Qty Quantity to be allocated to specific sub-account

Original Secondary Trade ID

OrigTrdID2 String When responding to a Trade Capture Report containing an allocation, this references the TrdID2 of the trade.

AllocInstrctnAck/AllocAck/Pty (Repeating)

Party ID ID String Used to identify source of NestedPartyID. Required if NestedPartyIDSource is specified. Required if NoNestedPartyIDs > 0.

Party ID Source Src char Used to identify class source of NestedPartyID value (e.g. BIC). Required if NestedPartyID is specified. Required if NoNestedPartyIDs > 0.

C = Generally accepted market participant identifier (e.g. NASD mnemonic)

D = Proprietary / Custom code

H = CSD participant/member code (e.g.. Euroclear, DTC, CREST or Kassenverein number)

Page 74: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 72

Field Name FIXML Attribute Name

Data Type

Description Supported Values

Party Role R int Indicates the type of Party or the role of the party in the Party Block. Note that for Clearing Organization (21), the ID is always "CME" while for Exchange (22), the ID is the firm exchange.

1 = Executing Firm

4 = Clearing Firm

21 = Clearing Organization

22 = Exchange

24 = Customer Account

38 = Position account

AllocInstrctnAck/AllocAck/Pty/Sub (Repeating)

Party Qualifier ID ID String A Sub ID provides additional information about the Party.

Party Qualifier Type Typ int The Type of Party Sub ID in the Party Sub Tag.

3 = System

26 = Account type or Origin

Page 75: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 73

4.0 Appendix

4.1 State Changes by Scenario Event Message Message

Identifier Trans Typ (TransTyp)

Allocation Type (Typ)

Alloc Report Type (RptTyp)

Alloc Status (Stat)

Alloc Reversal Status (RvrslStat)

From To

1 Add Allocation Exec CCP AllocInstrctn 0=New 17 = Give-up

Add Allocation Confirm to Exec

CCP Exec AllocRpt 0=New 15 = Give-up

6=Allocation Pending

Add Allocation Error Confirm to Exec

CCP Exec AllocInstrctnAck 0=New 17 = Give-up 5=Rejected by Intermediary

Add Allocation Notification to Carry

CCP Carry

AllocRpt 0=New 16 = Take-up

6=Allocation Pending

2 Update Allocation on Pre-Claim by Executing Firm

Exec CCP AllocInstrctn 1=Replace

17 = Give-up

Update Allocation Confirm to Exec

CCP Exec AllocRpt 1=Replace

15 = Give-up

6=Allocation Pending

Update Allocation Error Confirm to Exec

CCP Exec AllocInstrctnAck 1=Replace

17 = Give-up 5=Rejected by Intermediary

Update Allocation Notification to Carry

CCP Carry

AllocRpt 1=Replace

16 = Take-up

6 - Allocation Pending

3 Update Allocation on Pre-Claim by Carry Firm

Carry

CCP AllocInstrctn 1=Replace

18 = Take-up

Update Allocation Confirm to Carry

CCP Carry

AllocRpt 1=Replace

16 = Take-up

6=Allocation Pending

Update Allocation Error Confirm to Exec

CCP Carry

AllocInstrctnAck 1=Replace

18 = Take-up 5=Rejected by Intermediary

4 Delete Allocation Exec CCP AllocInstrctn 2=Cancel 17 = Give-up

Delete Allocation Confirm to Exec

CCP Exec AllocRpt 2=Cancel 15 = Give-up

12 - Cancelled

Delete Allocation Error Confirm to Exec

CCP Exec AllocInstrctnAck 2=Cancel 17 = Give-up 5=Rejected by Intermediary

Delete Allocation Notification to Carry

CCP Carry

AllocRpt 2=Cancel 16 = Take-up

12 - Cancelled

5 Accept Allocation

Carry

CCP AllocInstrctn

0=New 18 = Take-up

Page 76: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 74

Event Message Message Identifier

Trans Typ (TransTyp)

Allocation Type (Typ)

Alloc Report Type (RptTyp)

Alloc Status (Stat)

Alloc Reversal Status (RvrslStat)

From To

Accept Allocation Confirm to Carry

CCP Carry

AllocRpt 0=New 16 = Take-up

9 = Claimed

Accept Allocation Error Confirm to Carry

CCP Carry

AllocInstrctnAck 0=New 18 = Take-up 5=Rejected by Intermediary

Accept Allocation Notification to Exec

CCP Exec AllocRpt 0=New 15 = Give-up

9 = Claimed

6 Refuse Allocation

Carry

CCP AllocInstrctn

0=New 19 = Refuse Take-up

Refuse Allocation Confirm to Carry

CCP Carry

AllocRpt 0=New 16 = Take-up

10 - Refused

Refuse Allocation Error Confirm to Carry

CCP Carry

AllocInstrctnAck 0=New 19 = Refuse Take-up

5=Rejected by Intermediary

Refuse Allocation Notification to Exec

CCP Exec AllocRpt 0=New 15 = Give-up

10 - Refused

7 Update Accepted Allocation

Carry

CCP AllocInstrctn

1=Replace

18 = Take-up

Update Accepted Allocation Confirm to Carry

CCP Carry

AllocRpt 1=Replace

16 = Take-up

9 = Claimed

Update Accepted Allocation Error Confirm to Carry

CCP Carry

AllocInstrctnAck 1=Replace

18 = Take-up 5=Rejected by Intermediary

8 Reversal Request from Carry

Carry

CCP AllocInstrctn 0=New 20 – Initiate Reversal

Reversal Request Confirm to Carry

CCP Carry

AllocRpt 0=New 17 - Reversal

14 - Reversal Pending

Reversal Request Error Confirm to Carry

CCP Carry

AllocInstrctnAck 0=New 20 - Initiate Reversal

5=Rejected by Intermediary

Reversal Request Notification to Exec

CCP Exec AllocRpt 0=New 18 - Alleged Reversal

14 - Reversal Pending

9 Accept Reversal Request from Exec

Exec CCP AllocInstrctn

0=New 21 - Claim Reversal

Accept Reversal Confirm to Exec

CCP Exec AllocRpt 0=New 18 – Alleged Reversal

7=Reversed 0 = Completed

Page 77: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 75

Event Message Message Identifier

Trans Typ (TransTyp)

Allocation Type (Typ)

Alloc Report Type (RptTyp)

Alloc Status (Stat)

Alloc Reversal Status (RvrslStat)

From To

Accept Reversal Error Confirm to Exec

CCP Exec AllocInstrctnAck 0=New 21 - Claim Reversal

5=Rejected by Intermediary

Accept Reversal Notification to Carry

CCP Carry

AllocRpt 0=New 17 - Reversal

7=Reversed 0 = Completed

10 Refuse Reversal Request from Exec

Exec CCP AllocInstrctn

0=New 22 = Refuse Reversal

Refuse Reversal Confirm to Exec

CCP Exec AllocRpt 0=New 18 – Alleged Reversal

9 = Claimed 1 = Refused

Refuse Reversal Error Confirm to Exec

CCP Exec AllocInstrctnAck 0=New 22 = Refuse Reversal

5=Rejected by Intermediary

Refuse Reversal Notification to Carry

CCP Carry

AllocRpt 0=New 17 - Reversal

9 = Claimed 1 = Refused

11 Cancel Reversal Request from Carry

Carry

CCP AllocInstrctn 2=Cancel 20 - Initiate Reversal

Accept Cancel Reversal Confirm to Carry

CCP Carry

AllocRpt 2=Cancel 17 - Reversal

9 = Claimed 2 = Cancelled

Cancel Reversal Error Confirm to Carry

CCP Carry

AllocInstrctnAck 2=Cancel 20 - Initiate Reversal

5=Rejected by Intermediary

Accept Cancel Reversal Notification to Exec

CCP Exec AllocRpt 2=Cancel 18 - Alleged Reversal

9 = Claimed 2 = Cancelled

12 Reversal Request from Exec

Exec CCP AllocInstrctn 0=New 20 - Initiate Reversal

Reversal Request Confirm to Exec

CCP Exec AllocRpt 0=New 17 - Reversal

14 - Reversal Pending

Reversal Request Error Confirm to Exec

CCP Exec AllocInstrctnAck 0=New 20 - Initiate Reversal

5=Rejected by Intermediary

Reversal Request Notification to Carry

CCP Carry

AllocRpt 0=New 18 - Alleged Reversal

14 - Reversal Pending

13 Accept Reversal Request from Carry

Carry

CCP AllocInstrctn

0=New 21 - Claim Reversal

Accept Reversal Confirm to Carry

CCP Carry

AllocRpt 0=New 18 – Alleged Reversal

7=Reversed 0 = Completed

Page 78: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 76

Event Message Message Identifier

Trans Typ (TransTyp)

Allocation Type (Typ)

Alloc Report Type (RptTyp)

Alloc Status (Stat)

Alloc Reversal Status (RvrslStat)

From To

Accept Reversal Error Confirm to Carry

CCP Carry

AllocInstrctnAck 0=New 21 - Claim Reversal

5=Rejected by Intermediary

Accept Reversal Notification to Exec

CCP Exec AllocRpt 0=New 17 - Reversal

7=Reversed 0 = Completed

14 Refuse Reversal Request from Carry

Carry

CCP AllocInstrctn

0=New 22 = Refuse Reversal

Refuse Reversal Confirm to Carry

CCP Carry

AllocRpt 0=New 18 – Alleged Reversal

9 = Claimed 1 = Refused

Refuse Reversal Error Confirm to Carry

CCP Carry

AllocInstrctnAck 0=New 22 = Refuse Reversal

5=Rejected by Intermediary

Refuse Reversal Notification to Exec

CCP Exec AllocRpt 0=New 17 - Reversal

9 = Claimed 1 = Refused

15 Cancel Reversal Request from Exec

Exec CCP AllocInstrctn 2=Cancel 20 - Initiate Reversal

Accept Cancel Reversal Confirm to Exec

CCP Exec AllocRpt 2=Cancel 17 - Reversal

9 = Claimed 2 = Cancelled

Cancel Reversal Error Confirm to Exec

CCP Exec AllocInstrctnAck 2=Cancel 20 - Initiate Reversal

5=Rejected by Intermediary

Accept Cancel Reversal Notification to Carry

CCP Carry

AllocRpt 2=Cancel 18 - Alleged Reversal

9 = Claimed 2 = Cancelled

16 Sub Allocate Claimed Allocation

Orig Carry

CCP AllocInstrctn 0=New 23 - Sub-allocate

Sub Allocate Accepted Allocation Error Confirm

CCP Orig Carry

AllocInstrctnAck 0=New 23 = Sub-allocate

5=Rejected by Intermediary

17 Cancel Sub Allocation

Orig Carry

CCP AllocInstrctn 2=Cancel 23 - Sub-allocate

Cancel Sub Allocation Error Confirm

CCP Orig Carry

AllocInstrctnAck 2=Cancel 23 = Sub-allocate

5=Rejected by Intermediary

18 Create Group Confirm

CCP Exec AllocInstrctnAlert 0=New 12=Incomplete Group OR 13=Complete Group

6=Allocation Pending

Page 79: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 77

Event Message Message Identifier

Trans Typ (TransTyp)

Allocation Type (Typ)

Alloc Report Type (RptTyp)

Alloc Status (Stat)

Alloc Reversal Status (RvrslStat)

From To

19 Update Group Confirm

CCP Exec AllocInstrctnAlert 1=Replace

12=Incomplete Group (Average Pricing only) OR 13=Complete Group

6=Allocation Pending

20 Complete Group Exec CCP AllocInstrctn 1=Replace

13=Complete Group

Complete Group Confirm

CCP Exec AllocInstrctnAlert 1=Replace

13=Complete Group

6=Allocation Pending

Complete Group Error Confirm

CCP Exec AllocInstrctnAck 1=Replace

13=Complete Group

5=Rejected by Intermediary

21 Un-Complete Group

Exec CCP AllocInstrctn 1=Replace

15=Un-complete Group

Un-Complete Group Confirm

CCP Exec AllocInstrctnAlert 1=Replace

12=Incomplete Group

6=Allocation Pending

Un-Complete Group Error Confirm

CCP Exec AllocInstrctnAck 1=Replace

15=Un-complete Group

5=Rejected by Intermediary

22 Cancel Incomplete Group

Exec CCP AllocInstrctn 2=Cancel 16 - Cancel Group

Cancel Incomplete Group Confirm

CCP Exec AllocInstrctnAlert 2=Cancel 16 - Cancel Group

6=Allocation Pending

Cancel Incomplete Group Error Confirm

CCP Exec AllocInstrctnAck 2=Cancel 16 - Cancel Group

5=Rejected by Intermediary

5.0 Revision History Version Date Author Description

1.0 3/05 NS Initial version of the document.

2.0 1/13/12 RP/NU Re-write of the document to use FIX 5.0 SP2.

2.1 2/24/12 RP

Removed non-applicable TrdType.

Added ParentAllocID to Allocation Report, and IndAllocID2 to Allocation Instruction Alert for sub-allocation. Clarified sub-allocation flow. Removed scenario Modify Sub Allocation.

Clarified un-marking trades.

2.2 6/8/12 RP

Clarified that for AllocInstrctnAlert, RefAllocID identifies the ID of an AllocInstrctn.

Added OrigTrdID2 to AllocInstrctnAck.

Page 80: Allocation Management API Message Specification

CME Front End Clearing

Allocation Management API 78

Further clarified sub-allocation flow.

Clarified that ReqQty is sent to the executing firm for average price allocations.

Added DiffPx to AllocInstrctnAlert and AllocRpt, and PxSubTyp to AllocInstrctnAlert to facilitate TAS and TAM allocations.

Added PxTyp to AllocInstrctnAlert to facilitate cabinet allocations.

Clarified that incomplete and complete groups can be updated; the incomplete case is for average pricing only.

Added support for party role value Executing Trader (12).

Clarified that un-marking the last trade in a group cancels the group.

Clarified that the clearing system does not trades for certain exchanges (NYMEX, COMEX, CMD, SX) when marked for give-up.

2.3 3/26/13 RP

Clarified message specification for product exchange, firm exchange, and hard coded values.

Added "Update Allocation on Pre-Claim by Carry Firm" scenario.

2.4 6/3/13 RP

Corrected typos.

Added KCB as an exchange.

Added AllocInstrctnAlert/Amt component.

Added Party Role for Previous Executing Firm and elaboration.