Overview of Accumulate / Distribute Algorithm


Accumulate/Distribute is a sophisticated trading algorithm which allows one to buy or sell large orders by splitting the trade into multiple orders with the goal of reducing visibility and market impact.

When to Use
This order type is geared towards traders of large position blocks as well as high frequency traders and is intended to run unattended while logged into the TWS.
How to Locate
The Accumulate/Distribute algorithm can be accessed from the TraderWorkstation by selecting the Trading and then Accumulate/Distribute menu options at the top of the page or it can be added to the trading tool bar menu by clicking on the Add More Buttons icon.
Order Set Up
Once the trader has defined the instrument and action (buy or sell), the following parameters are to be specified:
  1. Total Quantity – defines the aggregate order size (e.g., shares, contracts);
  2. Trade Increment – defines the unit (e.g., shares, contracts) size for each component order;
  3. Time Increment – defines the period of time (seconds, minutes or hours) between the submission of a component order and the submission of the following order;
  4. Order Type – may select from market, limit or relative. A market order will be executed at the ask price and should only be used where, for example, a stock is highly liquid with significant bid-ask sizes. Limit and Relative order types require that the trader specify additional order relationships and the choices are numerous. The execution price, for example, may be specified as being relative to a fixed value, bid, ask or last price, VWAP, moving average or last trade. These choices may be increased or decreased by an offset factor and multiple conditions may be established. For example, one may wish to create a relative order type to match the bid price plus an offset factor of $0.01 and to ensure that they don’t lift the ask if the spread is $0.01, add a condition that the bid be no less that $0.02 beneath the ask price.
  5. How to Operate – if the trader does not check the box titled “Wait for current order to fill before submitting next order” then orders which do not meet the price conditions will continue to accumulate in accordance with the established time increment, the unexecuted orders will be aggregated into one or more potentially sizable orders at the exchange. If this box is checked, then the more restrictive the buying conditions, the greater the likelihood that the algorithm will fall behind its schedule of buying or selling at every ‘X’ interval.  If this box is checked the trader may then check the box titled “Catch up in time”. When that box has been checked and should the algorithm fall behind, the next orders will be placed immediately after their predecessor fills until such time the algorithm has caught up.
  6. Randomization – check boxes are provided to allow for a +/- 20% randomization in the time increment and a +/- 55% randomization in the trade increment. Accordingly, in the case of a 30 second time increment, this would allow for randomization of between 24 and 36 seconds between orders and in the case of a 500 share trade increment, this would allow for randomization of between 200 and 800 shares (rounded to the nearest round lot) per order. Randomization serves to minimize the likelihood of others detecting your order.
  7. RTH – a check box is provided which will allow the order to be filled outside of regular trading hours.
  8. Take up Offer Size – if a limit or relative order type is selected, the trader may input an order size which if bid (in the case of a sell order) or offered (in the case of a buy order) the trader would be willing to take in its entirety, up to the remaining portion of the total order quantity (satisfies the price conditions).
Managing the Trade
The Accumulate/Distribute algorithm also allows for conditions to be established which, if not met, will cause the algorithm to either stop permanently or resume when the conditions are again satisfied. These include the following:
  1. Price Range - traders may specify a price range outside of which they do not want to buy the stock;
  2. News – the trader may stop the algorithm for some period of time if there is news on the stock, for example;
  3. Position - traders may stop the algorithm based upon their position in the stock; For example, a trader running multiple algorithms one to buy the stock and another to sell in an attempt to trade the stock back and forth for a profit may decide to suspend one side if the position becomes substantially imbalanced;
  4. Stock Path – a trader, for example, may wish to suspend the algorithm if a given moving average, say the 10-minute VWAP is not at least as high as another average, say the 50-day moving average. This feature enables you to set up algorithms to trade chart points even when you are not looking at the chart at that moment;
  5. Stock Path for Multiple Symbols – this condition is similar to the last except that it calls for two symbols. Here you can put in any symbol and compare some data point regarding that symbol (e.g., 10-minute VWAP, etc.) to the same or a different data point regarding the second symbol. These comparative conditions can apply to different symbols or to the same symbol.   For example, you could specify that you want to buy a certain stock only if it has been in a continuous uptrend. So in addition to the 10-minute VWAP being higher than the 50-day moving average, you would also like the 10-day moving average to be higher than the 30-day moving average on this stock.
Other Considerations
Acceptable inputs for this algorithm include:
  1. Products – any product offered by IB (stocks, options, ETFs, bonds, futures, Forex) other than mutual funds;
  2. Order Type – market, limit or relative.


This algo will only operate when the trader is logged into the TWS.  If the trader has been logged out prior to the algo completing (either by user action or by the automated nightly restart), a message will appear upon the next log in which will allow for re-activation of the algo.