The Lab

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from this space and version 1.5.11

Table of Contents

...

Order State Transition Model

The Order state transition model is normalised and consistent across all trading workflows, as outlined in the diagram below.

Where Venue events are absent, synthetic equivalents are generated by Whisperer in their place. These messages are easily discernible by reference to the TradingFlags.IsSynthetic field.


Gliffy Diagram
displayNameNormalised_OrderState
nameNormalised_OrderState

Info
titleExecutionAck
It's worth remembering that while  all inbound messages will adhere to the same state transition model, there will necessarily be Venue-specific variation in whether and how outbound ExecutionAck messages are handled.

OrdStatus vs ExecType

The following table lists the possible OrdStatus and ExecType combinations the Client may receive in Whisperer ExecutionReport messages.

Should MultilegCancelReplaceRequest or OrderCancelRequest messages be rejected by the venue, the current working order status will be reported in the OrdStatus field of the OrderCancelReject message.


CategoryOrdStatusExecTypeDescription
TransitionalPendingNewPendingNewVenue acknowledgement of receipt of Order.
ActiveNewNewVenue notification of acceptance of Order.
ReplacedVenue notification of acceptance of a replacement Order (including client-initiated Order release).
RestatedVenue notification of venue-initiated Order release.
ActivePartiallyFilledPendingMatchVenue notification of a potential match. E.g. EBS eFix.
TradeVenue notification of a done trade.
Replaced

Venue notification of acceptance of a replacement Order (including client-initiated Order release).

Note: Order Suspend/Release should not be combined with other parameter changes.

RestatedVenue notification of venue-initiated Order release.
ActiveSuspendedReplacedVenue notification of acceptance of client-initiated Order suspension. NOTE: 

Note: Order Suspend/Release should not be combined with other parameter changes.

TerminalFilledPendingMatchVenue notification of a potential match. E.g. EBS eFix.
TradeVenue notification of a done trade.
TransitionalPendingCancelPendingCancelVenue acknowledgement of receipt of OrderCancelRequest.
TerminalCanceledCanceled

Venue notification of Order cancellation.

TransitionalPendingReplacePendingReplaceVenue acknowledgement of receipt of OrderCancelReplaceRequest.
TerminalRejectedRejectedVenue rejection of order.
TerminalCalculatedTradeVenue notification of Fixing Order rate confirmations (EBS eFix), and notification of individual legs for spread instruments (CME).
TerminalExpiredExpiredVenue notification of the expiry of specified TimeInForce.

Aggressive vs  Resting Orders

Orders may be:

  • Aggressive - These orders are matched against existing Resting orders held in the order book. Once submitted these orders typically cannot be cancelled or modified. Typically, these orders are not displayed in the venue MarketData feed.
  • Resting - These orders are submitted at price levels away from the prevailing market, i.e.  buying at a price below or selling at a price above the market. Typically, these orders are displayed in the venue MarketData feed.

Time In Force

Details of the TimeInForce values supported by Whisperer Enterprise for both categories are provided below.

The time in force instruction may optionally be refined by the specification of order activation and expiry times:

  • Activation - A specific order activation time may be specified via tag 168/EffectiveTime.
  • Expiry - Order expiry may be specified as a specific time via tag 126/ExpireTime, or as a duration via tag 1629/ExposureDuration. The two representations may not be used together. 


TimeInForceNatureColloquial NameDescriptionIOCAggressiveImmediate or Cancel
NameNatureDescription59/TimeInForce168/EffectiveTime126/ExpireTime1629/ExposureDuration
Immediate Or CancelAggressive
The Order must be executed immediately, at least in part (Partial fills are allowed), otherwise the Order is cancelled. AKA 'Fill and Kill'.
FOKAggressive
IOCOptional--
Fill Or KillAggressiveThe Order must be executed immediately, in full (no Partial fills), otherwise the Order is cancelled.
DAYRestingDay
FOKOptional--
Good For AuctionRestingThe order is only active when the instrument enters an auction state. At all other times, the order remains inactive.GFAOptional--
Good For DayRestingThe Order expires automatically on close of the trading day, if it is still unfilled.DAYOptional--
Good For TimeRestingOrder is active for a specified duration.
GTC
GFTOptional-Mandatory
Good 'Til DateRestingOrder is active until a specified time.GTDOptionalMandatory-
Good 'Til CanceledRestingThe Order remains active until it is either executed or cancelled. NOTE: Maximum possible duration is one trading week, but is equivalent to DAY for most Venues that reset daily.
GTDRestingGood 'Til DateOrder is active until a specified time. TWAP?GFTRestingGood For TimeOrder is active for a specified duration. TWAP?OPN*At Market Opening
GTCOptional--
At Market OpenRestingThe order is only active when the instrument market opens. At all other times, the order remains inactive. It is typically entered when the market is in pre-open state.AMOOptional--
At Market CloseRestingThe order is only active when the instrument market closes. At all other times, the order remains inactive.  It is typically entered when the market is in pre-close state.AMCOptional--

Order Types

Standard Order Types

