Skip to main content

CME MSGW, CGW and BrokerTec Common Settings

Notes

Order Entry Service Gateway

iLink 3 allows customers to optimize business message construction by pre-registering administrative information.
See Order Entry Business Layer

See more about Party Details configuration and handling here.

Client Order ID

The maximum length of the CME Client Order ID (ClOrdID) is 20 characters. The connector sends the request's sequenceId as the Client Order ID, which does not change over the order lifecycle — the same value is sent in all requests (submit/replace/cancel). The OrderRequestID tag is always set to the current request's sequenceId.

Cancel On Disconnect (COD)

Cancel On Disconnect (COD) monitors the iLink system for involuntary lost connections between iLink users and the CME Globex platform.
If a lost connection is detected, COD cancels all resting futures and options orders for the disconnected registered iLink user.
This does not include GTC (Good Till Cancel) and GTD (Good Till Date) orders.

Order Status Response

The connector requests status for active orders upon (re)connect.
But OrderStatusResponse does not report Average Price.
Therefore Limit Price is reported as Average Price for completely or partially filled orders.

Sender Location ID

ISO identifier of the physical location of the individual or team head trader identified by the tag 5392 (SenderID) in the message.
The first two bytes as per ISO 3166-1, identify the country (e.g., JP = Japan, CN = China).
The next three bytes indicate a comma-delimited state or province code (e.g., CA = California, QC = Quebec).
For valid values, refer to ftp.cmegroup.com/fix/coo.

Market Regulation requires only the submission of the two first characters of tag 9537-Location for all countries with the exception of Canada. For Canada, the 5 bytes including the province code must be submitted.

Customer Order Capacity

Capacity of customer placing the order.
Used by futures exchanges to indicate the CTICode (customer type indicator) as required by the US CFTC (Commodity Futures Trading Commission).
Not applicable for fixed income markets.

  • CTI_1 - Applies to orders entered or trades executed by an individual member for their own account, for an account they controls, or for an account in which they have an ownership or financial interest. However, transactions initiated and executed by a member for the proprietary account of a member firm must be designated as CTI 2 transactions.
  • CTI_2 - Applies to orders entered or trades executed for the proprietary accounts of a member firm, including Rule 106. H., I., N., R. and S. firms.
  • CTI_3 - Applies to orders entered by a member or a nonmember terminal operator for the account of another individual member or an account controlled by such individual member
  • CTI_4 - Applies to all orders and transactions not included in CTI categories 1, 2, or 3. These typically are orders entered by or on behalf of nonmember entities.

Clearing Account Type

Designates the account type to use for the order when submitted to clearing.
Allowed values: CUSTOMER, FIRM.
Not applicable for fixed income markets.

Order Handling

Defines source of original order.
Required for CME Group Futures and Options only.

ValueDescription
DESKDesk
ELECTRONICElectronic (Default)
VENDOR_PROVIDED_PLATFORMVendor-provided Platform billed by Executing Broker
SPONSORED_ACCESSSponsored Access via Exchange API or FIX provided by Executing Broker
ALGO_ENGINEPremium Algorithmic Trading Provider billed by Executing Broker
OTHEROther, including Other-provided Screen

Messaging Controls

To protect all market participants from the negative effects of excessive messaging,
CME Group has implemented the messaging controls for iLink Order Entry.

The connector prevents sending excessive messaging via defining appropriate rate limits:

cancelRateLimit = {
maxRequestCount = 1000
rateLimitInterval = 3s
}
appRateLimit = {
maxRequestCount = 500
rateLimitInterval = 3s
}

Traders Mapping

A mapping can be configured to send a specific SenderID/LocationID for a given TraderID.

If senderId is missing or empty then traderId is used instead.
If locationId is missing or empty then default value (senderLocationId) is used.

useTrader = true

senderId = "ANDY"
senderLocationId = "ML,US"

traders = [
{traderId = "nick", senderId = "NICK", locationId = "BY"},
{traderId = "eugene", senderId = "GENE"}, # locationId is default ("ML,US")
{traderId = "BRIAN"}, # senderId is "BRIAN" and locationId is default ("ML,US")
]

Market Segment Gateways

MSGW configuration is available on CME FTP site: /MSGW/Production/Configuration/MSGW_Config.xml

Symbology

CME iLink3 requires a numeric Security ID.
By default, numeric IDs are expected in the cmeSymbol column.
Some instruments also require a price multiplier in the cmePriceMultiplier column.

Instruments for the production environment are available on the CME FTP site: /SBEFix/Production/secdef.dat.gz

Schedule

