Skip to main content

ICE Trade Connector

Features

fix-iceConnector Key
Instruments
FUTURE
Request Types
SUBMITCANCELREPLACE
Order Types
MARKETLIMITSTOPSTOP_LIMIT
Time In Force
DAYGTCIOCFOKGTD
Order ID Mapper
SEQUENCE
Order Status Request
Cancel On Disconnect
Commission
Post Only
Fast Cancel
Fast Replace

Notes

ICE API

ICE Trade Connector is implemented and tested with ICE FIX API v.4.11.

Connection

Internet connections to ICE services must be routed through an SSL proxy such as stunnel.

[ICE]
client = yes
accept = 10443
connect = 63.247.113.154:443
options = NO_SSLv2
options = NO_SSLv3
verify = 0

Trader Logon

Trader must be successfully logged into the FIX OS session before orders can be sent to the ICE Trading System. A Trader cannot be active in more than one FIX OS session at a time. The Trader Logon must be sent at least 2 seconds after receiving the FIX OS Logon Response.

Limitation on Order Identifier

User is limited to 999,999,999,999 orders per system. ICE requires Client Order identifiers to contain only digits and be no longer than 12 characters.

Cancel On Disconnect

If a FIX session disconnects from the FIX Server via a TCP/IP disconnection or a FIX session logout request, then all open, non-GTC/GTD orders for that FIX session will be canceled.

Order Status Request

ICE does not support Order Status Request. Instead, Execution Reports for all cancelled-on-disconnect and active orders are sent after the next Trader Logon.

Microsecond Timestamp

High precision timestamp usage should be configured with timeStampPreference = Increased connector configuration parameter.

MiFID Regulated Markets

MiFID regulated markets require using microsecond or better timestamp precision and MiFID tags with order submission or replacement.

Default MiFID tags can be configured with mifidSettings configuration object. These tags are sent during Trader Logon.

Defaults can be overridden in the following ways:

  • On per contract basis by MiFIDID with iceMifidId SMD column key.
  • On per order basis by 9700-9707 attributes.

Note: 9007 (MiFIDID) specified at any step overrides other MiFID parameters. Attribute-level overrides take highest precedence.

Negative Price for Brent Futures

Brent Futures instruments can have negative price.
To avoid Ember negative price rejection add the following section to the ember.conf:

engine {
validation {
settings {
pricesMustBePositive = false
}
}
}

Symbology

ICE uses numeric codes to identify contracts. Codes for a specific market type can be retrieved via a Security Definition request.

Schedule

Open 24 hours (excluding maintenance window)

Maintenance Windows

Weekday 18:05–18:55 ET Weekend Friday 18:05 – Sunday 17:00 ET

Configuration

Connector settings

ParameterDefault ValueDescription
usernameUsername
passwordPassword
traderUsernameTrader username
traderPasswordTrader password
onBehalfOfCompIdDefault assigned value used to identify firm originating message
onBehalfOfSubIdDefault assigned value used to identify specific message originator
onBehalfOfLocationIdDefault assigned value used to identify specific message originator's location
useTraderfalseUse Trader ID (if provided in order requests) as a part for onBehalfOfSubId (Tag 116). Tag population mode is defined by traderIdFillMode setting.
traderIdFillModeRIGHTOnBehalfOfSubID(116) fill mode. Valid values are: RIGHT, BOTH. RIGHT = use Trader ID as a RIGHT part for onBehalfOfSubId (Tag 116). BOTH = use Trader ID as a LEFT AND RIGHT parts for onBehalfOfSubId (Tag 116).
selfMatchPreventionIdDefault identifier used to prevent self trading
selfMatchPreventionInstructionDefault cancel instruction when self match prevention is triggered. Valid values are: CancelRestingOrder = 'R', CancelTakingOrder = 'T', CancelBothOrders = 'B'.
clientIdClient ID
clearingFirmDefault <ClearingFirmID> value of the Clearing Firm
clearingAccountDefault <ClearingAccount> setup with the Clearing Firm
accountCodeDefault AccountCode. Valid values are: House = 'H', Customer = 'C'.
ctiCodeDefault CTICode. Valid values are: BrokerTradingForOwnAccount = '1', BrokerTradingForHouseAccount = '2', BrokerTradingForAccountOfAnotherBroker = '3', BrokerTradingForAnyOtherCustomersAccountThatDoesnotHaveDirectTradingAccess = '4'.
customerAccountRefIdDefault CustomerAccountRefId
custOrderHandlingInstDefault code that apply special information that the Broker / Dealer needs to report, as specified by the customer. Valid values are: VendorProvidedPlatform = "C", Other = "D", SponsoredAccess = "G", PremiumAlgorithmicTradingProvider = "H", Desk = "W", Electronic = "Y".
timeStampPreferenceIndicates Time Stamp Precision Preference for SendingTime (Tag 52), TransactTime (Tag 60), and RFQTransactTime (Tag 9213) on responses. Valid values are: Standard = '0', Increased = '1'.
appVendorDefault ApplicationVendor (Tag 9452) value. Should not exceed 30 characters limit. ApplicationVendor (Tag 9452) is not sent for an empty or null value.
➡️ MiFID Settings
mifidSettings.directElectronicAccessDefault value for DirectElectronicAccess (Tag 9700). Valid values are: False = '0', True = '1'.
mifidSettings.tradingCapacityDefault value for TradingCapacity (Tag 9701). Valid values are: DEAL = '0', MTCH = '1', AOTC = '2'.
mifidSettings.liquidityProvisionDefault value for LiquidityProvision (Tag 9702). Valid values are: False = '0', True = '1'.
mifidSettings.commodityDerivIndicatorDefault value for CommodityDerivIndicator (Tag 9703). Valid values are: False = '0', True = '1'.
mifidSettings.investmentDecisionDefault value for InvestmentDecision (Tag 9704). Numeric value. Must be > 0. Maximum value of 9,223,372,036,854,775,807.
mifidSettings.executionDecisionDefault value for ExecutionDecision (Tag 9705). Numeric value. Must be > 0. Maximum value of 9,223,372,036,854,775,807.
mifidSettings.clientIdCodeDefault value for ClientIDCode (Tag 9706). Numeric value. Must be > 0. Maximum value of 9,223,372,036,854,775,807.
mifidSettings.mifidIdDefault value for MiFIDID (Tag 9707). Numeric value. Must be > 0. Maximum value of 9,223,372,036,854,775,807.
➡️ Security Loader Settings
requestSecurityDefinitionsfalseRequest Security Definitions from ICE to extract market IDs for ICE products
securityDefinitionsList of options for Security Definitions request. securityTypes is the list of Futures, Options or MultiLeg values. marketTypes is the list of Market Type names (e.g. 'Digital Asset Futures') or the Market Type IDs (e.g. '178')

