Skip to main content
Version: Staging

Progression Algos

Progression rule algos all work parent orders in distinct quantity slices at increasing levels of aggressiveness. SpiderRock Connect categorizes progression algos as follows:

TwapAlpha: A progression algo that is intended to work for the full duration of the parent order. This algo determines a slice size, count, and target duration. It then works the next slice in increasing levels of aggressiveness until the slice either fills or the order reaches a client-specified top. If a slice fills before its target time has elapsed, the algo waits until the fully allotted time has passed, before switching to the next slice.

TwapAlpha is available for equities, options, futures, and MLEG orders. There is also a variation for equities called TwapAlphaC that will promote any parent order balance into the primary equity closing auction just before auction cutoff time as a market on close order. Please note that any limits in place will not be followed for a TWAPAlphaC order. SRSE and FIX users can define their own participation level in the closing auction by populating the Vwap participation field in the order gateway or tag 5058, via FIX.

VwapAlpha: This algo is similar to TwapAlpha except that it waits until the volume traded in the market is getting large enough for the SpiderRock Connect system to move to the next slice rather than waiting for the target slice time to elapse. For example, a 1% VwapAlpha with an order size of 1,000 shares would wait for the current slice to fully fill and for the market to trade 100,000 shares before moving to the next slice. We also enforce a half-second delay after the fill occurs before moving to the next slice.

VwapAlpha is available for equities and futures. Similar to TWAPAlphaC there is a variation for equities called VwapAlphaC that interacts with the equity closing auctions in the same manner. This is also available for auto-hedges at 1,2,5 & 25% levels.

SpdrPulse: This algo is similar to TwapAlpha and VwapAlpha. What differentiates SpdrPulse is that it switches to the next slices immediately after the prior one fills. The default duration for each SpdrPulse slice is 30 seconds but can be set on each individual parent order. SpdrPulse is available for equities, futures, options, and MLEG orders.

SpdrPulse is designed to work each parent order in distinct slices, therefore each slice starts shortly after the previous slice is completed. This implies that fully filling a parent order with N slices requires at least N child orders.

How do they work?

Progression algos work by breaking parent orders into distinct quantity slices. Slices are then worked in the market at increasing levels of aggressiveness. These algos typically progress through the following aggressiveness modes:

Passive Mode

ActiveMaking + ActiveTaking (Mid-Market Minus)

  • ActiveMaking in this mode will use standard PostLimit balance handling rules and will post orders at levels slightly better than fair mid-market. Orders left in an exchange order book will be canceled/replaced as the underlier moves around (options) or as the SR probability values (ML model) change (stock and futures).
  • ActiveTaking will immediately cross and take if the opposite side scores at least a 50% Alpha Probability (stock, futures, and options). Note that there is no ActiveTaking for COB orders in this mode.

Moderate Mode

ActiveMaking + ActiveTaking (Mid-Market Plus)

  • ActiveMaking switches to PostImprove and steps up (in minimum tick increments if necessary) to a more aggressive posting level that is slightly worse than a fair mid-market price.
  • ActiveTaking becomes more aggressive and will take at a 40% (options) or 49% (stock and futures) probability. There is no ActiveTaking for COB orders in this mode as well.

Aggressive Mode

ActiveMaking (Full Parent Limit) + ActiveTaking (Mid-Market Plus)

  • ActiveMaking continues with PostImprove and steps up (in minimum tick increments if necessary) to the full parent order limit (primary + secondary).
  • Note that all aggressive mode ActiveMaking orders are Add Liquidity Only orders and will not aggressively cross a live market.
  • ActiveTaking continues as in moderate mode.

Try Take Mode

ActiveTaking (Full Parent Limit / Cross Market)

  • The ActiveTaking restrictions are relaxed, and orders can fully cross the market and take unless prevented by a client-supplied parent order limit (primary and/or secondary). For stock, future, and option single-leg orders, we will directly initiate trading in this mode. For MLEG orders, we will send orders into an exchange COB order book that will touch the corresponding NBBO leg market.

Legger Mode

MLeg Orders Only (Full Parent Limit / Cross Market) [Optional]

  • If enabled, this will promote the balance of the slice to aggressive taking in the individual leg markets. This requires that the full parent limit is marketable to proceed but can ensure that an individual slice is executed at the best possible leg market price.

Common Progression Algo Questions

What are the primary parent order parameters that are user selectable?

Parent Limit: Primary (Prc, Vol, PrcDe, etc.) and/or Secondary (Surface or Probability)
Number of Slices [1 – 100]: default = 4 (adjusted based on size of order and remain order duration). This is currently only configurable via SRSE or FIX, progressSliceCnt(tag 5056)
Slice Duration [min 1s]: default = 30s (Pulse, Vwap) or target order duration / #slices (Twap). Cannot exceed the remaining order duration.
MLEG Orders: COB Only (Seeker) or COB + Legger (Seeker/Legger)

Will my progression algo order always fill completely?

If you supply parent order limits (primary and secondary) that are fully marketable then you should expect your progression algo order to fill completely, unless there is a good reason not to fill (market is halted, no remaining risk room, no available locate, etc).

What do I do if I always want my parent limit to allow the market to be crossed?

Tickets: Use Market order without secondary limits.
SRSE: Use OrderLimitType = Market, MakeLimitClass = Simple, TakeLimitClass = Simple

How does a progression algo catch up if it is temporarily unable to continue (ex.: market is temporarily halted or the parent order limit temporarily prevents completion of a slice)?

Progression algos will continue working the current slice until it completes and then re-compute the progression parameters (number of slices, slice size, and/or slice duration) necessary to complete the order on schedule if it is possible to do so.

Progression Algo Summary

TwapAlphaVWapAlphaSpdrPulse
DescriptionLong-lasting order type, slices orders in equal chunks of time and size and works at increasing levels of aggressiveness within each sliceOrder type working in volume slices and working at increasing levels of aggressiveness within each slicePotentially short-lasting order type that probes markets and slices orders to work at increasing levels of aggressiveness
Available for EquitiesYesYesYes
Available for FuturesYesYesYes
Available for OptionsYesNoYes
Available for Single-leg OrderYesYesYes
Available for Multi-leg OrderYesNoYes
Work in passive/moderate/aggressive modesYesYesYes
Single-leg orders use both Making/Taking LogicYesYesYes
Multi-leg orders use Making logic onlyYesN/AYes
Works for full order durationYesMight notMight not
Waits for slice time to endYesMight notMight not
Waits for slice volume targetNoYesNo
Closing auction featureYesYesNo
User-selectable Order Parameters---------
Default value for number of slices4 (adjusted on size of order)4 (adjusted on size of order)4 (adjusted on size of order)
Default slice durationOrder duration / # of slices30 sec30 sec
Primary limit supportedYesYesYes
Secondary limit supportedYesYesYes