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.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.eqea.analytics.endValue

This function is used to retrieve the bidPrices and askPrices from the Quote table where eventTimestamp = orderCompletedTime.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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 and limitPrice is not null then inLimitInterval values are calculated based on data from the Trade table where the price <= limitPrice

  • If orderSideCode = SELL and limitPrice is not null then inLimitInterval values are calculated based on data from the Trade table where the price >= limitPrice

Analytics calculated by .eqea.analytics.intraorderProfile include:

  • Number of trades between strikeTime and orderCompletedTime where price <= limitPrice for buy-side orders, or price >= limitPrice for sell-side orders.

  • Spread between strikeTime and orderCompletedTime where price <= limitPrice for buy-side orders, or price >= limitPrice for sell-side orders.

  • Highest traded price between strikeTime and orderCompletedTime where price <= limitPrice for buy-side orders, or price >= limitPrice for sell-side orders.

  • Lowest traded price between strikeTime and orderCompletedTime where price <= limitPrice for buy-side orders, or price >= limitPrice for sell-side orders.

  • Volume between strikeTime and orderCompletedTime where price <= limitPrice for buy-side orders, or price >= limitPrice for sell-side orders.

  • VWAP between strikeTime and orderCompletedTime where price <= limitPrice for buy-side orders, or price >= limitPrice for sell-side orders.

  • Traded price at strikeTime that meets the condition price <= limitPrice for buy-side orders, or price >= limitPrice for sell-side orders.

  • Traded price at orderCompletedTime that meets the condition price <= limitPrice for buy-side orders, or price >= 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.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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 and arrivalBidPrice <= price <= arrivalAskPrice.

  • volumeInsideSpread = the sum of trade volume where strikeTime <= eventTimestamp < orderCompletedTime and arrivalBidPrice <= price <= arrivalAskPrice.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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).

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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).

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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 and arrivalAskPrice - 0.01 <= price <= arrivalAskPrice + 0.01.

  • volumeNearAsk = the sum of trade volume where strikeTime <= eventTimestamp < orderCompletedTime and arrivalAskPrice - 0.01 <= price <= arrivalAskPrice + 0.01.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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 and arrivalBidPrice - 0.01 <= price <= arrivalBidPrice + 0.01.

  • volumeNearBid = the sum of trade volume where strikeTime <= eventTimestamp < orderCompletedTime and arrivalBidPrice - 0.01 <= price <= arrivalAPrice + 0.01.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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 the askPrice and the bidPrice for an ordered instrument 60 seconds after the order was completed.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.

.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.

Parameter:

name

type

description

OrderAnalyticsRes

table

Keyed table containing all input Order data and Order Analytic results up to this point in the .eqea.analytics.cfg table.

Returns:

Type

Description

table

Keyed table containing all input Order data and all Order Analytic results up to this point in the .eqea.analytics.cfg table.