Report Types and Fields
This is a reference page
Use your browser's page search (Ctrl+F / Cmd+F) to jump straight to a report type or field — this page is not meant to be read top to bottom.
Report Types
A Report Type groups together specific data fields. Data fields are default system fields as well as calculated custom fields.
26 report types
The Report Types from the table listed below are displayed in the report/templates component under the column "type" on the Template Settings tab.
| Report Type | Description |
|---|---|
| Deal | Information about Orders received by XCore from connectors, including details per Leg sent to Liquidity Providers and per Deal returned by them. Each order may be split into one or more legs, and each leg may be executed in one or more deals. Includes both A-Book and B-Book trades. Shows only trades with Partial or Filled status (no Pending or Rejected). By default (when no grouping is applied), this report shows one row per deal. If an order is split into multiple legs/deals, the order appears in multiple rows. To show one row per order, group by order.order and aggregate all deal.* fields. The date range is applied on the deal's execution time. |
| Deal (ClickHouse) | Information regarding Orders, Legs, and Deals, powered by ClickHouse for high-performance data processing. Provides faster query execution and efficient handling of large data volumes. Recommended for large-scale historical reporting and high-volume data analysis. Includes both A-Book and B-Book trades. Includes all trades of all statuses: Pending, Rejected, Partial, and Filled. By default (when no grouping is applied), this report shows one row per deal. If an order is split into multiple legs/deals, the order appears in multiple rows. To show one row per order, group by order.open_order and aggregate all deal.* fields. The date range is applied on the deal's execution time. Note: Data in the ClickHouse database is synchronized once per hour. |
| Deal A-Book | Information regarding Orders, Legs, and Deals that follows the same structure and logic as the Deal report, but includes only executions routed to the A-Book. By default (when no grouping is applied), this report shows one row per deal, following the same row structure and grouping logic as the Deal report. The date range is applied on the deal's execution time. |
| Deal B-Book | Information regarding Orders, Legs, and Deals that follows the same structure and logic as the Deal report, but includes only executions routed to the B-Book. By default (when no grouping is applied), this report shows one row per deal, following the same row structure and grouping logic as the Deal report. The date range is applied on the deal's execution time. |
| Deal (All Statuses) Video guide |
Information regarding Orders, Legs, and Deals that follows the same structure and logic as the Deal report, but covering orders of every status - Filled, Partial, Pending, and Rejected. Includes both A-Book and B-Book trades. By default (when no grouping is applied), this report shows one row per deal. If an order is split into multiple legs/deals, the order appears in multiple rows; an order with no leg/deal contributes a single row. To show one row per order, group by order.order and aggregate all deal.* fields. The date range is applied on the order's open time. |
| Deal (Margin Account) Video guide |
Information regarding Orders, Legs, and Deals that follows the same structure and logic as the Deal report, plus each deal's client margin account (#deal.margin_account), filterable by margin account. By default (when no grouping is applied), this report shows one row per deal, following the same row structure and grouping logic as the Deal report. The margin account comes from the client-side position the deal was booked to. Resolving it from positions makes this report slower than Deal on long date ranges. The date range is applied on the deal's execution time. |
| Orders Count | A single count of filled or partially filled orders within the selected date range. Returns exactly one row for the whole report - no grouping, filtering by other fields, or additional columns are available. The date range is applied on the deal's execution time. |
| Max Spread Reject Report Video guide |
Orders rejected by XCore because the requested spread exceeded the Connector's configured maximum spread limit. Only includes orders rejected under a blocking spread mode (reject or invalidate) where the spread genuinely exceeded the limit. Partially filled orders are not included, even if the remaining amount was rejected for exceeding the maximum spread. The date range is applied on the order's open time. |
| Order Details | Information about Orders received by XCore from connectors, showing only order-level information without details on legs or deals. Includes all trades of all statuses: Pending, Rejected, Partial, and Filled. The date range is applied on the order's open time. |
| Order Reject | Information about Orders received by XCore from connectors, including details on Legs sent to Liquidity Providers, without deal-level data. Includes only trades with Rejected status (no Pending, Partial, or Filled). By default (when no grouping is applied), this report shows one row per leg. If an order is split into multiple legs, the order appears in multiple rows. Leg-level information is available only if a leg was created and sent to a Liquidity Provider; orders rejected before leg creation will not have leg details. The date range is applied on the order's open time. |
| Account Wallet | Information about XCore Accounts, showing all balance-related transactions without order, leg, or deal details. Includes deposits, withdrawals, and charges, providing data for auditing and analysis. The Account Wallet report can include related Account Position data by linking each wallet action to its originating position via the Position Sequence, providing context for the account activity. |
| Account Position | Information about XCore Accounts, showing all position adjustments. Includes all open positions and changes to positions for each account in the XCore system. |
| Account Position EOD | The most recent recorded values of all positions for XCore Accounts, up to the end of the selected report date range. Tracked separately per symbol without consolidation across the account. |
| Account Wallet EOD | Information on the opening and closing balances, as well as the total balance changes from different types of operations over the selected report period. Tracked separately per wallet and currency without consolidation across the XCore Account, expressed in the currency in which each balance change was recorded. |
| Account EOD | Information on opening and closing balances, total balance changes, Exposure, Floating Profit/Loss, Equity, Used Margin, and Free Margin over the selected report period. Consolidated per Account and converted to the Default Account Currency. |
| Trade Decay V5 Video guide |
Information about Orders, Legs, and Deals enriched with decay metrics, including Decay Interval, Decay Bid, Decay Ask, and Computed Decay Value. The report shows how the value of each Client trade changes after the leg is sent to the Liquidity Provider. It helps brokers analyze trade quality, visualize post-submission price movement, identify Client logins whose trading behavior may pose a risk to the broker, and perform detailed analysis at the level of each individual order. By default (when no grouping is applied), this report shows one row per deal. The date range is applied on the order's open time. Note: Data in the ClickHouse database is synchronized once per hour. |
| Trade Decay V5 Toxic Video guide |
Information regarding Orders, Legs, Deals, and decay metrics that follows the same structure and logic as the Trade Decay V5 report, but focuses on negative decay outcomes (decay value < 0). This report is used to identify trading behavior that is unfavorable for the broker and favorable for the Client. After all calculations and aggregations are completed, only records (or groups) with a negative final decay value are included in the report. No pre-filtering is applied before aggregation; filtering is applied only on the final computed result. By default (when no grouping is applied), this report shows one row per deal. The date range is applied on the order's open time. Note: Data in the ClickHouse database is synchronized once per hour. |
| Trade Decay V5 Profitable Video guide |
Information regarding Orders, Legs, Deals, and decay metrics that follows the same structure and logic as the Trade Decay V5 report, but focuses on positive decay outcomes (decay value > 0). This report is used to identify trading behavior that is favorable for the broker and unfavorable for the Client. After all calculations and aggregations are completed, only records (or groups) with a positive final decay value are included in the report. No pre-filtering is applied before aggregation; filtering is applied only on the final computed result. By default (when no grouping is applied), this report shows one row per deal. The date range is applied on the order's open time. Note: Data in the ClickHouse database is synchronized once per hour. |
| Trade Flow by Login Video guide |
Decay values for trade executions across 31 time intervals (T+0ms to T+900s) from the leg open - potential USD profit or loss from the broker's perspective at each interval. Available grouping dimensions include Connector, Connector Account, MT Group Name (SubID 2), Client Login (SubID 3), Symbol, Book (A/B), Order Side, Order Type, Leg Type, Provider, and Business Date. These can be used individually or in combination. Grouping by at least one of these dimensions is required; ungrouped data cannot be retrieved. Covers A-Book and B-Book trades. The date range is applied on the order's open time. Note: Data in the ClickHouse database is synchronized once per hour. |
| Toxic Client Watchlist Video guide |
Ranks client logins (or any other report grouping) with consistently negative decay values across selected time intervals, indicating trading activity that is unfavorable for the broker. Helps brokers identify and prioritize accounts for review. Covers 31 time intervals (T+0ms to T+900s) and both A-Book and B-Book trades. Only groups that satisfy the Negative Interval Ranges filter are included in the report. For interval fields, only the Sum and VWAPMM (value per million USD) aggregation types produce meaningful results. The Negative Interval Ranges filter defines the time intervals, threshold, and whether all ranges must be satisfied (AND) or any range may be satisfied (OR). If the filter is not specified, the default criteria are a single interval from 5 ms to 200 ms with a decay value below 0. The report is always sorted by Watchlist Worst Value in ascending order, so the groups with the most negative aggregated decay values appear at the top of the report. Grouping by at least one dimension is required; ungrouped data cannot be retrieved. The date range is applied on the order's open time. Note: Data in the ClickHouse database is synchronized once per hour. |
| Book Report | Snapshot of the liquidity book at the moment an order is executed, including bid and ask quotes, liquidity levels, providers, and applied markups across all book layers. The date range is applied on the order's open time. |
| Book ClickHouse | Snapshot of the liquidity book at the moment an order is executed, following the same structure and logic as the Book Report, but powered by ClickHouse for high-performance data processing. Provides faster query execution and efficient handling of large data volumes. Recommended for large-scale historical reporting and high-volume data analysis. The date range is applied on the order's open time. Note: Data in the ClickHouse database is synchronized once per hour. |
| TOB by Maker (ClickHouse) Video guide |
Compares the top-of-book bid and ask each Liquidity Provider (Maker) quotes for one symbol over time, powered by ClickHouse for fast access to tick-level history. Helps you judge which Providers quote the tighter price and narrower spread, supporting routing and Provider-selection decisions. Requires a Symbol filter - returns no rows until one is selected. Provider filter is optional. Rows are already grouped by Maker and symbol - no other grouping or aggregation is available for this report. Note: the database keeps only the last 7 days of tick history - a wider date range returns data starting from 7 days ago at the earliest. Note: Data in the ClickHouse database is synchronized once per hour. |
| Fill Ratio | Information about trade execution quality at the leg level, including leg status, execution outcomes, and price behavior. Includes only leg-level data. By default (when no grouping is applied), this report shows one row per leg. If an order is split into multiple legs, the order appears in multiple rows. The date range is applied on the order's open time. |
| Profit B-Book | Information on the broker's net exposure and mark-to-market PnL per symbol over the selected report period, calculated from the broker's perspective. Includes only B-Book trades. The date range is applied on the deal's execution time. Note: Calculations include trade execution data only and do not include position changes applied outside of trading activity, such as manual adjustments through Position Admin or PL_SETTLEMENT transactions. |
| Position P&L Video guide |
Daily B-Book PnL from the account's position, split into realized, unrealized change, overnight carry (position revaluation held from the previous day), and trading PnL - per account, symbol, and business day (rolls at 5 pm New York). This report is intended for RISK accounts. The date range determines which business days are included. Note: complements Position EOD/Account EOD (a level at one instant) by reporting each business day's change instead. |
Available Fields (Columns)
Data fields are Report Type specific and so some fields may only be available in specific Report Type.
Available Fields (Columns)
The Field Names from the tables listed below are displayed in the report/templates component under the column "item" on the Field Settings tab.
Report Type: Deal | Deal A-Book | Deal B-Book | Deal (All Statuses) | Deal (Margin Account)
report type: deal | deal a-book | deal b-book | deal (all statuses) | deal (margin account)
| Field Name | Description |
|---|---|
| order.order | Order ID - the unique XCore Order ID. |
| order.connector | Order Connector - the connector name from the XCore configuration. |
| order.protocol | Order Connector Protocol - the type of connector protocol from the XCore configuration, such as FIX, MT4, MT5, Giveup, etc. |
| order.account | Order Connector Account - the name of the connector account within the XCore connector responsible for executing the order. |
| order.connector/account | The combined identifier of the order's execution channel, showing both the connector name and the specific connector account used for execution, formatted as "Connector/Account". Note: Formed by concatenating order.connector (the connector name) and order.account (the connector account within the connector on XCore). |
| order.clordid | Order Client Order ID - the unique client Order ID. |
| order.subid1 | Order SubID 1 - the SubID 1 of the order. |
| order.subid2 | Order SubID 2 - the SubID 2 of the order. When orders originate from an MT4 and MT5 connector, this will be the Group Name. |
| order.subid3 | Order SubID 3 - the SubID 3 of the order. When orders originate from an MT4 and MT5 connector, this will be the Account Login number. |
| order.subid4 | Order SubID 4 - the SubID 4 of the order. When orders originate from an MT4 connector, this will be the MT4 Order Ticket Number. When orders originate from an MT5 connector, this will be the posID. |
| order.side | Order Side - the side of the Order indicates whether the order is a "buy" or "sell". |
| order.type | Order Type - the XCore order type. Note: available values are: - market - limit - stop |
| order.instrument | Order Instrument - the connector stream instrument name as known by the MT4, MT5 or FIX end client. |
| order.symbol | Order Symbol - the connector stream symbol name as known by the XCore. |
| order.digits | Order Symbol Digits - the number of digits defined for the symbol, representing decimals after the “.” and excluding the last pip value digit. |
| order.factor | Order Factor - the factor of the traded instrument, defined in the Symbol configuration by the contract_size value. |
| order.currency | Order Currency - the currency in which the instrument is traded. |
| order.size | Order Requested Size - the size of the order requested by the client, expressed in lots. |
| #order.size_usd | Order Requested Size USD - the requested order size expressed in USD. Note: - if the symbol is quoted in USD and order.price > 0, #order.size_usd = order.size * order.price * order.factor; - otherwise, if a deal conversion rate is available, #order.size_usd = order.size * deal.conv_usd; - otherwise, #order.size_usd = 0. Available on Deal (All Statuses) only. For orders quoted in a third currency, returns 0 if no executed deal is available. |
| #order.size_eur | Order Requested Size EUR - the requested order size expressed in EUR. Note: - if the symbol is quoted in EUR and order.price > 0, #order.size_eur = order.size * order.price * order.factor; - otherwise, if a deal conversion rate is available, #order.size_eur = order.size * deal.conv_eur; - otherwise, #order.size_eur = 0. Available on Deal (All Statuses) only. For orders quoted in a third currency, returns 0 if no executed deal is available. |
| order.minsize | Order Minimum Split Size - the minimum accepted fill size specified in the order request. |
| order.price | Order Requested Price - the requested order price at the time order was placed. Note: order.price may be 0 for market orders, as the Price tag is optional and may not be included by the end client. |
| order.deviation | Order Allowed Price Deviation - the allowed deviation in points from the requested price up to which the order can be filled. Note: a value of (-1) indicates unlimited deviation. |
| order.ttl | Order TTL - the maximum duration, in milliseconds, during which XCore will attempt to fill the order. |
| order.mid | Order Mid Price - the Mid price between the top-of-book bid and ask as seen by XCore at the time order was placed, determined based on markups configured in the Provider Stream Settings and the Connector Profile Trade Lock Settings. |
| order.bid | Order Bid Price - the top-of-book Bid price of the order at the time order was placed, including the pre-aggregated bid markup set up in XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| order.ask | Order Ask Price - the top-of-book Ask price of the order at the time order was placed, including the pre-aggregated ask markup set up in XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| order.lq_pool | Order Liquidity Pool - the name of the liquidity pool associated with the executed order. |
| order.lq_profile | Order Liquidity Profile (Markup Profile) - the name of the markup profile associated with the executed order. |
| order.open_milli | Order Open Timestamp - the timestamp when the order was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| order.open_micro | Order Open Micro Timestamp - XCore's microsecond counter (0–999999) when the order was received, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| order.fillsize | Order Fill Size - the size of the order filled in XCore, in lots. Note: The fill size is the sum of the individual filled legs of the order. |
| order.fillprice | Order Fill Price - the client overall fill price, including markups defined in the XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. Note: the fill price is the volume-weighted average price fill price of the filled legs (leg.fillprice2). |
| order.message | Order Message - the message generated by XCore for the order in case of rejection. |
| order.close_milli | Order Close Timestamp - the timestamp when the order was completed in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| order.close_micro | Order Close Micro Timestamp - XCore's microsecond counter (0–999999) when the order was completed, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| #order.exec_time | Order Execution Time - the time in milliseconds from order submission to order closure, regardless of whether the order was filled. Note: #order.exec_time = order.close_milli - order.open_milli. Returns 0 if order.close_milli = 0 (the order is still open). |
| #order.open_date | Order Open Date - the date when the order was received in the XCore. Format: DD/MM/YYYY. |
| #order.open_time | Order Open Time - the time when the order was received in the XCore. Format: HH:MM:SS. |
| #order.slippage | Order Price Slippage (Decimal) - the difference between the Order Requested Price (or the top-of-book price) and the Order Fill Price, displayed in decimal format. Note: If order.side = SELL: - if order.price > 0 then #order.slippage = order.fillprice - order.price - else #order.slippage = order.fillprice - order.bid If order.side = BUY: - if order.price > 0 then #order.slippage = order.price - order.fillprice - else #order.slippage = order.ask - order.fillprice. |
| #order.slippage_pips | Order Price Slippage (Pips) - the difference between the Order Requested Price (or the top-of-book price) and the Order Fill Price, expressed in pips. Note: - #order.slippage_pips = #order.slippage * 10^order.digits |
| #order.slippage_usd | Order Price Slippage (USD per Base Unit) - the difference between the Order Requested Price (or the top-of-book price) and the Order Fill Price, expressed in USD per one base unit. Note: #order.slippage_usd = (#order.slippage * deal.conv_usd) / (order.factor * order.fillprice). Returns 0 when order.fillprice = 0. May introduce inaccuracies when an order consists of multiple deals with different deal.conv_usd values. For higher accuracy, use aggregation of the deal-level metric #deal.slippage_taker_req_usd_per_unit, or #deal.slippage_taker_req_usd for the full deal-size equivalent. |
| #order.slippage_eur | Order Price Slippage (EUR per Base Unit) - the difference between the Order Requested Price (or the top-of-book price) and the Order Fill Price, expressed in EUR per one base unit. Note: #order.slippage_eur = (#order.slippage * deal.conv_eur) / (order.factor * order.fillprice). Returns 0 when order.fillprice = 0. May introduce inaccuracies when an order consists of multiple deals with different deal.conv_eur values. For higher accuracy, use aggregation of the deal-level metric #deal.slippage_taker_req_eur instead - note it is expressed per full deal size. Available on Deal (All Statuses) only. |
| #order.gain_usd | Order Slippage Gain (USD) - the positive component of order slippage expressed in USD for the full order size. Note: - if #order.slippage > 0 then #order.gain_usd = (#order.slippage * deal.size * deal.conv_usd / order.fillprice) - else #order.gain_usd = 0. Returns 0 when order.fillprice = 0. May introduce inaccuracies when an order consists of multiple deals with different deal.conv_usd values. |
| #order.loss_usd | Order Slippage Loss (USD) - the negative component of order slippage expressed in USD for the full order size. Note: - if #order.slippage < 0 then #order.loss_usd = (#order.slippage * deal.size * deal.conv_usd / order.fillprice) - else #order.loss_usd = 0. Returns 0 when order.fillprice = 0. May introduce inaccuracies when an order consists of multiple deals with different deal.conv_usd values. |
| #order.slippage_tob_dpm | Order Taker TOB Slippage per Million - the taker slippage relative to the top-of-book price at the time the order was placed, normalized to parts per million (PPM) of the benchmark price. The PPM representation makes the value comparable across symbols with different price levels. Note: - if order.side = Sell and order.bid ≠ 0 then #order.slippage_tob_dpm = 1,000,000 * (order.fillprice - order.bid) / order.bid - if order.side = Buy and order.ask ≠ 0 then #order.slippage_tob_dpm = 1,000,000 * (order.ask - order.fillprice) / order.ask - no value if the benchmark price (order.bid/order.ask) is 0. This metric measures slippage relative to the market price available when the order was placed. It compares the order fill price against the top-of-book Bid or Ask price and expresses the difference in PPM. |
| #order.state | Order State - the status of the order. Note: available values are: - Partial - the order was partially filled (order.size > order.fillsize); - Filled - the order was fully filled (order.size = order.fillsize); - Rejected - the order was not filled and has been closed (order.fillsize = 0 and order.close_milli > 0); - Pending - the order has not been filled and is still open (order.fillsize = 0 and order.close_milli = 0). Note: Rejected and Pending are available only in the Deal (All Statuses) report. |
| #order.order_filled | Order Filled Flag - indicates that the order is fully filled. Note: available values are: 1 - the order is fully filled and closed (order.fillsize > 0 and order.fillsize = order.size and order.close_milli > 0); 0 - otherwise. |
| #order.order_partial | Order Partial Flag - indicates that the order is partially filled. Note: available values are: 1 - the order is partially filled and closed (order.fillsize > 0 and order.fillsize < order.size and order.close_milli > 0); 0 - otherwise. |
| #order.order_rejected | Order Rejected Flag - indicates that the order is rejected. Note: available values are: 1 - the order was not filled and is closed (order.fillsize = 0 and order.close_milli > 0); 0 - otherwise. |
| #order.time_in_force | Order TimeInForce - the order's Time In Force instruction, showing how the order can be filled. Note: available values are: - GTC (Good-Til-Cancelled) - when order.ttl = -1; - FOK (Fill-Or-Kill) - when order.ttl ≠ -1 and order.minsize = order.size; - IOC (Immediate-Or-Cancel) - otherwise. |
| #order.spread | Order Spread - the difference between the top-of-book Ask and Bid prices of the order at the time it was placed. Note: #order.spread = order.ask - order.bid. |
| #order.volume_usd | Order Volume USD - the USD-denominated requested order volume, calculated using the conversion rate at the time of trade execution. Note: For each deal row: #order.volume_usd = order.size * deal.conv_usd. For correct order-level results, group by the order (for example, order.order) and use the VWA aggregation type for this field. |
| #order.volume_eur | Order Volume EUR - the EUR-denominated requested order volume, calculated using the conversion rate at the time of trade execution. Note: For each deal row: #order.volume_eur = order.size * deal.conv_eur. For correct order-level results, group by the order (for example, order.order) and use the VWA aggregation type for this field. Available on Deal (All Statuses) only. |
| leg.order | Order ID - the unique XCore Order ID. |
| leg.leg | Leg ID - the unique Leg ID generated by XCore when an order is split into multiple legs to be sent to one or more Liquidity Providers for execution. Note: If an XCore Order ID 12345 is split into two legs, the system generates two leg IDs (0 and 1) for this order: - 12345-0 - 12345-1. |
| leg.batch | Leg Batch ID - the batch ID of a leg. Note: an order can be initially split into one or multiple legs as batch 0. If a leg is rejected, XCore will resend it for execution as batch 1, and so on. |
| leg.b_book | Leg B-Book Execution - the flag that shows whether a trade leg was executed through the B-Book or A-Book. Note: available values are: 0 - Leg was executed through A-Book. 1 - Leg was executed through B-Book. 2 - Cross-hedge leg. 3 - Leg was executed as Synthetic A-Book. For trades partially executed in both books, the report will show two separate entries: one with 0 for the A-Book part and one with 1 for the B-Book part. |
| leg.provider | Leg Provider - for A-Book execution, the Liquidity Provider to which the Leg was sent for execution. For B-Book execution, the Provider whose price quote was used to execute the trade. |
| leg.protocol | Leg Provider Protocol - the type of Liquidity Provider implementation. |
| leg.account | Leg Provider Account - the account Tag 1 value sent to the Liquidity Provider. |
| leg.clordid | Leg Client Order ID - the client Order ID sent to the Liquidity Provider. |
| leg.type | Leg Type - the Leg type. Note: available values are: - market - limit - pq (prequoted), depending on the order type, the DealerTrade mode and the provider. |
| leg.instrument | Leg Provider Instrument - the instrument name at the Liquidity Provider to which the trade was sent for execution. |
| leg.size | Leg Requested Size - the requested size of leg sent to the Liquidity Provider for execution, in lots. |
| leg.minsize | Leg Minimum Execution Size - the lowest leg execution size to be sent to the Liquidity Provider for execution. |
| leg.price | Leg Requested Price - the requested price of leg sent to the Liquidity Provider for execution. |
| leg.ttl | Leg TTL - the remaining time in milliseconds that the XCore will attempt to fill the leg in addition to any subsequent legs. |
| leg.markup_fix | Leg Markup Fix - the fixed markups in decimal format applied on the specific trade based on Markup Profile Bid or Ask markup settings. |
| leg.markup_flex | Leg Markup Flex - the variable markups in decimal format applied on the specific trade based on the Markup Profile Min and Max Spread Settings. |
| leg.quoteid | Leg Quote ID - the Liquidity Provider quote ID chosen by the XCore for leg execution. |
| leg.quoteref | Leg Provider Quote Reference - the Liquidity Provider quote reference ID chosen by the XCore for leg execution. |
| leg.quotetime | Leg Provider Quote Timestamp (system side) - the timestamp of when the quote update was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| leg.quotetimelp | Leg Provider Quote Arrival Delay - the difference in milliseconds between the timestamp when the quote was sent by the Liquidity Provider and the timestamp when it was received by XCore. |
| leg.open_milli | Leg Open Timestamp - the timestamp when the leg was created in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| leg.open_micro | Leg Open Micro Timestamp - always 0. |
| leg.fillsize | Leg Fill Size - the fill size of the leg, in lots. Note: A Leg sent to a Liquidity Provider can be further split by the Liquidity Provider into one or several deals. Therefore, the Leg Fill Size is the sum of the deals confirmed by the Liquidity Provider. |
| leg.fillprice | Leg Fill Price - the leg fill price, excluding all markups configured in XCore. For A-Book, this is the price confirmed by the Liquidity Provider. For B-Book, this is the liquidity pool top-of-book price on the traded side. Note: the fill price is the volume-weighted average fill price of the filled deals (deal.price). |
| leg.fillprice2 | Leg Fill Price with Markup - the marked up leg fill price including any configured XCore markups, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| leg.close_milli | Leg Close Timestamp - the timestamp when the leg was completed in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| leg.close_micro | Leg Close Micro Timestamp - XCore's microsecond counter (0–999999) when the leg was completed, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| #leg.ab_book | Leg Book Type - the book type for the trade leg, derived from the Leg B-Book Execution flag (leg.b_book). Note: available values are: A - leg.b_book = 0 (A-book). B - any other leg.b_book value (B-book, cross-hedge or Synthetic A-book). For trades partially executed in both books, the report will show two separate entries: one with A for the A-Book part and one with B for the B-Book part. |
| #leg.close_date | Leg Close Date - the date when the leg was executed in the XCore. Format: DD/MM/YYYY. |
| #leg.close_time | Leg Close Time - the time when the leg was executed in the XCore. Format: HH:MM:SS. |
| #leg.exec_time | Leg Execution Time - the time in milliseconds it took for the leg to get executed. Note: #leg.exec_time = leg.close_milli - leg.open_milli. |
| #leg.open_date | Order Open Date - the date when the leg was created in the XCore. Format: DD/MM/YYYY. |
| #leg.open_time | Order Open Time - the time when the leg was created in the XCore. Format: HH:MM:SS. |
| #leg.quote_date | Leg Provider Quote Date (system side) - the date when the quote update was received in the XCore. Format: DD/MM/YYYY. |
| #leg.quote_time | Leg Provider Quote Time (system side) - the time when the quote update was received in the XCore. Format: HH:MM:SS. |
| #leg.state | Leg State - the execution status of the leg. Note: available values are: - Rejected - the leg was not filled and has been closed (leg.fillsize = 0 and leg.close_milli > 0); - Partial - the leg was partially filled (leg.size > leg.fillsize); - Filled - the leg was fully filled (leg.size = leg.fillsize). |
| #leg.is_filled | Leg Filled Flag - indicates that the leg is in Filled status. Note: available values are: 1 - the leg is fully filled and closed (leg.fillsize = leg.size and leg.close_milli > 0); null - otherwise. |
| #leg.is_partial | Leg Partial Flag - indicates that the leg is in Partial status. Note: available values are: 1 - the leg is partially filled and closed (leg.fillsize > 0 and leg.fillsize < leg.size and leg.close_milli > 0); null - otherwise. |
| #leg.is_rejected | Leg Rejected Flag - indicates that the leg is in Rejected status. Note: available values are: 1 - the leg was not filled and is closed (leg.fillsize = 0 and leg.close_milli > 0); null - otherwise. |
| #leg.time_in_force | Leg TimeInForce - the leg's Time In Force instruction sent to the Liquidity Provider. Note: available values are: - FOK (Fill-Or-Kill) - when leg.minsize = leg.size; - IOC (Immediate-Or-Cancel) - otherwise; - no value - the order was rejected before a leg was created, so no leg data is present. Unlike #order.time_in_force, this value never resolves to GTC. |
| #leg.slippage_pips | Leg Price Slippage (Pips) - the difference between the Order Requested Price (or the top-of-book price) and the Leg Fill Price with Markup, expressed in pips. Note: If order.side = SELL: - if order.price > 0 then #leg.slippage_pips = (leg.fillprice2 - order.price) * 10^order.digits - else #leg.slippage_pips = (leg.fillprice2 - order.bid) * 10^order.digits If order.side = BUY: - if order.price > 0 then #leg.slippage_pips = (order.price - leg.fillprice2) * 10^order.digits - else #leg.slippage_pips = (order.ask - leg.fillprice2) * 10^order.digits. Returns 0 when leg.fillprice2 = 0. |
| #leg.volume_usd | Leg Volume USD - the USD-denominated volume of the leg at the moment of execution. Note: #leg.volume_usd = leg.fillsize * deal.conv_usd. May introduce inaccuracies when a leg consists of multiple deals with different deal.conv_usd values. For higher accuracy, use aggregation of the deal-level metric #deal.volume_usd. |
| deal.order | Order ID - the unique XCore Order ID. |
| deal.leg | Leg ID - the unique Leg ID generated by XCore when an order is split into multiple legs to be sent to one or more Liquidity Providers for execution. Note: If an XCore Order ID 12345 is split into two legs, the system generates two leg IDs (0 and 1) for this order: - 12345-0 - 12345-1. |
| deal.deal | Deal ID - the unique Deal ID generated by XCore when a leg sent to a Liquidity Provider is further split by the Liquidity Provider into one or several deals. Note: If a leg 12345-0 is split into two deals, the system generates two deal IDs (0 and 1) for this leg: - 12345-0-0 - 12345-0-1. |
| #deal.unique_id | Unique Deal Identifier - a single identifier that combines the XCore Order ID, Leg ID, and Deal ID into one value. Format: order.order-leg.leg-deal.deal Example: If Order ID = 12345, Leg ID = 0, and Deal ID = 1, then #deal.unique_id = 12345-0-1. |
| deal.size | Deal Execution Size - the size of the deal filled and confirmed by the Liquidity Provider, in lots. |
| deal.price | Deal Execution Price - the price at which the deal was executed, excluding all markups configured in XCore. For A-Book, this is the price confirmed by the Liquidity Provider. For B-Book, this is the liquidity pool top-of-book price on the traded side. |
| deal.markup | The difference between the Client price and the Liquidity Provider price for a trade, calculated in decimal format. Note: The value is determined based on the Markup Profile Settings (Bid or Ask markups, Min and Max Spread) and the Connector Profile Trade Lock Settings. This value does not include the Liquidity Provider Markup (deal.markup_lp). |
| deal.markup_lp | Liquidity Provider Markup - the value of the Bid or Ask markup applied to the raw Liquidity Provider price, taken from the Provider Stream Settings configured in XCore and expressed in decimal format. |
| deal.handicap_lp | Liquidity Provider Handicap - the handicap value provided by the LP. |
| deal.ordid | Deal Provider Order ID - the Order ID assigned by the LP. |
| deal.execid | Deal Provider Execution ID - the Execution ID received from the LP. |
| deal.valuedate | Deal Value Date - the deal value date received from the Liquidity Provider. |
| deal.message | Deal Message - the message received from the Liquidity Provider for cancelled or rejected deals. |
| deal.milli | Deal Execution Timestamp - the time when XCore recorded the fill received from the Liquidity Provider. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| deal.micro | Deal Execution Micro Timestamp - XCore's microsecond counter (0–999999) when XCore recorded the fill, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| deal.conv_eur | Deal Base Conversion to EUR - the EUR conversion rate at the moment of trade execution, converting the deal size in lots to EUR, calculated as the price of the symbol's base currency against EUR multiplied by the symbol's contract_size defined in the Symbol configuration. Note: The conversion rate is calculated from the Top of Book (TOB) market price and does not include any markups. |
| deal.conv_usd | Deal Base Conversion to USD - the USD conversion rate at the moment of trade execution, converting the deal size in lots to USD, calculated as the price of the symbol's base currency against USD, multiplied by the symbol's contract_size defined in the Symbol configuration. Note: The conversion rate is calculated from the Top of Book (TOB) market price and does not include any markups. |
| deal.conv | Deal Base Conversion to Deal Account Currency - the Account Currency conversion rate at the moment of trade execution, converting the deal size in lots to the account currency, calculated as the price of the symbol's base currency against the Account Currency, multiplied by the symbol's contract_size defined in the Symbol configuration. Note: The conversion rate is calculated from the Top of Book (TOB) market price and does not include any markups. |
| deal.ccy | Deal Account Currency - the currency of the Account, defined by the default_ccy value in the Account Group Settings. |
| #deal.margin_account | Deal Margin Account - the client margin account the deal was booked to. Note: "n/a" if no matching position row is found. Available on Deal (Margin Account) only. |
| #deal.symbol_quote_ccy | Deal Symbol Quote Currency - the quote currency of the traded symbol (e.g., USD for EURUSD). Note: value is taken from symbol configuration field symbol.quote and represents the currency in which the symbol is quoted. |
| #deal.base | Deal Position Base Change - the change in lots applied to the Position Base during this trade execution, increasing it for Buy trades and decreasing it for Sell trades. Note: - if order.side = Sell then #deal.base = - deal.size - if order.side = Buy then #deal.base = deal.size. |
| #deal.base_usd | Deal Position Base Change USD - the USD-denominated change applied to the Position Base during this trade execution, using the USD conversion rate defined for the traded symbol. Note: - if order.side = Sell then #deal.position_base_usd = - deal.size * deal.conv_usd - if order.side = Buy then #deal.position_base_usd = deal.size * deal.conv_usd. |
| #deal.commission_booked_amount | Deal Commission Booked Amount - the commission amount recorded per individual order and booked into the account wallet as a commission balance change (account_wallet.type = 5), expressed in the currency defined in CommissionConnectors.ccy. Note: The value is derived from CommissionProfileSetting and represents the incremental commission impact of a single order. It is calculated as the difference between the final wallet balance after the commission booking for the order and the previous wallet balance value for the same Account, Wallet, and Currency. |
| #deal.close_date | Deal Close Date - the date when the deal was executed by the Liquidity Provider. Format: DD/MM/YYYY. |
| #deal.close_time | Deal Close Time - the time when the deal was executed by the Liquidity Provider. Format: HH:MM:SS. |
| #deal.exec_time | Deal Execution Time - the time in milliseconds it took for the deal to be executed Note: #deal.exec_time = deal.milli - order.open_milli. |
| #deal.markup_exec | Deal Total Executed Markup - the total executed markup for the deal in decimal format, combining the client-side markup and the Liquidity Provider markup, applied according to the order side. This value reflects the total adjustment applied to the deal price during execution. Note: - if order.side = Sell then #deal.markup_exec = - (deal.markup + deal.markup_lp) - if order.side = Buy then #deal.markup_exec = deal.markup + deal.markup_lp. |
| #deal.markup_exec_pips | Deal Total Executed Markup (Pips) - the total executed markup for the deal expressed in pips, combining client-side and Liquidity Provider markups. Note: - #deal.markup_exec_pips = #deal.markup_exec * 10^order.digits. |
| #deal.markup_exec_usd_per_unit | Deal Total Executed Markup (USD per Base Unit) - the total executed markup for the deal, expressed in USD per one base unit. This value represents the same adjustment as #deal.markup_exec, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.markup_exec_usd_per_unit = (#deal.markup_exec * deal.conv_usd) / (order.factor * deal.price). |
| #deal.markup_exec_usd | Deal Total Executed Markup USD - the total executed markup, converted to USD for the full deal size, combining client-side and Liquidity Provider markups. This value represents the impact of the total executed markup on the deal expressed in USD. Note: #deal.markup_exec_usd = (#deal.markup_exec * deal.size / deal.price) * deal.conv_usd. |
| #deal.markup_exec_eur | Deal Total Executed Markup EUR - the total executed markup, converted to EUR for the full deal size, combining client-side and Liquidity Provider markups. This value represents the impact of the total executed markup on the deal expressed in EUR. Note: #deal.markup_exec_eur = (#deal.markup_exec * deal.size / deal.price) * deal.conv_eur. |
| #deal.markup_fix | Deal Executed Fixed Markup - the executed fixed markup for the deal in decimal format, derived from the leg's fixed markup and applied according to the order side. This value reflects the fixed adjustment applied to the deal price based on the Markup Profile settings (Bid or Ask). Note: - if order.side = Sell then #deal.markup_fix = - leg.markup_fix - if order.side = Buy then #deal.markup_fix = leg.markup_fix. |
| #deal.markup_fix_usd | Deal Executed Fixed Markup USD - the executed fixed markup, converted to USD for the full deal size. This value represents the impact of the executed fixed markup on the deal expressed in USD. Note: #deal.markup_fix_usd = (#deal.markup_fix * deal.size/ deal.price) * deal.conv_usd. |
| #deal.markup_flex | Deal Executed Flexible Markup - the executed variable markup for the deal in decimal format, derived from the leg's flexible markup and applied according to the order side. This value reflects the variable adjustment applied to the deal price based on the Markup Profile Min and Max Spread settings. Note: - if order.side = Sell then #deal.markup_flex = - leg.markup_flex - if order.side = Buy then #deal.markup_flex = leg.markup_flex. |
| #deal.markup_flex_usd | Deal Executed Flexible Markup USD - the executed variable markup, converted to USD for the full deal size. This value represents the impact of the executed variable markup on the deal expressed in USD. Note: #deal.markup_flex_usd = (#deal.markup_flex * deal.size/ deal.price) * deal.conv_usd. |
| #deal.markup_flex_diff | Realized Flexible Markup - the applied portion of the flexible markup that was effectively realized during the deal, adjusted according to the order side and price movement. This value reflects the realized adjustment from the variable (flexible) markup relative to the requested leg price. Note: If order.side = Sell: - if leg.markup_flex < 0 and deal.price < leg.price then #deal.markup_flex_diff = - LEAST(leg.price - deal.price, - leg.markup_flex); - if leg.markup_flex > 0 and deal.price > leg.price then #deal.markup_flex_diff = LEAST(deal.price - leg.price, leg.markup_flex); - else #deal.markup_flex_diff = 0 If order.side = Buy: - if leg.markup_flex > 0 and deal.price > leg.price then #deal.markup_flex_diff = - LEAST(deal.price - leg.price, leg.markup_flex); - if leg.markup_flex < 0 and deal.price < leg.price then #deal.markup_flex_diff = LEAST(leg.price - deal.price, - leg.markup_flex); - else #deal.markup_flex_diff = 0. |
| #deal.markup_flex_diff_usd | Realized Flexible Markup USD - the portion of the flexible markup effectively realized during the deal, converted to USD for the full deal size. This value represents the impact of the realized flexible markup on the deal expressed in USD. Note: #deal.markup_flex_diff_usd = (#deal.markup_flex_diff * deal.size / deal.price) * deal.conv_usd. |
| #deal.markup_lock | Deal Locked Markup - the portion of the client markup applied to the deal after accounting for fixed and realized flexible markups, adjusted according to the order side. This value represents the locked client markup that actually affects the deal price. Note: - if order.side = Sell then #deal.markup_lock = - (deal.markup - leg.markup_fix - leg.markup_flex - #deal.markup_flex_diff) - if order.side = Buy then #deal.markup_lock = deal.markup - leg.markup_fix - leg.markup_flex - #deal.markup_flex_diff. |
| #deal.markup_lock_usd | Deal Locked Markup USD - the portion of the client markup applied to the deal, converted to USD for the full deal size after accounting for fixed and realized flexible markups. This value represents the impact of the locked client markup on the deal expressed in USD. Note: #deal.markup_lock_usd = (#deal.markup_lock * deal.size / deal.price) * deal.conv_usd. |
| #deal.markup_lp_side_adj | Deal LP Side-Adjusted Markup - the executed Liquidity Provider markup for the deal in decimal format, applied according to the order side. This value reflects the Bid or Ask LP markup adjustment applied to the deal price based on the Provider Stream Settings in XCore. Note: - if order.side = Sell then #deal.markup_lp_side_adj = - deal.markup_lp - if order.side = Buy then #deal.markup_lp_side_adj = deal.markup_lp. |
| #deal.markup_lp_usd_side_adj | Deal LP Side-Adjusted Markup USD - the executed Liquidity Provider markup, converted to USD for the full deal size. This value represents the impact of the LP markup adjustment on the deal expressed in USD. Note: #deal.markup_lp_usd_side_adj = (#deal.markup_lp_side_adj * deal.size / deal.price) * deal.conv_usd. |
| #deal.markup_req | Deal Requested Markup - the total requested markup for the deal in decimal format, combining the Liquidity Provider markup, fixed markup, and variable markup, applied according to the order side. This value reflects the total requested price adjustment applied to the deal. Note: - if order.side = Sell then #deal.markup_req = - (deal.markup_lp + leg.markup_fix + leg.markup_flex) - if order.side = Buy then #deal.markup_req = deal.markup_lp + leg.markup_fix + leg.markup_flex. |
| #deal.markup_req_usd_per_unit | Deal Requested Markup (USD per Base Unit) - the total requested markup for the deal, expressed in USD per one base unit. This value represents the same adjustment as #deal.markup_req, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.markup_req_usd_per_unit = (#deal.markup_req * deal.conv_usd) / (order.factor * deal.price). |
| #deal.markup_req_usd | Deal Requested Markup USD - the total requested markup, converted to USD for the full deal size, combining the Liquidity Provider markup, fixed markup, and variable markup. This value represents the impact of the total requested markup on the deal expressed in USD. Note: #deal.markup_req_usd = (#deal.markup_req * deal.size / deal.price) * deal.conv_usd. |
| #deal.quote | Deal Position Quote Change - the change in quote currency applied to the Position Quote during this trade execution, decreasing it for Buy trades and increasing it for Sell trades. Note: - if order.side = Sell then #deal.quote = deal.size * order.factor * deal.price - if order.side = Buy then #deal.quote = - (deal.size * order.factor * deal.price). |
| #deal.quote_to_usd_conv | Deal Quote-to-USD Conversion Factor - the conversion factor from the symbol Quote Currency price units to USD per one lot of the base currency, calculated at the moment of trade execution as the ratio of the base-to-USD conversion rate to the deal execution price. Note: #deal.quote_to_usd_conv = deal.conv_usd / deal.price; multiplying this value by a price difference, markup, or slippage gives the USD amount per lot of deal size. |
| #deal.quote_to_ccy_conv | Deal Quote-to-Account Currency Conversion Factor - the conversion factor from the symbol Quote Currency price units to the Deal Account Currency per one lot of the base currency, calculated at the moment of trade execution as the ratio of the base-to-account currency conversion rate to the deal execution price. Note: #deal.quote_to_ccy_conv = deal.conv / deal.price; multiplying this value by a price difference, markup, or slippage gives the amount in the Deal Account Currency per lot of deal size. |
| #deal.slippage_maker | Deal Maker Execution Slippage - the price difference between the executed deal and the requested leg price, applied according to the order side to reflect slippage from the maker. This value represents the slippage incurred relative to the leg's requested price. Note: - if order.side = Sell then #deal.slippage_maker = deal.price - leg.price - if order.side = Buy then #deal.slippage_maker = - (deal.price - leg.price). Returns 0 when deal.price = 0. This metric measures slippage between the price sent by XCore to the Liquidity Provider and the actual execution price returned by the Liquidity Provider. It does not include client markups or Trade Lock adjustments. |
| #deal.slippage_maker_pips | Deal Maker Execution Slippage (Pips) - the maker slippage for the deal, expressed in pips. Note: #deal.slippage_maker_pips = #deal.slippage_maker * 10^order.digits. |
| #deal.slippage_maker_usd_per_unit | Deal Maker Execution Slippage (USD per Base Unit) - the maker slippage for the deal, expressed in USD per one base unit. This value represents the same adjustment as #deal.slippage_maker, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.slippage_maker_usd_per_unit = (#deal.slippage_maker * deal.conv_usd) / (order.factor * deal.price). |
| #deal.slippage_maker_usd | Deal Maker Execution Slippage USD - the price difference between the executed deal and the requested leg price, converted to USD for the full deal size. This value represents the impact of the maker slippage on the deal expressed in USD. Note: #deal.slippage_maker_usd = (#deal.slippage_maker * deal.size / deal.price) * deal.conv_usd. |
| #deal.slippage_maker_eur | Deal Maker Execution Slippage EUR - the price difference between the executed deal and the requested leg price, converted to EUR for the full deal size. This value represents the impact of the maker slippage on the deal expressed in EUR. Note: #deal.slippage_maker_eur = (#deal.slippage_maker * deal.size / deal.price) * deal.conv_eur. |
| #deal.slippage_taker_req | Deal Taker Request Slippage - the slippage between the taker execution price and the requested order price, adjusted by the order side. Note: - if order.side = Sell then #deal.slippage_taker_req = (deal.price + deal.markup + deal.markup_lp) - order.price - if order.side = Buy then #deal.slippage_taker_req = - (deal.price + deal.markup + deal.markup_lp - order.price). - Slippage calculations are performed only when order.price > 0. Returns 0 when deal.price = 0. This metric measures slippage from the Client perspective. It compares the final execution price delivered to the Client (including markups and Trade Lock adjustments) against the requested order price. |
| #deal.slippage_taker_req_usd_per_unit | Deal Taker Request Slippage (USD per Base Unit) - the taker slippage relative to the requested order price, expressed in USD per one base unit. This value represents the same adjustment as #deal.slippage_taker_req, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.slippage_taker_req_usd_per_unit = (#deal.slippage_taker_req * deal.conv_usd) / (order.factor * deal.price). Slippage calculations are performed only when order.price > 0 |
| #deal.slippage_taker_req_usd | Deal Taker Request Slippage USD - the slippage between the taker execution price and the requested order price, converted to USD for the full deal size. This value represents the impact of the taker slippage relative to the requested price on the deal expressed in USD. Note: #deal.slippage_taker_req_usd = (#deal.slippage_taker_req * deal.size / deal.price) * deal.conv_usd. Slippage calculations are performed only when order.price > 0 |
| #deal.slippage_taker_req_eur | Deal Taker Request Slippage EUR - the slippage between the taker execution price and the requested order price, converted to EUR for the full deal size. This value represents the impact of the taker slippage relative to the requested price on the deal expressed in EUR. Note: #deal.slippage_taker_req_eur = (#deal.slippage_taker_req * deal.size / deal.price) * deal.conv_eur. Slippage calculations are performed only when order.price > 0 |
| #deal.slippage_taker_tob | Deal Taker TOB Slippage - the slippage between the taker execution price and the top-of-book price at the time order was placed, adjusted by the order side. Note: - if order.side = Sell and order.bid ≠ 0 then #deal.slippage_taker_tob = (deal.price + deal.markup + deal.markup_lp) - order.bid - if order.side = Buy and order.ask ≠ 0 then #deal.slippage_taker_tob = - (deal.price + deal.markup + deal.markup_lp - order.ask). - Slippage calculations are performed only when order.bid (order.ask) > 0. This metric measures slippage relative to the market price available when the order was placed. It compares the final execution price delivered to the Client (including markups and Trade Lock adjustments) against the top-of-book Bid or Ask price at order creation. |
| #deal.slippage_taker_tob_usd_per_unit | Deal Taker TOB Slippage (USD per Base Unit) - the taker slippage relative to the top-of-book price at the time order was placed, expressed in USD per one base unit. This value represents the same adjustment as #deal.slippage_taker_tob, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.slippage_taker_tob_usd_per_unit = (#deal.slippage_taker_tob * deal.conv_usd) / (order.factor * deal.price). |
| #deal.slippage_tob_usd | Deal Taker TOB Slippage USD - the slippage between the taker execution price and the top-of-book price at the time order was placed, converted to USD for the full deal size. This value represents the impact of the taker slippage relative to the top-of-book price on the deal expressed in USD. Note: #deal.slippage_tob_usd = (#deal.slippage_taker_tob * deal.size / deal.price) * deal.conv_usd. |
| #deal.slippage_tob_eur | Deal Taker TOB Slippage EUR - the slippage between the taker execution price and the top-of-book price at the time order was placed, converted to EUR for the full deal size. This value represents the impact of the taker slippage relative to the top-of-book price on the deal expressed in EUR. Note: #deal.slippage_tob_eur = (#deal.slippage_taker_tob * deal.size / deal.price) * deal.conv_eur. |
| #deal.slippage_tob_dpm | Deal Taker TOB Slippage per Million - the taker slippage relative to the top-of-book price at the time the order was placed, normalized to parts per million (PPM) of the benchmark price. The PPM representation makes the value comparable across symbols with different price levels. Note: - if order.side = Sell and order.bid ≠ 0 then #deal.slippage_tob_dpm = 1,000,000 * ((deal.price + deal.markup + deal.markup_lp) - order.bid) / order.bid - if order.side = Buy and order.ask ≠ 0 then #deal.slippage_tob_dpm = -1,000,000 * ((deal.price + deal.markup + deal.markup_lp) - order.ask) / order.ask - no value if the benchmark price (order.bid/order.ask) is 0. This metric measures slippage relative to the market price available when the order was placed. It compares the final execution price delivered to the Client (including markups and Trade Lock adjustments) against the top-of-book Bid or Ask price and expresses the difference in PPM. |
| #deal.taker_price | Taker Execution Price - the final execution price for the deal, calculated as the Liquidity Provider execution price adjusted by the client markup and the Liquidity Provider markup. Note: #deal.taker_price = deal.price + deal.markup + deal.markup_lp. |
| #deal.volume | Deal Volume - the nominal volume of the deal in base units of the traded instrument. Note: #deal.volume = deal.size * order.factor. |
| #deal.volume_usd | Deal Volume USD - the USD-denominated volume of the deal at the moment of trade execution. Note: #deal.volume_usd = deal.size * deal.conv_usd. |
| #deal.volume_eur | Deal Volume EUR - the EUR-denominated volume of the deal at the moment of trade execution. Note: #deal.volume_eur = deal.size * deal.conv_eur. |
| #deal.volume_acc_ccy | Deal Volume CCY - the Account Currency-denominated volume of the deal at the moment of trade execution. Note: #deal.volume_acc_ccy = deal.size * deal.conv. |
| #filter.eod_symbol_price | EOD Symbol Price - the last recorded price of the symbol up to the end of the selected report date range. Note: The price is taken from the filter table, which stores prices that passed the configured thresholds. The price does not include markups from the Markup Profile Settings (Bid/Ask markups, Min/Max Spread). The price includes the Bid or Ask markup from the Provider Stream Settings only. The symbol contract size (symbol.contract_size) is not applied. Note: #filter.eod_symbol_price = (filter.bid_close + filter.ask_close) / 2, where filter.bid_close and filter.ask_close are each taken from the last record with that side > 0, so they can come from different records. Returns 0 if either side has no price. Note: For Deal-type reports, this field returns values only when the report template includes grouping by at least two fields (for example, order.subid3 and order.symbol). |
| #filter.eod_symbol_price_time | EOD Symbol Price Timestamp - the later timestamp of the filter.bid_close and filter.ask_close values used to calculate #filter.eod_symbol_price. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. Note: For Deal-type reports, this field returns values only when the report template includes grouping by at least two fields (for example, order.subid3 and order.symbol). |
Deal A-Book and Deal B-Book offer the fields above except #filter.eod_symbol_price, #filter.eod_symbol_price_time, #leg.is_filled, #leg.is_partial, #leg.is_rejected, #leg.quotetime_lp, #leg.time_in_force, #order.count, #order.order_filled, #order.order_partial, #order.order_rejected, #order.spread and #order.time_in_force.
Report Type: Deal (ClickHouse)
report type: deal clickhouse
| Field Name | Description |
|---|---|
| order.open_order | Order ID (order.order) - the unique XCore Order ID. |
| order.open_taker | Order Connector (order.connector) - the connector name from the XCore configuration. |
| order.open_taker_type | Order Connector Protocol (order.protocol) - the type of connector protocol from the XCore configuration, such as FIX, MT4, MT5, Giveup, etc. |
| order.open_taker_account | Order Connector Account (order.account) - the name of the connector account within the XCore connector responsible for executing the order. |
| #order.connector/account | The combined identifier (order.connector/account) of the order's execution channel, showing both the connector name and the specific connector account used for execution, formatted as "Connector/Account". Note: Formed by concatenating order.connector (the connector name) and order.account (the connector account within the connector on XCore). |
| order.open_clordid | Order Client Order ID (order.clordid) - the unique client Order ID. |
| order.open_subid1 | Order SubID 1 (order.subid1) - the SubID 1 of the order. |
| order.open_subid2 | Order SubID 2 (order.subid2) - the SubID 2 of the order. When orders originate from an MT4 and MT5 connector, this will be the Group Name. |
| order.open_subid3 | Order SubID 3 (order.subid3) - the SubID 3 of the order. When orders originate from an MT4 and MT5 connector, this will be the Account Login number. |
| order.open_subid4 | Order SubID 4 (order.subid4) - the SubID 4 of the order. When orders originate from an MT4 connector, this will be the MT4 Order Ticket Number. When orders originate from an MT5 connector, this will be the posID. |
| order.open_side | Order Side (order.side) - the side of the Order indicates whether the order is a "buy" or "sell". |
| order.open_type | Order Type (order.type) - the XCore order type. Note: available values are: - market - limit - stop |
| order.open_instrument | Order Instrument (order.instrument) - the connector stream instrument name as known by the MT4, MT5 or FIX end client. |
| order.open_symbol | Order Symbol (order.symbol) - the connector stream symbol name as known by the XCore. |
| order.open_contract_size | Order Factor (order.factor) - the factor of the traded instrument, defined in the Symbol configuration by the contract_size value. |
| order.open_currency | Order Currency (order.currency) - the currency in which the instrument is traded. |
| order.open_size | Order Requested Size (order.size) - the size of the order requested by the client, expressed in lots. |
| order.open_minsize | Order Minimum Split Size (order.minsize) - the minimum accepted fill size specified in the order request. |
| order.open_price | Order Requested Price (order.price) - the requested order price at the time order was placed. Note: order.price may be 0 for market orders, as the Price tag is optional and may not be included by the end client. |
| order.open_deviation | Order Allowed Price Deviation (order.deviation) - the allowed deviation in points from the requested price up to which the order can be filled. Note: a value of (-1) indicates unlimited deviation. |
| order.open_ttl | Order TTL (order.ttl) - the maximum duration, in milliseconds, during which XCore will attempt to fill the order. |
| order.open_bid | Order Bid Price (order.bid) - the top-of-book Bid price of the order at the time order was placed, including the pre-aggregated bid markup set up in XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| order.open_ask | Order Ask Price (order.ask) - the top-of-book Ask price of the order at the time order was placed, including the pre-aggregated ask markup set up in XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| order.open_time | Order Open Timestamp (order.open_milli) - the timestamp when the order was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| order.close_message | Order Message (order.message) - the message generated by XCore for the order in case of rejection. |
| order.close_time | Order Close Timestamp (order.close_milli) - the timestamp when the order was completed in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #order.exec_time | Order Execution Time - the time in milliseconds from order submission to order closure, regardless of whether the order was filled. Note: #order.exec_time = order.close_milli - order.open_milli. Returns 0 if order.close_milli = 0 (the order is still open). |
| #order.open_date | Order Open Date - the date when the order was received in the XCore. Format: DD/MM/YYYY. |
| #order.spread | Order Spread - the difference between the top-of-book Ask and Bid prices of the order at the time it was placed. Note: #order.spread = order.ask - order.bid. |
| leg.open_leg | Leg ID (leg.leg) - the unique Leg ID generated by XCore when an order is split into multiple legs to be sent to one or more Liquidity Providers for execution. Note: If an XCore Order ID 12345 is split into two legs, the system generates two leg IDs (0 and 1) for this order: - 12345-0 - 12345-1. |
| leg.open_batch | Leg Batch ID (leg.batch) - the batch ID of a leg. Note: an order can be initially split into one or multiple legs as batch 0. If a leg is rejected, XCore will resend it for execution as batch 1, and so on. |
| leg.open_b_book | Leg B-Book Execution (leg.b_book) - the flag that shows whether a trade leg was executed through the B-Book or A-Book. Note: available values are: 0 - Leg was executed through A-Book. 1 - Leg was executed through B-Book. 2 - Cross-hedge leg. 3 - Leg was executed as Synthetic A-Book. For trades partially executed in both books, the report will show two separate entries: one with 0 for the A-Book part and one with 1 for the B-Book part. |
| leg.open_maker | Leg Provider (leg.provider) - for A-Book execution, the Liquidity Provider to which the Leg was sent for execution. For B-Book execution, the Provider whose price quote was used to execute the trade. |
| leg.open_maker_type | Leg Provider Protocol (leg.protocol) - the type of Liquidity Provider implementation. |
| leg.open_maker_account | Leg Provider Account (leg.account) - the account Tag 1 value sent to the Liquidity Provider. |
| leg.open_clordid | Leg Client Order ID (leg.clordid) - the client Order ID sent to the Liquidity Provider. |
| leg.open_ord_type | Leg Type (leg.type) - the Leg type. Note: available values are: - market - limit - pq (prequoted), depending on the order type, the DealerTrade mode and the provider. |
| leg.open_instrument | Leg Provider Instrument (leg.instrument) - the instrument name at the Liquidity Provider to which the trade was sent for execution. |
| leg.open_size | Leg Requested Size (leg.size) - the requested size of leg sent to the Liquidity Provider for execution, in lots. |
| leg.open_minsize | Leg Minimum Execution Size (leg.minsize) - the lowest leg execution size to be sent to the Liquidity Provider for execution. |
| leg.open_price | Leg Requested Price (leg.price) - the requested price of leg sent to the Liquidity Provider for execution. |
| leg.open_ttl | Leg TTL (leg.ttl) - the remaining time in milliseconds that the XCore will attempt to fill the leg in addition to any subsequent legs. |
| leg.open_markup_delta_fix | Leg Markup Fix (leg.markup_fix) - the fixed markups in decimal format applied on the specific trade based on Markup Profile Bid or Ask markup settings. |
| leg.open_markup_delta_flex | Leg Markup Flex (leg.markup_flex) - the variable markups in decimal format applied on the specific trade based on the Markup Profile Min and Max Spread Settings. |
| leg.open_quote_ref | Leg Provider Quote Reference (leg.quoteref) - the Liquidity Provider quote reference ID chosen by the XCore for leg execution. |
| leg.open_quote_time | Leg Provider Quote Timestamp (system side) (leg.quotetime) - the timestamp of when the quote update was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| leg.open_time | Leg Open Timestamp (leg.open_milli) - the timestamp when the leg was created in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| leg.close_time | Leg Close Timestamp (leg.close_milli) - the timestamp when the leg was completed in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #leg.ab_book | Leg Book Type - the book type for the trade leg, derived from the Leg B-Book Execution flag (leg.b_book). Note: available values are: A - leg.b_book = 0 (A-book). B - any other leg.b_book value (B-book, cross-hedge or Synthetic A-book). For trades partially executed in both books, the report will show two separate entries: one with A for the A-Book part and one with B for the B-Book part. |
| #leg.close_date | Leg Close Date - the date when the leg was executed in the XCore. Format: DD/MM/YYYY. |
| #leg.close_time_display | Leg Close Time (#leg.close_time) - the time when the leg was executed in the XCore. Format: HH:MM:SS. |
| #leg.exec_time | Leg Execution Time - the time in milliseconds it took for the leg to get executed. Note: #leg.exec_time = leg.close_milli - leg.open_milli. |
| #leg.open_date | Order Open Date - the date when the leg was created in the XCore. Format: DD/MM/YYYY. |
| #leg.open_time_display | Order Open Time (#leg.open_time) - the time when the leg was created in the XCore. Format: HH:MM:SS. |
| #leg.quote_date | Leg Provider Quote Date (system side) - the date when the quote update was received in the XCore. Format: DD/MM/YYYY. |
| #leg.quote_time_display | Leg Provider Quote Time (system side) (#leg.quote_time) - the time when the quote update was received in the XCore. Format: HH:MM:SS. |
| deal.done_deal | Deal ID (deal.deal) - the unique Deal ID generated by XCore when a leg sent to a Liquidity Provider is further split by the Liquidity Provider into one or several deals. Note: If a leg 12345-0 is split into two deals, the system generates two deal IDs (0 and 1) for this leg: - 12345-0-0 - 12345-0-1. |
| #deal_ch.unique_id | Unique Deal Identifier (#deal.unique_id) - a single identifier that combines the XCore Order ID, Leg ID, and Deal ID into one value. Format: order.order-leg.leg-deal.deal Example: If Order ID = 12345, Leg ID = 0, and Deal ID = 1, then #deal.unique_id = 12345-0-1. |
| deal.done_size | Deal Execution Size (deal.size) - the size of the deal filled and confirmed by the Liquidity Provider, in lots. |
| deal.done_price | Deal Execution Price (deal.price) - the price at which the deal was executed, excluding all markups configured in XCore. For A-Book, this is the price confirmed by the Liquidity Provider. For B-Book, this is the liquidity pool top-of-book price on the traded side. |
| leg.open_markup_delta_maker | Liquidity Provider Markup (deal.markup_lp) - the value of the Bid or Ask markup applied to the raw Liquidity Provider price, taken from the Provider Stream Settings configured in XCore and expressed in decimal format. |
| deal.done_ordid | Deal Provider Order ID (deal.ordid) - the Order ID assigned by the LP. |
| deal.done_execid | Deal Provider Execution ID (deal.execid) - the Execution ID received from the LP. |
| deal.done_valuedate | Deal Value Date (deal.valuedate) - the deal value date received from the Liquidity Provider. |
| deal.done_message | Deal Message (deal.message) - the message received from the Liquidity Provider for cancelled or rejected deals. |
| deal.done_time | Deal Execution Timestamp (deal.milli) - the time when XCore recorded the fill received from the Liquidity Provider. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| deal.done_conv_usd | Deal Base Conversion to USD (deal.conv_usd) - the USD conversion rate at the moment of trade execution, converting the deal size in lots to USD, calculated as the price of the symbol's base currency against USD, multiplied by the symbol's contract_size defined in the Symbol configuration. Note: The conversion rate is calculated from the Top of Book (TOB) market price and does not include any markups. |
| #deal_ch.base | Deal Position Base Change (#deal.base) - the change in lots applied to the Position Base during this trade execution, increasing it for Buy trades and decreasing it for Sell trades. Note: - if order.side = Sell then #deal.base = - deal.size - if order.side = Buy then #deal.base = deal.size. |
| #deal_ch.base_usd | Deal Position Base Change USD (#deal.base_usd) - the USD-denominated change applied to the Position Base during this trade execution, using the USD conversion rate defined for the traded symbol. Note: - if order.side = Sell then #deal.position_base_usd = - deal.size * deal.conv_usd - if order.side = Buy then #deal.position_base_usd = deal.size * deal.conv_usd. |
| #deal.close_date | Deal Close Date - the date when the deal was executed by the Liquidity Provider. Format: DD/MM/YYYY. |
| #deal.close_time_display | Deal Close Time (#deal.close_time) - the time when the deal was executed by the Liquidity Provider. Format: HH:MM:SS. |
| #deal_ch.exec_time | Deal Execution Time (#deal.exec_time) - the time in milliseconds it took for the deal to be executed Note: #deal.exec_time = deal.milli - order.open_milli. |
| #deal_ch.markup_exec | Deal Total Executed Markup (#deal.markup_exec) - the total executed markup for the deal in decimal format, combining the client-side markup and the Liquidity Provider markup, applied according to the order side. This value reflects the total adjustment applied to the deal price during execution. Note: - if order.side = Sell then #deal.markup_exec = - (deal.markup + deal.markup_lp) - if order.side = Buy then #deal.markup_exec = deal.markup + deal.markup_lp. |
| #deal_ch.markup_exec_usd_per_unit | Deal Total Executed Markup (USD per Base Unit) (#deal.markup_exec_usd_per_unit) - the total executed markup for the deal, expressed in USD per one base unit. This value represents the same adjustment as #deal.markup_exec, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.markup_exec_usd_per_unit = (#deal.markup_exec * deal.conv_usd) / (order.factor * deal.price). |
| #deal_ch.markup_exec_usd | Deal Total Executed Markup USD (#deal.markup_exec_usd) - the total executed markup, converted to USD for the full deal size, combining client-side and Liquidity Provider markups. This value represents the impact of the total executed markup on the deal expressed in USD. Note: #deal.markup_exec_usd = (#deal.markup_exec * deal.size / deal.price) * deal.conv_usd. |
| #deal_ch.markup_fix_side_adj | Deal Executed Fixed Markup (#deal.markup_fix) - the executed fixed markup for the deal in decimal format, derived from the leg's fixed markup and applied according to the order side. This value reflects the fixed adjustment applied to the deal price based on the Markup Profile settings (Bid or Ask). Note: - if order.side = Sell then #deal.markup_fix = - leg.markup_fix - if order.side = Buy then #deal.markup_fix = leg.markup_fix. |
| #deal_ch.markup_fix_usd | Deal Executed Fixed Markup USD (#deal.markup_fix_usd) - the executed fixed markup, converted to USD for the full deal size. This value represents the impact of the executed fixed markup on the deal expressed in USD. Note: #deal.markup_fix_usd = (#deal.markup_fix * deal.size/ deal.price) * deal.conv_usd. |
| #deal_ch.markup_flex_side_adj | Deal Executed Flexible Markup (#deal.markup_flex) - the executed variable markup for the deal in decimal format, derived from the leg's flexible markup and applied according to the order side. This value reflects the variable adjustment applied to the deal price based on the Markup Profile Min and Max Spread settings. Note: - if order.side = Sell then #deal.markup_flex = - leg.markup_flex - if order.side = Buy then #deal.markup_flex = leg.markup_flex. |
| #deal_ch.markup_flex_usd | Deal Executed Flexible Markup USD (#deal.markup_flex_usd) - the executed variable markup, converted to USD for the full deal size. This value represents the impact of the executed variable markup on the deal expressed in USD. Note: #deal.markup_flex_usd = (#deal.markup_flex * deal.size/ deal.price) * deal.conv_usd. |
| #deal_ch.markup_flex_diff | Realized Flexible Markup (#deal.markup_flex_diff) - the applied portion of the flexible markup that was effectively realized during the deal, adjusted according to the order side and price movement. This value reflects the realized adjustment from the variable (flexible) markup relative to the requested leg price. Note: If order.side = Sell: - if leg.markup_flex < 0 and deal.price < leg.price then #deal.markup_flex_diff = - LEAST(leg.price - deal.price, - leg.markup_flex); - if leg.markup_flex > 0 and deal.price > leg.price then #deal.markup_flex_diff = LEAST(deal.price - leg.price, leg.markup_flex); - else #deal.markup_flex_diff = 0 If order.side = Buy: - if leg.markup_flex > 0 and deal.price > leg.price then #deal.markup_flex_diff = - LEAST(deal.price - leg.price, leg.markup_flex); - if leg.markup_flex < 0 and deal.price < leg.price then #deal.markup_flex_diff = LEAST(leg.price - deal.price, - leg.markup_flex); - else #deal.markup_flex_diff = 0. |
| #deal_ch.markup_flex_diff_usd | Realized Flexible Markup USD (#deal.markup_flex_diff_usd) - the portion of the flexible markup effectively realized during the deal, converted to USD for the full deal size. This value represents the impact of the realized flexible markup on the deal expressed in USD. Note: #deal.markup_flex_diff_usd = (#deal.markup_flex_diff * deal.size / deal.price) * deal.conv_usd. |
| #deal_ch.markup_lock_side_adj | Deal Locked Markup (#deal.markup_lock) - the portion of the client markup applied to the deal after accounting for fixed and realized flexible markups, adjusted according to the order side. This value represents the locked client markup that actually affects the deal price. Note: - if order.side = Sell then #deal.markup_lock = - (deal.markup - leg.markup_fix - leg.markup_flex - #deal.markup_flex_diff) - if order.side = Buy then #deal.markup_lock = deal.markup - leg.markup_fix - leg.markup_flex - #deal.markup_flex_diff. |
| #deal_ch.markup_lock_usd | Deal Locked Markup USD (#deal.markup_lock_usd) - the portion of the client markup applied to the deal, converted to USD for the full deal size after accounting for fixed and realized flexible markups. This value represents the impact of the locked client markup on the deal expressed in USD. Note: #deal.markup_lock_usd = (#deal.markup_lock * deal.size / deal.price) * deal.conv_usd. |
| #deal_ch.markup_lp_side_adj | Deal LP Side-Adjusted Markup (#deal.markup_lp_side_adj) - the executed Liquidity Provider markup for the deal in decimal format, applied according to the order side. This value reflects the Bid or Ask LP markup adjustment applied to the deal price based on the Provider Stream Settings in XCore. Note: - if order.side = Sell then #deal.markup_lp_side_adj = - deal.markup_lp - if order.side = Buy then #deal.markup_lp_side_adj = deal.markup_lp. |
| #deal_ch.markup_lp_usd_side_adj | Deal LP Side-Adjusted Markup USD (#deal.markup_lp_usd_side_adj) - the executed Liquidity Provider markup, converted to USD for the full deal size. This value represents the impact of the LP markup adjustment on the deal expressed in USD. Note: #deal.markup_lp_usd_side_adj = (#deal.markup_lp_side_adj * deal.size / deal.price) * deal.conv_usd. |
| #deal_ch.markup_req | Deal Requested Markup (#deal.markup_req) - the total requested markup for the deal in decimal format, combining the Liquidity Provider markup, fixed markup, and variable markup, applied according to the order side. This value reflects the total requested price adjustment applied to the deal. Note: - if order.side = Sell then #deal.markup_req = - (deal.markup_lp + leg.markup_fix + leg.markup_flex) - if order.side = Buy then #deal.markup_req = deal.markup_lp + leg.markup_fix + leg.markup_flex. |
| #deal_ch.markup_req_usd_per_unit | Deal Requested Markup (USD per Base Unit) (#deal.markup_req_usd_per_unit) - the total requested markup for the deal, expressed in USD per one base unit. This value represents the same adjustment as #deal.markup_req, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.markup_req_usd_per_unit = (#deal.markup_req * deal.conv_usd) / (order.factor * deal.price). |
| #deal_ch.markup_req_usd | Deal Requested Markup USD (#deal.markup_req_usd) - the total requested markup, converted to USD for the full deal size, combining the Liquidity Provider markup, fixed markup, and variable markup. This value represents the impact of the total requested markup on the deal expressed in USD. Note: #deal.markup_req_usd = (#deal.markup_req * deal.size / deal.price) * deal.conv_usd. |
| #deal_ch.quote | Deal Position Quote Change (#deal.quote) - the change in quote currency applied to the Position Quote during this trade execution, decreasing it for Buy trades and increasing it for Sell trades. Note: - if order.side = Sell then #deal.quote = deal.size * order.factor * deal.price - if order.side = Buy then #deal.quote = - (deal.size * order.factor * deal.price). |
| #deal.quote_to_usd_conv | Deal Quote-to-USD Conversion Factor - the conversion factor from the symbol Quote Currency price units to USD per one lot of the base currency, calculated at the moment of trade execution as the ratio of the base-to-USD conversion rate to the deal execution price. Note: #deal.quote_to_usd_conv = deal.conv_usd / deal.price; multiplying this value by a price difference, markup, or slippage gives the USD amount per lot of deal size. |
| #deal_ch.slippage_maker | Deal Maker Execution Slippage (#deal.slippage_maker) - the price difference between the executed deal and the requested leg price, applied according to the order side to reflect slippage from the maker. This value represents the slippage incurred relative to the leg's requested price. Note: - if order.side = Sell then #deal.slippage_maker = deal.price - leg.price - if order.side = Buy then #deal.slippage_maker = - (deal.price - leg.price). This metric measures slippage between the price sent by XCore to the Liquidity Provider and the actual execution price returned by the Liquidity Provider. It does not include client markups or Trade Lock adjustments. |
| #deal_ch.slippage_maker_usd_per_unit | Deal Maker Execution Slippage (USD per Base Unit) (#deal.slippage_maker_usd_per_unit) - the maker slippage for the deal, expressed in USD per one base unit. This value represents the same adjustment as #deal.slippage_maker, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.slippage_maker_usd_per_unit = (#deal.slippage_maker * deal.conv_usd) / (order.factor * deal.price). |
| #deal_ch.slippage_maker_usd | Deal Maker Execution Slippage USD (#deal.slippage_maker_usd) - the price difference between the executed deal and the requested leg price, converted to USD for the full deal size. This value represents the impact of the maker slippage on the deal expressed in USD. Note: #deal.slippage_maker_usd = (#deal.slippage_maker * deal.size / deal.price) * deal.conv_usd. |
| #deal_ch.slippage_taker_req | Deal Taker Request Slippage (#deal.slippage_taker_req) - the slippage between the taker execution price and the requested order price, adjusted by the order side. Note: - if order.side = Sell then #deal.slippage_taker_req = (deal.price + deal.markup + deal.markup_lp) - order.price - if order.side = Buy then #deal.slippage_taker_req = - (deal.price + deal.markup + deal.markup_lp - order.price). - Slippage calculations are performed only when order.price > 0. This metric measures slippage from the Client perspective. It compares the final execution price delivered to the Client (including markups and Trade Lock adjustments) against the requested order price. |
| #deal_ch.slippage_taker_req_usd_per_unit | Deal Taker Request Slippage (USD per Base Unit) (#deal.slippage_taker_req_usd_per_unit) - the taker slippage relative to the requested order price, expressed in USD per one base unit. This value represents the same adjustment as #deal.slippage_taker_req, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.slippage_taker_req_usd_per_unit = (#deal.slippage_taker_req * deal.conv_usd) / (order.factor * deal.price). Slippage calculations are performed only when order.price > 0 |
| #deal_ch.slippage_taker_req_usd | Deal Taker Request Slippage USD (#deal.slippage_taker_req_usd) - the slippage between the taker execution price and the requested order price, converted to USD for the full deal size. This value represents the impact of the taker slippage relative to the requested price on the deal expressed in USD. Note: #deal.slippage_taker_req_usd = (#deal.slippage_taker_req * deal.size / deal.price) * deal.conv_usd. Slippage calculations are performed only when order.price > 0 |
| #deal_ch.slippage_taker_tob | Deal Taker TOB Slippage (#deal.slippage_taker_tob) - the slippage between the taker execution price and the top-of-book price at the time order was placed, adjusted by the order side. Note: - if order.side = Sell and order.bid ≠ 0 then #deal.slippage_taker_tob = (deal.price + deal.markup + deal.markup_lp) - order.bid - if order.side = Buy and order.ask ≠ 0 then #deal.slippage_taker_tob = - (deal.price + deal.markup + deal.markup_lp - order.ask). - Slippage calculations are performed only when order.bid (order.ask) > 0. This metric measures slippage relative to the market price available when the order was placed. It compares the final execution price delivered to the Client (including markups and Trade Lock adjustments) against the top-of-book Bid or Ask price at order creation. |
| #deal_ch.slippage_taker_tob_usd_per_unit | Deal Taker TOB Slippage (USD per Base Unit) (#deal.slippage_taker_tob_usd_per_unit) - the taker slippage relative to the top-of-book price at the time order was placed, expressed in USD per one base unit. This value represents the same adjustment as #deal.slippage_taker_tob, but converted from quote currency to USD per base unit using the deal execution price and USD conversion rate. Note: #deal.slippage_taker_tob_usd_per_unit = (#deal.slippage_taker_tob * deal.conv_usd) / (order.factor * deal.price). |
| #deal_ch.slippage_tob_usd | Deal Taker TOB Slippage USD (#deal.slippage_tob_usd) - the slippage between the taker execution price and the top-of-book price at the time order was placed, converted to USD for the full deal size. This value represents the impact of the taker slippage relative to the top-of-book price on the deal expressed in USD. Note: #deal.slippage_tob_usd = (#deal.slippage_taker_tob * deal.size / deal.price) * deal.conv_usd. |
| #deal_ch.slippage_tob_dpm | Deal Taker TOB Slippage per Million (#deal.slippage_tob_dpm) - the taker slippage relative to the top-of-book price at the time the order was placed, normalized to parts per million (PPM) of the benchmark price. The PPM representation makes the value comparable across symbols with different price levels. Note: - if order.side = Sell and order.bid ≠ 0 then #deal_ch.slippage_tob_dpm = 1,000,000 * ((deal.price + deal.markup + deal.markup_lp) - order.bid) / order.bid - if order.side = Buy and order.ask ≠ 0 then #deal_ch.slippage_tob_dpm = -1,000,000 * ((deal.price + deal.markup + deal.markup_lp) - order.ask) / order.ask - no value if the benchmark price (order.bid/order.ask) is 0. This metric measures slippage relative to the market price available when the order was placed. It compares the final execution price delivered to the Client (including markups and Trade Lock adjustments) against the top-of-book Bid or Ask price and expresses the difference in PPM. |
| #deal_ch.taker_price | Taker Execution Price (#deal.taker_price) - the final execution price for the deal, calculated as the Liquidity Provider execution price adjusted by the client markup and the Liquidity Provider markup. Note: #deal.taker_price = deal.price + deal.markup + deal.markup_lp. |
| #deal_ch.volume | Deal Volume (#deal.volume) - the nominal volume of the deal in base units of the traded instrument. Note: #deal.volume = deal.size * order.factor. |
| #deal.volume_usd | Deal Volume USD - the USD-denominated volume of the deal at the moment of trade execution. Note: #deal.volume_usd = deal.size * deal.conv_usd. |
Report Type: Max Spread Reject Report
report type: max spread reject report
| Field Name | Description |
|---|---|
| #max_spread_reject.time | Time (order.open_milli) - the time on which the order was received in the XCore . Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #max_spread_reject.order | Order ID (order.order) - the unique XCore Order ID . |
| #max_spread_reject.connector | Connector (order.connector) - the connector name from the XCore configuration. |
| #max_spread_reject.instrument | Instrument (order.instrument) - the connector stream instrument name as known by the MT4, MT5 or FIX end client. |
| #max_spread_reject.symbol | Symbol (order.symbol) - the connector stream symbol name as known by the XCore. |
| #max_spread_reject.amount | Amount (order.size) - the size of the order requested by the client, expressed in lots. |
| #max_spread_reject.bid | Bid (#book.bid_quote_price_lp_markup) - the raw bid quote price received from the Liquidity Provider at the time the order was placed, including any pre-aggregation markups configured under the Liquidity Provider Component. |
| #max_spread_reject.ask | Ask (#book.ask_quote_price_lp_markup) - the raw ask quote price received from the Liquidity Provider at the time the order was placed, including any pre-aggregation markups configured under the Liquidity Provider Component. |
| #max_spread_reject.spread | Spread - the difference between the Ask and Bid quote prices received from the Liquidity Provider at the time the order was placed, including any pre-aggregation markups configured under the Liquidity Provider Component. Note: #max_spread_reject.spread = #book.ask_quote_price_lp_markup - #book.bid_quote_price_lp_markup. |
| #max_spread_reject.max_spread | Max Spread - the maximum spread configured via MarkupProfileSetting.spread_max for the relevant symbol at the time the order was placed . Note: #max_spread_reject.max_spread = #book.ask_quote_price_markup - #book.bid_quote_price_markup. |
| #max_spread_reject.spread_mode | Spread Mode - the spread execution mode recorded at the time of rejection. Note: this report includes only orders rejected under a blocking mode (reject or invalidate). |
Report Type: Orders Count
report type: orders count
| Field Name | Description |
|---|---|
| #order.count | Order Count - the number of filled or partially filled orders in the selected date range. Note: #order.count = COUNT(DISTINCT deal.order), counting only deals where deal.size ≠ 0. |
Report Type: Order Details
report type: order details
| Field Name | Description |
|---|---|
| order.order | Order ID - the unique XCore Order ID. |
| order.connector | Order Connector - the connector name from the XCore configuration. |
| order.protocol | Order Connector Protocol - the type of connector protocol from the XCore configuration, such as FIX, MT4, MT5, Giveup, etc. |
| order.account | Order Connector Account - the name of the connector account within the XCore connector responsible for executing the order. |
| order.clordid | Order Client Order ID - the unique client Order ID. |
| order.subid1 | Order SubID 1 - the SubID 1 of the order. |
| order.subid2 | Order SubID 2 - the SubID 2 of the order. When orders originate from an MT4 and MT5 connector, this will be the Group Name. |
| order.subid3 | Order SubID 3 - the SubID 3 of the order. When orders originate from an MT4 and MT5 connector, this will be the Account Login number. |
| order.subid4 | Order SubID 4 - the SubID 4 of the order. When orders originate from an MT4 connector, this will be the MT4 Order Ticket Number. When orders originate from an MT5 connector, this will be the posID. |
| order.side | Order Side - the side of the Order indicates whether the order is a "buy" or "sell". |
| order.type | Order Type - the XCore order type. Note: available values are: - market - limit - stop |
| order.instrument | Order Instrument - the connector stream instrument name as known by the MT4, MT5 or FIX end client. |
| order.symbol | Order Symbol - the connector stream symbol name as known by the XCore. |
| order.digits | Order Symbol Digits - the number of digits defined for the symbol, representing decimals after the “.” and excluding the last pip value digit. |
| order.factor | Order Factor - the factor of the traded instrument, defined in the Symbol configuration by the contract_size value. |
| order.currency | Order Currency - the currency in which the instrument is traded. |
| order.size | Order Requested Size - the size of the order requested by the client, expressed in lots. |
| order.minsize | Order Minimum Split Size - the minimum accepted fill size specified in the order request. |
| order.price | Order Requested Price - the requested order price at the time order was placed. Note: order.price may be 0 for market orders, as the Price tag is optional and may not be included by the end client. |
| order.deviation | Order Allowed Price Deviation - the allowed deviation in points from the requested price up to which the order can be filled. Note: a value of (-1) indicates unlimited deviation. |
| order.ttl | Order TTL - the maximum duration, in milliseconds, during which XCore will attempt to fill the order. |
| order.mid | Order Mid Price - the Mid price between the top-of-book bid and ask as seen by XCore at the time order was placed, determined based on markups configured in the Provider Stream Settings and the Connector Profile Trade Lock Settings. |
| order.bid | Order Bid Price - the top-of-book Bid price of the order at the time order was placed, including the pre-aggregated bid markup set up in XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| order.ask | Order Ask Price - the top-of-book Ask price of the order at the time order was placed, including the pre-aggregated ask markup set up in XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| order.lq_pool | Order Liquidity Pool - the name of the liquidity pool associated with the executed order. |
| order.lq_profile | Order Liquidity Profile (Markup Profile) - the name of the markup profile associated with the executed order. |
| order.open_milli | Order Open Timestamp - the timestamp when the order was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| order.open_micro | Order Open Micro Timestamp - XCore's microsecond counter (0–999999) when the order was received, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| order.fillsize | Order Fill Size - the size of the order filled in XCore, in lots. Note: The fill size is the sum of the individual filled legs of the order. |
| order.fillprice | Order Fill Price - the client overall fill price, including markups defined in the XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. Note: the fill price is the volume-weighted average price fill price of the filled legs (leg.fillprice2). |
| order.message | Order Message - the message generated by XCore for the order in case of rejection. |
| order.close_milli | Order Close Timestamp - the timestamp when the order was completed in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| order.close_micro | Order Close Micro Timestamp - XCore's microsecond counter (0–999999) when the order was completed, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| #order.exec_time | Order Execution Time - the time in milliseconds from order submission to order closure, regardless of whether the order was filled. Note: #order.exec_time = order.close_milli - order.open_milli. Returns 0 if order.close_milli = 0 (the order is still open). |
| #order.delta_fill | Order Fill Execution Time - the time in milliseconds from order submission to the first full or partial fill, provided the order has been filled and closed. Note: If order.fillsize > 0 and order.close_milli > 0: #order.delta_fill = order.close_milli - order.open_milli. Returns null otherwise, including for rejected or still-open orders. |
| #order.open_date | Order Open Date - the date when the order was received in the XCore. Format: DD/MM/YYYY. |
| #order.open_time | Order Open Time - the time when the order was received in the XCore. Format: HH:MM:SS. |
| #order.slippage | Order Price Slippage (Decimal) - the difference between the Order Requested Price (or the top-of-book price) and the Order Fill Price, displayed in decimal format. Note: If order.side = SELL: - if order.price > 0 then #order.slippage = order.fillprice - order.price - else #order.slippage = order.fillprice - order.bid If order.side = BUY: - if order.price > 0 then #order.slippage = order.price - order.fillprice - else #order.slippage = order.ask - order.fillprice. |
| #order.slippage_pips | Order Price Slippage (Pips) - the difference between the Order Requested Price (or the top-of-book price) and the Order Fill Price, expressed in pips. Note: - #order.slippage_pips = #order.slippage * 10^order.digits |
| #order.state | Order State - the status of the order. Note: available values are: - Pending - the order has not been filled and is still open (order.fillsize = 0 and order.close_milli = 0); - Rejected - the order was not filled and has been closed (order.fillsize = 0 and order.close_milli > 0); - Partial - the order was partially filled (order.size > order.fillsize); - Filled - the order was fully filled (order.size = order.fillsize). |
| #order.time_in_force | Order TimeInForce - the order's Time In Force instruction, showing how the order can be filled. Note: available values are: - GTC (Good-Til-Cancelled) - when order.ttl = -1; - FOK (Fill-Or-Kill) - when order.ttl ≠ -1 and order.minsize = order.size; - IOC (Immediate-Or-Cancel) - otherwise. |
| #deal.volume_usd | Order Volume USD - the total USD-denominated volume of all deals associated with the order at the moment of trade execution. Note: available values are: #deal.volume_usd = Σ(deal.size * deal.conv_usd) for all deals linked to the order - when the order has at least one deal; null - otherwise. |
| #deal.volume_eur | Order Volume EUR - the total EUR-denominated volume of all deals associated with the order at the moment of trade execution. Note: #deal.volume_eur = Σ(deal.size * deal.conv_eur) for all deals linked to the order. |
| #order.order_count | All Orders Count - a constant value of 1 per order. Use the Sum aggregation to get the total number of orders in the selected group. Note: Counts all orders in the group, regardless of status. |
| #order.is_filled_partial | Order Filled or Partial Flag - indicates whether the order received any fill. Note: available values are: 1 - the order received a full or partial fill (order.fillsize > 0); null - otherwise. |
| #order.fillrate_size | Order Fill Rate by Size - the fill rate of the order based on filled size. With the Ratio aggregation, shows the percentage of requested size that was filled across the group. Note: #order.fillrate_size (Ratio) = 100 * Σ(order.fillsize) / Σ(order.size). With any Column Type other than Ratio, this field behaves as Order Fill Size (#order.fillsize). |
| #order.reject_message | Order Reject Reason - the reason why the order received no fill. Note: available values are: order.message - when order.fillsize = 0 and order.message is present (excluding the 'n/a' placeholder); null - otherwise. |
Report Type: Order Reject
report type: order reject
| Field Name | Description |
|---|---|
| order.order | Order ID - the unique XCore Order ID. |
| order.connector | Order Connector - the connector name from the XCore configuration. |
| order.protocol | Order Connector Protocol - the type of connector protocol from the XCore configuration, such as FIX, MT4, MT5, Giveup, etc. |
| order.account | Order Connector Account - the name of the connector account within the XCore connector responsible for executing the order. |
| order.clordid | Order Client Order ID - the unique client Order ID. |
| order.subid1 | Order SubID 1 - the SubID 1 of the order. |
| order.subid2 | Order SubID 2 - the SubID 2 of the order. When orders originate from an MT4 and MT5 connector, this will be the Group Name. |
| order.subid3 | Order SubID 3 - the SubID 3 of the order. When orders originate from an MT4 and MT5 connector, this will be the Account Login number. |
| order.subid4 | Order SubID 4 - the SubID 4 of the order. When orders originate from an MT4 connector, this will be the MT4 Order Ticket Number. When orders originate from an MT5 connector, this will be the posID. |
| order.side | Order Side - the side of the Order indicates whether the order is a "buy" or "sell". |
| order.type | Order Type - the XCore order type. Note: available values are: - market - limit - stop |
| order.instrument | Order Instrument - the connector stream instrument name as known by the MT4, MT5 or FIX end client. |
| order.symbol | Order Symbol - the connector stream symbol name as known by the XCore. |
| order.digits | Order Symbol Digits - the number of digits defined for the symbol, representing decimals after the “.” and excluding the last pip value digit. |
| order.factor | Order Factor - the factor of the traded instrument, defined in the Symbol configuration by the contract_size value. |
| order.currency | Order Currency - the currency in which the instrument is traded. |
| order.size | Order Requested Size - the size of the order requested by the client, expressed in lots. |
| order.minsize | Order Minimum Split Size - the minimum accepted fill size specified in the order request. |
| order.price | Order Requested Price - the requested order price at the time order was placed. Note: order.price may be 0 for market orders, as the Price tag is optional and may not be included by the end client. |
| order.deviation | Order Allowed Price Deviation - the allowed deviation in points from the requested price up to which the order can be filled. Note: a value of (-1) indicates unlimited deviation. |
| order.ttl | Order TTL - the maximum duration, in milliseconds, during which XCore will attempt to fill the order. |
| order.mid | Order Mid Price - the Mid price between the top-of-book bid and ask as seen by XCore at the time order was placed, determined based on markups configured in the Provider Stream Settings and the Connector Profile Trade Lock Settings. |
| order.bid | Order Bid Price - the top-of-book Bid price of the order at the time order was placed, including the pre-aggregated bid markup set up in XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| order.ask | Order Ask Price - the top-of-book Ask price of the order at the time order was placed, including the pre-aggregated ask markup set up in XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| order.lq_pool | Order Liquidity Pool - the name of the liquidity pool associated with the executed order. |
| order.lq_profile | Order Liquidity Profile (Markup Profile) - the name of the markup profile associated with the executed order. |
| order.open_milli | Order Open Timestamp - the timestamp when the order was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| order.open_micro | Order Open Micro Timestamp - XCore's microsecond counter (0–999999) when the order was received, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| order.fillsize | Order Fill Size - the size of the order filled in XCore, in lots. Note: The fill size is the sum of the individual filled legs of the order. |
| order.fillprice | Order Fill Price - the client overall fill price, including markups defined in the XCore, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. Note: the fill price is the volume-weighted average price fill price of the filled legs (leg.fillprice2). |
| order.message | Order Message - the message generated by XCore for the order in case of rejection. |
| order.close_milli | Order Close Timestamp - the timestamp when the order was completed in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| order.close_micro | Order Close Micro Timestamp - XCore's microsecond counter (0–999999) when the order was completed, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| #order.exec_time | Order Execution Time - the time in milliseconds from order submission to order closure, regardless of whether the order was filled. Note: #order.exec_time = order.close_milli - order.open_milli. Returns 0 if order.close_milli = 0 (the order is still open). |
| #order.open_date | Order Open Date - the date when the order was received in the XCore. Format: DD/MM/YYYY. |
| #order.open_time | Order Open Time - the time when the order was received in the XCore. Format: HH:MM:SS. |
| #order.state | Order State - the status of the order. Note: Rejected - the order was not filled and has been closed (order.fillsize = 0 and order.close_milli > 0). |
| #order.time_in_force | Order TimeInForce - the order's Time In Force instruction, showing how the order can be filled. Note: available values are: - GTC (Good-Til-Cancelled) - when order.ttl = -1; - FOK (Fill-Or-Kill) - when order.ttl ≠ -1 and order.minsize = order.size; - IOC (Immediate-Or-Cancel) - otherwise. |
| leg.order | Order ID - the unique XCore Order ID. |
| leg.leg | Leg ID - the unique Leg ID generated by XCore when an order is split into multiple legs to be sent to one or more Liquidity Providers for execution. Note: If an XCore Order ID 12345 is split into two legs, the system generates two leg IDs (0 and 1) for this order: - 12345-0 - 12345-1. |
| leg.batch | Leg Batch ID - the batch ID of a leg. Note: an order can be initially split into one or multiple legs as batch 0. If a leg is rejected, XCore will resend it for execution as batch 1, and so on. |
| leg.b_book | Leg B-Book Execution - the flag that shows whether a trade leg was executed through the B-Book or A-Book. Note: available values are: 0 - Leg was executed through A-Book. 1 - Leg was executed through B-Book. 2 - Cross-hedge leg. 3 - Leg was executed as Synthetic A-Book. For trades partially executed in both books, the report will show two separate entries: one with 0 for the A-Book part and one with 1 for the B-Book part. |
| leg.provider | Leg Provider - for A-Book execution, the Liquidity Provider to which the Leg was sent for execution. For B-Book execution, the Provider whose price quote was used to execute the trade. |
| leg.protocol | Leg Provider Protocol - the type of Liquidity Provider implementation. |
| leg.account | Leg Provider Account - the account Tag 1 value sent to the Liquidity Provider. |
| leg.clordid | Leg Client Order ID - the client Order ID sent to the Liquidity Provider. |
| leg.type | Leg Type - the Leg type. Note: available values are: - market - limit - pq (prequoted), depending on the order type, the DealerTrade mode and the provider. |
| leg.instrument | Leg Provider Instrument - the instrument name at the Liquidity Provider to which the trade was sent for execution. |
| leg.size | Leg Requested Size - the requested size of leg sent to the Liquidity Provider for execution, in lots. |
| leg.minsize | Leg Minimum Execution Size - the lowest leg execution size to be sent to the Liquidity Provider for execution. |
| leg.price | Leg Requested Price - the requested price of leg sent to the Liquidity Provider for execution. |
| leg.ttl | Leg TTL - the remaining time in milliseconds that the XCore will attempt to fill the leg in addition to any subsequent legs. |
| leg.markup_fix | Leg Markup Fix - the fixed markups in decimal format applied on the specific trade based on Markup Profile Bid or Ask markup settings. |
| leg.markup_flex | Leg Markup Flex - the variable markups in decimal format applied on the specific trade based on the Markup Profile Min and Max Spread Settings. |
| leg.quoteid | Leg Quote ID - the Liquidity Provider quote ID chosen by the XCore for leg execution. |
| leg.quoteref | Leg Provider Quote Reference - the Liquidity Provider quote reference ID chosen by the XCore for leg execution. |
| leg.quotetime | Leg Provider Quote Timestamp (system side) - the timestamp of when the quote update was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| leg.quotetimelp | Leg Provider Quote Arrival Delay - the difference in milliseconds between the timestamp when the quote was sent by the Liquidity Provider and the timestamp when it was received by XCore. |
| leg.open_milli | Leg Open Timestamp - the timestamp when the leg was created in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| leg.open_micro | Leg Open Micro Timestamp - always 0. |
| leg.fillsize | Leg Fill Size - the fill size of the leg, in lots. Note: A Leg sent to a Liquidity Provider can be further split by the Liquidity Provider into one or several deals. Therefore, the Leg Fill Size is the sum of the deals confirmed by the Liquidity Provider. |
| leg.fillprice | Leg Fill Price - the leg fill price, excluding all markups configured in XCore. For A-Book, this is the price confirmed by the Liquidity Provider. For B-Book, this is the liquidity pool top-of-book price on the traded side. Note: the fill price is the volume-weighted average fill price of the filled deals (deal.price). |
| leg.fillprice2 | Leg Fill Price with Markup - the marked up leg fill price including any configured XCore markups, determined by the markup and spread settings in the Markup Profile and Provider Stream Settings, and the Connector Profile Trade Lock Settings. |
| leg.close_milli | Leg Close Timestamp - the timestamp when the leg was completed in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| leg.close_micro | Leg Close Micro Timestamp - XCore's microsecond counter (0–999999) when the leg was completed, not part of the timestamp; use it to calculate the difference between two events (the counter restarts every second). |
| #leg.ab_book | Leg Book Type - the book type for the trade leg, derived from the Leg B-Book Execution flag (leg.b_book). Note: available values are: A - leg.b_book = 0 (A-book). B - any other leg.b_book value (B-book, cross-hedge or Synthetic A-book). For trades partially executed in both books, the report will show two separate entries: one with A for the A-Book part and one with B for the B-Book part. |
| #leg.close_date | Leg Close Date - the date when the leg was executed in the XCore. Format: DD/MM/YYYY. |
| #leg.close_time | Leg Close Time - the time when the leg was executed in the XCore. Format: HH:MM:SS. |
| #leg.exec_time | Leg Execution Time - the time in milliseconds it took for the leg to get executed. Note: #leg.exec_time = leg.close_milli - leg.open_milli. |
| #leg.open_date | Order Open Date - the date when the leg was created in the XCore. Format: DD/MM/YYYY. |
| #leg.open_time | Order Open Time - the time when the leg was created in the XCore. Format: HH:MM:SS. |
| #leg.quote_date | Leg Provider Quote Date (system side) - the date when the quote update was received in the XCore. Format: DD/MM/YYYY. |
| #leg.quote_time | Leg Provider Quote Time (system side) - the time when the quote update was received in the XCore. Format: HH:MM:SS. |
| #leg.state | Leg State - the execution status of the leg. Note: available values are: - Rejected - the leg was not filled and has been closed (leg.fillsize = 0 and leg.close_milli > 0); - Partial - the leg was partially filled (leg.size > leg.fillsize); - Filled - the leg was fully filled (leg.size = leg.fillsize). |
| #leg.is_filled | Leg Filled Flag - indicates that the leg is in Filled status. Note: available values are: 1 - the leg is fully filled and closed (leg.fillsize = leg.size and leg.close_milli > 0); null - otherwise. |
| #leg.is_partial | Leg Partial Flag - indicates that the leg is in Partial status. Note: available values are: 1 - the leg is partially filled and closed (leg.fillsize > 0 and leg.fillsize < leg.size and leg.close_milli > 0); null - otherwise. |
| #leg.is_rejected | Leg Rejected Flag - indicates that the leg is in Rejected status. Note: available values are: 1 - the leg was not filled and is closed (leg.fillsize = 0 and leg.close_milli > 0); null - otherwise. |
| #leg.time_in_force | Leg TimeInForce - the leg's Time In Force instruction sent to the Liquidity Provider. Note: available values are: - FOK (Fill-Or-Kill) - when leg.minsize = leg.size; - IOC (Immediate-Or-Cancel) - otherwise; - no value - the order was rejected before a leg was created, so no leg data is present. Unlike #order.time_in_force, this value never resolves to GTC. |
| #leg.slippage_pips | Leg Price Slippage (Pips) - the difference between the Order Requested Price (or the top-of-book price) and the Leg Fill Price with Markup, expressed in pips. Note: If order.side = SELL: - if order.price > 0 then #leg.slippage_pips = (leg.fillprice2 - order.price) * 10^order.digits - else #leg.slippage_pips = (leg.fillprice2 - order.bid) * 10^order.digits If order.side = BUY: - if order.price > 0 then #leg.slippage_pips = (order.price - leg.fillprice2) * 10^order.digits - else #leg.slippage_pips = (order.ask - leg.fillprice2) * 10^order.digits. |
Report Type: Account Wallet
report type: account wallet
| Field Name | Description |
|---|---|
| account_wallet.account | Account Name - the account identifier as defined in the XCore configuration. This value corresponds to the Account.name parameter. |
| account_wallet.seq | Account Action Sequence Number - the unique sequential identifier of account operations generated by XCore. |
| account_wallet.pos_seq | Account Action Position Sequence - the sequence number of the account position from which this action originated, as referenced in the Account Position report. Used to link account wallet actions to account positions, matching account_wallet.pos_seq = account_position.seq for the same account. |
| account_wallet.time | Account Action Timestamp - the timestamp when the account action was recorded in XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| account_wallet.wallet | Account Wallet - the wallet source through which XCore accepted manual or external actions that resulted in balance changes for the account. This value corresponds to the AccountProfileWalletSettings.name parameter. |
| account_wallet.type | Account Booking Type - the numeric code representing the type of operation that affected the account balance. |
| #account_wallet.transaction_type_label | Account Booking Type Label - the human-readable name of the booking type for the account operation. Note: available values are: - 0 → Deposit - 1 → Swap - 2 → PL - 3 → Dividend - 4 → Dividend Tax - 5 → Commission - else → Unknown |
| account_wallet.ccy | Current Account Currency - the currency in which this balance change was recorded. |
| account_wallet.balance | Account Balance - the current total balance for the specific combination of Account, Wallet, and Currency at the time of the transaction, expressed in the Current Account Currency. Note: Each row shows the updated total balance for this Account-Wallet-Currency combination, not a partial change, and balances are tracked separately per wallet and currency without consolidation across wallets or currencies. |
| #account_wallet.booked_amount | Account Action Amount (Booked Amount) - the change in the account balance caused by a specific account operation, expressed in the Current Account Currency. |
| account_wallet.comment | Account Action Comment - remarks describing the account operation, using standardized tags and free text. |
| account_wallet.comment_2 | Account Action Comment 2 - additional free-text remarks for the account operation, populated when the Comment2 field is used in the Account Dashboard. |
| account_position.account | Account Name - the account identifier as defined in the XCore configuration. Note: in the context of the Account Wallet report, this field is populated only when account_wallet.pos_seq = account_position.seq. |
| account_position.time | Position Timestamp - the timestamp when the account position operation occurred. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. Note: In the context of the Account Wallet report, this field is populated only when account_wallet.pos_seq = account_position.seq. |
| account_position.symbol | Position Symbol - the symbol name as known by the XCore for which the action was performed in case there were swap, dividend charges or automatic PL operations. Note: In the context of the Account Wallet report, this field is populated only when account_wallet.pos_seq = account_position.seq. |
| account_position.base | Position Base Amount (Base) - the current total volume exposure in the symbol's base currency at the time of the position operation. Note: Each row shows the updated total exposure, not a partial change. Note: In the context of the Account Wallet report, this field is populated only when account_wallet.pos_seq = account_position.seq. |
| account_position.quote | Position Quote Amount (Quote) - the current total volume exposure in the symbol's quote currency at the time of the position operation. Note: Each row shows the updated total exposure, not a partial change. Note: In the context of the Account Wallet report, this field is populated only when account_wallet.pos_seq = account_position.seq. |
| account_position.comment | Position Comment - remarks describing the position operation, using standardized tags and free text. Note: In the context of the Account Wallet report, this field is populated only when account_wallet.pos_seq = account_position.seq. |
Report Type: Account Position
report type: account position
| Field Name | Description |
|---|---|
| account_position.account | Account Name - the account identifier as defined in the XCore configuration. This value corresponds to the Account.name parameter. |
| account_position.seq | Current Position Sequence Number - the unique sequential identifier of position operations generated by XCore. |
| account_position.prev | Previous Position Sequence Number - the unique sequential identifier of the preceding position operation for reference purpose. |
| account_position.time | Position Timestamp - the timestamp when the account position operation occurred. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| account_position.symbol | Position Symbol - the symbol name of the position as known by the XCore. |
| account_position.base | Position Base Amount (Base) - the current total volume exposure in the symbol's base currency at the time of the position operation. Note: Each row shows the updated total exposure for this specific Account-Symbol combination, not a partial change. Base exposures are tracked separately per symbol without consolidation across the account. |
| #account_position.base_delta | Position Base Delta Amount - the change in the position's base currency exposure caused by the current position operation, calculated as the difference between the current Position Base Amount and the previous one. Expressed in the symbol's base currency. Note: - if order.side = Sell then #account_position.base_delta = -deal.size - if order.side = Buy then #account_position.base_delta = deal.size. For short positions (Sell), Position Base Delta Amount is negative. For long positions (Buy), Position Base Delta Amount is positive. |
| account_position.quote | Position Quote Amount (Quote) - the current total volume exposure in the symbol's quote currency at the time of the position operation. Note: Each row shows the updated total exposure for this specific Account-Symbol combination, not a partial change. Quote exposures are tracked separately per symbol without consolidation across the account. |
| #account_position.quote_delta | Position Quote Delta Amount - the change in the position's quote currency exposure caused by the current position operation, calculated as the difference between the current Position Quote Amount and the previous one. Expressed in the symbol's quote currency. Note: - if order.side = Sell then account_position.quote = deal.size * order.factor * deal.price - if order.side = Buy then account_position.quote = - (deal.size * order.factor * deal.price). For short positions (Sell), Position Quote Delta Amount is positive. For long positions (Buy), Position Quote Delta Amount is negative. |
| account_position.closed_pl | Position Closed PnL - the net profit or loss generated by a full or partial position close, calculated according to the FIFO principle and expressed in the symbol's quote currency. Note: The value accumulates for each Account-Symbol combination after each partial or full close until it is booked to the wallet as a PL_SETTLEMENT transaction. After booking, account_position.closed_pl is reset to 0 and starts accumulating again until the next PL_SETTLEMENT transaction. |
| account_position.overflow | Position Quote Overflow - the current total overflow exposure in the symbol's quote currency, representing the portion of trade volume routed to the Liquidity Provider when the account's exposure limit is exceeded. Applies to accounts of type RISK and B-Book trades. Note: Each row shows the updated total overflow amount, not a partial change. |
| #account_position.overflow_delta | Position Quote Overflow Delta - the change in the position's quote overflow caused by the current position operation, calculated as the difference between the current Position Quote Overflow and the previous one. Expressed in the symbol's quote currency. |
| account_position.comment | Position Comment - remarks describing the position operation, using standardized tags and free text. |
Report Type: Account Position EOD
report type: account position eod
| Field Name | Description |
|---|---|
| account_position.account | Account Name - the account identifier as defined in the XCore configuration. This value corresponds to the Account.name parameter. |
| account_position.symbol | Position Symbol - the symbol name of the position as known by the XCore. |
| account_position.base | Position Base Amount (Base) - the latest recorded total volume exposure in the symbol's base currency up to the end of the selected report date range. Note: Base exposures are tracked separately per symbol without consolidation across the account. |
| account_position.quote | Position Quote Amount (Quote) - the latest recorded total volume exposure in the symbol's quote currency up to the end of the selected report date range. Note: Quote exposures are tracked separately per symbol without consolidation across the account. |
| account_position.time | Position Timestamp - the timestamp of the last position update up to the end of the selected report date range. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #filter.eod_symbol_price | EOD Symbol Price - the last recorded price of the symbol up to the end of the selected report date range. Note: The price is taken from the filter table, which stores prices that passed the configured thresholds. The price does not include markups from the Markup Profile Settings (Bid/Ask markups, Min/Max Spread). The price includes the Bid or Ask markup from the Provider Stream Settings only. The symbol contract size (symbol.contract_size) is not applied. Note: - if account_position.base > 0 then #filter.eod_symbol_price = filter.bid_close - if account_position.base < 0 then #filter.eod_symbol_price = filter.ask_close. |
| #filter.eod_symbol_bid_price | EOD Symbol Bid Price - the last recorded Bid price of the symbol up to the end of the selected report date range. Note: The price is taken from the filter table, which stores prices that passed the configured thresholds. The price does not include markups from the Markup Profile Settings (Bid/Ask markups, Min/Max Spread). The price includes the Bid markup from the Provider Stream Settings only. The symbol contract size (symbol.contract_size) is not applied. Note: #filter.eod_symbol_bid_price = filter.bid_close of the last record with filter.bid_close > 0, regardless of filter.ask_close. Empty if there is no such record. |
| #filter.eod_symbol_ask_price | EOD Symbol Ask Price - the last recorded Ask price of the symbol up to the end of the selected report date range. Note: The price is taken from the filter table, which stores prices that passed the configured thresholds. The price does not include markups from the Markup Profile Settings (Bid/Ask markups, Min/Max Spread). The price includes the Ask markup from the Provider Stream Settings only. The symbol contract size (symbol.contract_size) is not applied. Note: #filter.eod_symbol_ask_price = filter.ask_close of the last record with filter.ask_close > 0, regardless of filter.bid_close. Empty if there is no such record. |
| #filter.eod_symbol_mid_price | EOD Symbol Mid Price - the last recorded mid price of the symbol up to the end of the selected report date range. Note: The price is taken from the filter table, which stores prices that passed the configured thresholds. The price does not include markups from the Markup Profile Settings (Bid/Ask markups, Min/Max Spread). The price is calculated using Bid and Ask prices including the Provider Stream Settings markups only. The symbol contract size (symbol.contract_size) is not applied. Note: #filter.eod_symbol_mid_price = (filter.bid_close + filter.ask_close) / 2. Bid and Ask can come from different records. Empty if either side has no price. |
| #filter.eod_symbol_price_time | EOD Symbol Price Timestamp - the timestamp of the filter.bid_close (if account_position.base > 0) or filter.ask_close (if account_position.base < 0) value used for #filter.eod_symbol_price. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #account_position.symbol_quote_ccy | Position Symbol Quote Currency - the quote currency of the traded symbol (e.g., USD for EURUSD). Note: value is taken from symbol configuration field symbol.quote and represents the currency in which the symbol is quoted. |
| #account_group_setting.default_ccy | Default Account Currency - the current default currency of the account. The value is defined in the Account Group Setting with the key DEFAULT_CCY. Note: If this field is empty, the account has most likely been deleted and its Default Account Currency is no longer available. |
| #filter.quote_to_acc_ccy_conv | Quote-to-Account Currency Conversion Rate - the last recorded conversion rate from the symbol Quote Currency to the Account Currency up to the end of the selected report date range. Note: The price is taken from the filter table, which stores prices that passed the configured thresholds. The price does not include markups from the Markup Profile Settings (Bid/Ask markups, Min/Max Spread). The price takes into account the Bid and Ask markups from the Provider Stream Settings only. The symbol contract size (symbol.contract_size) is not applied. Note: #filter.quote_to_acc_ccy_conv = (filter.ask_close + filter.bid_close)/2 |
| #filter.base_to_acc_ccy_conv | Base-to-Account Currency Conversion Rate - the last recorded conversion rate from the symbol Base Currency to the Account Currency up to the end of the selected report date range. Note: #filter.base_to_acc_ccy_conv = symbol.contract_size * #filter.eod_symbol_price * #filter.quote_to_acc_ccy_conv |
| #account_position.avg_open_price_quote_ccy | Average Open Price in Quote Currency - the average open price of the position, expressed in the Position Symbol Quote Currency, calculated based on the current position exposure. Note: #account_position.avg_open_price_quote_ccy = - account_position.quote / (account_position.base * symbol.contract_size). |
| #account_position.floating_pl_quote_ccy | Floating PnL in Quote Currency - the latest unrealized profit or loss of the position, calculated in the Position Symbol Quote Currency up to the end of the selected report date range. Note: Floating PnL is tracked separately per symbol without consolidation across the account. Note: #account_position.floating_pl_quote_ccy = account_position.base * symbol.contract_size * #filter.eod_symbol_price + account_position.quote. Note: The calculation depends on account_position.quote, which includes realized PnL (closed_pl) until it is booked to the wallet as a PL_SETTLEMENT transaction. Once the PL_SETTLEMENT adjusts the quote amount, the formula returns an accurate Floating PnL without distortion. |
| #account_position.floating_pl_acc_ccy | Floating PnL in Account Currency - the latest unrealized profit or loss of the position, calculated in the Default Account Currency up to the end of the selected report date range. Note: Floating PnL is tracked separately per symbol without consolidation across the account. Note: #account_position.floating_pl_acc_ccy = (account_position.base * symbol.contract_size * #filter.eod_symbol_price + account_position.quote) * #filter.quote_to_acc_ccy_conv. Note: The calculation depends on account_position.quote, which includes realized PnL (closed_pl) until it is booked to the wallet as a PL_SETTLEMENT transaction. Once the PL_SETTLEMENT adjusts the quote amount, the formula returns an accurate Floating PnL without distortion. |
| #account_position.used_margin_quote_ccy | Used Margin in Quote Currency - the used margin of the position, calculated in the Position Symbol Quote Currency up to the end of the selected report date range. Note: - Used Margin is tracked separately per symbol without consolidation across the account. - The calculation depends on the position netting model configured for the Account (Netting or Non-Netting). - For Non-Netting symbols: used_margin_quote_ccy = ABS(base_exposure_quote_ccy) / profile_sym_leverage - profile_sym_leverage is defined in AccountProfileSymLeverageSetting.leverage for the given Symbol. - For Netting symbols: used_margin_quote_ccy = ABS(base_exposure_quote_ccy) / base_ccy_leverage + ABS(quote_exposure_quote_ccy) / quote_ccy_leverage - base_ccy_leverage and quote_ccy_leverage are defined in AccountProfileCcyLeverageSetting.leverage for the Base and Quote Currencies of the Symbol. Calculation details: - Base exposure in Account Currency: base_exposure_quote_ccy = account_position.base * symbol.contract_size * conversion_rate_base_to_quote_ccy - Quote exposure in Account Currency: quote_exposure_quote_ccy = account_position.quote - Conversion rates from Base Currency to the Quote Currency (conversion_rate_base_to_quote_ccy) is the last recorded mid conversion rates from the symbol Base Currency to the Quote Currency up to the end of the selected report date range: mid_rate = (filter.ask_close + filter.bid_close) / 2. |
| #account_position.used_margin_acc_ccy | Used Margin in Account Currency - the used margin of the position, calculated in the Default Account Currency up to the end of the selected report date range. Note: - Used Margin is tracked separately per symbol without consolidation across the account. - The calculation depends on the position netting model configured for the Account (Netting or Non-Netting). - For Non-Netting symbols: used_margin_in_acc_ccy = ABS(base_exposure_acc_ccy) / profile_sym_leverage - profile_sym_leverage is defined in AccountProfileSymLeverageSetting.leverage for the given Symbol. - For Netting symbols: used_margin_in_acc_ccy = ABS(base_exposure_acc_ccy) / base_ccy_leverage + ABS(quote_exposure_acc_ccy) / quote_ccy_leverage - base_ccy_leverage and quote_ccy_leverage are defined in AccountProfileCcyLeverageSetting.leverage for the Base and Quote Currencies of the Symbol. Calculation details: - Base exposure in Account Currency: base_exposure_acc_ccy = account_position.base * symbol.contract_size * conversion_rate_base_to_default_ccy - Quote exposure in Account Currency: quote_exposure_acc_ccy = account_position.quote * conversion_rate_quote_to_default_ccy - Conversion rates from Base and Quote Currencies to the Default Account Currency (conversion_rate_base_to_default_ccy and conversion_rate_quote_to_default_ccy) are the last recorded mid conversion rates from the symbol Base and Quote Currencies to the Default Account Currency up to the end of the selected report date range: mid_rate = (filter.ask_close + filter.bid_close) / 2. |
| #report_date | Report Date - the timestamp marking the end of the selected date range for generating the report. This value defines the cut-off point up to which data is included in the report. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #filter.missing_conv_rate | Conversion Rate Warning - indicates whether all required conversion rates were available and correctly applied for calculations in this report row. Note: available values are: - "Calculation Error" - one or more required conversion rates were missing or invalid, so one or more calculated values in this row are missing or inaccurate. This occurs when conversion rate calculations cannot be completed due to missing prices in the filter table. - No value (Empty) - all required conversion rates were available, and all calculations in this report row were completed successfully. Note: If #filter.missing_conv_rate = "Calculation Error" and #account_group_setting.default_ccy is empty, the account has most likely been deleted. In this case, the Default Account Currency is no longer available, and calculations that depend on it cannot be performed. |
| #filter.has_conv_error | Conversion Error Flag - a checkbox indicator of conversion rate issues in the report row, based on #filter.missing_conv_rate. Note: available values are: - Checked - corresponds to "Calculation Error" in #filter.missing_conv_rate; - Empty - corresponds to no value in #filter.missing_conv_rate (no conversion issues). Unlike #filter.missing_conv_rate, this field displays the result as a visual checkbox instead of a text value. Note: If the checkbox is checked and #account_group_setting.default_ccy is empty, the account has most likely been deleted. |
Report Type: Account Wallet EOD
report type: account wallet eod
| Field Name | Description |
|---|---|
| account_wallet.account | Account Name - the account identifier as defined in the XCore configuration. This value corresponds to the Account.name parameter. |
| #account_group_setting.default_ccy | Default Account Currency - the current default currency of the account. The value is defined in the Account Group Setting with the key DEFAULT_CCY. Note: If this field is empty, the account has most likely been deleted and its Default Account Currency is no longer available. |
| account_wallet.wallet | Account Wallet - the wallet source through which XCore accepted manual or external actions that resulted in balance changes for the account. This value corresponds to the AccountProfileWalletSettings.name parameter. |
| account_wallet.ccy | Current Account Currency - the currency in which this balance change was recorded. |
| #account_wallet.beginning_balance | Beginning Balance - the opening balance for the specific combination of Account, Wallet, and Currency as of the start of the selected report date range, expressed in the Current Account Currency. This value represents the last recorded Account Balance strictly before the report start date. Note: - Balances are tracked separately per wallet and currency without consolidation across the account. - #account_wallet.beginning_balance is taken as the latest account_wallet.balance where account_wallet.time < report start date. - If no prior balance exists for the Account-Wallet-Currency combination, account_wallet.beginning_balance = 0. - For the same value converted into the account's Default Account Currency, see #account_wallet.beginning_balance_acc_ccy. |
| #account_wallet.ending_balance | Ending Balance - the closing balance for the specific combination of Account, Wallet, and Currency up to the end of the selected report date range, expressed in the Current Account Currency. This value represents the last recorded Account Balance within the report period. Note: - Balances are tracked separately per wallet and currency without consolidation across the account. - #account_wallet.ending_balance is taken as the latest account_wallet.balance where report start date ≤ account_wallet.time < report end date. - If no balance change was recorded within the period for the Account-Wallet-Currency combination, #account_wallet.ending_balance = #account_wallet.beginning_balance. - For the same value converted into the account's Default Account Currency, see #account_wallet.ending_balance_acc_ccy. |
| #account_wallet.delta_balance | Delta Balance - the total change in the account balance for the specific combination of Account, Wallet, and Currency over the selected report period, expressed in the Current Account Currency. Note: #account_wallet.delta_balance = #account_wallet.ending_balance - #account_wallet.beginning_balance. For the same value converted into the account's Default Account Currency, see #account_wallet.delta_balance_acc_ccy. |
| #account_wallet.delta_api | Delta API - the total change in the account balance from Manual (API) operations for the specific combination of Account, Wallet, and Currency over the selected report period, expressed in the Current Account Currency. Note: #account_wallet.delta_api includes only operations where account_wallet.type = 0 and is calculated as the sum of all such balance changes from the start to the end of the report period. |
| #account_wallet.delta_swap | Delta Swap - the total change in the account balance from Swap charges for the specific combination of Account, Wallet, and Currency over the selected report period, expressed in the Current Account Currency. Note: #account_wallet.delta_swap includes only operations where account_wallet.type = 1 and is calculated as the sum of all such balance changes from the start to the end of the report period. |
| #account_wallet.delta_pl | Delta PL - the total change in the account balance from Closed PnL for the specific combination of Account, Wallet, and Currency over the selected report period, expressed in the Current Account Currency. Note: #account_wallet.delta_pl includes only operations where account_wallet.type = 2 and is calculated as the sum of all such balance changes from the start to the end of the report period. |
| #account_wallet.delta_dividend | Delta Dividend - the total change in the account balance from Dividends for the specific combination of Account, Wallet, and Currency over the selected report period, expressed in the Current Account Currency. Note: #account_wallet.delta_dividend includes only operations where account_wallet.type = 3 and is calculated as the sum of all such balance changes from the start to the end of the report period. |
| #account_wallet.delta_tax | Delta Tax - the total change in the account balance from Taxes for the specific combination of Account, Wallet, and Currency over the selected report period, expressed in the Current Account Currency. Note: #account_wallet.delta_tax includes only operations where account_wallet.type = 4 and is calculated as the sum of all such balance changes from the start to the end of the report period. |
| #account_wallet.delta_commission | Delta Commission - the total change in the account balance from Commissions for the specific combination of Account, Wallet, and Currency over the selected report period, expressed in the Current Account Currency. Note: #account_wallet.delta_commission includes only operations where account_wallet.type = 5 and is calculated as the sum of all such balance changes from the start to the end of the report period. |
| #account_wallet.beginning_balance_acc_ccy | Beginning Balance in Account Currency - the opening balance for the specific combination of Account, Wallet, and Currency as of the start of the selected report date range, converted into the account's Default Account Currency. This value represents the last recorded Account Balance strictly before the report start date, converted at the exchange rate observed at that time. Note: - Balances are tracked separately per wallet and currency without consolidation across the account. - If no prior balance exists for the Account-Wallet-Currency combination, #account_wallet.beginning_balance_acc_ccy = 0. |
| #account_wallet.ending_balance_acc_ccy | Ending Balance in Account Currency - the closing balance for the specific combination of Account, Wallet, and Currency up to the end of the selected report date range, converted into the account's Default Account Currency. This value represents the last recorded Account Balance within the report period, converted at the exchange rate observed at the end of the period. Note: - Balances are tracked separately per wallet and currency without consolidation across the account. - Unlike #account_wallet.ending_balance, this value can differ from #account_wallet.beginning_balance_acc_ccy even when no balance change was recorded within the period, because the beginning and ending balances are converted using the exchange rate observed at the start and at the end of the period respectively. |
| #account_wallet.delta_balance_acc_ccy | Delta Balance in Account Currency - the total change in the account balance for the specific combination of Account, Wallet, and Currency over the selected report period, expressed in the account's Default Account Currency. Note: #account_wallet.delta_balance_acc_ccy = #account_wallet.ending_balance_acc_ccy - #account_wallet.beginning_balance_acc_ccy. |
| #account_wallet.last_updated | Last Updated - the timestamp of the most recent update to account_wallet.balance for the specific combination of Account, Wallet, and Currency up to the end of the selected report date range. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #report_date | Report Date - the timestamp marking the end of the selected date range for generating the report. This value defines the cut-off point up to which data is included in the report. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #filter.missing_conv_rate | Conversion Rate Warning - indicates whether all required conversion rates were available and correctly applied for the account-currency balances in this report row. Note: available values are: - "Conversion Error" - one or more required conversion rates were missing or invalid, so one or more of the account-currency balances in this row are missing or inaccurate. This occurs when conversion rate calculations cannot be completed due to missing prices in the filter table; - No value (Empty) - all required conversion rates were available, and all calculations in this report row were completed successfully. Note: If #filter.missing_conv_rate = "Conversion Error" and #account_group_setting.default_ccy is empty, the account has most likely been deleted. In this case, the Default Account Currency is no longer available, and calculations that depend on it cannot be performed. |
Report Type: Account EOD
report type: account eod
| Field Name | Description |
|---|---|
| account_wallet.account | Account Name - the account identifier as defined in the XCore configuration. This value corresponds to the Account.name parameter. |
| #account_group_setting.default_ccy | Default Account Currency - the current default currency of the account. The value is defined in the Account Group Setting with the key DEFAULT_CCY. Note: If this field is empty, the account has most likely been deleted and its Default Account Currency is no longer available. |
| #account_wallet.beginning_balance | Beginning Balance in Account Currency - the opening balance for each Account as of the start of the selected report date range, expressed in the Default Account Currency. This value represents the last recorded total balance across the Account strictly before the report start date. Note: - Balances from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.beginning_balance is taken as the sum of the latest account_wallet.balance for each Wallet-Currency combination where account_wallet.time < report start date. |
| #account_wallet.ending_balance | Ending Balance in Account Currency - the closing balance for each Account up to the end of the selected report date range, expressed in the Default Account Currency. This value represents the last recorded total balance across the Account within the report period. Note: - Balances from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.ending_balance is taken as the sum of the latest account_wallet.balance for each Wallet-Currency combination where report start date ≤ account_wallet.time < report end date. - If no balance change was recorded within the period for the Wallet-Currency combination of the Account, #account_wallet.ending_balance = #account_wallet.beginning_balance. |
| #account_wallet.delta_balance | Delta Balance in Account Currency - the total change in the Account balance over the selected report period, expressed in the Default Account Currency. This value represents the net balance movement across the Account for the period. Note: - Balance changes from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.delta_balance = #account_wallet.ending_balance - #account_wallet.beginning_balance. |
| #account_wallet.delta_api | Delta API in Account Currency - the total balance change resulting from Manual (API) operations across the Account over the selected report period, expressed in the Default Account Currency. Note: - Balance changes from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.delta_api includes only operations where account_wallet.type = 0. - The value represents the sum of all such balance changes recorded within the report period at the Account level. |
| #account_wallet.delta_swap | Delta Swap in Account Currency - the total balance change resulting from Swap charges across the Account over the selected report period, expressed in the Default Account Currency. Note: - Balance changes from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.delta_swap includes only operations where account_wallet.type = 1. - The value represents the sum of all such balance changes recorded within the report period at the Account level. |
| #account_wallet.delta_pl | Delta PL in Account Currency - the total balance change resulting from Closed PnL across the Account over the selected report period, expressed in the Default Account Currency. Note: - Balance changes from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.delta_pl includes only operations where account_wallet.type = 2. - The value represents the sum of all such balance changes recorded within the report period at the Account level. |
| #account_wallet.delta_dividend | Delta Dividend in Account Currency - the total balance change resulting from Dividends across the Account over the selected report period, expressed in the Default Account Currency. Note: - Balance changes from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.delta_dividend includes only operations where account_wallet.type = 3. - The value represents the sum of all such balance changes recorded within the report period at the Account level. |
| #account_wallet.delta_tax | Delta Tax in Account Currency - the total balance change resulting from Taxes across the Account over the selected report period, expressed in the Default Account Currency. Note: - Balance changes from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.delta_tax includes only operations where account_wallet.type = 4. - The value represents the sum of all such balance changes recorded within the report period at the Account level. |
| #account_wallet.delta_commission | Delta Commission in Account Currency - the total balance change resulting from Commissions across the Account over the selected report period, expressed in the Default Account Currency. Note: - Balance changes from all Wallets and Currencies are consolidated per Account and converted to the Default Account Currency. - #account_wallet.delta_commission includes only operations where account_wallet.type = 5. - The value represents the sum of all such balance changes recorded within the report period at the Account level. |
| #account_position.exposure_acc_ccy | Exposure in Account Currency - the total exposure of the Account, expressed in the Default Account Currency, calculated up to the end of the selected report date range. Note: - Exposures are consolidated across all positions of the Account and converted to the Default Account Currency. - The calculation depends on the position netting model configured for the Account (Netting or Non-Netting). - For Non-Netting symbols, exposure is calculated as the sum of absolute position exposures: Exposure = Σ ABS(base_exposure_acc_ccy) - For Netting symbols, exposure is calculated by aggregating long and short exposures separately and taking the larger value (by absolute amount). Exposure = max(SUM_LONG_EXPOSURE, ABS(SUM_SHORT_EXPOSURE)) Calculation details: - Base exposure in Account Currency: base_exposure_acc_ccy = account_position.base * symbol.contract_size * conversion_rate_base_to_default_ccy. - Quote exposure in Account Currency: quote_exposure_acc_ccy = account_position.quote * conversion_rate_quote_to_default_ccy. - Conversion rates from Base and Quote Currencies to the Default Account Currency (conversion_rate_base_to_default_ccy and conversion_rate_quote_to_default_ccy) are the last recorded mid conversion rates from the symbol Base and Quote Currencies to the Default Account Currency up to the end of the selected report date range: mid_rate = (filter.ask_close + filter.bid_close) / 2 - Long Exposure: SUM_LONG_EXPOSURE = Σ base_exposure_acc_ccy where account_position.base > 0 + Σ quote_exposure_acc_ccy where account_position.quote > 0. - Short Exposure: SUM_SHORT_EXPOSURE = Σ base_exposure_acc_ccy where account_position.base < 0 + Σ quote_exposure_acc_ccy where account_position.quote < 0. |
| #account_position.floating_pl_acc_ccy | Floating Profit/Loss in Account Currency - the total unrealized profit or loss of all open positions of the Account, expressed in the Default Account Currency, calculated up to the end of the selected report date range. Note: - Floating Profit/Loss is calculated per Account using the latest available position state strictly before the report end date. - Floating Profit/Loss is consolidated across all symbols of the Account and converted to the Default Account Currency. Calculation logic: - Floating Profit/Loss = Σ pnl_in_acc_ccy. - For each position: pnl_in_acc_ccy = (account_position.base * symbol.contract_size * conversion_rate_from_base_to_quote + account_position.quote) * conversion_rate_from_quote_to_default_ccy. Conversion rates (as of report end date): - For Long positions (account_position.base > 0): conversion_rate_from_base_to_quote = filter.bid_close. - For Short positions (account_position.base < 0): conversion_rate_from_base_to_quote = filter.ask_close. - conversion_rate_from_quote_to_default_ccy = (filter.ask_close + filter.bid_close) / 2. Note: The calculation depends on account_position.quote, which includes realized PnL (closed_pl) until it is booked to the wallet as a PL_SETTLEMENT transaction. Once the PL_SETTLEMENT adjusts the quote amount, the formula returns an accurate Floating PnL without distortion. |
| #account_position.equity_acc_ccy | Equity in Account Currency - the total account equity, expressed in the Default Account Currency, calculated up to the end of the selected report date range. Note: - Equity is calculated per Account and consolidates all Wallets, Currencies and Symbols into the Default Account Currency. - #account_position.equity_acc_ccy = #account_wallet.ending_balance + #account_position.floating_pl_acc_ccy. |
| #account_position.used_margin_acc_ccy | Used Margin in Account Currency - the total used margin of the Account, expressed in the Default Account Currency, calculated up to the end of the selected report date range. Note: - Used Margin is consolidated across all positions of the Account and converted to the Default Account Currency. - The calculation depends on the position netting model configured for the Account (Netting or Non-Netting). - For Non-Netting symbols, Used Margin is calculated as the sum of absolute position margins: Used Margin = Σ ABS(used_margin_in_acc_ccy) - For each position: used_margin_in_acc_ccy = base_exposure_acc_ccy / profile_sym_leverage - profile_sym_leverage is defined in AccountProfileSymLeverageSetting.leverage for the given Symbol. - For Netting symbols, Used Margin is calculated by aggregating used margin for long and short positions separately and taking the larger value (by absolute amount): Used Margin = max(SUM_LONG_MARGIN, ABS(SUM_SHORT_MARGIN)) - For each position: Base and Quote used margin in Account Currency: used_margin_in_acc_ccy_by_base = base_exposure_acc_ccy / base_ccy_leverage used_margin_in_acc_ccy_by_quote = quote_exposure_acc_ccy / quote_ccy_leverage - base_ccy_leverage and quote_ccy_leverage are defined in AccountProfileCcyLeverageSetting.leverage for the Base and Quote Currencies of the Symbol. - Long positions: SUM_LONG_MARGIN = Σ used_margin_in_acc_ccy_by_base where account_position.base > 0 + Σ used_margin_in_acc_ccy_by_quote where account_position.quote > 0. - Short positions: SUM_SHORT_MARGIN = Σ used_margin_in_acc_ccy_by_base where account_position.base < 0 + Σ used_margin_in_acc_ccy_by_quote where account_position.quote < 0. |
| #account_position.free_margin_acc_ccy | Free Margin in Account Currency - the total free margin of the Account, expressed in the Default Account Currency, calculated up to the end of the selected report date range. Note: - Free Margin is calculated per Account and consolidates all Wallets, Currencies, and Symbols into the Default Account Currency. - #account_position.free_margin_acc_ccy = #account_position.equity_acc_ccy - #account_position.used_margin_acc_ccy. |
| #account_wallet.last_updated | Wallet Last Updated - the timestamp of the most recent update to any account_wallet.balance across all Wallets and Currencies of the Account, up to the end of the selected report date range. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #account_position.last_updated | Position Last Updated - the timestamp of the most recent update to any position of the Account, across all symbols, up to the end of the selected report date range. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #report_date | Report Date - the timestamp marking the end of the selected date range for generating the report. This value defines the cut-off point up to which data is included in the report. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #filter.missing_conv_rate | Conversion Rate Warning - indicates whether all required conversion rates were available and correctly applied for calculations in this report row. Note: available values are: - "Conversion Error" - one or more required conversion rates were missing or invalid, so one or more calculated values in this row are missing or inaccurate. This occurs when conversion rate calculations cannot be completed due to missing prices in the filter table. - No value (Empty) - all required conversion rates were available, and all calculations in this report row were completed successfully. Note: If #filter.missing_conv_rate = "Conversion Error" and #account_group_setting.default_ccy is empty, the account has most likely been deleted. In this case, the Default Account Currency is no longer available, and calculations that depend on it cannot be performed. |
| #filter.has_conv_error | Conversion Error Flag - a checkbox indicator of conversion rate issues in the report row, based on #filter.missing_conv_rate. Note: available values are: - Checked - corresponds to "Conversion Error" in #filter.missing_conv_rate; - Empty - corresponds to no value in #filter.missing_conv_rate (no conversion issues). Unlike #filter.missing_conv_rate, this field displays the result as a visual checkbox instead of a text value. Note: If the checkbox is checked and #account_group_setting.default_ccy is empty, the account has most likely been deleted. |
Report Type: Trade Decay V5 | Trade Decay V5 Toxic | Trade Decay V5 Profitable
report type: trade decay v5 | trade decay v5 toxic | trade decay v5 profitable
| Field Name | Description |
|---|---|
| trade_decay_v5.order | Order ID (order.order) - the unique XCore Order ID. |
| trade_decay_v5.connector | Order Connector (order.connector) - the connector name from the XCore configuration. |
| trade_decay_v5.trade_source | Trade Source - the trading platform from which the trade originated. Note: Available values are: - FIX - MT4 - MT5 |
| trade_decay_v5.account | Order Connector Account (order.account) - the name of the connector account within the XCore connector responsible for executing the order. |
| trade_decay_v5.clordid | Order Client Order ID (order.clordid) - the unique client Order ID. |
| trade_decay_v5.subid2 | Order SubID 2 (order.subid2) - the SubID 2 of the order. When orders originate from an MT4 and MT5 connector, this will be the Group Name. |
| trade_decay_v5.subid3 | Order SubID 3 (order.subid3) - the SubID 3 of the order. When orders originate from an MT4 and MT5 connector, this will be the Account Login number. |
| trade_decay_v5.subid4 | Order SubID 4 (order.subid4) - the SubID 4 of the order. When orders originate from an MT4 connector, this will be the MT4 Order Ticket Number. When orders originate from an MT5 connector, this will be the posID. |
| trade_decay_v5.connector_subid | The combined identifier of the trade's execution channel, showing both the connector name and the specific SubID 3 used for the order, formatted as "Connector/SubID 3". Note: Formed by concatenating trade_decay_v5.connector (the connector name) and trade_decay_v5.subid3 (the order SubID 3). |
| trade_decay_v5.connector_account_subid | The combined identifier of the trade's execution channel, showing the connector name, connector account, and the specific SubID 3 used for the order, formatted as "Connector/Account/SubID 3". Note: Formed by concatenating trade_decay_v5.connector (the connector name), trade_decay_v5.account (the connector account within the connector), and trade_decay_v5.subid3 (the order SubID 3). |
| trade_decay_v5.side | Order Side (order.side) - the side of the Order indicates whether the order is a "buy" or "sell". |
| trade_decay_v5.symbol | Order Symbol (order.symbol) - the connector stream symbol name as known by the XCore. |
| trade_decay_v5.leg | Leg ID (leg.leg) - the unique Leg ID generated by XCore when an order is split into multiple legs to be sent to one or more Liquidity Providers for execution. Note: If an XCore Order ID 12345 is split into two legs, the system generates two leg IDs (0 and 1) for this order: - 12345-0 - 12345-1. |
| trade_decay_v5.b_book | Leg Book Type (#leg.ab_book) - the book type for the trade leg, derived from the Leg B-Book Execution flag (leg.b_book). Note: available values are: A - leg.b_book = 0 (A-book). B - any other leg.b_book value (B-book, cross-hedge or Synthetic A-book). For trades partially executed in both books, the report will show two separate entries: one with A for the A-Book part and one with B for the B-Book part. |
| trade_decay_v5.provider | Leg Provider (leg.provider) - for A-Book execution, the Liquidity Provider to which the Leg was sent for execution. For B-Book execution, the Provider whose price quote was used to execute the trade. |
| trade_decay_v5.time | Leg Open Timestamp (leg.open_milli) - the timestamp when the leg was created in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| trade_decay_v5.busdate | Business Date - the FX/CFD business date assigned to the trade based on the Leg Open Timestamp (trade_decay_v5.time). Note: The business day changes at 17:00 America/New_York (DST-aware). Trades opened at or after 17:00 NY time belong to the next business date. Format: DD/MM/YYYY. |
| trade_decay_v5.price | Leg Requested Price (leg.price) - the requested price of leg sent to the Liquidity Provider for execution. |
| trade_decay_v5.deal | Deal ID (deal.deal) - the unique Deal ID generated by XCore when a leg sent to a Liquidity Provider is further split by the Liquidity Provider into one or several deals. Note: If a leg 12345-0 is split into two deals, the system generates two deal IDs (0 and 1) for this leg: - 12345-0-0 - 12345-0-1. |
| #trade_decay_v5.deal_latency | Deal Latency - the time in milliseconds from the moment the leg was opened (starting point of the Trade Decay timeline) to the moment the deal was executed by the Liquidity Provider. Note: #trade_decay_v5.deal_latency = deal.milli - leg.open_milli. |
| trade_decay_v5.fillsize | Deal Execution Size (deal.size) - the size of the deal filled and confirmed by the Liquidity Provider, in lots. |
| trade_decay_v5.fillprice | Deal Execution Price (deal.price) - the price at which the deal was executed, excluding all markups configured in XCore. For A-Book, this is the price confirmed by the Liquidity Provider. For B-Book, this is the liquidity pool top-of-book price on the traded side. |
| trade_decay_v5.conv_usd | Deal Base Conversion to USD (deal.conv_usd) - the USD conversion rate at the moment of trade execution, converting the deal size in lots to USD, calculated as the price of the symbol's base currency against USD, multiplied by the symbol's contract_size defined in the Symbol configuration. |
| trade_decay_v5.interval | Decay Interval - the elapsed time (T+) from trade_decay_v5.time when the leg was opened. Measured in milliseconds. Note: In this report, an interval is a specific point in time at which the Decay Value is measured (for example, T+10ms), not a time range. |
| trade_decay_v5.bid | Decay Bid - the top-of-book (TOB) Bid price from the liquidity pool at the specified time interval. It includes only the LP markup (Provider Stream Settings), if set. |
| trade_decay_v5.ask | Decay Ask - the top-of-book (TOB) Ask price from the liquidity pool at the specified time interval after the leg opens. It includes only the LP markup (Provider Stream Settings), if set. |
| #trade_decay_v5.value | Computed Decay Value - the decay value calculated as the difference between the execution price and the mid market price (the average of Bid and Ask) at the specified interval, adjusted by the order side and converted to USD for the full deal size. Note: - Calculated from the broker's perspective: positive values indicate broker profit, negative values indicate broker loss. - if trade_decay_v5.side = BUY then price_diff = trade_decay_v5.fillprice - ((trade_decay_v5.bid + trade_decay_v5.ask) / 2) - if trade_decay_v5.side = SELL then price_diff = ((trade_decay_v5.bid + trade_decay_v5.ask) / 2) - trade_decay_v5.fillprice - #trade_decay_v5.value = (price_diff * trade_decay_v5.fillsize / trade_decay_v5.fillprice) * trade_decay_v5.conv_usd. - The mid includes the LP markup (Provider Stream Settings), but the fill price does not. If Bid or Ask is unavailable or invalid at the specified interval (trade_decay_v5.bid <= 0 or trade_decay_v5.ask <= 0), the mid market price cannot be calculated and the Decay Value for that interval is reported as 0. |
Trade Decay V5 Toxic and Trade Decay V5 Profitable offer the fields above except trade_decay_v5.trade_source, trade_decay_v5.busdate, trade_decay_v5.deal and #trade_decay_v5.deal_latency.
Report Type: Trade Flow by Login
report type: trade flow by login
| Field Name | Description |
|---|---|
| trade_decay_v5.connector | Order Connector (order.connector) - the connector name from the XCore configuration. |
| trade_decay_v5.account | Order Connector Account (order.account) - the name of the connector account within the XCore connector responsible for executing the order. |
| trade_decay_v5.subid2 | Order SubID 2 (order.subid2) - the SubID 2 of the order. When orders originate from an MT4 and MT5 connector, this will be the Group Name. |
| trade_decay_v5.subid3 | Order SubID 3 (order.subid3) - the SubID 3 of the order. When orders originate from an MT4 and MT5 connector, this will be the Account Login number. |
| trade_decay_v5.side | Order Side (order.side) - the side of the Order indicates whether the order is a "buy" or "sell". |
| trade_decay_v5.order_type | Order Type (order.type) - the XCore order type. Note: available values are: - market - limit - stop |
| trade_decay_v5.leg_type | Leg Type (leg.type) - the Leg type. Note: available values are: - market - limit. |
| trade_decay_v5.provider | Leg Provider (leg.provider) - for A-Book execution, the Liquidity Provider to which the Leg was sent for execution. For B-Book execution, the Provider whose price quote was used to execute the trade. |
| trade_decay_v5.connector_account_subid | The combined identifier of the trade's execution channel, showing the connector name, connector account, and the specific SubID 3 used for the order, formatted as "Connector/Account/SubID 3". Note: Formed by concatenating trade_decay_v5.connector (the connector name), trade_decay_v5.account (the connector account within the connector), and trade_decay_v5.subid3 (the order SubID 3). |
| trade_decay_v5.symbol | Order Symbol (order.symbol) - the connector stream symbol name as known by the XCore. |
| trade_decay_v5.b_book | Leg Book Type (#leg.ab_book) - the book type for the trade leg, derived from the Leg B-Book Execution flag (leg.b_book). Note: available values are: A - leg.b_book = 0 (A-book). B - any other leg.b_book value (B-book, cross-hedge or Synthetic A-book). For trades partially executed in both books, the report will show two separate entries: one with A for the A-Book part and one with B for the B-Book part. |
| trade_decay_v5.busdate | Business Date - the FX/CFD business date assigned to the trade based on the Leg Open Timestamp (trade_decay_v5.time). Note: The business day changes at 17:00 America/New_York (DST-aware). Trades opened at or after 17:00 NY time belong to the next business date. Format: DD/MM/YYYY. |
| trade_flow_by_login.Volume USD | Volume USD - the USD-denominated volume of the deal at the moment of trade execution. Note: trade_flow_by_login.Volume USD = trade_decay_v5.fillsize * trade_decay_v5.conv_usd. Use the Sum aggregation type to obtain the total traded volume for the selected grouping. Use this field together with the decay metrics to assess the significance of the observed trading pattern. Similar decay values on a larger total traded volume indicate a more meaningful and actionable trading pattern than the same decay values on a small volume. |
| #trade_flow_by_login.n_fills | Fills - the number of fills (deals) included in the report. Note: For each row: #trade_flow_by_login.n_fills = 1. Use the Sum aggregation type to obtain the total number of fills for the selected grouping. This field is intended to show the sample size behind the reported decay values. |
| trade_flow_by_login.0ms | Decay value (#trade_decay_v5.value) at T+0ms - the markout at the leg open (trade_decay_v5.time), before any price movement occurs. For the calculation and markup details, see #trade_decay_v5.value. |
| trade_flow_by_login.5ms | Decay value (#trade_decay_v5.value) at T+5ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 5ms. |
| trade_flow_by_login.10ms | Decay value (#trade_decay_v5.value) at T+10ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 10ms. |
| trade_flow_by_login.15ms | Decay value (#trade_decay_v5.value) at T+15ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 15ms. |
| trade_flow_by_login.20ms | Decay value (#trade_decay_v5.value) at T+20ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 20ms. |
| trade_flow_by_login.25ms | Decay value (#trade_decay_v5.value) at T+25ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 25ms. |
| trade_flow_by_login.30ms | Decay value (#trade_decay_v5.value) at T+30ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 30ms. |
| trade_flow_by_login.40ms | Decay value (#trade_decay_v5.value) at T+40ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 40ms. |
| trade_flow_by_login.50ms | Decay value (#trade_decay_v5.value) at T+50ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 50ms. |
| trade_flow_by_login.60ms | Decay value (#trade_decay_v5.value) at T+60ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 60ms. |
| trade_flow_by_login.70ms | Decay value (#trade_decay_v5.value) at T+70ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 70ms. |
| trade_flow_by_login.80ms | Decay value (#trade_decay_v5.value) at T+80ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 80ms. |
| trade_flow_by_login.100ms | Decay value (#trade_decay_v5.value) at T+100ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 100ms. |
| trade_flow_by_login.120ms | Decay value (#trade_decay_v5.value) at T+120ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 120ms. |
| trade_flow_by_login.150ms | Decay value (#trade_decay_v5.value) at T+150ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 150ms. |
| trade_flow_by_login.200ms | Decay value (#trade_decay_v5.value) at T+200ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 200ms. |
| trade_flow_by_login.300ms | Decay value (#trade_decay_v5.value) at T+300ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 300ms. |
| trade_flow_by_login.500ms | Decay value (#trade_decay_v5.value) at T+500ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 500ms. |
| trade_flow_by_login.1s | Decay value (#trade_decay_v5.value) at T+1s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 1000ms. |
| trade_flow_by_login.2s | Decay value (#trade_decay_v5.value) at T+2s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 2000ms. |
| trade_flow_by_login.5s | Decay value (#trade_decay_v5.value) at T+5s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 5000ms. |
| trade_flow_by_login.10s | Decay value (#trade_decay_v5.value) at T+10s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 10000ms. |
| trade_flow_by_login.20s | Decay value (#trade_decay_v5.value) at T+20s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 20000ms. |
| trade_flow_by_login.30s | Decay value (#trade_decay_v5.value) at T+30s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 30000ms. |
| trade_flow_by_login.60s | Decay value (#trade_decay_v5.value) at T+60s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 60000ms. |
| trade_flow_by_login.90s | Decay value (#trade_decay_v5.value) at T+90s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 90000ms. |
| trade_flow_by_login.120s | Decay value (#trade_decay_v5.value) at T+120s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 120000ms. |
| trade_flow_by_login.180s | Decay value (#trade_decay_v5.value) at T+180s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 180000ms. |
| trade_flow_by_login.300s | Decay value (#trade_decay_v5.value) at T+300s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 300000ms. |
| trade_flow_by_login.600s | Decay value (#trade_decay_v5.value) at T+600s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 600000ms. |
| trade_flow_by_login.900s | Decay value (#trade_decay_v5.value) at T+900s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 900000ms. |
| #trade_flow_by_login.short_quality | Short-Term Quality Score - the broker's average USD profit or loss across six short-term decay intervals (0ms, 500ms, 1s, 30s, 60s, 120s), calculated for the selected report grouping. Note: #trade_flow_by_login.short_quality = AVERAGE(VWAPMM decay values at the six intervals) * trade_flow_by_login.Volume USD / 1,000,000. Negative values indicate the broker lost money on average across these intervals; positive values indicate broker profit. This field is calculated only from interval fields that use the VWAPMM aggregation type. The template must also include trade_flow_by_login.Volume USD with the Sum aggregation type. Otherwise, the result is blank. Calculated after all report grouping and aggregation is complete, not per deal. |
| #trade_flow_by_login.long_quality | Long-Term Quality Score - the broker's average USD profit or loss across six longer-term decay intervals (0ms, 30s, 60s, 300s, 600s, 900s), calculated for the selected report grouping. Note: #trade_flow_by_login.long_quality = AVERAGE(VWAPMM decay values at the six intervals) * trade_flow_by_login.Volume USD / 1,000,000. Negative values indicate the broker lost money on average across these intervals; positive values indicate broker profit. This field is calculated only from interval fields that use the VWAPMM aggregation type. The template must also include trade_flow_by_login.Volume USD with the Sum aggregation type. Otherwise, the result is blank. Calculated after all report grouping and aggregation is complete, not per deal. |
Report Type: Toxic Client Watchlist
report type: toxic client watchlist
| Field Name | Description |
|---|---|
| trade_decay_v5.connector | Order Connector (order.connector) - the connector name from the XCore configuration. |
| trade_decay_v5.account | Order Connector Account (order.account) - the name of the connector account within the XCore connector responsible for executing the order. |
| trade_decay_v5.subid2 | Order SubID 2 (order.subid2) - the SubID 2 of the order. When orders originate from an MT4 and MT5 connector, this will be the Group Name. |
| trade_decay_v5.subid3 | Order SubID 3 (order.subid3) - the SubID 3 of the order. When orders originate from an MT4 and MT5 connector, this will be the Account Login number. |
| trade_decay_v5.side | Order Side (order.side) - the side of the Order indicates whether the order is a "buy" or "sell". |
| trade_decay_v5.order_type | Order Type (order.type) - the XCore order type. Note: available values are: - market - limit - stop |
| trade_decay_v5.leg_type | Leg Type (leg.type) - the Leg type. Note: available values are: - market - limit. |
| trade_decay_v5.provider | Leg Provider (leg.provider) - for A-Book execution, the Liquidity Provider to which the Leg was sent for execution. For B-Book execution, the Provider whose price quote was used to execute the trade. |
| #toxic_watchlist.book | Leg Book Type (#leg.ab_book) - the book type for the trade leg, derived from the Leg B-Book Execution flag (leg.b_book). Note: available values are: A - leg.b_book = 0 (A-book). B - any other leg.b_book value (B-book, cross-hedge or Synthetic A-book). For trades partially executed in both books, the report will show two separate entries: one with A for the A-Book part and one with B for the B-Book part. |
| trade_decay_v5.busdate | Business Date - the FX/CFD business date assigned to the trade based on the Leg Open Timestamp (trade_decay_v5.time). Note: The business day changes at 17:00 America/New_York (DST-aware). Trades opened at or after 17:00 NY time belong to the next business date. Format: DD/MM/YYYY. |
| trade_flow_by_login.Volume USD | Volume USD - the USD-denominated volume of the deal at the moment of trade execution. Note: trade_flow_by_login.Volume USD = trade_decay_v5.fillsize * trade_decay_v5.conv_usd. Use the Sum aggregation type to obtain the total traded volume for the selected grouping. Use this field together with the decay metrics to assess the significance of the observed trading pattern. Similar decay values on a larger total traded volume indicate a more meaningful and actionable trading pattern than the same decay values on a small volume. |
| #trade_flow_by_login.n_fills | Fills - the number of fills (deals) included in the report. Note: For each row: #trade_flow_by_login.n_fills = 1. Use the Sum aggregation type to obtain the total number of fills for the selected grouping. This field is intended to show the sample size behind the reported decay values. |
| trade_flow_by_login.0ms | Decay value (#trade_decay_v5.value) at T+0ms - the markout at the leg open (trade_decay_v5.time), before any price movement occurs. For the calculation and markup details, see #trade_decay_v5.value. |
| trade_flow_by_login.5ms | Decay value (#trade_decay_v5.value) at T+5ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 5ms. |
| trade_flow_by_login.10ms | Decay value (#trade_decay_v5.value) at T+10ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 10ms. |
| trade_flow_by_login.15ms | Decay value (#trade_decay_v5.value) at T+15ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 15ms. |
| trade_flow_by_login.20ms | Decay value (#trade_decay_v5.value) at T+20ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 20ms. |
| trade_flow_by_login.25ms | Decay value (#trade_decay_v5.value) at T+25ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 25ms. |
| trade_flow_by_login.30ms | Decay value (#trade_decay_v5.value) at T+30ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 30ms. |
| trade_flow_by_login.40ms | Decay value (#trade_decay_v5.value) at T+40ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 40ms. |
| trade_flow_by_login.50ms | Decay value (#trade_decay_v5.value) at T+50ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 50ms. |
| trade_flow_by_login.60ms | Decay value (#trade_decay_v5.value) at T+60ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 60ms. |
| trade_flow_by_login.70ms | Decay value (#trade_decay_v5.value) at T+70ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 70ms. |
| trade_flow_by_login.80ms | Decay value (#trade_decay_v5.value) at T+80ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 80ms. |
| trade_flow_by_login.100ms | Decay value (#trade_decay_v5.value) at T+100ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 100ms. |
| trade_flow_by_login.120ms | Decay value (#trade_decay_v5.value) at T+120ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 120ms. |
| trade_flow_by_login.150ms | Decay value (#trade_decay_v5.value) at T+150ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 150ms. |
| trade_flow_by_login.200ms | Decay value (#trade_decay_v5.value) at T+200ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 200ms. |
| trade_flow_by_login.300ms | Decay value (#trade_decay_v5.value) at T+300ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 300ms. |
| trade_flow_by_login.500ms | Decay value (#trade_decay_v5.value) at T+500ms from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 500ms. |
| trade_flow_by_login.1s | Decay value (#trade_decay_v5.value) at T+1s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 1000ms. |
| trade_flow_by_login.2s | Decay value (#trade_decay_v5.value) at T+2s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 2000ms. |
| trade_flow_by_login.5s | Decay value (#trade_decay_v5.value) at T+5s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 5000ms. |
| trade_flow_by_login.10s | Decay value (#trade_decay_v5.value) at T+10s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 10000ms. |
| trade_flow_by_login.20s | Decay value (#trade_decay_v5.value) at T+20s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 20000ms. |
| trade_flow_by_login.30s | Decay value (#trade_decay_v5.value) at T+30s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 30000ms. |
| trade_flow_by_login.60s | Decay value (#trade_decay_v5.value) at T+60s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 60000ms. |
| trade_flow_by_login.90s | Decay value (#trade_decay_v5.value) at T+90s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 90000ms. |
| trade_flow_by_login.120s | Decay value (#trade_decay_v5.value) at T+120s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 120000ms. |
| trade_flow_by_login.180s | Decay value (#trade_decay_v5.value) at T+180s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 180000ms. |
| trade_flow_by_login.300s | Decay value (#trade_decay_v5.value) at T+300s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 300000ms. |
| trade_flow_by_login.600s | Decay value (#trade_decay_v5.value) at T+600s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 600000ms. |
| trade_flow_by_login.900s | Decay value (#trade_decay_v5.value) at T+900s from the leg open (trade_decay_v5.time). Note: Uses trade_decay_v5.ask and trade_decay_v5.bid at decay interval = 900000ms. |
| #toxic_watchlist.rank | Watchlist Rank - the position of the group in the watchlist, ranked by Watchlist Worst Value in ascending order. Note: - Rank 1 has the most negative Watchlist Worst Value. - Only groups that satisfy the Negative Interval Ranges filter are included in the ranking. |
| #toxic_watchlist.worst | Watchlist Worst Value - the most negative Decay value among all time intervals included in the configured Negative Interval Ranges filter. Only intervals included in the configured ranges are considered. Note: When interval values use Sum, Worst is expressed as the total USD profit/loss. When interval values use VWAPMM, Worst is expressed as potential USD profit/loss per million USD traded. |
| #toxic_watchlist.worst_at | Watchlist Worst Interval - the time interval where the Watchlist Worst Value occurs (for example, 10ms, 50ms, or 200ms). Note: If the same Worst Value occurs in multiple intervals, the earliest interval is returned. |
| #toxic_watchlist.neg_buckets | Watchlist Negative Buckets - the number of time intervals with values below zero across the intervals included in the report output. Note: Counts only the intervals added to the report template, regardless of the Negative Interval Ranges filter. Only values strictly below 0 are counted; the threshold defined in the Negative Interval Ranges filter is not used. |
| #toxic_watchlist.toxic_beyond | Watchlist Toxic Beyond - indicates whether decay values remain negative beyond the last interval defined in the Negative Interval Ranges filter. The evaluation is always based on comparison with 0 and does not depend on the threshold defined in the filter. Note: available values are: - Yes - all intervals after the last configured range have values below zero. If there are no intervals beyond the last configured range, the result is Yes. - No - at least one interval after the last configured range is zero, positive, or missing data. |
| #trade_flow_by_login.short_quality | Short-Term Quality Score - the broker's average USD profit or loss across six short-term decay intervals (0ms, 500ms, 1s, 30s, 60s, 120s), calculated for the selected report grouping. Note: #trade_flow_by_login.short_quality = AVERAGE(VWAPMM decay values at the six intervals) * trade_flow_by_login.Volume USD / 1,000,000. Negative values indicate the broker lost money on average across these intervals; positive values indicate broker profit. This field is calculated only from interval fields that use the VWAPMM aggregation type. The template must also include trade_flow_by_login.Volume USD with the Sum aggregation type. Otherwise, the result is blank. Calculated after all report grouping and aggregation is complete, not per deal. |
| #trade_flow_by_login.long_quality | Long-Term Quality Score - the broker's average USD profit or loss across six longer-term decay intervals (0ms, 30s, 60s, 300s, 600s, 900s), calculated for the selected report grouping. Note: #trade_flow_by_login.long_quality = AVERAGE(VWAPMM decay values at the six intervals) * trade_flow_by_login.Volume USD / 1,000,000. Negative values indicate the broker lost money on average across these intervals; positive values indicate broker profit. This field is calculated only from interval fields that use the VWAPMM aggregation type. The template must also include trade_flow_by_login.Volume USD with the Sum aggregation type. Otherwise, the result is blank. Calculated after all report grouping and aggregation is complete, not per deal. |
Report Type: Book Report
report type: book report
| Field Name | Description |
|---|---|
| #book.order | Book Order - the unique XCore Order ID. |
| #book.leg | Book Leg - the unique Leg ID. |
| #book.pool_id | Book Liquidity Pool - the name of the Liquidity Pool pricing the Quote. |
| #book.markup_profile | Book Markup Profile - the name of the Markup Profile associated with the Quote. |
| #book.book_layer | Book Layer - the number of layer in the advertised liquidity book; 0 - TOB, 1 - Layer 1, etc. |
| #book.bid_quote_provider | Bid Quote Provider - the name of the Liquidity Provider pricing the Bid Quote. |
| #book.bid_quote_price_raw | Bid Quote Price Raw - the raw bid quote price received from the Liquidity Provider. |
| #book.bid_quote_price_lp_markup | Bid Quote Price LP Markup - the raw bid quote price received from the Liquidity Provider including any pre-aggregation markups configured in the Provider Stream Settings. |
| #book.bid_quote_price_markup | Bid Quote Price Markup - the raw bid quote price received from the Liquidity Provider including any pre-aggregation markups configured in the Provider Stream Settings as well as any markups configured under the Markup Profile Settings and the Connector Profile Trade Lock Settings. |
| #book.bid_quote_liquidity_a_book | Bid Quote Liquidity A-Book - the available A-book liquidity of the bid quote. |
| #book.bid_quote_liquidity_b_book | Bid Quote Liquidity B-Book - the available B-book liquidity of the bid quote. |
| #book.bid_quote_xcore_timestamp | Bid Quote XCore Timestamp - the timestamp when the bid quote was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #book.bid_quote_date | Bid Quote Date - the date when the bid quote was received in the XCore. Format: DD/MM/YYYY. |
| #book.bid_quote_time | Bid Quote Time - the time when the bid quote was received in the XCore. Format: HH:MM:SS. |
| #book.ask_quote_provider | Ask Quote Provider - the name of the Liquidity Provider pricing the Ask Quote. |
| #book.ask_quote_price_raw | Ask Quote Price Raw - the raw ask quote price received from the Liquidity Provider. |
| #book.ask_quote_price_lp_markup | Ask Quote Price LP Markup - the raw ask quote price received from the Liquidity Provider including any pre-aggregation markups configured in the Provider Stream Settings. |
| #book.ask_quote_price_markup | Ask Quote Price Markup - the raw ask quote price received from the Liquidity Provider including any pre-aggregation markups configured in the Provider Stream Settings as well as any markups configured under the Markup Profile Settings and the Connector Profile Trade Lock Settings. |
| #book.ask_quote_liquidity_a_book | Ask Quote Liquidity A-Book - the available A-book liquidity of the ask quote. |
| #book.ask_quote_liquidity_b_book | Ask Quote Liquidity B-Book - the available B-book liquidity of the ask quote. |
| #book.ask_quote_xcore_timestamp | Ask Quote XCore Timestamp - the timestamp when the ask quote was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #book.ask_quote_date | Ask Quote Date - the date when the ask quote was received in the XCore. Format: DD/MM/YYYY. |
| #book.ask_quote_time | Ask Quote Time - the time when the ask quote was received in the XCore. Format: HH:MM:SS. |
| #book.spread_raw | Spread Raw - the raw spread advertised by the Liquidity Provider Note: #book.spread_raw = #book.ask_quote_price_raw - #book.bid_quote_price_raw |
| #book.spread | Spread Markup - the spread including the configured markups Note: #book.spread = #book.ask_quote_price_markup - #book.bid_quote_price_markup |
Report Type: Book ClickHouse
report type: book clickhouse
| Field Name | Description |
|---|---|
| #book_ch.order | Book Order (#book.order) - the unique XCore Order ID. |
| #book_ch.leg | Book Leg (#book.leg) - the unique Leg ID. |
| #book_ch.book_layer | Book Layer (#book.book_layer) - the number of layer in the advertised liquidity book; 0 - TOB, 1 - Layer 1, etc. |
| #book_ch.bid_quote_provider | Bid Quote Provider (#book.bid_quote_provider) - the name of the Liquidity Provider pricing the Bid Quote. |
| #book_ch.bid_quote_price_raw | Bid Quote Price Raw (#book.bid_quote_price_raw) - the raw bid quote price received from the Liquidity Provider. |
| #book_ch.bid_quote_price_lp_markup | Bid Quote Price LP Markup (#book.bid_quote_price_lp_markup) - the raw bid quote price received from the Liquidity Provider including any pre-aggregation markups configured in the Provider Stream Settings. |
| #book_ch.bid_quote_price_markup | Bid Quote Price Markup (#book.bid_quote_price_markup) - the raw bid quote price received from the Liquidity Provider including any pre-aggregation markups configured in the Provider Stream Settings as well as any markups configured under the Markup Profile Settings and the Connector Profile Trade Lock Settings. |
| #book_ch.bid_liquidity_a_book | Bid Quote Liquidity A-Book (#book.bid_quote_liquidity_a_book) - the available A-book liquidity of the bid quote. |
| #book_ch.bid_liquidity_b_book | Bid Quote Liquidity B-Book (#book.bid_quote_liquidity_b_book) - the available B-book liquidity of the bid quote. |
| #book_ch.bid_xcore_timestamp | Bid Quote XCore Timestamp (#book.bid_quote_xcore_timestamp) - the timestamp when the bid quote was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #book_ch.bid_date | Bid Quote Date (#book.bid_quote_date) - the date when the bid quote was received in the XCore. Format: DD/MM/YYYY. |
| #book_ch.bid_time | Bid Quote Time (#book.bid_quote_time) - the time when the bid quote was received in the XCore. Format: HH:MM:SS. |
| #book_ch.ask_quote_provider | Ask Quote Provider (#book.ask_quote_provider) - the name of the Liquidity Provider pricing the Ask Quote. |
| #book_ch.ask_quote_price_raw | Ask Quote Price Raw (#book.ask_quote_price_raw) - the raw ask quote price received from the Liquidity Provider. |
| #book_ch.ask_quote_price_lp_markup | Ask Quote Price LP Markup (#book.ask_quote_price_lp_markup) - the raw ask quote price received from the Liquidity Provider including any pre-aggregation markups configured in the Provider Stream Settings. |
| #book_ch.ask_quote_price_markup | Ask Quote Price Markup (#book.ask_quote_price_markup) - the raw ask quote price received from the Liquidity Provider including any pre-aggregation markups configured in the Provider Stream Settings as well as any markups configured under the Markup Profile Settings and the Connector Profile Trade Lock Settings. |
| #book_ch.ask_liquidity_a_book | Ask Quote Liquidity A-Book (#book.ask_quote_liquidity_a_book) - the available A-book liquidity of the ask quote. |
| #book_ch.ask_liquidity_b_book | Ask Quote Liquidity B-Book (#book.ask_quote_liquidity_b_book) - the available B-book liquidity of the ask quote. |
| #book_ch.ask_xcore_timestamp | Ask Quote XCore Timestamp (#book.ask_quote_xcore_timestamp) - the timestamp when the ask quote was received in the XCore. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #book_ch.ask_date | Ask Quote Date (#book.ask_quote_date) - the date when the ask quote was received in the XCore. Format: DD/MM/YYYY. |
| #book_ch.ask_time | Ask Quote Time (#book.ask_quote_time) - the time when the ask quote was received in the XCore. Format: HH:MM:SS. |
| #book_ch.spread_raw | Spread Raw (#book.spread_raw) - the raw spread advertised by the Liquidity Provider Note: #book.spread_raw = #book.ask_quote_price_raw - #book.bid_quote_price_raw |
| #book_ch.spread_markup | Spread Markup (#book.spread) - the spread including the configured markups Note: #book.spread = #book.ask_quote_price_markup - #book.bid_quote_price_markup |
Report Type: TOB by Maker (ClickHouse)
report type: tob by maker (clickhouse)
| Field Name | Description |
|---|---|
| #maker_book.time | Time - the timestamp of the top-of-book snapshot. Timestamp is in UTC. Format: HH:MM:SS. Note: rows are bucketed into time slots, and the slot width depends on the selected date range: up to 6 seconds - 1 ms; up to 1 minute - 10 ms; up to 10 minutes - 100 ms; up to 1 hour - 1 second; up to 1 day - 30 seconds. Wider ranges keep widening in whole-minute steps (for example, 1 week - about 2 minutes; 30 days - about 8 minutes). Each row is the last real quote change in its slot, not an average, so a wider date range can hide short-lived price moves between slots. |
| maker_book.maker | Maker - the name of the Liquidity Provider providing this quote. |
| maker_book.symbol | Maker Book Symbol - the provider stream symbol name as known by XCore. |
| maker_book.bid_price | Bid Price - the top-of-book bid price this Maker was quoting. |
| maker_book.ask_price | Ask Price - the top-of-book ask price this Maker was quoting. |
| maker_book.bid_size | Bid Size - the size available at this Maker's bid price. |
| maker_book.ask_size | Ask Size - the size available at this Maker's ask price. |
| #maker_book.spread | Spread - the gap between this Maker's Ask Price and Bid Price. Note: #maker_book.spread = maker_book.ask_price - maker_book.bid_price. |
Report Type: Fill Ratio
report type: fill ratio
| Field Name | Description |
|---|---|
| order.order | Order ID - the unique XCore Order ID. |
| order.connector | Order Connector - the connector name from the XCore configuration. |
| order.account | Order Connector Account - the name of the connector account within the XCore connector responsible for executing the order. |
| order.subid3 | Order SubID 3 - the SubID 3 of the order. When orders originate from an MT4 and MT5 connector, this will be the Account Login number. |
| order.side | Order Side - the side of the Order indicates whether the order is a "buy" or "sell". |
| order.type | Order Type - the XCore order type. Note: available values are: - market - limit - stop |
| order.symbol | Order Symbol - the connector stream symbol name as known by the XCore. |
| leg.b_book | Leg B-Book Execution - the flag that shows whether a trade leg was executed through the B-Book or A-Book. Note: available values are: 0 - Leg was executed through A-Book. 1 - Leg was executed through B-Book. 2 - Cross-hedge leg. 3 - Leg was executed as Synthetic A-Book. For trades partially executed in both books, the report will show two separate entries: one with 0 for the A-Book part and one with 1 for the B-Book part. |
| leg.provider | Leg Provider - for A-Book execution, the Liquidity Provider to which the Leg was sent for execution. For B-Book execution, the Provider whose price quote was used to execute the trade. |
| leg.type | Leg Type - the Leg type. Note: available values are: - market - limit - pq (prequoted), depending on the order type, the DealerTrade mode and the provider. |
| leg.instrument | Leg Provider Instrument - the instrument name at the Liquidity Provider to which the trade was sent for execution. |
| leg.size | Leg Requested Size - the requested size of leg sent to the Liquidity Provider for execution, in lots. |
| leg.price | Leg Requested Price - the requested price of leg sent to the Liquidity Provider for execution. |
| leg.fillsize | Leg Fill Size - the fill size of the leg, in lots. Note: A Leg sent to a Liquidity Provider can be further split by the Liquidity Provider into one or several deals. Therefore, the Leg Fill Size is the sum of the deals confirmed by the Liquidity Provider. |
| leg.fillprice | Leg Fill Price - the leg fill price, excluding all markups configured in XCore. For A-Book, this is the price confirmed by the Liquidity Provider. For B-Book, this is the liquidity pool top-of-book price on the traded side. Note: the fill price is the volume-weighted average fill price of the filled deals (deal.price). |
| #leg.is_pending | Leg Pending Flag - indicates that the leg is in Pending status. Note: available values are: 1 - the leg has not been filled and is still open (leg.fillsize = 0 and leg.close_milli = 0); null - otherwise. |
| #leg.is_filled | Leg Filled Flag - indicates that the leg is in Filled status. Note: available values are: 1 - the leg is fully filled and closed (leg.fillsize = leg.size and leg.close_milli > 0); null - otherwise. |
| #leg.is_partial | Leg Partial Flag - indicates that the leg is in Partial status. Note: available values are: 1 - the leg is partially filled and closed (leg.fillsize > 0 and leg.fillsize < leg.size and leg.close_milli > 0); null - otherwise. |
| #leg.is_rejected | Leg Rejected Flag - indicates that the leg is in Rejected status. Note: available values are: 1 - the leg was not filled and is closed (leg.fillsize = 0 and leg.close_milli > 0); null - otherwise. |
| #leg.is_filled_partial | Leg Filled/Partial Flag - indicates that the leg has any execution (Filled or Partial). Note: available values are: 1 - the leg has been at least partially filled and closed (leg.fillsize > 0 and leg.close_milli > 0); null - otherwise. |
| #leg.is_slippage | Leg Slippage Flag - indicates that the leg was executed with slippage in the unfavorable direction relative to the order side. Note: available values are: 1 - the leg has been filled with slippage (for BUY: leg.fillprice > leg.price; for SELL: leg.fillprice < leg.price) and is closed (leg.fillsize > 0 and leg.close_milli > 0); null - otherwise. |
| #leg.is_expected | Leg Expected Price Flag - indicates that the leg was executed at the expected price. Note: available values are: 1 - the leg has been filled at the exact requested price (leg.fillprice = leg.price) and is closed (leg.fillsize > 0 and leg.close_milli > 0); null - otherwise. |
| #leg.is_improvement | Leg Price Improvement Flag - indicates that the leg was executed at a better price than requested relative to the order side. Note: available values are: 1 - the leg has been filled with price improvement (for BUY: leg.fillprice < leg.price; for SELL: leg.fillprice > leg.price) and is closed (leg.fillsize > 0 and leg.close_milli > 0); null - otherwise. |
| #leg.delta_fill | Leg Fill Execution Time - the time in milliseconds from leg submission to full or partial fill. Note: If the leg has been filled (leg.fillsize > 0 and leg.close_milli > 0): #leg.delta_fill = leg.close_milli - leg.open_milli; null - otherwise. |
| #leg.delta_reject | Leg Reject Execution Time - the time in milliseconds from leg submission to rejection. Note: If the leg was rejected (leg.fillsize = 0 and leg.close_milli > 0): #leg.delta_reject = leg.close_milli - leg.open_milli; null - otherwise. |
| #leg.slippage_to_improvement_ratio | Leg Slippage to Improvement Ratio - the percentage ratio between the number of slippage events and improvement events across legs. Note: Aggregation-only field. Must be used with the "Aggregation Ratio" column type; otherwise, it returns NULL for each individual row. If the number of improvement events equals 0, the result is NULL. |
| #leg.count | Leg Count - the number of legs included in the report. Note: For each row: #leg.count = 1. Use the Sum aggregation type to obtain the total number of legs for the selected grouping. |
| #leg.fillrate_size | Leg Fill Rate by Size - the fill rate of the leg based on filled size. With the Ratio aggregation, shows the percentage of requested size that was filled across the group. Note: #leg.fillrate_size (Ratio) = 100 * Σ(leg.fillsize) / Σ(leg.size). With any Column Type other than Ratio, this field behaves as Leg Fill Size (#leg.fillsize). |
| #deal.volume_usd | Leg Volume USD - the USD-denominated volume of all deals attached to this leg, at the moment of trade execution. Note: available values are: #deal.volume_usd = Σ(deal.size * deal.conv_usd) for all deals linked to the leg - when the leg has at least one deal; null - otherwise. |
| #leg.reject_message | Leg Reject Reason - the reason why the leg was rejected by the Liquidity Provider. Note: available values are: deal.message - the message from the leg's last zero-size deal, when present (excluding the 'n/a' placeholder); null - otherwise. |
Report Type: Profit B-Book
report type: profit b-book
| Field Name | Description |
|---|---|
| order.symbol | Order Symbol - the connector stream symbol name as known by the XCore. |
| #profit_bbook.net_base | Broker Net Base Position - the broker's net position in the symbol Base Currency, aggregated across all B-Book deals for the selected period and calculated from the broker's perspective. Note: - for each deal: - if order.side = BUY then delta_base = - deal.size - if order.side = SELL then delta_base = deal.size - #profit_bbook.net_base = Σ delta_base for all deals in the selected period. Values are expressed in lots of the symbol Base Currency and do not include symbol.contract_size multiplication. This calculation includes trade execution data only and does not include position changes applied outside of trading activity, such as manual adjustments through Position Admin. |
| #profit_bbook.net_quote | Broker Net Quote Position - the broker's net position in the symbol Quote Currency, aggregated across all B-Book deals for the selected period and calculated from the broker's perspective. Note: - for each deal: - if order.side = BUY then delta_quote = deal.size * order.factor * deal.price - if order.side = SELL then delta_quote = - (deal.size * order.factor * deal.price) - #profit_bbook.net_quote = Σ delta_quote for all deals in the selected period. This calculation includes trade execution data only and does not include position changes applied outside of trading activity, such as manual adjustments through Position Admin or PL_SETTLEMENT transactions. |
| #filter.symbol_price | Symbol Market Price - the last recorded price of the symbol up to the end of the selected report date range. Note: The price is taken from the filter table, which stores prices that passed the configured thresholds. The price does not include markups from the Markup Profile Settings (Bid/Ask markups, Min/Max Spread). The price includes the Bid or Ask markup from the Provider Stream Settings only. The symbol contract size (symbol.contract_size) is not applied. Note: - if #profit_bbook.net_base >= 0 then #filter.symbol_price = filter.bid_close - if #profit_bbook.net_base < 0 then #filter.symbol_price = filter.ask_close. |
| #filter.symbol_price_time | Symbol Market Price Timestamp - the timestamp of the filter.bid_close (if #profit_bbook.net_base >= 0) or filter.ask_close (if #profit_bbook.net_base < 0) value used for #filter.symbol_price. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #filter.usd_price | USD Conversion Price - the last recorded conversion price from the symbol Base Currency to USD up to the end of the selected report date range. Note: The price is taken from the filter table, which stores prices that passed the configured thresholds. The price does not include markups from the Markup Profile Settings (Bid/Ask markups, Min/Max Spread). The price includes the Bid or Ask markup from the Provider Stream Settings only. The symbol contract size (symbol.contract_size) is not applied. Note: - if #profit_bbook.net_base >= 0 then #filter.usd_price = filter.bid_close - if #profit_bbook.net_base < 0 then #filter.usd_price = filter.ask_close. |
| #filter.usd_price_time | USD Conversion Price Timestamp - the timestamp of the filter.bid_close (if #profit_bbook.net_base >= 0) or filter.ask_close (if #profit_bbook.net_base < 0) value used for #filter.usd_price. Timestamp is in UTC. Format: DD/MM/YYYY HH:MM:SS. |
| #profit_bbook.profit_in_quote | Broker Profit in Quote Currency - the broker's total mark-to-market profit or loss expressed in the symbol Quote Currency, calculated from the broker's perspective for all B-Book deals over the selected period. Note: #profit_bbook.profit_in_quote = #profit_bbook.net_quote + (#profit_bbook.net_base * #filter.symbol_price * symbol.contract_size). This is a mark-to-market PnL metric, showing the broker's total profit if the entire net position were closed at the current market price. Note: This calculation includes trade execution data only and does not include position changes applied outside of trading activity, such as manual adjustments through Position Admin. |
| #profit_bbook.profit_in_base | Broker Profit in Base Currency - the broker's total mark-to-market profit or loss expressed in the symbol Base Currency, calculated from the broker's perspective for all B-Book deals over the selected period. Note: #profit_bbook.profit_in_base = #profit_bbook.net_base + (#profit_bbook.net_quote / (#filter.symbol_price * symbol.contract_size)). This represents the same PnL as #profit_bbook.profit_in_quote but expressed in the symbol Base Currency. Values are expressed in lots of the symbol Base Currency and do not include symbol.contract_size multiplication. This calculation includes trade execution data only and does not include position changes applied outside of trading activity, such as manual adjustments through Position Admin. |
| #profit_bbook.profit_in_usd | Broker Profit in USD - the broker's total mark-to-market profit or loss expressed in USD, calculated from the broker's perspective for all B-Book deals over the selected period. Note: #profit_bbook.profit_in_usd = #profit_bbook.profit_in_base * symbol.contract_size * #filter.usd_price. This represents the same PnL as #profit_bbook.profit_in_quote but expressed in USD. Note: This calculation includes trade execution data only and does not include position changes applied outside of trading activity, such as manual adjustments through Position Admin. |
Report Type: Position P&L
report type: position p&l
| Field Name | Description |
|---|---|
| #position_pnl.account | Account (account_position.account) - the account identifier as defined in the XCore configuration. This value corresponds to the Account.name parameter. |
| #position_pnl.symbol | Symbol (account_position.symbol) - the symbol name of the position as known by the XCore. Note: when the report uses grouping, grouping by this field (Column Type = Grouping field) is required for #position_pnl.symbol_quote_ccy, #position_pnl.base and all _quote_ccy fields to be filled. |
| #position_pnl.busdate | Business Date - the business day this row's figures were computed for, based on account_position activity within that day's boundaries. Note: The business day changes at 17:00 America/New_York (DST-aware). Format: DD/MM/YYYY. |
| #position_pnl.symbol_quote_ccy | Symbol Quote Currency - the quote currency of the traded symbol (e.g., USD for EURUSD). Note: value is taken from symbol configuration field symbol.quote and represents the currency in which the symbol is quoted. |
| #position_pnl.base | Base (account_position.base) - the position size at the closing boundary of the business day, expressed in the symbol's Base Currency. |
| #position_pnl.realized_pnl_quote_ccy | Realized PnL (Quote Currency) - the realized profit or loss closed during the business day, expressed in the symbol's Quote Currency. Note: #position_pnl.realized_pnl_quote_ccy = SUM of the change in account_position.closed_pl across the day's rows, excluding resets caused by a PL_SETTLEMENT transaction. |
| #position_pnl.unrealized_pnl_quote_ccy | Unrealized PnL (Quote Currency) - the unrealized profit or loss of the position at the end of the business day, expressed in the symbol's Quote Currency. Note: #position_pnl.unrealized_pnl_quote_ccy = account_position.base * symbol.contract_size * mid_price + (account_position.quote - account_position.closed_pl). All values are taken at the end of the business day. Note: mid_price is the last recorded mid price of the symbol up to the end of the business day: mid_price = (filter.ask_close + filter.bid_close) / 2. Note: account_position.closed_pl is subtracted from account_position.quote, so the result reflects only the open position, whether or not realized PnL has already been booked by a PL_SETTLEMENT transaction. |
| #position_pnl.unrealized_pnl_change_quote_ccy | Unrealized PnL Change (Quote Currency) - the change in the unrealized profit or loss of the position over the business day, expressed in the symbol's Quote Currency. Note: #position_pnl.unrealized_pnl_change_quote_ccy = #position_pnl.unrealized_pnl_quote_ccy - unrealized_pnl_quote_ccy_at_day_start. unrealized_pnl_quote_ccy_at_day_start is calculated with the same formula as #position_pnl.unrealized_pnl_quote_ccy, using the values at the start of the business day. |
| #position_pnl.total_pnl_quote_ccy | Total PnL (Quote Currency) - the total daily profit or loss, including realized PnL and the change in unrealized PnL, expressed in the symbol's Quote Currency. Note: #position_pnl.total_pnl_quote_ccy = #position_pnl.realized_pnl_quote_ccy + #position_pnl.unrealized_pnl_change_quote_ccy. |
| #position_pnl.pos_pnl_quote_ccy | Position PnL (Quote Currency) - the revaluation of the position already held at the start of the business day, expressed in the symbol's Quote Currency. Note: #position_pnl.pos_pnl_quote_ccy = account_position.base_at_day_start * symbol.contract_size * (mid_price_at_day_end - mid_price_at_day_start). Note: mid_price_at_day_start and mid_price_at_day_end are the last recorded mid prices of the symbol up to the start and up to the end of the business day: mid_price = (filter.ask_close + filter.bid_close) / 2. |
| #position_pnl.trading_pnl_quote_ccy | Trading PnL (Quote Currency) - the part of the day's Total PnL attributable to that day's trading activity, excluding the overnight carry, expressed in the symbol's Quote Currency. Note: #position_pnl.trading_pnl_quote_ccy = #position_pnl.total_pnl_quote_ccy - #position_pnl.pos_pnl_quote_ccy. |
| #position_pnl.currency | Currency - the currency of #position_pnl.realized_pnl, #position_pnl.unrealized_pnl, #position_pnl.unrealized_pnl_change, #position_pnl.total_pnl, #position_pnl.pos_pnl, #position_pnl.trading_pnl and #position_pnl.volume in this row. Note: available values are: - the account's Default Account Currency, defined in the Account Group Setting with the key DEFAULT_CCY - when #position_pnl.symbol_quote_ccy can be converted to it at both the start and the end of the business day; - #position_pnl.symbol_quote_ccy - when a conversion rate is missing at either boundary; the fields above then equal the corresponding _quote_ccy fields; - "N/A" - when the report is grouped and the grouped rows are in different currencies. |
| #position_pnl.realized_pnl | Realized PnL - the realized profit or loss closed during the business day, expressed in the account's Default Account Currency. Note: #position_pnl.realized_pnl = #position_pnl.realized_pnl_quote_ccy * conversion_rate_from_quote_to_default_ccy_at_day_end. Note: conversion_rate_from_quote_to_default_ccy_at_day_end is the last recorded mid conversion rate from the symbol Quote Currency to the Default Account Currency up to the end of the business day: mid_rate = (filter.ask_close + filter.bid_close) / 2. |
| #position_pnl.unrealized_pnl | Unrealized PnL - the unrealized profit or loss of the position at the end of the business day, expressed in the account's Default Account Currency. Note: #position_pnl.unrealized_pnl = #position_pnl.unrealized_pnl_quote_ccy * conversion_rate_from_quote_to_default_ccy_at_day_end. Note: conversion_rate_from_quote_to_default_ccy_at_day_end is the last recorded mid conversion rate from the symbol Quote Currency to the Default Account Currency up to the end of the business day: mid_rate = (filter.ask_close + filter.bid_close) / 2. |
| #position_pnl.unrealized_pnl_change | Unrealized PnL Change - the change in the unrealized profit or loss of the position over the business day, expressed in the account's Default Account Currency. Note: #position_pnl.unrealized_pnl_change = #position_pnl.unrealized_pnl - unrealized_pnl_quote_ccy_at_day_start * conversion_rate_from_quote_to_default_ccy_at_day_start. unrealized_pnl_quote_ccy_at_day_start - see #position_pnl.unrealized_pnl_change_quote_ccy. Note: conversion_rate_from_quote_to_default_ccy_at_day_start and conversion_rate_from_quote_to_default_ccy_at_day_end are the last recorded mid conversion rates from the symbol Quote Currency to the Default Account Currency up to the start and up to the end of the business day: mid_rate = (filter.ask_close + filter.bid_close) / 2. |
| #position_pnl.total_pnl | Total PnL - the total daily profit or loss, including realized PnL and the change in unrealized PnL, expressed in the account's Default Account Currency. Note: #position_pnl.total_pnl = #position_pnl.realized_pnl + #position_pnl.unrealized_pnl_change. |
| #position_pnl.pos_pnl | Position PnL (Overnight Carry) - the revaluation of the position already held at the start of the business day, expressed in the account's Default Account Currency. Note: #position_pnl.pos_pnl = #position_pnl.pos_pnl_quote_ccy * conversion_rate_from_quote_to_default_ccy_at_day_start. Note: conversion_rate_from_quote_to_default_ccy_at_day_start is the last recorded mid conversion rate from the symbol Quote Currency to the Default Account Currency up to the start of the business day: mid_rate = (filter.ask_close + filter.bid_close) / 2. The change in the conversion rate during the day is included in #position_pnl.trading_pnl. |
| #position_pnl.trading_pnl | Trading PnL - the part of the day's Total PnL attributable to that day's trading activity, excluding the overnight carry. Note: #position_pnl.trading_pnl = #position_pnl.total_pnl - #position_pnl.pos_pnl. |
| #position_pnl.volume | Volume - the traded volume of the position over the business day, expressed in the account's Default Account Currency. Note: #position_pnl.volume = SUM of the absolute change in account_position.quote across the day's rows * conversion_rate_from_quote_to_default_ccy_at_day_end. Only position changes caused by executed trades are included in this sum. Note: if this sum is 0 for the day and mid_price_at_day_end is available: #position_pnl.volume = SUM of the absolute change in account_position.base across all the day's rows * symbol.contract_size * mid_price_at_day_end * conversion_rate_from_quote_to_default_ccy_at_day_end. Note: mid_price_at_day_end and conversion_rate_from_quote_to_default_ccy_at_day_end are the last recorded mid price of the symbol and the last recorded mid conversion rate from the symbol Quote Currency to the Default Account Currency up to the end of the business day: mid_rate = (filter.ask_close + filter.bid_close) / 2. |
| #position_pnl.dpm | PnL per Million (DPM) - the Total PnL per 1,000,000 of traded volume, both expressed in the account's Default Account Currency, making results comparable across different trading volumes. Note: #position_pnl.dpm = #position_pnl.total_pnl / #position_pnl.volume * 1,000,000. Returns 0 when #position_pnl.volume is 0. |
| #filter.missing_conv_rate | Conversion Rate Warning - indicates whether all required prices and conversion rates were available and correctly applied for calculations in this report row. Note: available values are: - "Conversion Error" - one or more required prices or conversion rates were missing or invalid, so one or more calculated values in this row are missing or inaccurate. This occurs when conversion rate calculations cannot be completed due to missing prices in the filter table. - No value (Empty) - all required conversion rates were available, and all calculations in this report row were completed successfully. |
| #filter.has_conv_error | Conversion Error Flag - a checkbox indicator of conversion rate issues in the report row, based on #filter.missing_conv_rate. Note: available values are: - Checked - corresponds to "Conversion Error" in #filter.missing_conv_rate; - Empty - corresponds to no value in #filter.missing_conv_rate (no conversion issues). Unlike #filter.missing_conv_rate, this field displays the result as a visual checkbox instead of a text value. |
Grouping and Aggregation
Grouping and Aggregation are configured for each field on the Field Settings tab using the Column Type (column_type) option.
14 column types
Rule: Grouping combines multiple rows into one. For each unique value (or unique combination of values when multiple fields are used for grouping), the report returns exactly one row. Every other field in that row should either be a Grouping field or use one of the aggregation types below. Otherwise, only one value from the combined rows will be displayed and the remaining values will be ignored.
Date Grouping. For a date/time field set to Grouping field, Date Grouping picks how finely to group it: by Minute, Hour, or Day. Left unset, it groups by Day.
| Column Type | Purpose | Formula / Behavior |
|---|---|---|
| N/A | Keeps the original value from each row. No grouping or aggregation is applied. | Displays the original field value. Note: If other fields use Grouping, an N/A field shows only one value from the grouped rows. Use N/A only when all grouped rows are expected to have the same value. |
| Grouping field | Combines rows with the same value into a single report row. | One output row for each unique value (or unique combination of values when multiple grouping fields are used). |
| Aggregation MIN | Returns the smallest value from the grouped rows. | MIN(values) |
| Aggregation MAX | Returns the largest value from the grouped rows. | MAX(values) |
| Aggregation AVG | Returns the arithmetic average of the grouped values. | AVG(values) |
| Aggregation SUM | Returns the total of all grouped values. | SUM(values) |
| Aggregation COUNT | Returns the number of grouped rows. | COUNT(rows) |
| Aggregation VWA | Volume-Weighted Average. Shows the average value weighted by deal size, so larger deals have a greater impact on the result than smaller ones. | SUM(value * deal.size * order.factor) / SUM(deal.size * order.factor) |
| Aggregation VWAPMM | Value per Million USD. Normalizes a value (for example, markup or slippage) to USD 1,000,000 traded, making results comparable across different trading volumes. | 1,000,000 * SUM(value in USD) / SUM(traded volume in USD) |
| Aggregation Ratio | Returns a percentage based on the grouped rows (for example, the percentage of trades that satisfy a condition). | 100 * COUNT(matching rows)/ COUNT(all rows). |
| Aggregation Median | Returns the typical middle value of the grouped values - half are higher, half are lower. Unlike AVG, a single extreme outlier does not pull this value up or down. | Middle value of the sorted values |
| Aggregation PERCENTILE5 | Returns a value near the low end of the grouped values, with only 5% of values falling below it. Useful for reading the low end of a spread of results without one extreme spike distorting the picture. | 5th percentile of the sorted values |
| Aggregation PERCENTILE95 | Returns a value near the high end of the grouped values, with only 5% of values falling above it. Useful for reading the high end of a spread of results without one extreme spike distorting the picture. | 95th percentile of the sorted values |
| Aggregation Top 3 | Counts how often each value occurs in the group, then returns the 3 most common ones together in one cell, most frequent first. | Top 3 most frequent values, joined into one cell |