Allocation Management FIXML API - Submission and Usage Rules
Submission and usage rules include:
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
Allocations cannot be cancelled if the claiming firm accepted the allocation.
The executing firm may cancel the allocation if the claiming firm refused the allocation. This prevents the claiming firm from later claiming the allocation.
The claiming firm may claim an allocation if it was not cancelled. This includes refusing an allocation and later claiming it.
An executing firm cannot amend the allocation after the claiming firm claimed the allocation.
An executing firm may amend an allocation after the claiming firm refused it. The claiming firm may then claim the amended allocation.
Trades may not transition directly between give-up, average pricing, or cross-exchange give up. They must first be un-marked for allocation, then marked for allocation using the other methodology.
On a Trade Capture Report, setting the Allocation Indicator to Allocation Not Required (AllocInd=0) requires the Average Pricing Indicator set to No Average Pricing (AvgPxInd=0), or the AvgPxInd attribute be omitted; otherwise, the Trade Capture Report is rejected.
Give-Up Usage Rules
This list describes the API rules applicable to vanilla give-ups in the API.
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 cause the executing firm to be out of balance.
An executing firm cannot cancel a give-up group if it has claimed allocations.
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 a trade not be added to an existing allocation group.
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.
The executing firm cannot amend an allocation to change the instruction to override rollup.
The clearing system will not group any NYMEX, COMEX, or SX trades. When marked for give-up, the clearing system creates a new group for each of these trades. Additionally, firms can opt out of grouping; the clearing system creates a new group for each trade when the firm marks each trade for allocation.
Average Price Usage Rules
This list describes the applicable average pricing API rules.
Trades may not be un-marked for average price allocation or removed from an average price group if the group is complete.
To remove trades from a completed average price group, the executing firm must un-complete the group.
An executing firm cannot un-complete an average price group if the group contains claimed allocations.
Un-completing an average price group cancels all unclaimed allocations.
Trades may be moved from one average price group to another if both groups are incomplete.
The executing firm cannot allocate before completing an average price group.
The executing firm can only cancel an incomplete average price group.
Cancelling an average price group leaves the trade (if any) unmarked from the group, but the trades remain marked for average pricing.
Marking a trade for give-up allocation that was previously marked for average pricing requires the executing firm first un-mark the trade from average pricing and mark it for give-up.
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.
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.
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.
Sub-Allocation Usage Rules
This list describes all of the applicable sub-allocation API rules.
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.
If a sub-allocation is being average priced, an Average Price Group ID (AvgPxGrpID) must be specified.
Reversal Usage Rules
This list describes all the allocation reversal API rules.
A claiming firm must first claim an allocation before either party can reverse it.
Either the executing firm or the claiming firm can request a reversal.
A reversal, once refused, can later be accepted, provided the party that initiated the reversal has not cancelled it.
The party that initiates a reversal may cancel a reversal, but only if the other party has not accepted or refused it.
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.
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.
A trade may be marked for MOS and only partially allocated. The executing firm then keeps 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.
If a CME executing firm cancels an allocation pre-trade, the cancel may be ignored if SGX clearing has claimed or refused an allocation.
An SGX firm cannot initiate a reversal.
Cancelling a reversal is not currently supported.
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.
FIXML Message and Attribute Usage in Allocation Messages
Message Types
Message Type | Description | Message |
---|---|---|
Mark Trade for Give-up | Sent by the executing firm as a new trade or an amendment to a previously submitted trade. | TradeCaptureReport |
Mark Trade 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 |
Complete Average Price Group | Sent by the executing firm to complete an average price group. | AllocationInstruction |
Submit 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 | 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 | 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 | 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 | 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 |
Reversal Request Notification | Sent by the clearing system to notify the opposite side of the proposed reversal. | AllocationReport |
Accept a Reversal | Sent to the clearing system to accept or refuse the proposed reversal. | AllocationInstruction |
Reversal Acceptance 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 | 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 |
Allocation Identifiers
The API allows and provides the following identifiers when submitting and reporting allocations to the clearing system. Identifiers are provided by the submitter and assigned by the CME clearing system. All identifiers provided by a firm are reported back on all the subsequent acknowledgments 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. |
Reference ID | @RptRefID | Allocation Instruction Ack | Used by clearing system when responding to an Allocation Instruction. Contains the same value specified in ID for the Allocation Instruction. |
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 | 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. | |
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 | 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. |
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 | Total quantity being allocated by this message. |
Allocation Quantity | Alloc/@Qty | Allocation Instruction | 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. |
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. |
Grouping and Rollup Attributes
The following attributes indicate instructions pertaining to grouping and roll-up, which the executing firm uses to override default behavior.
Name | Attribute | Message | Usage |
---|---|---|---|
Allocation Group Instruction | RptSide/@AllocGrpInst | Trade Capture Report | 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. |
Allocation Rollup Instruction | Alloc/@AllocRollupInst | Allocation Instruction | 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. |
Allocation Rollup Instruction | RptSide/Alloc/@AllocRollupInst | Trade Capture 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. |
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 |
How was your Client Systems Wiki Experience? Submit Feedback
Copyright © 2024 CME Group Inc. All rights reserved.