generated: '2026-08-04'
method: generated
source: http://iqx.imperativex.com/IntelligentCrossMarketDataFeedSpec.v.1.11.pdf
x-provenance:
note: 'IntelligentCross does NOT publish an AsyncAPI document. This document is an
API Evangelist rendering of the provider''s own published IntelligentCross Market
Data Feed Specification v1.11 (updated July 30, 2020) into AsyncAPI 3.0.0. Every
channel, address, message type code and payload field below is transcribed from
that public PDF and from the IntelligentCross FAQ - nothing is invented. It is not
a provider artifact and must not be presented as one.'
authored_by: API Evangelist enrichment pipeline
provider_publishes_asyncapi: false
spec_documents:
- name: IntelligentCross Market Data Feed Specification
version: '1.11'
updated: '2020-07-30'
url: http://iqx.imperativex.com/IntelligentCrossMarketDataFeedSpec.v.1.11.pdf
http_status: 200
- name: IntelligentCross IQX Market Data Rerequest Specification
version: '1.08'
url: https://cdn.prod.website-files.com/5ee92e3bd6214065dc7f2d48/61dc6cb50403bf15350ea647_IntelligentCross%20IQX%20Market%20Data%20Rerequest%20Specification%20v1.08.pdf
http_status: 200
spec_type: AsyncAPI
spec_version: 3.0.0
document:
asyncapi: 3.0.0
info:
title: IntelligentCross IQX Market Data Feed
version: '1.11'
description: |
The IntelligentCross Market Data Feed (IQX) disseminates all visible ASPEN resting
orders, cancels for ASPEN visible orders, and all ASPEN executions. It additionally
provides information for each symbol that may be traded, market state, and individual
symbol trading states (halts).
The feed is disseminated over multicast UDP. Each UDP packet transports a variable
number of messages (zero for heartbeats), limited to a 1500 byte MTU. Packets carry a
header identifying the market day, the feed, the sequence of the first message in the
packet and the message count, so a consumer can detect gaps: the next packet's expected
Sequence is the previous packet's Sequence plus its Count.
Each ASPEN book is disseminated on its own multicast address. Primary (A) and secondary
(B) groups are published for every feed, and a separate UAT (test) environment is
published alongside production.
contact:
name: IntelligentCross Operations
email: ops@intelligentcross.com
url: https://www.imperativex.com/market-data
externalDocs:
description: IntelligentCross Market Data Feed Specification v1.11
url: http://iqx.imperativex.com/IntelligentCrossMarketDataFeedSpec.v.1.11.pdf
defaultContentType: application/octet-stream
servers:
prod-primary:
host: 233.203.108.4
protocol: udp
description: PROD primary (A) multicast group. Source IP 46.255.0.74, RP 185.136.106.2.
tags:
- name: env:production
- name: feed:A
prod-secondary:
host: 233.203.108.6
protocol: udp
description: PROD secondary (B) multicast group. Source IP 46.255.0.90, RP 185.136.106.130.
tags:
- name: env:production
- name: feed:B
uat-primary:
host: 233.203.108.5
protocol: udp
description: UAT primary (A) multicast group. Source IP 46.255.0.82, RP 185.136.106.2.
tags:
- name: env:uat
- name: feed:A
uat-secondary:
host: 233.203.108.7
protocol: udp
description: UAT secondary (B) multicast group. Source IP 46.255.0.98, RP 185.136.106.130.
tags:
- name: env:uat
- name: feed:B
channels:
aspenFeeFeeProd:
address: 'udp://233.203.108.4:29049'
title: ASPEN Fee/Fee (PROD)
description: Production ASPEN Fee/Fee book. Feed identifier 'P'. Secondary (B)
group 233.203.108.6, same port.
servers:
- $ref: '#/servers/prod-primary'
- $ref: '#/servers/prod-secondary'
messages:
marketEvent:
$ref: '#/components/messages/MarketEvent'
symbolInformation:
$ref: '#/components/messages/SymbolInformation'
symbolState:
$ref: '#/components/messages/SymbolState'
newOrderAdd:
$ref: '#/components/messages/NewOrderAdd'
orderPartialCancel:
$ref: '#/components/messages/OrderPartialCancel'
orderCancelAll:
$ref: '#/components/messages/OrderCancelAll'
orderUpdated:
$ref: '#/components/messages/OrderUpdated'
orderExecuted:
$ref: '#/components/messages/OrderExecuted'
trade:
$ref: '#/components/messages/Trade'
tradeBreak:
$ref: '#/components/messages/TradeBreak'
aspenMakerTakerProd:
address: 'udp://233.203.108.4:29050'
title: ASPEN Maker/Taker (PROD)
description: Production ASPEN Maker/Taker book. Feed identifier 'A'. Secondary
(B) group 233.203.108.6, same port.
servers:
- $ref: '#/servers/prod-primary'
- $ref: '#/servers/prod-secondary'
messages:
marketEvent:
$ref: '#/components/messages/MarketEvent'
symbolInformation:
$ref: '#/components/messages/SymbolInformation'
symbolState:
$ref: '#/components/messages/SymbolState'
newOrderAdd:
$ref: '#/components/messages/NewOrderAdd'
orderPartialCancel:
$ref: '#/components/messages/OrderPartialCancel'
orderCancelAll:
$ref: '#/components/messages/OrderCancelAll'
orderExecuted:
$ref: '#/components/messages/OrderExecuted'
trade:
$ref: '#/components/messages/Trade'
aspenTakerMakerProd:
address: 'udp://233.203.108.4:29051'
title: ASPEN Taker/Maker (PROD)
description: Production ASPEN Taker/Maker book. Feed identifier 'Z'. Secondary
(B) group 233.203.108.6, same port.
servers:
- $ref: '#/servers/prod-primary'
- $ref: '#/servers/prod-secondary'
messages:
marketEvent:
$ref: '#/components/messages/MarketEvent'
symbolInformation:
$ref: '#/components/messages/SymbolInformation'
symbolState:
$ref: '#/components/messages/SymbolState'
newOrderAdd:
$ref: '#/components/messages/NewOrderAdd'
orderPartialCancel:
$ref: '#/components/messages/OrderPartialCancel'
orderCancelAll:
$ref: '#/components/messages/OrderCancelAll'
orderExecuted:
$ref: '#/components/messages/OrderExecuted'
trade:
$ref: '#/components/messages/Trade'
aspenFeeFeeUat:
address: 'udp://233.203.108.5:18505'
title: ASPEN Fee/Fee (UAT)
description: UAT ASPEN Fee/Fee book. Feed identifier 'T'. Secondary (B) group
233.203.108.7, same port.
servers:
- $ref: '#/servers/uat-primary'
- $ref: '#/servers/uat-secondary'
messages:
marketEvent:
$ref: '#/components/messages/MarketEvent'
symbolInformation:
$ref: '#/components/messages/SymbolInformation'
symbolState:
$ref: '#/components/messages/SymbolState'
newOrderAdd:
$ref: '#/components/messages/NewOrderAdd'
orderExecuted:
$ref: '#/components/messages/OrderExecuted'
trade:
$ref: '#/components/messages/Trade'
aspenMakerTakerUat:
address: 'udp://233.203.108.5:18506'
title: ASPEN Maker/Taker (UAT)
description: UAT ASPEN Maker/Taker book. Feed identifier 'B'. Secondary (B) group
233.203.108.7, same port.
servers:
- $ref: '#/servers/uat-primary'
- $ref: '#/servers/uat-secondary'
messages:
marketEvent:
$ref: '#/components/messages/MarketEvent'
newOrderAdd:
$ref: '#/components/messages/NewOrderAdd'
orderExecuted:
$ref: '#/components/messages/OrderExecuted'
aspenTakerMakerUat:
address: 'udp://233.203.108.5:18507'
title: ASPEN Taker/Maker (UAT)
description: UAT ASPEN Taker/Maker book. Feed identifier 'Y'. Secondary (B) group
233.203.108.7, same port.
servers:
- $ref: '#/servers/uat-primary'
- $ref: '#/servers/uat-secondary'
messages:
marketEvent:
$ref: '#/components/messages/MarketEvent'
newOrderAdd:
$ref: '#/components/messages/NewOrderAdd'
orderExecuted:
$ref: '#/components/messages/OrderExecuted'
operations:
receiveAspenFeeFeeProd:
action: receive
channel:
$ref: '#/channels/aspenFeeFeeProd'
summary: Subscribe to the production ASPEN Fee/Fee multicast feed.
receiveAspenMakerTakerProd:
action: receive
channel:
$ref: '#/channels/aspenMakerTakerProd'
summary: Subscribe to the production ASPEN Maker/Taker multicast feed.
receiveAspenTakerMakerProd:
action: receive
channel:
$ref: '#/channels/aspenTakerMakerProd'
summary: Subscribe to the production ASPEN Taker/Maker multicast feed.
receiveAspenFeeFeeUat:
action: receive
channel:
$ref: '#/channels/aspenFeeFeeUat'
summary: Subscribe to the UAT ASPEN Fee/Fee multicast feed.
receiveAspenMakerTakerUat:
action: receive
channel:
$ref: '#/channels/aspenMakerTakerUat'
summary: Subscribe to the UAT ASPEN Maker/Taker multicast feed.
receiveAspenTakerMakerUat:
action: receive
channel:
$ref: '#/channels/aspenTakerMakerUat'
summary: Subscribe to the UAT ASPEN Taker/Maker multicast feed.
components:
messages:
MarketEvent:
name: MarketEvent
title: Market Event
summary: Session and market-wide state transitions.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/MarketEvent'
SymbolInformation:
name: SymbolInformation
title: Symbol Information
summary: Per-symbol reference data, including the Symbol ID to Symbol mapping
for the day.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/SymbolInformation'
SymbolState:
name: SymbolState
title: Symbol State
summary: Per-symbol trading state transitions (matching active/inactive, enabled/disabled).
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/SymbolState'
NewOrderAdd:
name: NewOrderAdd
title: New Order Add
summary: A new visible ASPEN resting order was added to the book.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/NewOrderAdd'
OrderPartialCancel:
name: OrderPartialCancel
title: Order Partial Cancel
summary: Shares were cancelled from a resting visible order.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/OrderPartialCancel'
OrderCancelAll:
name: OrderCancelAll
title: Order Cancel All
summary: A resting visible order was fully cancelled.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/OrderCancelAll'
OrderUpdated:
name: OrderUpdated
title: Order Updated
summary: Reserved for future use - Order Updated messages are not currently
sent. Customer initiated order changes result in either Order Partial Cancel,
or Order Cancel All followed by New Order Add and/or potentially Order Executed.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/OrderUpdated'
OrderExecuted:
name: OrderExecuted
title: Order Executed
summary: Sent when a visible order is executed.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/OrderExecuted'
Trade:
name: Trade
title: Trade
summary: Sent when a hidden order is executed.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/Trade'
TradeBreak:
name: TradeBreak
title: Trade Break
summary: Reserved for future use - Trade Break messages are not currently sent.
contentType: application/octet-stream
payload:
$ref: '#/components/schemas/TradeBreak'
schemas:
UdpPacketHeader:
type: object
description: Fixed 20-byte packet header preceding the message blocks.
properties:
marketDayIdentifier:
type: string
description: 'Unique identifier for trading day. Offset 0, length 9, ASCII
number.'
feedIdentifier:
type: string
description: 'Unique code for feed. Offset 9, length 1, alpha.'
sequence:
type: integer
description: 'Sequence number for next message. Offset 10, length 8, little-endian
binary.'
count:
type: integer
description: 'Number of messages in packet. Offset 18, length 2, little-endian
binary.'
UdpMessageBlockHeader:
type: object
description: Simple block header preceding each message within a packet.
properties:
length:
type: integer
description: 'Length of the message. Offset 0, length 2, little-endian binary.'
MarketEvent:
type: object
x-message-type: A
properties:
messageType:
type: string
const: A
description: 'Offset 0, length 1, alpha.'
reserved:
type: string
description: 'Reserved for future use. Offset 1, length 2, alpha.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
event:
type: string
description: 'Offset 11, length 1, alpha.'
enum: [O, S, Q, E, C]
x-enum-descriptions:
O: Start of Session
S: Market accepting orders
Q: Market open for trading
E: Market trading ended for day
C: End of Session
SymbolInformation:
type: object
x-message-type: B
properties:
messageType:
type: string
const: B
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
symbol:
type: string
description: 'Stock Symbol. Offset 11, length 11, alpha.'
listingMarket:
type: string
description: 'Code identifying the primary listing market. Offset 22, length
1, alpha.'
enum: [N, Q, P, Z, A, V]
x-enum-descriptions:
N: NYSE
Q: NASDAQ
P: ARCA
Z: BATS Z
A: AMEX
V: IEX
reserved:
type: string
description: 'Reserved for future use. Offset 23, length 1, alpha.'
roundLotSize:
type: integer
description: 'Size of one round lot. Offset 24, length 4.'
SymbolState:
type: object
x-message-type: C
properties:
messageType:
type: string
const: C
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
symbol:
type: string
description: 'Stock Symbol. Offset 11, length 11, alpha.'
state:
type: string
description: 'Offset 22, length 1, alpha.'
enum: [I, A, D, E]
x-enum-descriptions:
I: Matching Inactive - orders may be accepted, but will not currently
match
A: Matching Active - orders may be accepted and may currently match
D: Disabled - orders will not be accepted and are not eligible for matching
E: Enabled - orders will be accepted and are eligible for matching
reserved:
type: string
description: 'Reserved for future use. Offset 23, length 1, alpha.'
info:
type: string
description: 'Optional text. Offset 24, length 4, alpha.'
NewOrderAdd:
type: object
x-message-type: D
properties:
messageType:
type: string
const: D
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
orderId:
type: integer
description: 'Market Issued Unique Order ID. Offset 11, length 8. This is
the same Order ID returned by the FIX order gateway order acknowledgment
message (38=8, 150=0) in the FIX OrderID field (tag 37).'
side:
type: string
description: 'Offset 19, length 1, alpha.'
enum: [B, S]
shares:
type: integer
description: 'Qty. Offset 20, length 4.'
symbol:
type: string
description: 'Stock Symbol. Offset 24, length 11, alpha.'
price:
type: integer
description: 'Price with 6 implied decimals. Offset 35, length 8, signed
positive integer. $543.21 is represented as 543210000.'
reserved:
type: string
description: 'Reserved for future use. Offset 43, length 4, alpha.'
OrderPartialCancel:
type: object
x-message-type: F
properties:
messageType:
type: string
const: F
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
orderId:
type: integer
description: 'Market Issued Unique Order ID. Offset 11, length 8.'
sharesCanceled:
type: integer
description: 'Number of shares cancelled. Offset 19, length 4.'
OrderCancelAll:
type: object
x-message-type: G
properties:
messageType:
type: string
const: G
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
orderId:
type: integer
description: 'Market Issued Unique Order ID. Offset 11, length 8.'
OrderUpdated:
type: object
x-message-type: H
x-status: reserved-for-future-use
properties:
messageType:
type: string
const: H
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
orderId:
type: integer
description: 'Market Issued Unique Order ID. Offset 11, length 8. Order
ID remains unchanged as a result of an Order Updated message.'
shares:
type: integer
description: 'Number of shares. Offset 19, length 4.'
price:
type: integer
description: 'Price with 6 implied decimals. Offset 23, length 8.'
OrderExecuted:
type: object
x-message-type: J
properties:
messageType:
type: string
const: J
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
orderId:
type: integer
description: 'Market Issued Unique Order ID. Offset 11, length 8.'
shares:
type: integer
description: 'Qty Executed. Offset 19, length 4.'
executionId:
type: integer
description: 'Market Issued Unique Execution ID. Offset 23, length 8.'
reserved:
type: string
description: 'Reserved for future use. Offset 31, length 1, alpha.'
price:
type: integer
description: 'Price with 6 implied decimals. Offset 32, length 8.'
Trade:
type: object
x-message-type: K
properties:
messageType:
type: string
const: K
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
reservedInteger:
type: integer
description: 'Reserved for future use. Offset 11, length 8.'
reservedAlpha:
type: string
description: 'Reserved for future use. Offset 19, length 1, alpha.'
shares:
type: integer
description: 'Qty Executed. Offset 20, length 4.'
symbol:
type: string
description: 'Stock Symbol. Offset 24, length 11, alpha.'
price:
type: integer
description: 'Price with 6 implied decimals. Offset 35, length 8.'
executionId:
type: integer
description: 'Market Issued Unique Execution ID. Offset 43, length 8.'
TradeBreak:
type: object
x-message-type: M
x-status: reserved-for-future-use
properties:
messageType:
type: string
const: M
description: 'Offset 0, length 1, alpha.'
symbolId:
type: integer
description: 'Symbol Index. Offset 1, length 2.'
timestamp:
type: integer
description: 'Nanoseconds since epoch (UTC). Offset 3, length 8.'
executionId:
type: integer
description: 'Market Issued Unique Execution ID. Offset 11, length 8.'