Order Execution Analytics - Analytic Functions Glossary
The Equities Order Analytics accelerator provides hundreds of analytics out of the box. This page provides a brief explanation of some of the analytics generated.
.eqea.analytics.arrivalValue
This function is used to retrieve the bidPrices and askPrices from the Quote table where eventTimestamp = strikeTime.
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.convertToUSD
This function is used to calculate the Order Execution Analytics that involve fx conversion to USD.
The values calculated by .eqea.analytics.convertToUSD are:
-
arrivalValue =
arrivalMid * executedQty -
executedValueUSD =
executedValue * usdAskRate -
arrivalValueUSD =
arrivalValue * usdAskRate
Where usdAskRate is the USD ask value for the currency or the order at the tradeDate of the order.
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.endValue
This function is used to retrieve the bidPrices and askPrices from the Quote table where eventTimestamp = orderCompletedTime.
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.inLimitInterval
This function is used to calculate the inLimitInterval* values.
The inLimitInterval analytics definitions change slightly depending on the values of the order in question:
-
If
orderSideCode = BUYandlimitPriceis not null theninLimitIntervalvalues are calculated based on data from theTradetable where theprice <= limitPrice -
If
orderSideCode = SELLandlimitPriceis not null theninLimitIntervalvalues are calculated based on data from theTradetable where theprice >= limitPrice
Analytics calculated by .eqea.analytics.intraorderProfile include:
-
Number of trades between
strikeTimeandorderCompletedTimewhereprice <= limitPricefor buy-side orders, orprice >= limitPricefor sell-side orders. -
Spread between
strikeTimeandorderCompletedTimewhereprice <= limitPricefor buy-side orders, orprice >= limitPricefor sell-side orders. -
Highest traded price between
strikeTimeandorderCompletedTimewhereprice <= limitPricefor buy-side orders, orprice >= limitPricefor sell-side orders. -
Lowest traded price between
strikeTimeandorderCompletedTimewhereprice <= limitPricefor buy-side orders, orprice >= limitPricefor sell-side orders. -
Volume between
strikeTimeandorderCompletedTimewhereprice <= limitPricefor buy-side orders, orprice >= limitPricefor sell-side orders. -
VWAP between
strikeTimeandorderCompletedTimewhereprice <= limitPricefor buy-side orders, orprice >= limitPricefor sell-side orders. -
Traded price at
strikeTimethat meets the conditionprice <= limitPricefor buy-side orders, orprice >= limitPricefor sell-side orders. -
Traded price at
orderCompletedTimethat meets the conditionprice <= limitPricefor buy-side orders, orprice >= limitPricefor sell-side orders.
Note
If null values are found, they are replaced with values as per the configurations settings in the ..eqea.analytics.prevailing.cfg table
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.insideSpreadInterval
This function is used to calculate the inside spread analytic values.
These are analytics performed on trade data where strikeTime <= eventTimestamp < orderCompletedTime and arrivalBidPrice <= price <= arrivalAskPrice.
Analytics calculated by .eqea.analytics.insideSpreadInterval include:
-
tradeCountInsideSpread = number of trades where
strikeTime <= eventTimestamp < orderCompletedTimeandarrivalBidPrice <= price <= arrivalAskPrice. -
volumeInsideSpread = the sum of trade volume where
strikeTime <= eventTimestamp < orderCompletedTimeandarrivalBidPrice <= price <= arrivalAskPrice.
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.interval
This function is used to calculate interval aggregations of Trade data from strikeTime to orderCompletedTime.
Note
If null values are found, they are replaced with values as per the configurations settings in the ..eqea.analytics.prevailing.cfg table
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.intervalOpenClose
This function is used to calculate the open and close trade prices.
Note
If null values are found, they are replaced with values as per the configurations settings in the ..eqea.analytics.prevailing.cfg table
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.intervalSpread
This function is used to calculate the intervalSpread OrderExecution Analytic.
Here, intervalSpread is defined as the time weighted average spread for every quote between the strikeTime and orderCompletedTime.
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.intraorderProfile
This function is used to calculate the "Intraorder Profile" OrderExecution Analytics.
The intraorder profile analytics show the market behavior at regular intervals between strikeTime and orderCompletedTime.
The first step is the calculate the bucketDuration value, where bucketDuration = (orderCompletedTime - strikeTime)/10.
This value is used to generate time stamps whereby analytic_N occurs at strikeTime + (bucketDuration * N).
Analytics calculated by .eqea.analytics.intraorderProfile include:
-
Quoted ask price @
strikeTime + (bucketDuration * N) -
Quoted bid price @
strikeTime + (bucketDuration * N) -
Traded open price @
strikeTime + (bucketDuration * N) -
Traded close price @
strikeTime + (bucketDuration * N) -
Traded high price where
strikeTime + (bucketDuration * N-1) <= eventTimestamp < (bucketDuration * N) -
Traded low price where
strikeTime + (bucketDuration * N-1) <= eventTimestamp < (bucketDuration * N) -
Traded volume where
strikeTime + (bucketDuration * N-1) <= eventTimestamp < (bucketDuration * N) -
Trade count where
strikeTime + (bucketDuration * N-1) <= eventTimestamp < (bucketDuration * N) -
Trade VWAP where
strikeTime + (bucketDuration * N-1) <= eventTimestamp < (bucketDuration * N) -
Trade volatility where
strikeTime + (bucketDuration * N-1) <= eventTimestamp < (bucketDuration * N)Note
Note trade volatility is defined here as standard deviation of the difference between first and last prices in each 5 minute window, and the five minute windows being however many there are between
strikeTime + (bucketDuration * N-1) <= eventTimestamp < (bucketDuration * N).
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.intraorderProfileSpread
This function is used to calculate the intervalSpread_N values.
Here, intervalSpread_N is defined as the time weighted average spread for every quote where strikeTime + (bucketDuration * N-1) <= eventTimestamp < (bucketDuration * N).
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.midValues
This function is used to calculate the reversion mid values.
The reversionMid_N values are defined as:
-
reversionMid_N = (reversionAskPrice_N + reversionBidPrice_N)/2
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.nearAsk
This function is used to calculate the "near ask" analytic values.
The near ask values are based on trade data where strikeTime <= eventTimestamp < orderCompletedTime and arrivalAskPrice - 0.01 <= price <= arrivalAskPrice + 0.01.
Analytics calculated by .eqea.analytics.nearAsk include:
-
tradeCountNearAsk = number of trades where
strikeTime <= eventTimestamp < orderCompletedTimeandarrivalAskPrice - 0.01 <= price <= arrivalAskPrice + 0.01. -
volumeNearAsk = the sum of trade volume where
strikeTime <= eventTimestamp < orderCompletedTimeandarrivalAskPrice - 0.01 <= price <= arrivalAskPrice + 0.01.
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.nearBid
This function is used to calculate the "near bid" analytic values.
The near bid values are based on trade data where strikeTime <= eventTimestamp < orderCompletedTime and arrivalBidPrice - 0.01 <= price <= arrivalBidPrice + 0.01.
Analytics calculated by .eqea.analytics.nearBid include:
-
tradeCountNearBid = number of trades where
strikeTime <= eventTimestamp < orderCompletedTimeandarrivalBidPrice - 0.01 <= price <= arrivalBidPrice + 0.01. -
volumeNearBid = the sum of trade volume where
strikeTime <= eventTimestamp < orderCompletedTimeandarrivalBidPrice - 0.01 <= price <= arrivalAPrice + 0.01.
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.orderPerformance
This function is used to calculate theorder performance relative to the `arrivalMid` price value.
Analytics calculated by .eqea.analytics.orderPerformance include:
-
orderSideEnum - this value is 1 for buy-side orders, -1 for sell-side orders.
-
executionShortfall =
((averagePrice - arrivalMid)/(arrivalMid * 0.001)) * orderSideEnum. -
strikeToEndReturn =
((endMid - arrivalMid)/(arrivalMid * 0.001)) * orderSideEnum. -
executionShortfall =
((averagePrice - arrivalMid)/(arrivalMid * 0.001)) * orderSideEnum. -
reversionReturn_N =
((reversionMid_N - arrivalMid)/(arrivalMid * 0.001)) * orderSideEnum.-
where N is signifies the number of seconds after
orderCompletedTime; for example,reversionMid_60is the mid point of theaskPriceand thebidPricefor an ordered instrument 60 seconds after the order was completed.
-
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.reversion
This function is used to calculate the reversion values.
The reversion values are defined as:
-
reversionAskPrice_N = askPrice at orderCompletedTime + N seconds -
reversionBidPrice_N = bidPrice at orderCompletedTime + N seconds
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |
.eqea.analytics.volatility
This function is used to calculate the volatility of an order from strikeTime to orderCompletedTime.
Trade volatility is defined here as standard deviation of the difference between first and last prices in each N minute window where strikeTime <= eventTimestamp < orderCompletedTime.
Note
The size of the volatility bucket size is defined by the configurable variable .eqea.volatility.bucketSize.
|
name |
type |
description |
|---|---|---|
|
OrderAnalyticsRes |
table |
Keyed table containing all input Order data and Order Analytic results up to this point in the |
|
Type |
Description |
|---|---|
|
table |
Keyed table containing all input Order data and all Order Analytic results up to this point in the |