The Allocation message provides the the ability to specify how an order or set of orders should be subdivided amongst one or more accounts.
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.
Orders involving Pre-Trade Allocation consist of the following steps:
� Buyside sends a New Order request message specifying one or more AllocAccount and AllocShares values within the repeating group designated by NoAllocs.
� Sellside sends Execution Report messages for the �New� and resulting fills.
� Post-Trade Allocation messaging takes place
The typical flow for Pre-Trade allocation is as follows:
|
à |
New Order-Single (OrderQty=35000, NoAllocs=2, AllocAccount=ACCT1, AllocShares=10000, AllocAccount=ACCT2, AllocShares=25000) |
|
|
ß |
Execution Report (ExecType = �0� [New] |
|
Institution |
|
|
Broker |
|
ß |
Execution Report (ExecType = �1�) [Partial Fill] Execution Report (ExecType = �2�) [Filled] (optional Execution Report (ExecType = �3�) [Done for day] |
|
|
|
|
|
|
Post-Trade Allocation Processing (see examples below) |
|
Post-Trade Allocation can be computed via one of two methods:
1. Using Average Price: Each AllocAccount has a single AllocAvgPx (e.g. US and European) (see examples 1-1, 2-1, 3-1)
2. Using Executed Price: Combination of each AllocAccount and AllocPrice (unique LastPx) (e.g. Japan) (see examples 1-2, 2-2, 3-2)
Post-Trade Allocation supports three different message flows:
1. Buyside initiated without Misc Fees (see examples 1-1 and 1-2)
The typical flow for US domestic trading (without MiscFees) is as follows:
|
à |
Allocation (AllocTransTyp=New) |
|
|
ß |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
Institution |
ß |
AllocationACK (AllocStatus=Accepted or Rejected) |
Broker |
|
à |
Settlement Instructions (optional) (SettlInstSource=Institution�s) |
|
|
ß |
Settlement Instructions (optional) (SettlInstSource=Broker�s) |
|
*Settlement Instructions may occur anywhere in the flow and may represent standing instructions.
2. Buyside-initiated with Misc Fee computation (see examples 2-1 and 2-2)
The typical flow for international trading (with MiscFees) is as follows:
|
à |
Allocation (AllocTransTyp=Preliminary, AllocAccounts provided without MiscFees or NetMoney) |
|
|
ß |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
Institution |
ß |
Allocation (AllocTransTyp=Calculated, MiscFees and NetMoney provided by AllocAccount) |
Broker |
|
à |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
à |
AllocationACK (AllocStatus=Accepted or Rejected) |
|
|
à |
Settlement Instructions (optional*) (SettlInstSource=Institution�s) |
|
|
ß |
Settlement Instructions (optional*) (SettlInstSource=Broker�s) |
|
*Settlement Instructions may occur anywhere in the flow and may represent standing instructions.
3. Sellside-initiated (see examples 3-1 and 3-2)
The typical flow for sellside-initiated (unsolicited by the buyside) is as follows:
|
ß |
Allocation (AllocTransTyp=Calculated without preliminary, MiscFees and NetMoney provided by AllocAccount) |
|
|
à |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
Institution |
à |
AllocationACK (AllocStatus=Accepted or Rejected) |
Broker |
|
à |
Settlement Instructions (optional*) (SettlInstSource=Institution�s) |
|
|
ß |
Settlement Instructions (optional*) (SettlInstSource=Broker�s) |
|
*Settlement Instructions may occur anywhere in the flow and may represent standing instructions.
Example 1-1: Buyside-initiated flow without MiscFee computation, using Average Price (all AllocAccounts with same AvgPx)
BUYSIDE |
|
SELLSIDE |
|
|
à |
New Order-Single |
|
|
ß |
Execution Report (ExecType = �0� [New] |
|
|
|
|
|
|
ß |
Execution Report (ExecType = �1�) [Partial Fill] Execution Report (ExecType = �2�) [Filled] (optional Execution Report (ExecType = �3�) [Done for day] |
|
Allocate |
|
|
|
|
à |
Allocation (AllocTransTyp=New) |
|
|
|
|
|
|
ß |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
ß |
AllocationACK (AllocStatus=Accepted or Rejected) |
|
Symbol |
B/S |
Mkt |
Order Message |
Execution Rpt Messages |
|
|
|
|
||||
|
|
|
Account |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
|
|
|
|
IBM |
Buy |
N |
|
520 |
20 |
300 |
100.00 |
3000 |
|
|
|
|
|
|
|
|
|
|
301 |
100.25 |
1000 |
|
|
|
|
|
|
|
|
|
|
302 |
100.00 |
3000 |
|
|
|
|
|
|
|
|
|
|
303 |
100.50 |
2000 |
|
|
|
|
Allocation Msg |
|
|
|
¯ |
|
|
|
|
|
|
||
Symbol |
B/S |
Mkt |
Order section |
AvgPx |
Repeating fields |
|
Repeating fields |
|||||
|
|
|
ID |
OrdID |
ClOrdID |
|
ExecID |
LastPx |
LastShares |
AllocAccount |
AllocShares |
Commission |
IBM |
Buy |
N |
999 |
520 |
20 |
100.1389 |
300 |
100.00 |
3000 |
F1 |
3000 |
150 |
|
|
|
|
|
|
|
301 |
100.25 |
1000 |
F2 |
3000 |
150 |
|
|
|
|
|
|
|
302 |
100.00 |
3000 |
F3 |
3000 |
150 |
|
|
|
|
|
|
|
303 |
100.50 |
2000 |
|
|
|
Example 1-2: Buyside-initiated flow without MiscFee computation, using Executed Price
BUYSIDE |
|
SELLSIDE |
|
|
à |
New Order-Single |
|
|
ß |
Execution Report (ExecType = �0� [New] |
|
|
|
|
|
|
ß |
Execution Report (ExecType = �1�) [Partial Fill] Execution Report (ExecType = �2�) [Filled] (optional Execution Report (ExecType = �3�) [Done for day] |
|
Allocate |
|
|
|
|
à |
Allocation (AllocTransTyp=New) |
|
|
|
|
|
|
ß |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
ß |
AllocationACK (AllocStatus=Accepted or Rejected) |
|
Symbol |
B/S |
Mkt |
Order Message |
Execution Rpt Messages |
|
|
|
|
||||
|
|
|
Account |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
|
|
|
|
IBM |
Buy |
N |
|
520 |
20 |
300 |
100.00 |
3000 |
|
|
|
|
|
|
|
|
|
|
301 |
100.25 |
1000 |
|
|
|
|
|
|
|
|
|
|
302 |
100.00 |
3000 |
|
|
|
|
|
|
|
|
|
|
303 |
100.50 |
2000 |
|
|
|
|
Allocation Msg |
|
|
|
¯ |
|
|
|
|
|
|||
Symbol |
B/S |
Mkt |
Order section |
Repeating fields |
Repeating fields |
|||||||
|
|
|
ID |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
AllocAccount |
AllocPrice |
AllocShares |
Commission |
IBM |
Buy |
N |
999 |
520 |
20 |
300 |
100.00 |
3000 |
F1 |
100.00 |
2000 |
100 |
|
|
|
|
|
|
301 |
100.25 |
1000 |
F1 |
100.25 |
1000 |
50 |
|
|
|
|
|
|
302 |
100.00 |
3000 |
F2 |
100.00 |
2000 |
100 |
|
|
|
|
|
|
303 |
100.50 |
2000 |
F2 |
100.50 |
1000 |
50 |
|
|
|
|
|
|
|
|
|
F3 |
100.00 |
2000 |
100 |
|
|
|
|
|
|
|
|
|
F3 |
100.50 |
1000 |
50 |
Example 2-1: Buyside-initiated flow with MiscFee computation, using Average Price (all AllocAccounts with same AvgPx)
BUYSIDE |
|
SELLSIDE |
|
|
à |
New Order-Single |
|
|
ß |
Execution Report (ExecType = �0� [New] |
|
|
|
|
|
|
ß |
Execution Report (ExecType = �1�) [Partial Fill] Execution Report (ExecType = �2�) [Filled] (optional Execution Report (ExecType = �3�) [Done for day] |
|
Allocate |
|
|
|
|
à |
Allocation (AllocTransTyp=Preliminary, AllocAccounts provided without MiscFees or NetMoney) |
|
|
ß |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
|
|
Commission/Fee Calc |
|
ß |
Allocation (AllocTransTyp=Calculated, MiscFees and NetMoney provided by AllocAccount) |
|
|
à |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
à |
AllocationACK (AllocStatus=Accepted or Rejected) |
|
Symbol |
B/S |
Mkt |
Order Message |
Execution Rpt Messages |
|
|
|
|
||||||||
|
|
|
Account |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
|
|
|
|
||||
HNS.L |
Buy |
L |
|
520 |
20 |
300 |
3.9809 |
100000 |
|
|
|
|
||||
|
|
|
|
|
|
301 |
3.9809 |
25000 |
|
|
|
|
||||
Allocation Msg |
|
|
¯ |
|
|
|
|
|
|
|||||||
Symbol |
B/S |
Mkt |
Order section |
Repeating fields |
Repeating fields |
|||||||||||
|
|
|
ID |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
AllocAccount |
AllocShares |
Commission |
Repeating fields (NoMiscFees=2) |
||||
HNS.L |
Buy |
L |
999 |
520 |
20 |
300 |
3.9809 |
100000 |
|
MiscFeeType |
MiscFeeAmt |
|||||
|
|
|
|
|
|
301 |
3.9809 |
25000 |
F1 |
42200 |
335.988 |
5 |
830.9699 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
6 |
.25 |
|||
|
|
|
|
|
|
|
|
|
F2 |
82800 |
652.937 |
5 |
1648.0926 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
6 |
.25 |
|||
Example 2-2: Buyside-initiated flow with MiscFee computation, using Executed Price
BUYSIDE |
|
SELLSIDE |
|
|
à |
New Order-Single |
|
|
ß |
Execution Report (ExecType = �0� [New] |
|
|
|
|
|
|
ß |
Execution Report (ExecType = �1�) [Partial Fill] Execution Report (ExecType = �2�) [Filled] (optional Execution Report (ExecType = �3�) [Done for day] |
|
Allocate |
|
|
|
|
à |
Allocation (AllocTransTyp=Preliminary, AllocAccounts provided without MiscFees or NetMoney) |
|
|
ß |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
|
|
Commission/Fee Calc |
|
ß |
Allocation (AllocTransTyp=Calculated, MiscFees and NetMoney provided by AllocAccount) |
|
|
à |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
à |
AllocationACK (AllocStatus=Accepted or Rejected) |
|
Symbol |
B/S |
Mkt |
Order Message |
Execution Rpt Messages |
|
|
|
|
|||||||||
|
|
|
Account |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
|
|
|
|
|||||
1234 |
Buy |
T |
|
520 |
20 |
300 |
1300 |
3000 |
|
|
|
|
|||||
|
|
|
|
|
|
301 |
1313 |
1000 |
|
|
|
|
|||||
|
|
|
|
|
|
302 |
1300 |
3000 |
|
|
|
|
|||||
|
|
|
|
|
|
303 |
1320 |
2000 |
|
|
|
|
|||||
Allocation Msg |
|
|
¯ |
|
|
|
|
|
|
||||||||
Symbol |
B/S |
Mkt |
Order section |
Repeating fields |
Repeating fields |
||||||||||||
|
|
|
ID |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
AllocAccount |
AllocPrice |
AllocShares |
Commission |
Repeating fields (NoMiscFees=1) |
||||
1234 |
Buy |
T |
999 |
520 |
20 |
300 |
1300 |
3000 |
|
MiscFeeType |
MiscFeeAmt |
||||||
|
|
|
|
|
|
301 |
1313 |
1000 |
F1 |
1300 |
2000 |
25061 |
9 |
1253 |
|||
|
|
|
|
|
|
302 |
1300 |
3000 |
F1 |
1313 |
1000 |
12656 |
9 |
632 |
|||
|
|
|
|
|
|
303 |
1320 |
2000 |
F2 |
1300 |
2000 |
25058 |
9 |
1252 |
|||
|
|
|
|
|
|
|
|
|
F2 |
1320 |
1000 |
12722 |
9 |
636 |
|||
|
|
|
|
|
|
|
|
|
F3 |
1300 |
2000 |
25058 |
9 |
1252 |
|||
|
|
|
|
|
|
|
|
|
F3 |
1320 |
1000 |
12722 |
9 |
636 |
|||
Note: This example�s values are for a Japanese Domestic Trade, and for actual use, you need to set any other required fields.
Example 3-1: Sellside-initiated flow, single Account, using Average Price
BUYSIDE |
|
SELLSIDE |
|
|
à |
New Order-Single |
|
|
ß |
Execution Report (ExecType = �0� [New] |
|
|
|
|
|
|
ß |
Execution Report (ExecType = �1�) [Partial Fill] Execution Report (ExecType = �2�) [Filled] (optional Execution Report (ExecType = �3�) [Done for day] |
|
Allocate |
|
|
|
|
|
|
Commission/Fee Calc |
|
ß |
Allocation (AllocTransTyp=Calculated without preliminary, MiscFees and NetMoney provided by AllocAccount) |
|
|
à |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
à |
AllocationACK (AllocStatus=Accepted or Rejected) |
|
Symbol |
B/S |
Mkt |
Order Message |
Execution Rpt Messages |
|
|
|
|
|||||
|
|
|
Account |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
|
|
|
|
|
IBM |
Buy |
N |
F1 |
520 |
20 |
300 |
1300 |
3000 |
|
|
|
|
|
|
|
|
|
|
|
301 |
1313 |
1000 |
|
|
|
|
|
|
|
|
|
|
|
302 |
1300 |
3000 |
|
|
|
|
|
|
|
|
|
|
|
303 |
1320 |
2000 |
|
|
|
|
|
Allocation Msg |
|
|
|
¯ |
|
|
|
|
|
|
|||
Symbol |
B/S |
Mkt |
Order section |
AvgPx |
Repeating fields |
|
Repeating fields |
||||||
|
|
|
ID |
OrdID |
ClOrdID |
|
ExecID |
LastPx |
LastShares |
AllocAccount |
AllocShares |
Commission |
|
IBM |
Buy |
N |
999 |
520 |
20 |
1305.889 |
300 |
1300 |
3000 |
F1 |
9000 |
113277 |
|
|
|
|
|
|
|
|
301 |
1313 |
1000 |
|
|
|
|
|
|
|
|
|
|
|
302 |
1300 |
3000 |
|
|
|
|
|
|
|
|
|
|
|
303 |
1320 |
2000 |
|
|
|
|
Example 3-2: Sellside-initiated flow, single Account, using Executed Price
BUYSIDE |
|
SELLSIDE |
|
|
à |
New Order-Single |
|
|
ß |
Execution Report (ExecType = �0� [New] |
|
|
|
|
|
|
ß |
Execution Report (ExecType = �1�) [Partial Fill] Execution Report (ExecType = �2�) [Filled] (optional Execution Report (ExecType = �3�) [Done for day] |
|
Allocate |
|
|
|
|
|
|
Commission/Fee Calc |
|
ß |
Allocation (AllocTransTyp=Calculated without preliminary, MiscFees and NetMoney provided by AllocAccount) |
|
|
à |
AllocationACK (AllocStatus=Received Not Yet Processed) |
|
|
à |
AllocationACK (AllocStatus=Accepted or Rejected) |
|
Symbol |
B/S |
Mkt |
Order Message |
Execution Rpt Messages |
|
|
|
|
|||||||||||||||||
|
|
|
Account |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
|
|
|
|
|||||||||||||
1234 |
Buy |
T |
F1 |
520 |
20 |
300 |
1300 |
3000 |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
301 |
1313 |
1000 |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
302 |
1300 |
3000 |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
303 |
1320 |
2000 |
|
|
|
|
|||||||||||||
Allocation Msg |
|
|
|
¯ |
|
|
|
|
|
|
|||||||||||||||
Symbol |
B/S |
Mkt |
Order section |
Repeating fields |
Repeating fields |
||||||||||||||||||||
|
|
|
ID |
OrdID |
ClOrdID |
ExecID |
LastPx |
LastShares |
AllocAccount |
AllocPrice |
AllocShares |
Commission |
Repeating fields (NoMiscFees=1) |
||||||||||||
1234 |
Buy |
T |
999 |
520 |
20 |
300 |
1300 |
3000 |
|
MiscFeeType |
MiscFeeAmt |
||||||||||||||
|
|
|
|
|
|
301 |
1313 |
1000 |
F1 |
1300 |
6000 |
61441 |
9 |
3072 |
|||||||||||
|
|
|
|
|
|
302 |
1300 |
3000 |
F1 |
1313 |
1000 |
10342 |
9 |
517 |
|||||||||||
|
|
|
|
|
|
303 |
1320 |
2000 |
F1 |
1320 |
2000 |
20796 |
9 |
1039 |
|||||||||||
Note: This example�s values are for a Japanese Domestic Trade, and for actual use, you need to set any other required fields.