FIX 4.4 : Allocation Instruction <J> message

Structure | Related Messages

Description

The Allocation Instruction <J> message provides the ability to specify how an order or set of orders should be subdivided amongst one or more accounts. In versions of FIX prior to version 4.4, this same message was known as the Allocation message. Note in versions of FIX prior to version 4.4, the allocation message was also used to communicate fee and expense details from the Sellside to the Buyside. This role has now been removed from the Allocation Instruction <J> and is now performed by the new (to version 4.4) Allocation Report <AS> and Confirmation <AK> messages. The Allocation Report <AS> message should be used for the Sell-side Initiated Allocation role as defined in previous versions of the protocol.

Note the response to the Allocation Instruction <J> message is the Allocation Instruction Ack <P> message. In versions of FIX prior to version 4.4, the Allocation Instruction Ack <P> message was known as the Allocation ACK 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 account(s) and their respective order quantities which make up the order. This is a regulatory requirement in certain markets and for certain types of securities.

In the context of bilateral (buyside to sellside) communication, the Buyside firm should be the "Initiator" of an Allocation Instruction <J> message and a Sellside firm would be the "Respondent". An Allocation Instruction <J> message can be submitted with AllocTransType <71> of New, Cancel or Replace. The AllocType <626> field indicates the type or purpose of the message:

It is possible either to specify, in the AllocSettlInstType <780> field, full settlement instruction details on the Allocation Instruction <J> message, 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:

  • Use default instructions
  • Derive the instructions from the parameters of the trade
  • Phone for instructions

General guidelines applicable to this message:

  • AllocID <70> should be unique for all Allocation messages with AllocTransType <71>=New.
  • When submitting Replace or Cancel AllocTransType <71> messages, the RefAllocID <72> and AllocCancReplaceReason <796> fields are required.
  • To reject an Allocation Instruction <J> message, an Allocation Instruction Ack <P> with AllocStatus <87> "Block level reject" or "Account level reject" should be used. Use of "Block level reject" means the entire message has been rejected (e.g. due to one or more of the orders not matching, average price mismatch, etc.). "Account level reject" is used when the block level matches successfully but one or more (or all) of the constituent account level details failed validation (e.g. account not found, incorrect MiscFees, etc.). 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 <P> message (a new NoAllocs <78> repeating group has been introduced for this purpose).
  • The correct response to an Allocation Instruction Ack <P> of status "Block level reject" is a new Allocation Instruction <J> with AllocTransType <71> 'New' (as the previous message has been rejected in entirety). In the case of an "Account level reject", either the original Allocation Instruction <J> should be cancelled (a new Allocation Instruction <J> message referencing the original in RefAllocID <72>, with AllocTransType <71> 'Cancel') and reinstated (a second new Allocation Instruction <J> message with AllocTransType <71> 'New'), or fully replaced (a new Allocation Instruction <J>, referencing the original in RefAllocID <72>, with AllocTransType <71> 'Replace'). Note a replacement allocation message (AllocTransType <71>='Replace') must contain all data for the replacement allocation message. It is the responsibility of the recipient of the Replace message to identify which items have been changed.
  • It is permissible (though not mandatory) for the Respondent to reject an Allocation Instruction <J> with AllocTransType <71> = 'Cancel' or 'Replace' if the Allocation Instruction ACK <P> of 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 Respondent is using the generation of the "Accepted" Allocation Instruction ACK <P> to move the allocation details into downstream processing (e.g. confirmation generation), in which case a subsequent cancellation of or amendment to the allocation details may require the details to be retrieved from the downstream process.
  • Where amendment or cancellation of an allocation instruction has taken place out of band (e.g. manually or via some other means outside FIX), an Allocation Report <AS> message can be sent from the recipient of the allocation/cancellation to confirm back to the initiator that the relevant action has taken place.
  • Where settling in markets where multiple alternative settlement locations exist, it is recommended that the settlement location (equivalent to ISO15022 'PSET' field) be identified on each allocation detail within the NoAllocs <78> repeating group. A <NestedParties> component block is provided which can be used for this purpose.

