How are executions allocated when an order receives a partial fill because an insufficient quantity is available to complete the allocation of shares/contracts to sub-accounts?
Overview:
From time-to-time, one may experience an allocation order which is partially executed and is canceled prior to being completed (i.e. market closes, contract expires, halts due to news, prices move in an unfavorable direction, etc.). In such cases, IB determines which customers (who were originally included in the order group and/or profile) will receive the executed shares/contracts. The methodology used by IB to impartially determine who receives the shares/contacts in the event of a partial fill is described in this article.
Background:
Before placing an order CTAs and FAs are given the ability to predetermine the method by which an execution is to be allocated amongst client accounts. They can do so by first creating a group (i.e. ratio/percentage) or profile (i.e. specific amount) wherein a distinct number of shares/contracts are specified per client account (i.e. pre-trade allocation). These amounts can be prearranged based on certain account values including the clients’ Net Liquidation Total, Available Equity, etc., or indicated prior to the order execution using Ratios, Percentages, etc. Each group and/or profile is generally created with the assumption that the order will be executed in full. However, as we will see, this is not always the case. Therefore, we are providing examples that describe and demonstrate the process used to allocate partial executions with pre-defined groups and/or profiles and how the allocations are determined.
Here is the list of allocation methods with brief descriptions about how they work.
· AvailableEquity
Use sub account’ available equality value as ratio.
· NetLiq
Use subaccount’ net liquidation value as ratio
· EqualQuantity
Same ratio for each account
· PctChange1:Portion of the allocation logic is in Trader Workstation (the initial calculation of the desired quantities per account).
· Profile
The ratio is prescribed by the user
· Inline Profile
The ratio is prescribed by the user.
· Model1:
Roughly speaking, we use each account NLV in the model as the desired ratio. It is possible to dynamically add (invest) or remove (divest) accounts to/from a model, which can change allocation of the existing orders.
Basic Examples:
Details:
CTA/FA has 3-clients with a predefined profile titled “XYZ commodities” for orders of 50 contracts which (upon execution) are allocated as follows:
Account (A) = 25 contracts
Account (B) = 15 contracts
Account (C) = 10 contracts
Example #1:
CTA/FA creates a DAY order to buy 50 Sept 2016 XYZ future contracts and specifies “XYZ commodities” as the predefined allocation profile. Upon transmission at 10 am (ET) the order begins to execute2but in very small portions and over a very long period of time. At 2 pm (ET) the order is canceled prior to being executed in full. As a result, only a portion of the order is filled (i.e., 7 of the 50 contracts are filled or 14%). For each account the system initially allocates by rounding fractional amounts down to whole numbers:
Account (A) = 14% of 25 = 3.5 rounded down to 3
Account (B) = 14% of 15 = 2.1 rounded down to 2
Account (C) = 14% of 10 = 1.4 rounded down to 1
To Summarize:
A: initially receives 3 contracts, which is 3/25 of desired (fill ratio = 0.12)
B: initially receives 2 contracts, which is 2/15 of desired (fill ratio = 0.134)
C: initially receives 1 contract, which is 1/10 of desired (fill ratio = 0.10)
The system then allocates the next (and final) contract to an account with the smallest ratio (i.e. Account C which currently has a ratio of 0.10).
A: final allocation of 3 contracts, which is 3/25 of desired (fill ratio = 0.12)
B: final allocation of 2 contracts, which is 2/15 of desired (fill ratio = 0.134)
C: final allocation of 2 contract, which is 2/10 of desired (fill ratio = 0.20)
The execution(s) received have now been allocated in full.
Example #2:
CTA/FA creates a DAY order to buy 50 Sept 2016 XYZ future contracts and specifies “XYZ commodities” as the predefined allocation profile. Upon transmission at 11 am (ET) the order begins to be filled3 but in very small portions and over a very long period of time. At 1 pm (ET) the order is canceled prior being executed in full. As a result, only a portion of the order is executed (i.e., 5 of the 50 contracts are filled or 10%).For each account, the system initially allocates by rounding fractional amounts down to whole numbers:
Account (A) = 10% of 25 = 2.5 rounded down to 2
Account (B) = 10% of 15 = 1.5 rounded down to 1
Account (C) = 10% of 10 = 1 (no rounding necessary)
To Summarize:
A: initially receives 2 contracts, which is 2/25 of desired (fill ratio = 0.08)
B: initially receives 1 contract, which is 1/15 of desired (fill ratio = 0.067)
C: initially receives 1 contract, which is 1/10 of desired (fill ratio = 0.10)
The system then allocates the next (and final) contract to an account with the smallest ratio (i.e. to Account B which currently has a ratio of 0.067).
A: final allocation of 2 contracts, which is 2/25 of desired (fill ratio = 0.08)
B: final allocation of 2 contracts, which is 2/15 of desired (fill ratio = 0.134)
C: final allocation of 1 contract, which is 1/10 of desired (fill ratio = 0.10)
The execution(s) received have now been allocated in full.
Example #3:
CTA/FA creates a DAY order to buy 50 Sept 2016 XYZ future contracts and specifies “XYZ commodities” as the predefined allocation profile. Upon transmission at 11 am (ET) the order begins to be executed2 but in very small portions and over a very long period of time. At 12 pm (ET) the order is canceled prior to being executed in full. As a result, only a portion of the order is filled (i.e., 3 of the 50 contracts are filled or 6%). Normally the system initially allocates by rounding fractional amounts down to whole numbers, however for a fill size of less than 4 shares/contracts, IB first allocates based on the following random allocation methodology.
In this case, since the fill size is 3, we skip the rounding fractional amounts down.
For the first share/contract, all A, B and C have the same initial fill ratio and fill quantity, so we randomly pick an account and allocate this share/contract. The system randomly chose account A for allocation of the first share/contract.
To Summarize3:
A: initially receives 1 contract, which is 1/25 of desired (fill ratio = 0.04)
B: initially receives 0 contracts, which is 0/15 of desired (fill ratio = 0.00)
C: initially receives 0 contracts, which is 0/10 of desired (fill ratio = 0.00)
Next, the system will perform a random allocation amongst the remaining accounts (in this case accounts B & C, each with an equal probability) to determine who will receive the next share/contract.
The system randomly chose account B for allocation of the second share/contract.
A: 1 contract, which is 1/25 of desired (fill ratio = 0.04)
B: 1 contract, which is 1/15 of desired (fill ratio = 0.067)
C: 0 contracts, which is 0/10 of desired (fill ratio = 0.00)
The system then allocates the final [3] share/contract to an account(s) with the smallest ratio (i.e. Account C which currently has a ratio of 0.00).
A: final allocation of 1 contract, which is 1/25 of desired (fill ratio = 0.04)
B: final allocation of 1 contract, which is 1/15 of desired (fill ratio = 0.067)
C: final allocation of 1 contract, which is 1/10 of desired (fill ratio = 0.10)
The execution(s) received have now been allocated in full.
Available allocation Flags
Besides the allocation methods above, user can choose the following flags, which also influence the allocation:
· Strict per-account allocation.
For the initially submitted order if one or more subaccounts are rejected by the credit checking, we reject the whole order.
· “Close positions first”1.This is the default handling mode for all orders which close a position (whether or not they are also opening position on the other side or not). The calculation are slightly different and ensure that we do not start opening position for one account if another account still has a position to close, except in few more complex cases.
Other factor affects allocations:
1) Mutual Fund: the allocation has two steps. The first execution report is received before market open. We allocate based onMonetaryValue for buy order and MonetaryValueShares for sell order. Later, when second execution report which has the NetAssetValue comes, we do the final allocation based on first allocation report.
2) Allocate in Lot Size: if a user chooses (thru account config) to prefer whole-lot allocations for stocks, the calculations are more complex and will be described in the next version of this document.
3) Combo allocation1: we allocate combo trades as a unit, resulting in slightly different calculations.
4) Long/short split1: applied to orders for stocks, warrants or structured products. When allocating long sell orders, we only allocate to accounts which have long position: resulting in calculations being more complex.
5) For non-guaranteed smart combo: we do allocation by each leg instead of combo.
6) In case of trade bust or correction1: the allocations are adjusted using more complex logic.
7) Account exclusion1: Some subaccounts could be excluded from allocation for the following reasons, no trading permission, employee restriction, broker restriction, RejectIfOpening, prop account restrictions, dynamic size violation, MoneyMarketRules restriction for mutual fund. We do not allocate to excluded accountsand we cancel the order after other accounts are filled. In case of partial restriction (e.g. account is permitted to close but not to open, or account has enough excess liquidity only for a portion of the desired position).
Footnotes: