Preface
B2BITS' FIX ICE Trade Capture Solution is a server application pre-configured to work with ICE Trade Capture FIX interface. ICE Trade Capture Solution design is based on B2BITS' generic server FIXEdge extended with the ICE handler. It inherits and leverages all FIXEdge features including easy configuration, administration and monitoring.
Workflow Overview
1. Supported FIX Messages
ICE Trade Capture data is captured by FIXEdge via FIX 4.4 session. The ICE Trade Capture Solution supports the following FIX messages:
- From ICE Trade Capture Solution to ICE:
- Security Definition Request (MsgType = ''c");
- Trade Capture Report Request (MsgType = ''AD").
- From ICE to ICE Trade Capture Solution:
- Security Definition (MsgType = ''d")
new and old message formats are supported (new format is enabled by default); - Defined Strategy (MsgType = ''UDS");
- Trade Capture Report Request Ack (MsgType = ''AQ");
- Trade Capture Report (MsgType = ''AE");
- News (MsgType = "B").
- Security Definition (MsgType = ''d")
2. ICE Trade Capture Solution Workflow
See also step-by-step description below:
Main flow:
- ICE Trade Capture Solution starts and establishes FIX Session to ICE Trade Capture using details from FIXEdge.properties file.
- Once session is established ICE Trade Capture Solution is doing the following in a loop for each security definition subscription stated in ICEProperties.properties:
- generates Security Definition Request (MsgType = 'c'), filling the values of tags 48 (SecurityID), 461 (CFI Code), and 321 (SecurityRequestType)
- waits until previous request is completed or predefined timeout (60 seconds by default) is expired
8=FIX.4.4|9=100|35=c|49=SenderCompId|56=ICE|34=77|50=1|52=20140915-19:32:54.954|320=1410809574952_76|321=3|48=1|461=FXXXXX|10=043|
Note:Security Definitions can be requested once a day or on each logon depending on the value of the property ICESession.SecurityDefinitionSubscriptions.RequestMode specified in ICEProperties.properties configuration file. The date&time of last processed Security Definition is preserved in persistence file (ICE_persistStorage.out) per each subscription with the time accuracy received in the incoming message.
Note: Mentioned timeout (p.2.2) can be changed by specifying ICESession.SecurityDefinitionSubscriptions.RequestTimeout parameter (in milliseconds) in ICEProperties.properties configuration file. - ICE Trade Capture determines that request parameters are valid and replies with Security Definition (MsgType = 'd') messages.
Note:Format of Security Definitions (new or old) depends on the value of tag 9006 sent in custom Logon message. - ICE Trade Capture Solution is doing the following in a loop for each defined strategy subscription stated in ICEProperties.properties:
- generates Security Definition Request (MsgType = 'c'), filling the values of tags 48 (SecurityID), 461 (CFI Code), and 321 (SecurityRequestType)
- waits until previous request is completed (the News (MsqType = B) has been recived) or predefined timeout (60 seconds by default) is expired
8=FIX.4.4|9=100|35=c|49=SenderCompId|56=ICE|34=77|50=1|52=20140915-19:32:54.954|320=1410809574952_76|321=101|48=1|461=FXXXXX|10=043|
Note:Define Strategies can be requested once a day or on each logon depending on the value of the property ICESession.SecurityDefinitionSubscriptions.RequestMode specified in ICEProperties.properties configuration file. The date&time of last processed Define Strategy is preserved in persistence file (ICE_persistStorage.out) per each subscription with the time accuracy received in the incoming message.
Note: Mentioned timeout (p.4.2) can be changed by specifying ICESession.SecurityDefinitionSubscriptions.RequestTimeout parameter (in milliseconds) in ICEProperties.properties configuration file. - ICE Trade Capture determines that request parameters are valid and replies with Defined Strategy (MsgType = 'UDS') messages.
- ICE Trade Capture Solution generates Trade Capture Report Request (MsgType = 'AD') for all available trades, based on the data preserved in persistence file (ICE_persistStorage.out), and sends it to ICE Session. Trade Capture Report Requests (if any) are sent after the last Security Definition response is downloaded or predefined timeout is expired.
FIX message example:8=FIX.4.4|9=129|35=AD|49=SenderCompId|56=ICE|34=78|50=1|52=20140915-19:32:54.954|568=1410809574953_77|569=0|263=1|580=1|75=20140915|60=20140915-00:00:00|10=228|
- ICE Trade Capture determines that subscription parameters are valid and sends Trade Capture Report Request Ack (MsgType = 'AQ') with tags 749=0 (Success) and 750 = 0 (Accepted) confirming successful subscription:
FIX message example:8=FIX.4.4|9=104|35=AQ|49=ICE|34=165|52=20141001-23:32:24.029|56=SenderCompId|568=1410809574952_76|569=0|749=0|750=0|10=178
| - ICE Trade Capture sends Snapshot of trades - one or more Trade Capture Report (MsgType='AE') messages.
- ICE Trade Capture notices saying that all snapshot of trades is sent by Trade Capture Report Request Ack (MsgType = 'AQ') with tags 749=0 (Success) and 750 = 1 (Completed):
FIX message example:8=FIX.4.4|9=104|35=AQ|49=ICE|34=167|52=20141001-23:32:24.029|56=SenderCompId|568=1410809574952_76|569=0|749=0|750=1|10=178
| - ICE Trade Capture starts sending live updates (new trades or changes to existing ones - Trade Capture Report (MsgType='AE') messages, and new defined strategies - Defined Strategy (MsgType = ''UDS") messages).
PublishMktCreationRealtime(9010) tag value in Logon Request (MsgType = "A") must be equal "1" to receive UDS created real time during the trading session.
Exceptional cases:
3a. ICE Trade Capture determines that request contains invalid ICE Market Id or such which user is not allowed to access.
3a1. ICE Trade Capture sends Security Definition (MsgType = 'd') with tag 323 (SecurityResponseType) = '5' or '6'
3a2. Main flow continues from step 4.
3b. ICE Trade Capture determines that request contains invalid CFI Code.
3b1. ICE Trade Capture sends Security Definition (MsgType = 'd') for the specified ICE Market ID for CFI code = FXXXXX (Futures)
3b2. Main flow continues from step 4.
6a. ICE Trade Capture does not have data available to be sent as Snapshot.
6a1. Main flow continues from step 7.
3. Processing Incoming ICE Trade Capture Data
- All incoming traffic (Security Definitions, Defined Strategy, and Trade Capture Report Messages) is stored into database by means of stored procedures.
See ICE Trade Capture to Database for details. - Alternatively, data can be published to any other middleware supported by FIXEdge.
ICE Trade Capture Solution Configuration
Please see the table below that represents the components included into the FIXEdge package intended for ICE Trade Capture Solution:
Add-on Component | Configuration File | Description |
---|---|---|
ICE Trade Capture Handler (ICEHandler) | ICEProperties.properties | Configuration file used to specify the following ICE Handler parameters: ICE session name, persistence file location, parameters of security definition request(s). |
BL_Config.xml | Is used to specify the following:
| |
Extension to standard FIX 4.4 dictionary | additional_ice.xml | Defines custom tags for ICE Trade Capture API messages |
ICE FIX Session details | FIXEdge.properties | Is used to specify FIX Session details
|
ICETC_Logon.msg | Is used for two main purposes:
Other custom tags can be also specified and used. Please check ICE specification for details. | |
Database SQL scripts | ICE_database.sql MSSQL_ICETrdCapt.sql MSSQL_ICESecDef.sql MSSQL_ICEStrategies.sql | Used to create database objects
|