This message used to to specify how an order or set of orders should be subdivided amongst one or more accounts. Prior to FIX 4.4, this message used the name "Allocation", and was also used to communicate fee and expense details from the sell-side to the buy-side. This role has now been removed from and is now performed by Allocation Report <35=AS> and Confirmation <35=AK>. The Allocation Report <35=AS> message should be used for the sell-side-initiated allocation role as defined in previous versions of the protocol.
The response to this message is the Allocation Instruction Ack <35=P> message.
Allocation is typically communicated post-trade, after fills have been received and processed. It can, however, also be communicated pre-trade, at the time the order is being placed, to specify the accounts and their respective order quantities which make up the order. This is a regulatory requirement in certain markets and for certain types of securities.
This message can be submitted with AllocTransType (71) = "new", "cancel" or "replace". The AllocType (626) field indicates the type or purpose of the message:
AllocSettlInstType (780) is used to specify full settlement instruction details, to provide a reference to a settlement instruction held on a database of such instructions or to instruct the receiving party to perform one of the following actions:
AllocID (70) should be unique for all messages with AllocTransType (71) = "new".
When AllocTransType (71) = "replace" or "cancel", RefAllocID (72) and AllocCancReplaceReason (796) are required.
To reject an Allocation Instruction, an Allocation Instruction Ack <35=P> with AllocStatus (87) = "'Block-level reject" or "Account-level reject" should be used. Block-level reject is used to reject the entire message, e.g. due to one or more of the orders not matching. An account-level reject is used when the block-level matches successfully but one or more of the constituent account-level details failed validation, e.g. the account was not found. In the latter case, the rejecting party can optionally notify the instructing party of those allocation details that are being rejected by listing the offending account IDs in the Allocation Instruction Ack <35=P>. AllocGrp exists for this purpose.
The correct response to a block-level reject Allocation Instruction Ack <35=P> is a new Allocation Instruction with AllocTransType (71) = "new", as the previous message has been rejected in entirety. In the case of an account-level reject, either:
Optionally, an Allocation Instruction with AllocTransType (71) = "cancel" or "replace" can be rejected if an Allocation Instruction Ack <35=P> with status = "accepted" has already been sent. Manual communication would then be required to effect the required changes. This approach would generally be required where the generation of the accepted Allocation Instruction Ack <35=P> is used to move the allocation details into downstream processing, e.g. confirmation generation. In which case, a subsequent cancellation or amendment may require the details to be retrieved from the downstream process.
Where an amendment or cancellation of an Allocation Instruction has taken place out outside of FIX, an Allocation Report <35=AS> message can be sent to confirm that the relevant action has taken place.
Where settling in markets where multiple alternative settlement locations exist, it is recommended that the settlement location be specified on each allocation detail within the AllocGrp component. A NestedParties component block exists for this purpose.
Quantity (53) must equal the total quantity allocated. If present, the total quantity in the execution section must also be equal to this value. The total quantity of the allocation does not necessarily have to equal the total quantity of the orders being allocated. For example in good-til (GT) orders, especially where multi-day average pricing is taking place. The quantity of each order being booked must also be specified on the message. This will be equal to the order quantity if the entire order is being booked, though can be less if only part of the order is being booked. The sum of the order booking quantities must be equal to Quantity (53).
The number of sub-account instances is indicated in the AllocGrp component.
Multiple orders can be combined for allocation or for AllocType (626) = "Ready-To-Book" or for AllocType (626) = "Warehouse instruction". Note that combined orders must refer to the same instrument and have the same trade date, settlement date and side. The identification of the orders to be combined can be achieved in one of two ways:
Multiple executions can be combined for allocation by identifying the number of executions in the NoExecs (124) field and each individual execution in the ExecID (17) fields. Combined executions must refer to the same instrument, trade date, settlement date and side.
Except where AllocTransType (71) = 'Cancel' or where AllocNoOrdersType (857) = "Not specified", the list of orders being booked or allocated must be specified by using their ClOrdID (11). If any orders were handled outside FIX, the ClOrdID (11) must be set to 'MANUAL'. Regardless of whether the orders were handled within or outside FIX, and where the orders are specified, the order quantity and average price must also be specified for each order. This is to assist in validating the message and, for manual orders, to help identify the correct orders to book.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
Component | ||||
70 | String | Unique identifier for this allocation instruction message | ||
2758 | String | May be used to link to a previously submitted AllocationInstructionAlertRequest(35=DU) message | ||
71 | Char Enum | |||
626 | Int Enum | Specifies the purpose or type of Allocation message | ||
793 | String | Optional second identifier for this allocation instruction (need not be unique) | ||
72 | String | Required for AllocTransType = Replace or Cancel | ||
796 | Int Enum | Required for AllocTransType = Replace or Cancel | ||
808 | Int Enum | Required if AllocType = 8 (Request to Intermediary) | ||
196 | String | Can be used to link two different Allocation messages (each with unique AllocID) together, i.e. for F/X "Netting" or "Swaps" | ||
197 | Int Enum | Can be used to link two different Allocation messages and identifies the type of link. Required if AllocLinkID is specified | ||
1730 | String | Group identifier assigned by the clearinghouse | ||
1728 | String | Group identifier assigned by the firm | ||
466 | String | Can be used with AllocType=" Ready-To-Book " | ||
857 | Int Enum | Indicates how the orders being booked and allocated by an AllocationInstruction or AllocationReport message are identified, e.g. by explicit definition in the OrdAllocGrp or ExecAllocGrp components, or not identified explicitly | ||
Component | Indicates number of orders to be combined for allocation. If order(s) were manually delivered set to 1 (one).Required when AllocNoOrdersType = 1 | |||
Component | Indicates number of individual execution or trade entries. Absence indicates that no individual execution or trade entries are included. Primarily used to support step-outs | |||
570 | Boolean Enum | |||
700 | Boolean | |||
574 | String Enum | |||
54 | Char Enum | |||
Component | For NDFs fixing date and time can be optionally specified using MaturityDate and MaturityTime | |||
Component | ||||
Component | ||||
Component | ||||
Component | ||||
53 | Quantity | Total quantity (e.g. number of shares) allocated to all accounts, or that is Ready-To-Book | ||
854 | Int Enum | |||
2974 | String | May be used as an alternative to attribute based subgrouping | ||
30 | Exchange | Market of the executions | ||
229 | LocalMktDate | |||
336 | String Enum | |||
625 | String Enum | |||
423 | Int Enum | |||
Component | ||||
6 | Price | For FX orders, should be the "all-in" rate (spot rate adjusted for forward points), expressed in terms of Currency(15) | ||
860 | Price | |||
Component | ||||
15 | Currency | Currency of AvgPx. Should be the currency of the local market or exchange where the trade was conducted | ||
2897 | String Enum | |||
74 | Int | Absence of this field indicates that default precision arranged by the broker/institution is to be used | ||
2795 | Int Enum | |||
Component | ||||
75 | LocalMktDate | |||
60 | UTCTimestamp | Date/time when allocation is generated | ||
63 | String Enum | |||
64 | LocalMktDate | Takes precedence over SettlType value and conditionally required/omitted for specific SettlType values | ||
775 | Int Enum | Method for booking. Used to provide notification that this is to be booked out as an OTC derivative (e.g. CFD or similar). Absence of this field implies regular booking | ||
381 | Amount | Expressed in same currency as AvgPx(6). (Quantity(53) * AvgPx(6) or AvgParPx(860)) or sum of (AllocQty(80) * AllocAvgPx(153) or AllocPrice(366)). For Fixed Income, AvgParPx(860) is used when AvgPx(6) is not expressed as "percent of par" price | ||
238 | Amount | |||
237 | Amount | |||
118 | Amount | Expressed in same currency as AvgPx. Sum of AllocNetMoney | ||
77 | Char Enum | |||
754 | Boolean | Indicates if Allocation has been automatically accepted on behalf of the Take-up Firm by the Clearing House | ||
58 | String | |||
354 | Length | Must be set if EncodedText field is specified and must immediately precede it | ||
355 | Data | Encoded (non-ASCII characters) representation of the Text field in the encoded format specified via the MessageEncoding field | ||
157 | Int | Applicable for Convertible Bonds and fixed income | ||
158 | Percentage | Applicable for Convertible Bonds and fixed income | ||
159 | Amount | Applicable for Convertible Bonds and fixed income | ||
540 | Amount | |||
738 | Amount | |||
920 | Amount | For repurchase agreements the accrued interest on termination | ||
921 | Amount | For repurchase agreements the start (dirty) cash consideration | ||
922 | Amount | For repurchase agreements the end (dirty) cash consideration | ||
650 | Boolean Enum | |||
Component | ||||
Component | ||||
Component | ||||
Component | ||||
892 | Int | Indicates total number of allocation groups (used to support fragmentation). Must equal the sum of all NoAllocs values across all message fragments making up this allocation instruction | ||
893 | Boolean Enum | Indicates whether this is the last fragment in a sequence of message fragments. Only required where message has been fragmented | ||
Component | Conditionally required except when AllocTransType = Cancel, or when AllocType = "Ready-to-book" or "Warehouse instruction" | |||
819 | Int Enum | Indicates if an allocation is to be average priced. Is also used to indicate if average price allocation group is complete or incomplete | ||
1731 | String | Firm designated group identifier for average pricing | ||
715 | LocalMktDate | Indicates Clearing Business Date for which transaction will be settled | ||
828 | Int Enum | Indicates trade type of allocation. May be used as an alternative to AllocGroupSubQtyID(2974) for subgrouping | ||
829 | Int Enum | Indicates trade subtype of allocation | ||
855 | Int Enum | |||
2896 | Int Enum | |||
1390 | Int Enum | May be used as an alternative to AllocGroupSubQtyID(2974) for subgrouping | ||
1031 | MultipleStringValue Enum | May be used as an alternative to AllocGroupSubQtyID(2974) for subgrouping | ||
1937 | Int Enum | |||
2374 | String | |||
2372 | Length | Must be set if EncodedTradeContinuationText(2371) field is specified and must immediately precede it | ||
2371 | Data | Encoded (non-ASCII characters) representation of the TradeContinuationText(2374) field in the encoded format specified via the MessageEncoding(347) field | ||
582 | Int Enum | Indicates CTI of original trade marked for allocation | ||
578 | String | Indicates input source of original trade marked for allocation | ||
442 | Char Enum | Indicates MultiLegReportType of original trade marked for allocation | ||
1011 | String | Used to identify the event or source which gave rise to a message | ||
991 | Price | Specifies the rounded price to quoted precision | ||
Component | ||||
1430 | Char Enum | Used to identify on what kind of venue the trade originated when communicating with a party that may not have access to all trade details, e.g. a clearing organization | ||
2334 | String | Conditionally required when RefRiskLimitCheckIDType(2335) is specified | ||
2335 | Int Enum | Conditionally required when RefRiskLimitCheckID(2334) is specified | ||
2343 | Int Enum | |||
Component |