There are three broad categories of OrderTypeorder type:

  • Market - these are aggressive orders that are instructions to deal immediately at the best possible price. When buying, a market order will be filled at the currently prevailing Offer price; when selling, a market order will be filled at the currently prevailing Bid price.
  • Limit - these are resting orders visible to the market - hence the existence of Central Limit Order Book (CLOB) ECNs. they They are instructions to deal if a market moves to a specific (more favourable) price or better. Limit orders remain open until they are either entirely filled, or the client submits an order cancel request, or the order expires.
  • Stop - these are resting orders that are not visible to the market and will activate once a specified Stop price has been met.

When matched in a CLOB ECN, Limit orders are said to be 'aggressed' by Market orders.

Details of the OrderType Order Type values supported by Whisperer Enterprise for all categories are provided below.


Order Type
Colloquial Name
CategoryDescription
OrdTypeTimeInForceVenueCancel on Disconnect?
40/OrdType44/Price99/StopPrice210/MaxShow110/MinQty389/DiscretionOffsetValue211/PegOffsetValue




Limit priceStop priceIceberg tip size
Added to Bid or subtracted from Offer limit price to specify the allowed slippage for the order.
MarketMarket

An instruction to deal immediately at the best possible price (the current rate)

.MarketDAYBMEYESLimit

OR

An instruction to deal

if a market moves to a MORE favourable level.LimitDAYBMEYESImmediate LimitLimitIOCBME, AGGN/ALimitGTCAGGFill or KillLimitFOKBMEN/AStop-LossAn instruction to deal if a market moves to a LESS favourable level.StopStop LossGTCAGGStop LimitExecutes an exposure-reducing limit order when market exceeds order's price.Stop LimitDAYYES

during the auction/fixing time at the closing auction/fixing price if sent with TIF=GFA. (eg, eFIX orders on EBS)

Market------
Dark MarketMarketEquities-specific.Market--ZeroOptional--
Market RangeMarketAKA "Market With Protection". A market order with specified slippage.Market----Mandatory-
Market To LimitMarket
Stop LimitGTCAGGStop-TrailingThe Stop Price follows the market by a specified offset.Trailing StopMarket Limit
Order that starts as a Market order and in the event of a partial fill,  executes any leaves quantity as a Limit order.MarketLimit
Market With Leftover As Limit
------
Market If TouchedMarketMarket order will be submitted to market when a specified price is reached. Here, StopPrice is used to convey the Trigger price. This value should be better than the market price.IfTouched-Mandatory----
Previously QuotedLimit
Auction PriceMarketOPN*YESPreviously Quoted
An order to hit an individual quote. To hit multiple quotes, aka sweeping, the user must submit individual orders from best to worst price.
Previously QuotedBMEVwapSweep
PreviouslyQuotedMandatory---'--
LimitLimitAKA "Take Profit". An instruction to deal if a market moves to a more favourable level. Where multiple partial fills are allowed, a
An order that can hit/lift one or multiple quotes by submitting an order with the desired amount and the
Volume Weighted Average Price (VWAP) of the total
amount.VWAP SweepCitiCoLoTWAP
order quantity may be provided as the limit price.Limit
GFT/GTD
Mandatory
Attack
-
BMEStop limit at riseDetermined by Side?BMEStop limit at fallDetermined by Side?BMEMarket MakerBMELimit Take ProfitFixingPeggedMid

OPN - At Opening

GTC/GTD/GFT

Treat as Alog strategies:

From QUOD(!!!)

