Eurex T7 ETI Trade Connector
Features
eti-eurexConnector KeyNotes
Useful Links
Session Type
See 5.2 Session Concept chapter in T7 ETI Manual.
-
Low Frequency Session (LF)
This session type supports the complete ETI functionality.
Modification for another session of the same business unit is only supported for standard orders.
ALFsession may also be used to subscribe broadcast streams, for example: Listener broadcast, trade notifications. -
High Frequency Session (HF)
This session type is aimed at high frequency trading.
TheHFsession type does not support the subscription of the broadcasts listener, trades, and news.
Mass cancellation and quote activation/inactivation for another session is supported.
External Order Modification
External order modification (via GUI) is supported via notifying RESTATED order event.
Order Scope
| Config Value | Description |
|---|---|
PERSISTENT | A persistent order is an order that is reinstated at the beginning of the Business Day (if valid for that Business Day) or after a Market Reset. |
NON_PERSISTENT | Non-persistent orders are automatically cancelled at the end of the Business Day or after a Market reset. They are also cancelled in case of some system events (see Mass Cancellation Notification) and session connection problems or normal session logout. |
Order Kind
| Config Value | Tag 28703 | Description |
|---|---|---|
LEAN | 0 | For lean orders, the execution notifications can be recovered (via retransmission requests on the session data channel). All data on lean orders are visible only to the session that submitted the order. Lean orders are always non-persistent. |
STANDARD | 1 | The complete order history can be recovered via retransmission requests. The order data is visible to all low-frequency sessions belonging to the same business unit. Standard orders can be persistent or non-persistent. |
Trading Capacity
This field designates if the trader is acting in the capacity of agent, trading for its own account or acting as a market maker.
| Config Value | Tag 1815 | Description |
|---|---|---|
CUSTOMER | 1 | Customer (Agency) |
PRINCIPAL | 5 | Principal (Proprietary) |
MARKET_MAKER | 6 | Market Maker |
Execution Instructions
Instructions for order handling. ExecInst(18).
The default value passed in this tag depends on orderScope settings.
| Tag 18 | Description |
|---|---|
H | Persistent Order |
Q | Non-persistent Order |
H 6 | Persistent and Book or Cancel (Post Only) order |
Q 6 | Non-persistent and Book or Cancel (Post Only) order |
Self Match Prevention Instruction
Indicate the instruction for SMP. The default value is REJECT_ON_BU_LEVEL.
| Config Value | Tag 2964 | Description |
|---|---|---|
REJECT_ON_BU_LEVEL | 100 | Reject cross on business unit level |
REJECT_ON_MARKET_LEVEL | 101 | Reject cross on market level |
Cross Match Instruction
Indicate the instruction for SMP. Applicable only when MatchInstCrossID(28744) is set.
The default value is DEFAULT which means that the behavior is defined by the exchange.
| Config Value | Tag 31625 | Description |
|---|---|---|
DEFAULT | The default behavior is defined by the exchange | |
CANCEL_TAKING | 1 | Cancel incoming order |
CANCEL_RESTING | 2 | Cancel resting order |
REDUCE_CANCEL_BOTH | 3 | Reduce/Cancel both incoming and resting order |
Order Handling
Identifies the source of an order, in accordance with the FIA guidelines for a rate Identifier. The field is for participant use only.
| Config Value | Tag 1031 | Description |
|---|---|---|
DESK | W | Desk |
ELECTRONIC | Y | Electronic |
VENDOR_PROVIDED_PLATFORM | C | Vendor-provided Platform billed by Executing Broker |
SPONSORED_ACCESS | G | Sponsored Access via Exchange API or FIX provided by Executing Broker |
ALGO_ENGINE | H | Premium Algorithmic Trading Provider billed by Executing Broker |
OTHER | D | Other, including Other-provided Screen |
Position Effect
The parameter is used for T7 position management purposes and indicates whether the order is submitted to open or close a position.
| Position Effect | Tag 77 | Description |
|---|---|---|
OPEN | C | Open. |
CLOSE | O | Close. |
Price Validity Check Type
When entering or replacing an order or quote, the user may opt for a check ensuring that the entered price
does not differ significantly from the market.
The field PriceValidityCheckType (28710) provides the following options:
| Price Validity Check | Tag 28710 | Description |
|---|---|---|
NONE | 0 | None. |
OPTIONAL | 1 | Optional. |
MANDATORY | 2 | Mandatory. |
See more in ETI Manual - 4.12.1 Price Reasonability Check.
Users Login Procedure
Eurex has some rate limits for user login requests.
The users login behavior can be adjusted via User Login Settings.
Traders Mapping
A mapping can be configured to send a specific ETI User ID for a given Trader ID.
traderId- Trader ID passed within order requestuserId- ETI User ID (should exist within configuredusers)
traders = [
{traderId = "nick", userId = 200009},
{traderId = "eugene", userId = 200010}
]
Special MiFID Handling
The special handling for MiFID tags can be implemented via specifying firm info in firms settings.
When the firms section is defined in the configuration, the connector looks up firm info using the FirmCode(8714) tag.
The FirmCode(8714) value is expected to contain the specific firmCode.
If a matching firm is found, the connector makes the following changes:
PartyIDClientID(20003)tag is set to firm info'sclientId- If
AlgoID(376)tag exists andmifidMemberflag istrue- the following tags are updated:ExecutingTrader(25123)is populated withAlgoID(376)valueExecutingTrader-Qualifier(25124)is populated with value22(Algo)
firms = [
{
firmCode = "EPAM"
mifidMember = true
clientId = 12345
},
{
firmCode = "DELTIX"
mifidMember = false
clientId = 0
}
]
Symbology
| SMD Column Key | Required | Description |
|---|---|---|
| eurexSymbol | Yes | SecurityID (numeric) |
| eurexMarketSegmentId | Yes | MarketSegmentIID (numeric) |
| eurexProductComplex | Yes | ProductComplex (numeric) |
Configuration
Connector settings
| Parameter | Default Value | Description |
|---|---|---|
| attributeKey | eurex | Prefix for securities columns: [attributeKey]Symbol, [attributeKey]MarketSegmentIdm [attributeKey]ProductComplex. |
| ➡️ Connectivity Settings | ||
| host | Host. | |
| port | Port. | |
| standbyHost | Standby Host. | |
| standbyPort | Standby Port. | |
| ➡️ Logging Settings | ||
| log.logMaxFiles | 30 | Max number of log files to keep on disk. |
| log.logMaxFileSize | 100M | Max file size of single log file. |
| log.logBufferSize | 8M | Max buffer size. |
| ➡️ Order Cache Settings | ||
| cache.initialActiveCacheSize | 256 | Initial active order cache size. |
| cache.inactiveCacheSize | 8192 | Inactive order cache size. |
| ➡️ Session Settings | ||
| session.sessionId | Session ID | |
| session.sessionType | Session Type. Allowed values: LF, HF. | |
| session.password | Session password. | |
| session.encryptPassword | false | Whether password encryption required. |
| session.publicKeyFile | The path to public key PEM file. Required if password encryption enabled. | |
| session.etiVersion | 12.1 | T7 ETI API version. |
| session.engineVersion | 5.0 | The version of the FIX infrastructure component. |
| session.engineName | QuantServer | The name of the infrastructure component being used for session level communication. |
| session.engineVendor | EPAM Deltix | The name of the vendor providing the FIX infrastructure component. |
| session.appVersion | 1.12 | The version of the application system being used to initiate T7 ETI application messages. |
| session.appName | Ember | The name of the application system being used to generate T7 ETI application messages. This will normally be a trading system, OMS, or EMS. |
| session.appVendor | EPAM Deltix | Provides the vendor of the application system as the 5-letter EUREX/ETRA Member ID. |
| ➡️ ETI Users | ||
| users.userId | ETI User ID. Numeric value. Required. | |
| users.password | ETI User Password. Required. | |
| ➡️ ETI Users Logins Settings | ||
| userLogin.initialDelay | 0 | The initial delay (after session logon) before initiating users logins. |
| userLogin.delay | 0 | The interval between two subsequent user login requests. |
| userLogin.retryCount | 5 | The number of user logins attempts. |
| userLogin.retryInterval | 5s | The retry interval after user login failure. |
| ➡️ Order Settings | ||
| account | Account to book trades and keep positions on. Required. | |
| orderKind | STANDARD | Order Kind. Allowed values: LEAN, STANDARD. |
| orderScope | PERSISTENT | Order Scope. Allowed values: PERSISTENT, NON_PERSISTENT. |
| orderHandling | ELECTRONIC | Order Handling. See allowed values in Config Value column.. |
| positionEffect | OPEN | Position Effect. See allowed values in Config Value column.. |
| tradingCapacity | CUSTOMER | Trading Capacity. See allowed values in Config Value column.. |
| valueCheckType | NO_CHECK | Indicator for checking the maximum order/quote value by the exchange. Allowed values: CHECK, NO_CHECK. |
| priceValidityCheckType | NONE | Indicator how price validity check should be performed by the exchange(see the ETI Manual, chapter Price Reasonability Check). Allowed values: NONE, MANDATORY. |
| selfMatchPreventionId | Self Match Prevention ID. Numeric value. | |
| selfMatchPreventionInstruction | Self Match Prevention Instruction. Allowed values: REJECT_ON_BU_LEVEL, REJECT_ON_MARKET_LEVEL. | |
| crossMatchInstruction | DEFAULT | Cross Match Instruction. Allowed values: DEFAULT, CANCEL_RESTING, CANCEL_TAKING, REDUCE_CANCEL_BOTH. |
| ➡️ MiFID Settings | ||
| mifid.clientId | Client Identifier field (ESMA Field 3 (Section A)) is used to identify the client of an order for agent account of the member or participant of the trading venue. | |
| mifid.investmentDecisionMaker | Investment decision within firm (ESMA Field 4 (Section A)) is the code used to identify the person or the algorithm within the member or participant of the Trading Venue who is responsible for the investment decision. | |
| mifid.executingTrader | Executing Trader data field (ESMA Field 5 (Section A)) is used to identify the person or algorithm within the member or participant of the trading venue who is responsible for the execution of the transaction resulting from the order. | |
| mifid.orderOrigination | Field to indicate order received from a direct access or sponsored access customer. Allowed values: DIRECT_ACCESS_CUSTOMER, SPONSORED_ACCESS_CUSTOMER. | |
| mifid.investmentDecisionMakerQualifier | Qualifier for field investmentDecisionMaker. Members/participants will have the possibility to specify an Investment qualifier value to distinguish between natural persons and Algos. Allowed values: ALGO, HUMAN. | |
| mifid.liquidityProvision | LIQUIDITY | Indication as to whether an order is submitted to a Trading Venue as part of a market making strategy. Allowed values: LIQUIDITY, NO_LIQUIDITY. |
| mifid.executingTraderQualifier | ALGO | Qualifier for field executingTrader. It is required to distinguish between natural persons and Algos. Allowed values: ALGO, HUMAN. |
| ➡️ Trader Mapping Settings | ||
| traders.traderId | The trader name which is passed within trade request. | |
| traders.userId | ETI User ID. |
Supported order attributes
| Key | Description |
|---|---|
| 18 | ExecInst(18). Instructions for order handling. See allowed values in table above. |
| 1031 | CustOrderHandlingInst(1031). Order Handling. See allowed values in Config Value column.. |
| 1815 | TradingCapacity(1815). Trading Capacity. See allowed values in Tag 1815 column. |
| 77 | PositionEffect(77). See allowed values in Tag 77 column. |
| 28710 | PriceValidityCheckType(28710). See allowed values in Tag 28710 column. |
| 2964 | SelfMatchPreventionInstruction(2964). See allowed values in Tag 2964 column. |
| 31625 | CrossMatchInstruction(31625). See allowed values in Tag 31625 column. |
| 28744 | MatchInstCrossID(28744). Self Match Prevention ID. Numeric value. |
| 28703 | ApplSeqIndicator(28703). Indicates if the order is a Lean Order or a Standard Order. See allowed values in Tag 28703 column. |
| ➡️ MiFID Tags | |
| 20003 | PartyIDClientID(20003). Client Identifier field (ESMA Field 3 (Section A)) is used to identify the client of an order for agent account of the member or participant of the trading venue. |
| 20122 | PartyIdInvestmentDecisionMaker(20122). Investment decision within firm (ESMA Field 4 (Section A)) is the code used to identify the person or the algorithm within the member or participant of the Trading Venue who is responsible for the investment decision. |
| 25123 | ExecutingTrader(25123). Executing Trader data field (ESMA Field 5 (Section A)) is used to identify the person or algorithm within the member or participant of the trading venue who is responsible for the execution of the transaction resulting from the order. |
| 1724 | OrderOrigination(1724). Field to indicate order received from a direct access or sponsored access customer. Allowed value: 5 - Order received from a direct access customer. |
| 21222 | PartyIdInvestmentDecisionMakerQualifier(21222). Qualifier for field investmentDecisionMaker. Members/participants will have the possibility to specify an Investment qualifier value to distinguish between natural persons and Algos. Allowed values: 22 - Algo, 24 - Human. |
| 23002 | OrderAttributeLiquidityProvision(23002). Indication as to whether an order is submitted to a Trading Venue as part of a market making strategy. Allowed values: 1 - Liquidity provision, 0 - No liquidity provision. |
| 25124 | ExecutingTraderQualifier(25124). Qualifier for field executingTrader. It is required to distinguish between natural persons and Algos. Allowed values: 22 - Algo, 24 - Human. |
| 25007 | FreeText1(25007). First free-format text field for trader specific or customer-related comments. The value length should be exactly 12 symbols. Use space padding if needed. |
| 25008 | FreeText2(25008). Second free-format text field for trader specific or customer-related comments. The value length should be exactly 12 symbols. Use space padding if needed. |
| 25009 | FreeText3(25009). Third free-format text field for trader specific or customer-related comments. The value length should be exactly 12 symbols. Use space padding if needed. |
Config sample
connectors {
EUREX: ${template.connector.eti.eurex}{
settings {
host = "<HOST>"
port = <PORT>
session {
sessionId = <SESSION_ID> # numeric
sessionType = LF # LF or HF
password = "<SESSION_PASSWORD>"
encryptPassword = false
}
# MIFID settings
mifid {
clientId = <CLIENT_ID> # numeric
executingTrader = <EXECUTING_TRADER> # numeric
executingTraderQualifier = HUMAN # HUMAN/ALGO
}
# ETI users
users = [
{
userId = <USER_1_ID> # numeric
password = "<USER_1_PASSWORD>"
},
{
userId = <USER_2_ID>
password = "<USER_2_PASSWORD>"
}
]
# trader to user mapping
traders = [
{
traderId = "<TRADER_ID>"
userId = <USER_ID> # numeric
}
]
}
}
}
UAT
Tools
Message Log To Json Converter
Converts Eurex binary logs (*.messages) to JSON format.
Usage: eurex-log-to-json --log-dir <message-logs-dir> [--output-dir <output-dir|$EMBER_WORK>]
- Docker
- Windows
docker compose exec ember /opt/deltix/ember/lib/custom/tools/eurex-log-to-json --log-dir /var/lib/emberwork/connectors/EUREX --output-dir /var/lib/emberwork
set EMBER_INSTALL=C:/ember
set EMBER_WORK=C:/ember-work
%EMBER_INSTALL%/lib/custom/tools/eurex-log-to-json.bat --log-dir %EMBER_WORK%/connectors/EUREX --output-dir %EMBER_WORK%
Security Definition Extractor
Extracts Security Metadata from Eurex reference data files.
Usage: eurex-secdef-extractor --input-dir <input-dir> [--output-dir <output-dir|$EMBER_WORK>] [--attribute-key <attribute-key|eurex>] [--symbol-pattern <symbol-pattern>] [--type-pattern <security-type-pattern|(FUT)|(MLEG)>] [--file-pattern <reference-data-filename-pattern|.*\.XML>]
- Docker
- Windows
docker compose exec ember /opt/deltix/ember/lib/custom/tools/eurex-secdef-extractor --input-dir /var/lib/emberwork/eurex
set EMBER_INSTALL=C:/ember
set EMBER_WORK=C:/ember-work
%EMBER_INSTALL%/lib/custom/tools/eurex-secdef-extractor.bat --input-dir %EMBER_WORK%/eurex --symbol-pattern .*FGBL.*