Supported order attributes

KeyDescription
115OnBehalfOfCompID(115). Assigned value used to identify firm originating message.
116OnBehalfOfSubID(116). Assigned value used to identify specific message originator.
144OnBehalfOfLocationID(144). Assigned value used to identify specific message originator's location (i.e., group, desk, trader, location, etc.).
18ExecInst(18). Instructions for order handling on exchange trading floor. Supported values: G = All or None (AON).
1031CustOrderHandlingInst(1031). Codes that apply special information that the Broker / Dealer needs to report, as specified by the customer. Supported values: Supported value(s): C = Vendor-provided Platform billed by Executing Broker, D = Other, including Other-provided Screen, G = Sponsored Access via Exchange API or FIX provided by Executing Broker, H = Premium Algorithmic Trading Provider billed by Executing Broker, W = Desk, Y = Electronic (Preferred default value as per FIA usage guidelines. Not set as a default if not sent.).
423PriceType(423). Code to represent the price type. Supported values: 10 = Fixed cabinet trade price (requires Price (Tag 44) = '0'). Supported values for CDS and IRS Futures: 100 = Fixed Rate, 101 = NPV, 102 = Rate Differential, 103 = NPV Differential.
77PositionEffect(77). Indicates whether the resulting position after a trade should be an opening position or closing position. Supported values: O = Open, C = Close.
440ClearingAccount(440). <ClearingAccount> setup with the Clearing Firm.
439ClearingFirm(439). <ClearingFirmID> value of the Clearing Firm.
1028ManualOrderIndicator(1028). Allowed values: Y, N
8723CustomerAccountRefId(9207).
9821SelfMatchPreventionID(9821). Identifier used to prevent self trading.
9822SelfMatchPreventionInstruction(9822). Indicates cancel instruction when self match prevention is triggered. Supported values: 'R' = Cancel Resting Order, 'T' = Cancel Taking Order, 'B' = Cancel Both Orders.
9195AccountCode(9195).
9208CTICode(9208). Required if trading ICE Futures US with an ITM. Supported values: 1 = Broker/trader trading for own account, 2 = Broker/trader trading for house or prop account, 3 = Broker/trader trading for the account of another broker/trader, 4 = Broker/trader trading for any other customer's account that does not have direct trading access.
9207CustomerAccountRefId(9207). Required when trading with a LMA.
9700DirectElectronicAccess(9700). Only required for MiFID regulated markets when MiFIDID (Tag 9707) is not provided. Supported values: 0 = False, 1 = True.
9701TradingCapacity(9701). Only required for MiFID regulated markets when MiFIDID (Tag 9707) is not provided. Supported values: 0 = DEAL (own account), 1 = MTCH (matched principal), 2 = AOTC (any other capacity).
9702LiquidityProvision(9702). Only required for MiFID regulated markets when MiFIDID (Tag 9707) is not provided. Supported values: 0 = False, 1 = True.
9703CommodityDerivIndicator(9703). Only required for MiFID regulated markets when MiFIDID (Tag 9707) is not provided. Supported values: 0 = False, 1 = True.
9704InvestmentDecision(9704). Only required for MiFID regulated markets when MiFIDID (Tag 9707) is not provided and TradingCapacity (Tag 9701) = '0'. Industry reserved Short Codes '1' (AGGR), '2' (PNAL) and '3' (NORE) are NOT applicable so should not be sent. Numeric value. Must be > 0. Maximum value of 9,223,372,036,854,775,807.
9705ExecutionDecision(9705). Only required for MiFID regulated markets when MiFIDID (Tag 9707) is not provided. Industry reserved Short Code '3' (NORE) is supported. Industry reserved Short Codes '1' (AGGR) and '2' (PNAL) are NOT applicable so should not be sent. Numeric value. Must be > 0. Maximum value of 9,223,372,036,854,775,807.
9706ClientIDCode(9706). Only required for MiFID regulated markets when MiFIDID (Tag 9707) is not provided and TradingCapacity (Tag 9701) = '1' or '2'. Industry reserved Short Codes '1' (AGGR) and '2' (PNAL) are supported. Industry reserved Short Code 3 (NORE) is NOT applicable and should not be sent. Numeric value. Must be > 0. Maximum value of 9,223,372,036,854,775,807.
9707MiFIDID(9707). Only required for MiFID regulated markets when Tags 9700-9706 are not provided. Please note that this field will be the only MiFID-related field processed if sent. Numeric value. Must be > 0. Maximum value of 9,223,372,036,854,775,807.

