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 = BUY
andlimitPrice
is not null theninLimitInterval
values are calculated based on data from theTrade
table where theprice <= limitPrice
-
If
orderSideCode = SELL
andlimitPrice
is not null theninLimitInterval
values are calculated based on data from theTrade
table where theprice >= limitPrice
Analytics calculated by .eqea.analytics.intraorderProfile
include:
-
Number of trades between
strikeTime
andorderCompletedTime
whereprice <= limitPrice
for buy-side orders, orprice >= limitPrice
for sell-side orders. -
Spread between
strikeTime
andorderCompletedTime
whereprice <= limitPrice
for buy-side orders, orprice >= limitPrice
for sell-side orders. -
Highest traded price between
strikeTime
andorderCompletedTime
whereprice <= limitPrice
for buy-side orders, orprice >= limitPrice
for sell-side orders. -
Lowest traded price between
strikeTime
andorderCompletedTime
whereprice <= limitPrice
for buy-side orders, orprice >= limitPrice
for sell-side orders. -
Volume between
strikeTime
andorderCompletedTime
whereprice <= limitPrice
for buy-side orders, orprice >= limitPrice
for sell-side orders. -
VWAP between
strikeTime
andorderCompletedTime
whereprice <= limitPrice
for buy-side orders, orprice >= limitPrice
for sell-side orders. -
Traded price at
strikeTime
that meets the conditionprice <= limitPrice
for buy-side orders, orprice >= limitPrice
for sell-side orders. -
Traded price at
orderCompletedTime
that meets the conditionprice <= limitPrice
for buy-side orders, orprice >= limitPrice
for 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 < orderCompletedTime
andarrivalBidPrice <= price <= arrivalAskPrice
. -
volumeInsideSpread = the sum of trade volume where
strikeTime <= eventTimestamp < orderCompletedTime
andarrivalBidPrice <= 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 < orderCompletedTime
andarrivalAskPrice - 0.01 <= price <= arrivalAskPrice + 0.01
. -
volumeNearAsk = the sum of trade volume where
strikeTime <= eventTimestamp < orderCompletedTime
andarrivalAskPrice - 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 < orderCompletedTime
andarrivalBidPrice - 0.01 <= price <= arrivalBidPrice + 0.01
. -
volumeNearBid = the sum of trade volume where
strikeTime <= eventTimestamp < orderCompletedTime
andarrivalBidPrice - 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_60
is the mid point of theaskPrice
and thebidPrice
for 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 |