Symbol
XCore v6.01.xx+ introduces the following new attributes:
- symbol.markup_min and symbol.markup_max: These attributes constrain the combined profile markup and skew on each side in absolute price amounts, and limit minimum-spread widening. They do not cap every provider offset, final spread or execution slippage.
- symbol.markup_decimal, symbol.markup_price_unit, and symbol.markup_basis_point: These attributes allow users to enable or disable the respective markup_type for use in MarkupProfileSettings.

Symbol contains all the trading instruments defined in XCore and allows for configuring settings for each Symbol. Changes made at this level will impact all other components in the system. Each Symbol is assigned to a single Security. The security's type sets type-specific rules for its symbols, and features that support security rules can apply them to all its symbols. Symbol has the following attributes and can be accessed via pending config or real-time config:
| attributes | required | default settings | attribute type | description |
|---|---|---|---|---|
| id | Y | – | INT | The ID of the symbol; generated. |
| name | Y | – | VARCHAR | The name of the symbol. |
| description | VARCHAR | A short description of the symbol. | ||
| security | Y | – | VARCHAR | The name of the security the symbol is assigned to. |
| base | Y | – | VARCHAR | The base currency or underlying-asset reference from the Currency catalog. For security type FX, base and quote names must each have three characters, and the symbol name must begin with their concatenation; suffixes are allowed. For non-FX products, the base can identify the underlying asset and does not have to equal the symbol name. |
| quote | Y | – | VARCHAR | The quote currency of the symbol • For FX products (Assigned to security of type FX), the symbol’s name is composed of the base and quote attributes of the symbol. |
| contract_size | Y | 1 | DOUBLE | Volume multiplier used to compute the order’s monetary value in the quote currency for margin, position booking and valuation: quote = size × contract_size × price.To match the trade size with the LP, use Provider Scaling. |
| size_unit | Y | – | DOUBLE | The base increment for internal symbol quantities. Must be greater than 0. Provider and connector minimum/step settings and provider scaling apply separately. Important: Assigning it a larger value than the smallest size increment that may be submitted by any configured makers can lead to position discrepancies and potentially trigger an automatic shutdown of makers. |
| price_unit | Y | – | DOUBLE | The base/default price resolution and the absolute size of one point when a profile uses price_unit. Must be greater than 0. Provider prices are rounded to this unit when they are received (bids down, asks up). Explicit precision settings can use finer or coarser rounding; average or derived prices do not always lie on the default price-unit grid. |
| markup_min | Y | -1000 | DOUBLE | Lower bound, in absolute price amounts, on the combined profile markup and skew on each side. Supports values <= 0. Zero actively prevents a negative combined contribution; it does not disable the check. This is not a universal final-price or slippage limit. |
| markup_max | Y | 1000 | DOUBLE | Upper bound, in absolute price amounts, on the combined profile markup and skew on each side. Supports values >= 0. Zero actively prevents a positive combined contribution. This bound also limits minimum-spread widening and can prevent the requested minimum spread from being reached. It does not cap the sum of bid and ask adjustments, every provider offset or execution slippage. |
| markup_decimal | Y | – | BOOLEAN | The markup_decimal parameter specifies whether MarkupProfileSetting markup_type and spread_type can include decimal as a valid type. Its purpose is to minimize the risk of brokers accidentally configuring these parameters incorrectly. |
| markup_price_unit | Y | – | BOOLEAN | The markup_price_unit parameter specifies whether MarkupProfileSetting markup_type and spread_type can include price_unit as a valid type. Its purpose is to minimize the risk of brokers accidentally configuring these parameters incorrectly. |
| markup_basis_point | Y | – | BOOLEAN | The markup_basis_point parameter specifies whether MarkupProfileSetting markup_type and spread_type can include basis_point as a valid type. Its purpose is to minimize the risk of brokers accidentally configuring these parameters incorrectly. |
| active | Y | – | INT | Enables/Disables the symbol. An inactive symbol rejects new trade requests with symbol disabled and is not subscribed from providers; existing positions are not closed and existing orders are not cancelled by this flag. |
These three flags decide which units a MarkupProfile rule may use for this symbol. A rule for a security applies to every symbol of that security and a rule for * to every symbol, inactive symbols and symbols with their own rule included; each of these symbols must have the flag set to Y for the unit the rule uses.
Warning: configure symbol markup limits
Configure and verify realistic markup_min and markup_max values for each symbol. The bounds are absolute price amounts, independent of the profile unit. Very generous limits provide little protection against oversized adjustments. Zero is active. Enable only the markup and spread units your operation needs.
The XCore supports Synthetic Symbols — artificial currency pairs usually unavailable or nontradable in the market, constructed from two or more source symbols. Synthetics support full A-book and B-book execution, layered pricing, and multi-LP aggregation.
Please note that the Copy From function is copying parameters from the Connector Stream Setting, Connector Account Settings, and Provider Setting components such as A_Min, A_Step, Volume, Liquidity Pool, Markup Profile etc.