The allocation message contains repeating fields for each order, sub-account and individual execution. The repeating fields are shown in the message Structure below indented with the => symbol. The field's relative position within the repeating group in the message is important. For example, each instance of allocation must be in the order as shown in the message definition below.

  • The total quantity allocated must equal the Quantity <53> value*. If present, the total quantity in the execution section must also be equal to this value. *Note that the total quantity of the allocation does not necessarily have to equal the total quantity of the orders being allocated. Good examples of where this does not necessarily take place are GT orders, especially where multi-day average pricing is taking place (refer to the 'Equities' section of Volume 7 for more details on these flows). 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 equal the Quantity <53> value.
  • The number of sub-account instances is indicated in NoAllocs <78>.
  • 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:
    • By identifying the number of orders in the NoOrders <73> field and each individual order in the OrderID <37> fields. The AllocNoOrdersType <857> field is used to denote that this is happening and takes value "1=Explicit list provided". 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, 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.
    • By stating that an unspecified group of orders is to be combined. The NoOrders <73> field in this case is left blank. The AllocNoOrdersType <857> field is set to "0=Not specified" to specify that this is happening. Note use of this approach is only recommended where either the number of orders being booked is extremely large or some kind of aggregation rule is being used.
  • 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.

See Appendix K: Example Usage of Allocations and Ready-To-Book Messaging for more examples and details.

Note: Req'd = "Y*" indicates that the field is not required for AllocTransType <71>='Cancel'

Note: Req'd = "Y**" indicates that the field is not required for AllocTransType <71>='Cancel', nor is it required for AllocType <626>="Ready-To-Book " or AllocType <626>="Warehouse instruction.

Structure

Tag Field Name Req'd Comments
<MessageHeader> Y MsgType <35> = J
70 AllocID Y

Unique identifier for this Allocation Instruction <J> message

71 AllocTransType Y

i.e. New, Cancel, Replace

626 AllocType Y

Specifies the purpose or type of Allocation message

793 SecondaryAllocID N

Optional second identifier for this allocation instruction (need not be unique)

72 RefAllocID N

Required for AllocTransType <71> = Replace or Cancel

796 AllocCancReplaceReason N

Required for AllocTransType <71> = Replace or Cancel

Gives the reason for replacing or cancelling the allocation instruction

808 AllocIntermedReqType N

Required if AllocType <626> = 8 (Request to Intermediary)

Indicates status that is requested to be transmitted to counterparty by the intermediary (i.e. clearing house)

196 AllocLinkID N

Can be used to link two different Allocation messages (each with unique AllocID <70>) together, i.e. for F/X 'Netting' or 'Swaps'

197 AllocLinkType N

Can be used to link two different Allocation messages and identifies the type of link. Required if AllocLinkID <196> is specified.

466 BookingRefID N

Can be used with AllocType <626>=" Ready-To-Book "

857 AllocNoOrdersType Y

Indicates how the orders being booked and allocated by this message are identified, i.e. by explicit definition in the NoOrders <73> group or not.

73 NoOrders N

Indicates number of orders to be combined for allocation. If order(s) were manually delivered set to 1 (one).Required when AllocNoOrdersType <857> = 1

=> 11 ClOrdID N

Order ID assigned by client if order(s) were electronically delivered and executed. If order(s) were manually delivered this field should contain string 'MANUAL'.Note where an order has undergone one or more cancel/replaces, this should be the ClOrdID <11> of the most recent version of the order

Required when NoOrders <73> > 0 and must be the first repeating field in the group.

=> 37 OrderID N
=> 198 SecondaryOrderID N

Can be used to provide order id used by exchange or executing system.

=> 526 SecondaryClOrdID N
=> 66 ListID N

Required for List Orders.

=> Component Block - <NestedParties2> N

Insert here the set of "<NestedParties2>" fields

This is used to identify the executing broker for step in/give in trades

=> 38 OrderQty N
=> 799 OrderAvgPx N

Average price for this order

=> 800 OrderBookingQty N