-Optional--
Dark LimitLimitAKA "Hidden Limit", "Ghost", "Sniper". A form of Iceberg, where the market-visible order qty is set to zero.LimitMandatory-ZeroOptional--
Limit To MarketLimitOrder that starts as a Limit order and in the event of a partial fill,  executes any leaves quantity as a Market order.FunariMandatory--Optional--
Limit If TouchedLimitLimit order will be submitted to market when a specified price is reachedIfTouchedMandatoryMandatory-Optional--
IcebergLimitAKA "Reserve". A limit order that has both displayed and hidden components.LimitMandatory-Mandatory---
PeggedLimitAn order with an offset to the prevailing market rate. The displayed quantity will float with the market.Pegged--Optional--Mandatory
Pegged To LimitLimitA Pegged order, but the displayed quantity will only float up to the
AlgoCategoryDescription
Adaptive Liquidity SeekingLiquidity SeekingAn algorithm which reacts to market events such as market data, execution and a set of other criteria to dynamically update the decision tree to seek liquidity on lit and dark venues.
Adaptive TWAPExecutionA slicing algorithm that submits equal size slices over a certain timeframe. Maximum participation rate can also be taken into account
Adaptive VWAPExecutionA benchmarking algorithm that slices an order according to the historical volume reparation over a certain time horizon. Every slice benefits from the adaptive execution that takes into account the current market conditions and the aggressivity of the algorithm.
Arrival Price / Implementation ShortfallExecutionAn algorithm that regularly adapts its participation based on estimated market impact in order to remain within a given price band. Participation is increased when the probability of high market impact is low and decreased when the probability is high. Adaptation of the participation is based both on historical behaviour and real-time data
Auto-hedgingTradingCross-asset class rule-driven autohedger based on position and real-time market data (greeks, delta, vega) for single trades or accrued positions.
CustomAnyBuilds client side algos or uses our native algo API for customising this menu and building your own. Over 150 parameters and unlimited logical decisions give you complete customisation of your strategies
On-Close Auctions / On-Open AuctionsTradingBalance impact and dispersion of the orders into and during the closing/opening auction. The algorithm phase management detects different market phases, with distinct parameters (e.g. move intra-day from trading to an intra-day auction phase)
Pair TradingTradingA neutral trading strategy enabling traders to profit from virtually any market conditions including uptrend, downtrend or sideways movement
Participation Volume (PoV)ExecutionTo execute a given percentage of visible liquidity in the market (for instance no more than 30%) in order to limit market impact
Pegged OrderTradingAn order to the bid or ask with, or without an offset. The display quantity will float with the bid or ask, up to the ultimate limit price of the order.PeggedMandatory Order - with priceTradingAn enhanced pegged order that pegs to the BBO using an offset (in ticks or price) as defined by the users. Additional conditions such as limit price, min/max quantity or a-would-price (which for buy and Above which for sell) are available to hunt for liquidity
Random Distribution IcebergExecutionA slicing algorithm which randomly sends child orders onto the market, so it is not initially being recognised as a child order
SnipingTradingTakes a set of predefined triggers such as the bid/offer trigger price and quantity/child order slice to hunt for liquidity
Statistical Adaptive Liquidity SeekingLiquidity seekingA liquidity seeking algorithm which integrates real-time / near-time statistical analysis to enrich the adaptive decision making process
Synthetic OCOTradingCancels an order when another one is fully filled
Synthetic OTOTradingTriggers an order when another order is fully filled
Synthetic StopTradingA limit sell order for a given instrument which is managed by the system and triggered by falling price
Synthetic Take ProfitTradingA limit sell order for a given instrument which is managed by the system and triggered by raising the price
Synthetic time-in-forceTradingA Good-Till-Date (GTD) or Good Till-Cancel (GTC) order type which is held away from the market and able to execute on a range of venues meeting the trade criteria
Timed OrderTradingReleases the order at a specific time to the exchange for execution
Trailing StopTradingA Stop-loss order which the stop loss price is set to some fixed percentage below the market price. The market price rises, the stop loss price rises proportionally

Instead of dedicated or overloaded fields in the Schema, use:

...

Additional Attributes

Limit price

Stop Price

OrdStatus vs ExecType

...

Venue notification of Order cancellation.

...

Optional--Mandatory
DiscretionLimitAKA "Limit With Protection". A limit order with specified slippage. The market sees only the limit price.LimitMandatory---Mandatory-
StopStopAKA "Stop Loss". An instruction to deal if a market moves to a less favourable level.Stop-Mandatory----
Trailing StopStopThe Stop Price follows the market by a specified offset.Stop-----Mandatory
Stop LimitStopExecutes an exposure-reducing limit order when market exceeds order's price.StopLimitMandatoryMandatory----
Trailing Stop LimitStopA Stop Limit order where the stop trigger price is at a fixed amount below the market price, based on the user-defined "trailing" amount. The limit order price is also continually recalculated based on the limit offset.StopLimit----MandatoryMandatory


Algo Orders

Algo Orders extend on the StandardOrderTypes above and require the specification of additional Venue-specific custom parameters using the HasExtendedOrderFields.NoStrategyParameters repeating group in both NewOrderMultileg and MultilegOrderCancelReplaceRequest.

The Client specifies the name of the algo to be executed by providing the following entry in this repeating group:

  • StrategyParameterType14/String
  • StrategyParameterName:  "TargetStrategy"
  • StrategyParameterValue: "LP-assigned name of desired Algo"

Other strategy parameters must be populated as per LP requirements for the specific Algo. The Client will need to reference the venue-provided API documentation for this detail.


Spread Orders

Overview

A calendar spread is a futures strategy with simultaneous long and short positions on the same underlying asset but with different expiry dates

  • Bull spread: When a trader buys the nearby month and sells the deferred month.
  • Bear spread: When a trader sells the nearby month and buys the deferred month. 

Whisperer currently only supports Bull Calendar Spreads which are defined with Buy near and Sell far legs.

Order Submission

Side: The LegSide of the first Leg on the client message to Whisperer will represent the Side of the Spread. 

Leg1

Leg2

Action on Spread

Buy

Sell

Buys the spread - buys leg1, sells leg2

Sell

Buy

Sells the spread - sells leg1, buys leg2

Price: The Price on the order will be the spread price. The LegPrice mustnot be populated on the request.

ExecutionReport

The following ExecutionReport messages are published for Fills:

  • 1 Notional Fill: Trade information for the overall Spread, followed by
  • 2 Leg Fills: Trade information for each of the legs. 

The Notional fill and Leg fills for a given trade will all have the same SecondaryExecID

The legs on Notional fill will have the overall Notional fill information with 

  • OrdStatus: Calculated
  • ExecType: Calculated

...