ParameterValue
Time ZoneAmerica/Chicago
Start DaySunday
Start Time16:00:00
End DayFriday
End Time16:00:00
Daily Session?No

Configuration

Connector settings

ParameterDefault ValueDescription
attributeKeycmePrefix for broker symbol column: [attributeKey]Symbol - cmeSymbol.
➡️ Logging Settings
log.logMaxFiles30Max number of log files to keep on disk.
log.logMaxFileSize100MMax file size of single log file.
log.logBufferSize8MMax buffer size.
➡️ Session Settings
hostPrimary Host
portPrimary Port
backupHostBackup Host
backupPortBackup Port
sessionSession ID.
firmFirm ID.
accessKeyAccessKeyID assigned to this session on this port.
secretKeySecretKeyID assigned to this session on this port.
senderIdDefault Operator ID.
senderLocationIdUS,MADefault SenderLocationID - ISO identifier of the physical location of trader.
eventExchangeThe exchange value to be returned in order events.
useTraderfalseUse request's Trader ID (if provided) as SenderID.
resetSeqNumsfalseFlag to reset CME session.
➡️ Rate Limits Settings
cancelRateLimit.maxRequestCount1000Reject rate limit threshold for cancel requests.
cancelRateLimit.rateLimitInterval3sInterval for cancel request rate limit.
appRateLimit.maxRequestCount1000Reject rate limit threshold for non-cancel application requests.
appRateLimit.rateLimitInterval3sInterval for non-cancel application request rate limit.
➡️ Order Cache Settings
cache.initialActiveCacheSize256Initial active order cache size.
cache.inactiveCacheSize8192Inactive order cache size.
➡️ Order Entry Service Gateway
orderEntryService.hostOrder Entry Service Gateway (OESGW) primary host.
orderEntryService.backupHostOrder Entry Service Gateway (OESGW) backup host.
orderEntryService.declaredPartyDetails[]The array of Party Details definitions which should be registered upon session reset.
orderEntryService.registeredPartyDetails[]The array of pre-registered Party Details definitions which should be used as is.
➡️ Declared Party Details Settings_Properties of item in orderEntryService.declaredPartyDetails[]
keyUnique identifier for given Party Details definition.
requestTypePRE_REGISTEREDThe type of Party Details definition. Allowed values: PRE_REGISTERED, ON_DEMAND.
accountCustomer account.
operatorThis value represents the individual or team submitting the message and is subject to registration requirements and character limits as required by Rule 576.
executingFirmExecuting firm.
orderHandlingDefines source of original order. Allowed values: DESK, ELECTRONIC, VENDOR_PROVIDED_PLATFORM, SPONSORED_ACCESS, ALGO_ENGINE, OTHER
clearingAccountTypeDesignates the account type to use for the order when submitted to clearing. Allowed values: FIRM, CUSTOMER.
customerOrderCapacityCapacity of customer placing the order. Allowed values: CTI_1, CTI_2, CTI_3, CTI_4
selfMatchPreventionInstructionUsed to act upon the outcome when a self-match is detected and an order is prevented from trading against another order with the same SelfMatchPreventionID. Allowed values: CANCEL_NEWEST, CANCEL_OLDEST
selfMatchPreventionIdIdentifies an order or trade that should not be matched to an opposite order or trade if both buy and sell orders for the same asset contain the same SelfMatchPreventionID and were submitted by the same firm.
orderEntryService.registeredPartyDetails[]The array of pre-registered Party Details definitions which should be used as is.
➡️ Pre-registered Party Details SettingsProperties of item in orderEntryService.registeredPartyDetails[]
keyUnique identifier for given Party Details definition.
requestIdParty Details Request ID.

Supported order attributes

KeyDescription
50, 5392SenderD(5392). Operator ID. This value represents the individual or team submitting the message and is subject to registration requirements and character limits as required by Rule 576.
142, 9537LocationID(9537). ISO identifier of the physical location of the individual or team head trader identified by the tag 5392 (SenderID) in the message.
9373LiquidityFlag(9373). Indicates if an order was submitted for market making obligation as required for MIFID. Allowed values: 0 (False), 1 (True).
7210The party details definition key defined in orderEntryService.partyDetailsMap.

Tools

Security Definition Extractor

Extracts Security Metadata from secdef.dat file into securities.csv. \

Usage: cme-secdef-extractor --secdef <path-to-secdef-dat> [--output-dir <output-directory>] [--pattern <symbol-regex>]

docker compose exec ember /opt/deltix/ember/lib/custom/tools/cme-secdef-extractor --secdef /var/lib/emberwork/secdef.dat