Quantity of this order that is being booked out by this message (will be equal to or less than this order's OrderQty <38>)

Note that the sum of the OrderBookingQty <800> values in this repeating group must equal the total quantity being allocated (in Quantity <53> field)

124 NoExecs N

Indicates number of individual execution repeating group entries to follow. Absence of this field indicates that no individual execution entries are included. Primarily used to support step-outs.

=> 32 LastQty N

Amount of quantity (e.g. number of shares) in individual execution. Required if NoExecs <124> > 0

=> 17 ExecID N
=> 527 SecondaryExecID N
=> 31 LastPx N

Price of individual execution. Required if NoExecs <124> > 0

=> 669 LastParPx N

Last price expressed in percent-of-par. Conditionally required for Fixed Income trades when LastPx <31> is expressed in Yield, Spread, Discount or any other price type (see PriceType <423>)

=> 29 LastCapacity N

Used to identify whether the trade was executed on an agency or principal basis.

570 PreviouslyReported N
700 ReversalIndicator N
574 MatchType N
54 Side Y
Component Block - <Instrument> Y

Insert here the set of "<Instrument>" (symbology) fields

Component Block - <InstrumentExtension> N

Insert here the set of "<InstrumentExtension>" fields

Component Block - <FinancingDetails> N

Insert here the set of "<FinancingDetails>" fields

711 NoUnderlyings N
=> Component Block - <UnderlyingInstrument> N

Insert here the set of "<UnderlyingInstrument>" fields

Required if NoUnderlyings <711> > 0

555 NoLegs N
=> Component Block - <InstrumentLeg> N

Insert here the set of "<InstrumentLeg>" fields

Required if NoLegs <555> > 0

53 Quantity Y

Total quantity (e.g. number of shares) allocated to all accounts, or that is Ready-To-Book

854 QtyType N
30 LastMkt N

Market of the executions.

229 TradeOriginationDate N
336 TradingSessionID N
625 TradingSessionSubID N
423 PriceType N
6 AvgPx Y

For F/X orders, should be the 'all-in' rate (spot rate adjusted for forward points).

860 AvgParPx N
Component Block - <SpreadOrBenchmarkCurveData> N

Insert here the set of "<SpreadOrBenchmarkCurveData>" fields

15 Currency N

Currency of AvgPx <6>. Should be the currency of the local market or exchange where the trade was conducted.

74 AvgPxPrecision N

Absence of this field indicates that default precision arranged by the broker/institution is to be used

Component Block - <Parties> N

Insert here the set of "<Parties>" (firm identification) fields

75 TradeDate Y
60 TransactTime N

Date/time when allocation is generated

63 SettlType N
64 SettlDate N

Takes precedence over SettlType <63> value and conditionally required/omitted for specific SettlType <63> values.

775 BookingType N

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 GrossTradeAmt N

Expressed in same currency as AvgPx <6>. Sum of (AllocQty <80> * AllocAvgPx <153> or AllocPrice <366>).

238 Concession N
237 TotalTakedown N
118 NetMoney N

Expressed in same currency as AvgPx <6>. Sum of AllocNetMoney <154>.

77 PositionEffect N
754 AutoAcceptIndicator N

Indicates if Allocation has been automatically accepted on behalf of the Carry Firm by the Clearing House

58 Text N
354 EncodedTextLen N

Must be set if EncodedText <355> field is specified and must immediately precede it.

355 EncodedText N

Encoded (non-ASCII characters) representation of the Text <58> field in the encoded format specified via the MessageEncoding <347> field.

157 NumDaysInterest N

Applicable for Convertible Bonds and fixed income

158 AccruedInterestRate N

Applicable for Convertible Bonds and fixed income

159 AccruedInterestAmt N

Sum of AllocAccruedInterestAmt <742> within repeating group.

540 TotalAccruedInterestAmt N

(Deprecated) use AccruedInterestAmt <159>. Sum of AccruedInterestAmt within repeating group.

738 InterestAtMaturity N
920 EndAccruedInterestAmt N

For repurchase agreements the accrued interest on termination.

921 StartCash N

For repurchase agreements the start (dirty) cash consideration

922 EndCash N

For repurchase agreements the end (dirty) cash consideration

650 LegalConfirm N
Component Block - <Stipulations> N
Component Block - <YieldData> N
892 TotNoAllocs N

Indicates total number of allocation groups (used to support fragmentation). Must equal the sum of all NoAllocs <78> values across all message fragments making up this allocation instruction.

Only required where message has been fragmented.

893 LastFragment N

Indicates whether this is the last fragment in a sequence of message fragments.

Only required where message has been fragmented.

78 NoAllocs Y**

Indicates number of allocation groups to follow.

Not required for AllocTransType <71>='Cancel'

Not required for AllocType <626>= "Ready-To-Book" or "Warehouse instruction".

=> 79 AllocAccount Y**

May be the same value as BrokerOfCredit <92> if ProcessCode <81> is step-out or soft-dollar step-out and Institution does not wish to disclose individual account breakdowns to the ExecBroker <76>. Required if NoAllocs <78> > 0. Must be first field in repeating group.

Not required for AllocTransType <71>='Cancel'

Not required for AllocType <626>= "Ready-To-Book" or "Warehouse instruction".

=> 661 AllocAcctIDSource N
=> 573 MatchStatus N
=> 366 AllocPrice N

Used when performing 'executed price' vs. 'average price' allocations (e.g. Japan). AllocAccount <79> plus AllocPrice <366> form a unique Allocs entry. Used in lieu of AllocAvgPx <153>.

=> 80 AllocQty Y**

Not required for AllocTransType <71>='Cancel'

Not required for AllocType <626>= "Ready-To-Book" or "Warehouse instruction".

=> 467 IndividualAllocID N
=> 81 ProcessCode N
=> Component Block - <NestedParties> N

Insert here the set of "<NestedParties>" (firm identification "nested" within additional repeating group) fields

Used for NestedPartyRole <538>=BrokerOfCredit, ClientID, Settlement location (PSET), etc.

Note: this field can be used for settlement location (PSET) information.

=> 208 NotifyBrokerOfCredit N
=> 209 AllocHandlInst N
=> 161 AllocText N

Free format text field related to this AllocAccount <79>

=> 360 EncodedAllocTextLen N

Must be set if EncodedAllocText <361> field is specified and must immediately precede it.

=> 361 EncodedAllocText N

Encoded (non-ASCII characters) representation of the AllocText <161> field in the encoded format specified via the MessageEncoding <347> field.

=> Component Block - <CommissionData> N

Insert here the set of "<CommissionData>" fields

=> 153 AllocAvgPx N

AvgPx <6> for this AllocAccount <79>. For F/X orders, should be the 'all-in' rate (spot rate adjusted for forward points) for this allocation. For Fixed Income always express value as "percent of par".

=> 154 AllocNetMoney N

NetMoney <118> for this AllocAccount <79>

((AllocQty <80> * AllocAvgPx <153>) - Commission <12> - sum of MiscFeeAmt <137> + AccruedInterestAmt <159>) if a Sell

((AllocQty <80> * AllocAvgPx <153>) + Commission <12> + sum of MiscFeeAmt <137> + AccruedInterestAmt <159>) if a Buy

=> 119 SettlCurrAmt N

(Deprecated) Replaced by AllocSettlCurrAmt <737>

AllocNetMoney <154> in SettlCurrency <120> for this AllocAccount <79> if SettlCurrency <120> is different from 'overall' Currency <15>

=> 737 AllocSettlCurrAmt N

AllocNetMoney <154> in AllocSettlCurrency <736> for this AllocAccount <79> if AllocSettlCurrency <736> is different from 'overall' Currency <15>

=> 120 SettlCurrency N

(Deprecated) Replaced by AllocSettlCurrency <736>

SettlCurrency <120> for this AllocAccount <79> if different from 'overall' Currency <15>. Required if SettlCurrAmt <119> is specified.

=> 736 AllocSettlCurrency N

AllocSettlCurrency <736> for this AllocAccount <79> if different from 'overall' Currency <15>. Required if AllocSettlCurrAmt <737> is specified.

=> 155 SettlCurrFxRate N

Foreign exchange rate used to compute AllocSettlCurrAmt <737> from Currency <15> to AllocSettlCurrency <736>

=> 156 SettlCurrFxRateCalc N

Specifies whether the SettlCurrFxRate <155> should be multiplied or divided

=> 742 AllocAccruedInterestAmt N

Applicable for Convertible Bonds and fixed income

=> 741 AllocInterestAtMaturity N

Applicable for securities that pay interest in lump-sum at maturity

=> 136 NoMiscFees N

Required if any miscellaneous fees are reported. Indicates number of repeating entries. Repeating group within Alloc repeating group.

** Nested Repeating Group follows **

=> => 137 MiscFeeAmt N

Required if NoMiscFees <136> > 0

=> => 138 MiscFeeCurr N
=> => 139 MiscFeeType N

Required if NoMiscFees <136> > 0

=> => 891 MiscFeeBasis N
=> 576 NoClearingInstructions N

** Nested Repeating Group follows **

=> => 577 ClearingInstruction N

Required if NoClearingInstructions <576> > 0

=> 635 ClearingFeeIndicator N
=> 780 AllocSettlInstType N

Used to indicate whether settlement instructions are provided on this message, and if not, how they are to be derived.

Absence of this field implies use of default instructions.

=> Component Block - <SettlInstructionsData> N

Insert here the set of "<SettlInstructionsData>" fields

Used to communicate settlement instructions for this AllocAccount <79> detail. Required if AllocSettlInstType <780> = 2 or 3.

<MessageTrailer> Y

 

Related Messages