Config sample

connectors {
ICE: ${template.connector.fix.ice} {
settings {
host = "<HOST>"
port = <PORT>

senderCompId = "<SENDER_COMP_ID>"
senderSubId = "<SENDER_SUB_ID>"
targetCompId = ICE

username = "<USERNAME>"
password = "<PASSWORD>"

onBehalfOfCompId = "<FIRM>|<FIRM>"
onBehalfOfSubId = "<NAME>|<NAME>"
onBehalfOfLocationId = "DAU|<DESK_NAME>"

clientId = "<CLIENT_ID>"

mifidSettings = {
mifidId = "<NUMERIC_ID>"
}

# SecurityDefinition request settings (optional)
requestSecurityDefinitions = false
securityDefinitions = [
{
marketTypes = ["Digital Asset Daily Futures", "Digital Asset Futures"]
securityTypes = [Futures, MultiLeg]
}
]
}
}
}

Tools

Audit Log Generator

Audit Log Generator converts log files with RAW FIX messages into CSV files.
Usage: ice-audit-log --connector=ICE [--work-dir <ember-work-dir|$EMBER_WORK>] [--output-dir <output-dir|$EMBER_WORK/audit>] [--start-date <start-date|TODAY>] [--end-date <end-date|TODAY>] --files=<fileName1>[,<fileName2>...]

docker compose exec ember /opt/deltix/ember/lib/custom/tools/ice-audit-log --connector=ICE --work-dir /var/lib/emberwork/eurex

Security Definition Loader

A Security Definition request can be sent at ICE TC startup by setting requestSecurityDefinitions = true, with filter options specified in the securityDefinitions list. Raw Security Definition responses are stored in the workDir directory in files named SecurityDefinition-<marketType>. These files can be converted to CSV using the Security Definition Extractor tool.

Security Definition Extractor converts files with RAW Security Definition Responses into CSV files.
Each SecurityDefinition-<marketType> file in the directory is converted to a SecurityDefinition-<marketType>.csv file.
These CSV files can be imported into TimeBase Securities with TimeBase Administrator.

Usage: ice-secdef-extractor --input-dir <input-dir> [--output-dir <output-dir>]

docker compose exec ember /opt/deltix/ember/lib/custom/tools/ice-secdef-extractor --input-dir /var/lib/emberwork/ice

legs column in the CSV file contains information about legs which are used in the MultiLeg security.
Legs are divided by '|' separator: "Leg1 | Leg2 | ...".
Each leg has the following fields divided by ':' separator: "Symbol : SecurityType : Side : Quantity".

CSV file output sample:

keyword,symbol,InstrumentMessage.instrumentType,GenericInstrument.name,GenericInstrument.iceSymbol,GenericInstrument.currencyCode,GenericInstrument.tick,GenericInstrument.multiplier,Future.expirationDate,incrementPrice,incrementQty,lotSize,denominator,tradingStatus,numOfDecimalPrice,numOfDecimalQty,productType,canonicSymbol,legs
Future,BTM FMM0020!,FUTURE,Bakkt BTC (USD) Monthly Future - ICUS - Jun20 (Digital Asset Futures),6075094,USD,2.50,1.0,06/18/2020,2.50,1.0,1.0,1,17,2,0,Futures,BTMM20,
Future,BTM FMN0020!,FUTURE,Bakkt BTC (USD) Monthly Future - ICUS - Jul20 (Digital Asset Futures),6076031,USD,2.50,1.0,07/16/2020,2.50,1.0,1.0,1,17,2,0,Futures,BTMN20,
Synthetic,BTM FMN0020-BTM FMM0020,EXCHANGE_TRADED_SYNTHETIC,Bakkt BTC (USD) Monthly Future Spr - ICUS - Jun20/Jul20 (Digital Asset Futures),6094416,,,1.0,06/18/2020,2.50,1.0,,1,17,2.0,0,,,6076031:FUT:1:1|6075094:FUT:2:1