Chicago Mercantile Exchange MDP3 Adapter Implementation Notes

Chicago Mercantile Exchange MDP3 Adapter Implementation Notes

book

Article ID: KB0079316

calendar_today

Updated On:

Products Versions
TIBCO Streaming -

Description

What considerations are there when using the StreamBase CME MDP3 Adapter?

Issue/Introduction

Adapter usage guidelines

Resolution

This is a collection of notes and tips collected during the initial qualification of the MDP3 adapter.

MDP3 adapter only emits some record types or does not recover gaps.

The market-data connection is over specific UDP ports from specific IP addresses. These are listed in the CME-supplied config.xml file. Some are used for live Incremental updates, some for Snapshot refresh updates, some for Historical replay, some as a primary and some as a backup data source. If any are NOT opened through the firewall, then the MDP3 adapter will only emit partial data.

Changes in the CME market data fields not recognized by the MDP3 adapter

The CME client is configured using the configuration files config.xml (connectivity) and templates_FixBinary.xml (message types). These files are updated by CME at-will in the NRCert environment, and later in the CERT and regular market environments. Changes to these change the MDP3 output field names and types which may be incompatible with the downstream application, resulting in typecheck errors. It is a regular maintenance activity when using the MDP3 adapter to respond to updates to these files by testing the application in the NRCert environment and making changes to the StreamBase EventFlow applications as necessary to accommodate these changes before these changes are introduced in the other environments.

Order level change may be communicated by OrderUpdateAction instead of MDUpdateAction

We confirmed that sometimes order status was not a modify, but by a New followed by a Cancel since the 
  NoOrderIDEntries.OrderUpdateAction - order created/canceled
is different semantically from the:
  MDEntries.MDUpdateAction - level changed.

Recovery

For the Market-By-Order feed always use the snapshot for recovery. For the Market-By-Price feed also use snapshots, but "natural recovery" is also available, which is to collect all price updates for all levels over time until all levels have been seen.

Out-of-Sync Status

The Out-of-Sync status relates to the adapter missing sequence numbers and is announcing that it is a little behind the market. This is expected to a brief condition while it automatically caches up using TCP replay. When done the status port will report Sync again. The incremental updates will eventually (within milliseconds) emit in-order so there will likely be no specific special handling needed in teh StreamBase application for an Out-of-Sync condition.

Let Snapshot updates delete prior orders for that instrument from your book

Always delete prior orders from your book when consuming a snapshot, since the snapshot may be a CME-initiated market recovery event. if you instead insert-and-update (upsert) order records this could leave canceled orders in your book (since you may have missed the specific order cancellation events).

Force receiving a Full Snapshot

To get a FullSnapshot record at-will, use a second instance of the MDP3 adapter which is normally unsubscribed. When you need the FullSnapshot, subscribe, get the snapshot and the last message-sequence-number processed, and use that to update your book. Keep records only for those message sequence numbers higher than the received snapshot. When the snapshot is complete, you may unsubscribe the second MDP3 adapter.