Skip to content

LiquidityPool

LiquidityPool contains the symbol settings for each liquidity pool configured in the System. All such settings are defined in LiquidityPoolSetting. LiquidityPool has the following attributes and can be accessed via pending config or real-time config:

attributes required default setting attribute type description
id Y – INT The ID of the liquidity pool; generated.
name Y – VARCHAR The name of the liquidity pool.
description N – VARCHAR The description of the liquidity pool.
enable Y – TINYINT Represents if the liquidity pool is enabled or disabled. Pricing for a symbol through the pool requires both the pool and its LiquidityPoolSetting row for that symbol to be enabled.

LiquidityPoolSetting

LiquidityPoolSetting defines the symbol settings of the LiquidityPool. LiquidityPoolSetting has the following attributes and can be accessed via pending config or real-time config:

attributes required default settings attribute type description
pool Y – INT The ID of the liquidity pool (shown by name in the Portal).
security – – VARCHAR Read-only: the security of the selected symbol, shown by the Portal.
symbol Y – VARCHAR The name of the symbol.
enable Y – TINYINT Represents if the symbol is enabled or disabled as part of this liquidity pool. The pool itself must also be enabled.
primary Y – VARCHAR A comma-separated list of primary providers participating in this liquidity pool and symbol.
backup N n/a VARCHAR A comma-separated list of backup providers eligible to supply pricing for this liquidity pool and symbol when the backup conditions are met. Participation depends on usable primary and backup pricing and timeout. Setting n/a disables this feature.
timeout N 60 INT Delay in seconds for backup pricing eligibility after loss of usable two-sided primary pricing. Backup participation also depends on available backup quotes and recovery of usable primary bid and ask prices; this is not a guaranteed failover or quote-delivery time.

Supported range when backups are configured: 1 to 3600 seconds. Unused when the backup list is empty.
mode Y sweep VARCHAR Execution mode for this pool and symbol, used together with the ConnectorAccount mode and provider constraints.

• SWEEP permits execution across eligible liquidity.
• SINGLE_IOC restricts liquidity selection instead of sweeping and permits partial fills.
• SINGLE_FOK restricts selection and requires a single quote that covers the full current execution portion; the combined size of several quotes does not count. The request sent to the provider is fill-or-kill.

Client minimum-fill instructions and other execution checks still apply. For split A-book/B-book orders, a full-portion requirement does not by itself guarantee a complete fill of the original order.
boost N – INT • FALSE (0) – takes the displayed liquidity into consideration when executing the trade.
• TRUE (1) – sends the trade to the liquidity provider offering the best price even beyond the displayed quote size, within the provider’s trading limits.
• FORWARD (2) – as TRUE, and in addition an eligible A-book LIMIT order (positive price, no xHedge) is forwarded to rest on the liquidity provider instead of XCore. Note: Recommended TimeInForce = GTC for an order that is meant to rest.

Provider support and the other execution checks still apply; a forwarded order is not guaranteed to be accepted, to rest or to be filled.
filter_tolerance N 10 INT Fixed allowance in symbol.price_unit points for the pool's price bounds. Accepted values are -1 or a positive integer; zero is invalid. A larger enabled value generally permits more deviation. Setting this field or filter_factor to -1 disables these pool bounds, without disabling the Filter module. Validation still applies to both fields. See pool filtering statistics.
filter_factor N 2 DOUBLE Nonnegative multiplier controlling the adaptive allowance for this pool's price bounds, or -1 to disable these bounds. Zero retains the fixed tolerance when filter_tolerance is valid. Larger enabled values generally allow more deviation, but the effect depends on available reference data and other settings. See pool filtering statistics.

Use configured provider names in primary and backup; wildcard patterns are not supported. A provider cannot appear in both lists for the same pool and symbol.

Best and Worst Price Derivation

For each symbol and side (bid/ask), two bounding prices are extracted from the filter component: filter_best and filter_worst.
- filter_best is derived from the best top-of-book (ToB) prices of the market makers assigned to the filter component.
- filter_worst is derived using the same algorithm, but based on the bottom-of-book (BoB) prices.

Reference Price (ref_px) Calculation:
On the liquidity pools, filter_best imposes an upper bound on how advantageous a price can be. Quote exclusion depends on the configured allowance and available reference data; a price is not excluded merely because it differs from the raw reference.
The first (best) available non-filtered quote then forms the reference price (ref_px) for the specific pool, symbol, and side.
ref_px is subsequently checked against filter_worst. If ref_px is worse than filter_worst, it is clamped to filter_worst.

This protects the pricing reference used by later markup and spread settings. It does not rewrite every provider quote, create executable liquidity or guarantee a final spread or stopout outcome.

Mid Price and Spread Limitation:
Where spread_min and spread_max limitations are configured in the MarkupProfile, ref_px_bid and ref_px_ask after markup and skew are used to derive ref_px_mid. The spread limitations are then applied using ref_px_mid as the basis.

Rationale:
Filtering against filter_best ensures that ToB prices are not excessively favourable to the client. However, it does not guard against off-market prices on the opposite (too-wide) side.
Without the filter_worst clamping step, an off-market price at ToB could skew ref_px_mid without any bound. Where spread_min / spread_max limitations are active, this would propagate the distortion across the entire book.

Review symbol-specific filtering statistics before tuning the allowance; increasing it also relaxes protection against off-market data.