API Data Mappings
Basic Market Data
Market data messages are normalized to book and trade objects. Nanoconda softwarre builds the book and provides snapshot of top 10 levels in onbook() callback. Trade Statistics (ex. VWAP, OHLC)is included inside trade object.
Basic Security Updates
Any other instrument updates, such as statuses are normalized to security object and a onsecurity() callback will be raised for any real-time security update.
Basic Order Entry Usage
Please refer to Order Entry page for basic usage of the API.
CME
Trading Status
Normalized to secirity::status field
| Exchange Name | Exchange Code | Nanoconda Status |
|---|---|---|
| HALT | 2 | securityStatus::HALT |
| NOT_AVAILATBLE_FOR_TRADING | 18 | securityStatus::HALT |
| CLOSE | 4 | securityStatus::CLOSE |
| READY_TO_TRADE | 17 | securityStatus::OPEN |
| NEW_PRICE_INDICATION | 15 | securityStatus::OPEN |
| PRE_OPEN | 21 | securityStatus::PRE_OPEN |
| PRE_CROSS | 24 | securityStatus::PRE_OPEN |
| CROSS | 25 | securityStatus::PRE_OPEN |
| POST_CLOSE | 26 | securityStatus::POST_CLOSE |
Other statuses are ignored.
Market Data (MDP3)
Messages
| Exchange Message | Nanoconda Callback |
|---|---|
| MDInstrumentDefinitionFuture54 | onsecurity() |
| MDIncrementalRefreshBook46 | onbook(), onbookorder() |
| MDIncrementalRefreshOrderBook47 | onbookorder() |
| MDIncrementalRefreshTradeSummary48 | ontrade(), ontradebust(), onbookorder() |
| MDIncrementalRefreshSessionStatistics51 | ontradestatistics() |
Fields
| Exchange Field | Nanoconda Field | Nanoconda Callback |
|---|---|---|
| HighLimitPrice | security::highLimitBand | onsecurity |
| LowLimitPrice | security::lowLimitBand | onsecurity |
| SettlementPrice | security::settlementPrice | onsecurity |
| ClearedVolume | security::clearedVolume | onsecurity |
| OpenInterest | security::openInterest | onsecurity |
| minPriceIncrement | security::tickSize | onsecurity |
| unitOfMeasureQty | security::multiplier | onsecurity |
| Asset | security::underlyingId | onsecurity |
| OpenPrice | trade::open | ontrade |
| LastPrice | trade::lastPrice | ontrade |
| TradingSessionHighPrice | trade::high | ontrade |
| TradingSessionLowPrice | trade::low | ontrade |
| SessionHighBid | trade::bestbid.price | ontrade |
| SessionLowOffer | trade::bestask.price | ontrade |
| ElectronicVolume | trade::totalVol | ontrade |
| VWAP | trade::vwap | ontrade |
| FixingPrice | trade::vwap | ontrade |
| TransactTime | transactiontime | ontrade / onbook / onbookorder |
| SendingTime | exchangetime | ontrade / onbook / onbookorder |
| MatchEventIndicator | lastEvent | ontrade / onbook / onbookorder |
Detailed Message Mappings
CME Trade Summary
CME Doc: MDP 3.0 - Market Data Incremental Refresh - Trade Summary
| Tag | FIX Name | Description | Nanoconda Field |
|---|---|---|---|
| 60 | TransactTime | Start of event processing time in number of nanoseconds since Unix epoch | trade::transactiontime, bookorder::transactiontime |
| 5799 | MatchEventIndicator | Bitmap field of eight Boolean type indicators reflecting the end of updates for a given Globex event. | trade::lastEvent, bookorder::lastEvent |
| 268 | NoMDEntries | Number of Trade Summary entries | ontrade() for each Entry |
| 270 | MDEntryPx | Trade price | trade::lastPrice, bookorder::price |
| 271 | MDEntrySize | Market Data entry size. For EBS, the value always set to zero. | trade::lastSize |
| 48 | SecurityID | Security ID as defined by CME | security::exchangeSecurityId, mapped to trade::symbolId and bookorder::symbolId |
| 83 | RptSeq | Sequence number per instrument update. | trade::symbolseqno |
| 346 | NumberOfOrders | The total number of real orders per instrument that participated in a match step within a match event. For EBS, the value always set to zero. | trade::numOrders |
| 5797 | AggressorSide | Indicates which side is the aggressor or if there is no aggressor 1 — bid aggressor 2 — ask aggressor |
trade::aggressor, bookorder::aggressing set to 1 on aggrssing order |
| 37705 | NoOrderIDEntries | Number of OrderID entries. This repeating group is not used for EBS Market and the value is always set to zero. | onbookorder() for each Entry with OU_FILL updatetype |
| 32 | LastQty | The quantity transacted | bookorder::quantity |
| 37 | OrderID | Unique order identifier as assigned by the exchange | bookorder::orderId |
CME MBP and MBOFD
CME Doc: MDP 3.0 - Market Data Incremental Refresh - MBP and MBOFD
| Tag | FIX Name | Description | Nanoconda Field |
|---|---|---|---|
| 60 | TransactTime | Start of event processing time in number of nanoseconds since Unix epoch | book::transactiontime, bookorder::transactiontime |
| 5799 | MatchEventIndicator | Bitmap field of eight Boolean type indicators reflecting the end of updates for a given CME Globex Event | book::lastEvent, bookorder::lastEvent |
| 268 | NoMDEntries | Number of entries in Market Data message | onbookorder() for each entry (NoOrderIDEntries) and final onbook() for each message |
| →270 | MDEntryPx | Market Data entry price | book -> pricelevel::price |
| →271 | MDEntrySize | Market Data entry size | book-> pricelevel::qty |
| →48 | SecurityID | A unique instrument ID value across markets will not be reused until the next trade date following an instrument expiration or deletion. | security::exchangeSecurityId, mapped to book::symbolId and bookorder::symbolId |
| →83 | RptSeq | Market Data entry sequence number per instrument update. | book::symbolseqno |
| →346 | NumberOfOrders | In Book entry — aggregate number of orders at given price level | pricelevel::orders |
| →1023 | MDPriceLevel | Aggregate book level | book::buys[LVL] or book::sells[LVL] |
| 37705 | NoOrderIDEntries | Repeating group of MBO book updates included in an event. Repeating group used for MBP and MBOFD combined updates. | onbookorder() for each entry |
| →37 | OrderID | Unique ID assigned by CME Globex to identify orders | bookorder::orderId |
| →37706 | MDDisplayQty | Visible quantity of an order to the market. Orders may have additional hidden display quantity | bookorder::quantity |
| →37708 | OrderUpdateAction | Order book update action to be applied to the order referenced by OrderID | bookorder::updatetype - OU_ADD, OU_UPD, OU_DEL |
Order Entry (iLink 3.0)
Outgoing Messages
| Nanoconda API | Exchange Message | Exchange Code | Notes |
|---|---|---|---|
| dmasession::newOrder() | NewOrderSingle | 35=D | iLink 3 New Order - Single |
| dmasession::cancelOrder() | OrderCancelRequest | 35=F | iLink 3 Order Cancel Request |
| dmasession::modifyOrder() | OrderCancelReplaceRequest | 35=G | iLink 3 Order Cancel Replace Request |
| dmasession::cancelAllOrders() | OrderMassActionRequest | 35=CA | iLink 3 Order Mass Action Request |
Incoming Messages
| Exchange Message | Nanoconda Callback | Exchange Code | Notes |
|---|---|---|---|
| BusinessReject | onerror, onorderreject, oncancelreject, onmodifyreject | 35=j | iLink 3 Business Reject |
| ExecutionReportNew | onorderack | 35=8, 39=0 | iLink 3 Execution Report - New Order |
| ExecutionReportCancel | oncancelack | 35=8, 39=4 | iLink 3 Execution Report - Cancel |
| ExecutionReportModify | onmodifyack | 35=8, 39=5 | iLink 3 Execution Report - Modify |
| ExecutionReportReject | onorderreject | 35=8, 39=8 | iLink 3 Execution Report - Reject |
| OrderCancelReject | oncancelreject | 35=9,434=1 | iLink 3 Order Cancel Reject |
| OrderCancelReplaceReject | onmodifyreject | 35=9, 434=2 | iLink 3 Order Cancel Replace Reject |
| parseExecutionReportTradeOutright | onfill | 35=8, 39=1,2 | iLink 3 Execution Report - Trade Outright |
| ExecutionReportTradeAddendumOutright | onfillcorrection | 35=8, 39=H,G | iLink 3 Execution Report - Trade Addendum Outright |
| ExecutionReportElimination | onout | 35=8, 39=C | iLink 3 Execution Report - Elimination |
Fields
| Nanoconda Field | Exchange Field | Notes |
|---|---|---|
| order::orderId | CIOrdID | Automatically Generated by API |
| order::exchangeOrderId | OrderID | |
| order::type = MKT | OrdType = '1' | |
| order::type = LMT | OrdType = '2' | |
| order::type = STP | OrdType = '3' | |
| order::type = SLMT | OrdType = '4' | |
| order::type = FAK | OrdType = '2'; TimeInForce = 3 | |
| order::price | Price | |
| order::triggerPrice | StopPx | |
| order::quantity | OrderQty | |
| order::quantityDisplay | DisplayQty | |
| order::quantityMinimum | MinQty | |
| order::priceLast | LastPx | |
| order::quantityLast | LastQty | |
| order::quantityFilled | CumQty | |
| order::side | Side | 'B' => 1 , 'S' => 2 |
| order::exchangeReason | OrdRejReason, CxlRejReason | |
| error::exchangeCode | BusinessRejectReason |