1. Introduction

Xpansiv Marketplace Server API (rules of engagement) are based on FIX 4.4 specification and best practice guidelines as published by the FIX Trading Community. Unless specifically stated, field numbers, names, and data types are as published by the FIX specification. A full explanation of the FIX protocol is beyond the scope of this document, and therefore customers should refer to the FIX Trading Community for the full specification and guidelines.

This document describes the supported administrative and application messages. Xpansiv Marketplace Server can support 3 distinct specialised session types configured on FIX Server side: Transaction, DropCopy and MarketData, or any combination. Each such session type supports the administrative and a subset of application messages described in this document. Incoming messages that are not listed in this document or are not supported by a specific session type will be rejected with a BusinessMessageReject (35=j). Malformed incoming messages will be rejected with a session level Reject (35=3). If a message listed in this specification is received with a tag that is not in the specification, the value of the field will be ignored. Xpansiv may include additional tags not listed in the standard specification in the messages sent to the counter parties as described in this document.

All messages described in this document, as defined in the FIX protocol, include standard header followed by the message body fields and terminated with a standard trailer.

Data types in the tables presented below follow the FIX protocol guidelines, however in some cases the length of String values is limited. As such, Xpansiv Marketplace Server will truncate long values in the incoming messages if their length exceeds the maximum size specified in parentheses below.

1.1. Standard Header

Tag Name Data type Required Comment
8 BeginString String(10) Y Identifies the beginning of new message and protocol version. Always first field in a message. Valid value: FIX.4.4
9 BodyLength Length Y Message length (in bytes) forward to the CheckSum field. Always second field in a message.
35 MsgType String Y Defines the message type. Always third field in a message.
49 SenderCompID String(60) Y Identifies the sender of the message.
56 TargetCompID String(60) Y Identifies the receiver of the message.
34 MsgSeqNum SeqNum Y Message sequence number.
43 PosDupFlag Boolean C Required for retransmitted messages as a result of ResendRequest.
97 PossResend Boolean C Required when message may be duplicate of another message sent under different sequence number.
52 SendingTime TimeStamp Y Time of transmission in UTC.
122 OrigSendingTime TimeStamp C Required for messages sent as a result of ResendRequest. Time of original transmission in UTC.

1.2. Standard Trailer

Tag Name Data type Required Comment
10 CheckSum String Y Always the last field in a message, always defined as three characters.

2. Administrative messages

2.1. Logon request and acknowledgment

Bidirectional message, supported by all session types. A client initiates Logon request and FIX Server replies with Logon acknowledgment if a client is authorized. Only after receiving Logon acknowledgment a client may send appropriate administrative and application messages. Alternatively, depending on circumstances, if a client is not authorized, trading session is not ready, Logon request is malformed or message flow issues have been detected, FIX Server may send a Logout (35=5), Reject (35=3) or BusinessMessageReject (35=j) message with the description of a problem or simply terminate the connection.
Following FIX protocol guidelines, FIX Server accepts secondary Logon messages issued by clients with ResetSeqNumFlag set (141=Y) and MsgSeqNum set to 1 (34=1) during active FIX session. FIX Server will respond with similar Logon acknowledgement (141=Y and 34=1), thus both sides will continue with following messages carrying 35=2 and increasing. Secondary Logon messages issued by clients during active FIX session without required 141=Y and 34=1 will cause FIX Server to terminate the connection.

Tag Name Data type Required Comment
Standard Header Y 35=A
108 HeartBtInt Int Y Heartbeat interval in seconds set by the initiator and reflected by FIX Server.
98 EncryptMethod Int Y Valid value: 0 (Not encrypted)
141 ResetSeqNumFlag Boolean N Valid values:
N - no (default value is the tag is not specified);
Y - yes, indicates both sides of a FIX session should reset sequence numbers to 1.
553 Username String(200) C Username of a client.
554 Password String(40) C Password associated with a client’s Username.
95 RawDataLength Int N
96 RawData Data N
58 Text String N Free format text string.
Standard Trailer Y

2.2. Heartbeat

Bidirectional message, supported by all session types. The heartbeat interval is declared in the initial Logon (35=A) message sent by a client and is used by both parties.

Tag Name Data type Required Comment
Standard Header Y 35=0
--- --- --- --- ---
112 TestReqID String C Required when the heartbeat is the result of a TestRequest (35=1). Reflects the identifier value set in the TestRequest.
--- --- --- --- ---
Standard Trailer Y
--- --- --- --- ---
Tag Name Data type Required Comment
Standard Header Y 35=0
112 TestReqID String C Required when the heartbeat is the result of a TestRequest (35=1). Reflects the identifier value set in the TestRequest.
Standard Trailer Y

2.3. TestRequest

Bidirectional message, supported by all session types. The TestRequest message forces a heartbeat from the opposing application. The opposite side responds to the TestRequest with a Heartbeat (35=0) message containing the initial TestReqID (112).

Tag Name Data type Required Comment
Standard Header Y 35=1
112 TestReqID String Y Identifier of the TestRequest. To be returned in the Heartbeat (35=0) generated by counter party upon receipt of this TestRequest.
Standard Trailer Y

2.4. ResendRequest

Bidirectional message, supported by all session types. The ResendRequest is sent by the receiving application to initiate the retransmission of messages if a sequence number gap is detected. The ResendRequest can be used to request a single message, a range of messages or all messages subsequent to a particular message.

Tag Name Data type Required Comment
Standard Header Y 35=2
7 BeginSeqNo SeqNum Y MsgSeqNum (34) of first message in a range to be resent.
16 EndSeqNo SeqNum Y MsgSeqNum (34) of last message in a range to be resent. Set EndSeqNo=0 if all messages subsequent to BeginSeqNo are required.
Standard Trailer Y

2.5. Reject

Bidirectional message, supported by all session types. The Reject message should be issued when a message is received but cannot be properly processed due to a session-level rule violation. Standard defined values of SessionRejectReason (373) field describe such violations. Rejected messages should be logged and the incoming sequence number incremented.

Tag Name Data type Required Comment
Standard Header Y 35=3
45 RefSeqNum SeqNum Y MsgSeqNum (34) of rejected message.
371 RefTagID Int N The tag number of the FIX field being referenced.
372 RefMsgType String N The MsgType (35) of the message being referenced.
373 SessionRejectReason Int N Code to identify the reason for the session level Reject message.
58 Text String N Free format text string to explain the reason for rejection.
Standard Trailer Y

2.6. SequenceReset

Bidirectional message, supported by all session types. The SequenceReset message has two modes depending on the value of GapFillFlag (123) field: Gap Fill mode (123=Y) and Reset mode (123=N or the tag is absent).
Gap Fill mode is used in response to a ResendRequest (35=2) when sending application chooses not to send a message or a continuous group of messages (such as administrative messages, aged orders, etc).
Reset mode involves specifying an arbitrarily higher new sequence number to be expected by the receiver of the SequenceReset message, and is used to reestablish a FIX session after an unrecoverable application failure to recover from an out-of-sequence condition and should not generate resend requests.
The SequenceReset message can only increase the sequence number. If a SequenceReset is received attempting to decrease the next expected sequence number the message should be rejected and treated as a serious error.

Tag Name Data type Required Comment
Standard Header Y 35=4
123 GapFillFlag Boolean N Indicates that the SequenceReset message is replacing administrative or application messages, which which will not be resent.
Valid values:
N - sequence reset, ignore MsgSeqNum (34);
Y - gap fill message, MsgSeqNum (34) field is valid.
36 NewSeqNum SeqNum Y New sequence number.
Standard Trailer Y

2.7. Logout

Bidirectional message, supported by all session types. The Logout message initiates or confirms the termination of a FIX session.

Tag Name Data type Required Comment
Standard Header Y 35=5
58 Text String N Free format text string.
Standard Trailer Y

2.8. BusinessMessageReject

Bidirectional message, supported by all session types. The BusinessMessageReject should be issued when a message is received but cannot be processed due to a business-level rule violation. Standard defined values of BusinessRejectReason (380) field describe such violations. Rejected messages should be logged and the incoming sequence number incremented.

Tag Name Data type Required Comment
Standard Header Y 35=j
45 RefSeqNum SeqNum N MsgSeqNum (34) of rejected message.
372 RefMsgType String Y The MsgType (35) of the message being referenced.
380 BusinessRejectReason Int Y Code to identify the reason for the BusinessRejectReject message.
379 BusinessRejectRefID String N The value of the business level “ID” field on the message being referenced.
58 Text String N Free format text string to explain the reason for rejection.
Standard Trailer Y

3. Application messages

3.1. NewOrderSingle

The message is initiated by a client wishing to submit an order and applicable only to a session configured as a Transaction session type.

Tag Name Data type Required Comment
Standard Header Y 35=D
11 ClOrdID String(60) Y Unique identifier for the order as assigned by a client. The allowed max length is 60 chars.
1 Account String(40) N Account mnemonics as agreed between trading parties.
55 Symbol String Y Ticker symbol.
54 Side Char Y Side of the order.
Valid values:
1 - Buy;
2 - Sell.
60 TransactTime TimeStamp Y Time the order was initiated by a client in UTC.
38 OrderQty Qty Y Total order quantity.
40 OrderType Char Y Order type.
Valid values:
1 - Market;
2 - Limit.
44 Price Price C Price per unit quantity.
Required for Limit orders (40=2). The value is ignored if present for Market orders.
423 PriceType Int N Code to represent the price type.
Valid value:
2 - Per unit (i.e. per share or contract)
59 TimeInForce Char N Specifies how long the order remains in effect. Absence of the field is interpreted as Day (0).
Valid values:
0 - Day;
1 - Good Till Cancel (GTC);
3 - Immediate or Cancel (IOC);
4 - Fill or Kill (FOK);
6 - Good Till Date (GTD).Note: Xpansiv Marketplace Trading Engine considers all Market orders as a FOK (59=4) and ignores TimeInForce value in NewOrderSingle and OrderCancelReplace messages with 40=1.
126 ExpireTime TimeStamp C Date/time of order expiration (UTC). Required if TimeInForce is GTD (59=6) and ExpireDate (432) is not present in the message.
432 ExpireDate LocalMktDate C The date of order expiration (local market date). Required if TimeInForce is GTD (59=6) and ExpireTime (126) is not present in the message.
110 MinQty Qty N Minimum quantity of the order to be executed.
111 MaxFloor Qty N Maximum quantity within the order to be shown on the exchange at any given time.
453 NoPartyIDs NumInGroup N Number of repeating group entries.
448 PartyID String(20) C Identifies the party. Required when NoPatryIDs (453) > 0 and PartyIDSource (447) is specified and must be the first field in this group.
447 PartyIDSource Char N Identifies the class or source of the PartyID (448) value.
Valid value: D - Proprietary.
452 PartyRole Int N The role of the party in the transaction.
Standard Trailer Y

3.2. OrderCancelRequest

The message is initiated by a client wishing to cancel all of the remaining quantity of previously submitted order and applicable only to a session configured as a Transaction session type.

Tag Name Data type Required Comment
Standard Header Y 35=F
41 OrigClOrdID String(60) Y ClOrdID (11) of the previous non-rejected order (NOT the initial order of the day).
37 OrderID String N Unique identifier for the order as assigned by Xpansiv Marketplace.
11 ClOrdID String(60) Y Unique ID of this OrderCancelRequest as assigned by a client.
54 Side Char Y This tag is required to comply with the FIX protocol. The value is ignored.
38 OrderQty Qty Y This tag is required to comply with the FIX protocol. The value is ignored.
55 Symbol String Y This tag is required to comply with the FIX protocol. The value is ignored.
60 TransactTime TimeStamp Y Time this OrderCancelRequest was initiated by a client.
Standard Trailer Y

3.3. OrderCancelReplaceRequest

The message is initiated by a client wishing to change the parameters of previously submitted order and applicable only to a session configured as a Transaction session type.

Tag Name Data type Required Comment
Standard Header Y 35=G
41 OrigClOrdID String(60) Y ClOrdID (11) of the previous non-rejected order (NOT the initial order of the day).
37 OrderID String N Unique identifier for the order as assigned by Xpansiv Marketplace.
11 ClOrdID String(60) Y Unique ID of this OrderCancelReplaceRequest as assigned by a client.
1 Account String(40) N Account mnemonics as agreed between trading parties.
55 Symbol String Y Ticker symbol.
54 Side Char Y Side of the order.
Valid values:
1 - Buy;
2 - Sell.
38 OrderQty Qty N Total intended order quantity, including the amount already executed for this chain of orders.
40 OrdType Char Y Order type.
Valid values:
1 - Market;
2 - Limit.
60 TransactTime TimeStamp Y Time this OrderCancelReplaceRequest was initiated by a client.
44 Price Price N Price per unit quantity. Required for Limit orders (40=2).
59 TimeInForce Char N Specifies how long the order remains in effect. Absence of the field is interpreted as Day (0).Note: Xpansiv Marketplace Trading Engine considers all Market orders as a FOK (59=4) and ignores TimeInForce value in NewOrderSingle and OrderCancelReplace messages with 40=1.
126 ExpireTime TimeStamp C Date/time of order expiration (UTC). Required if TimeInForce is GTD (59=6) and ExpireDate (432) is not present in the message.
432 ExpireDate LocalMktDate C The date of order expiration (local market date). Required if TimeInForce is GTD (59=6) and ExpireTime (126) is not present in the message.
110 MinQty Qty N Minimum quantity of the order to be executed.
111 MaxFloor Qty N Maximum quantity within the order to be shown on the exchange at any given time
453 NoPartyIDs NumInGroup N Number of repeating group entries.
448 PartyID String(20) C Identifies the party. Required when NoPatryIDs (453) > 0 and PartyIDSource (447) is specified and must be the first field in this group.
447 PartyIDSource Char N Identifies the class or source of the PartyID (448) value.
Valid value: D - Proprietary.
452 PartyRole Int N The role of the party in the transaction.
Standard Trailer Y

3.4. OrderCancelReject

The message is issued by the exchange upon receipt of a OrderCancelRequest (35=F) or OrderCancelReplaceRequest (35=G) message which cannot be honoured and applicable only to a session configured as a Transaction session type.

Tag Name Data type Required Comment
Standard Header Y 35=9
37 OrderID String Y Unique identifier as assigned by Xpansiv Marketplace if available, otherwise “NONE”
11 ClOrdID String(60) Y The value of ClOrdID (11) referred in the corresponding OrderCancelRequest (35=F) or OrderCancelReplaceRequest (35=G).
41 OrigClOrdID String(60) Y The value of OrigClOrdID (41) referred in the corresponding OrderCancelRequest (35=F) or OrderCancelReplaceRequest (35=G)
39 OrdStatus Char Y The current state of the order when applicable.
For unknown orders the value is: 8 - Rejected.
434 CxlRejResponceTo Char Y Identifies the type of request that OrderCancelReject is in response to.
Valid values:
1 - OrderCancelRequest (35=F);
2 - OrderCancelReplaceRequest (35=G).
102 CxlRejReason Int N Code to identify reason for cancel rejection.
58 Text String N Free format text string to explain the reason for rejection.
Standard Trailer Y

3.5. OrderStatusRequest

The message is issued by institution to generate an ExecutionReport (35=8) message with current order status back from the exchange. This request applicable only to a session configured as a Transaction session type.

Tag Name Data type Required Comment
Standard Header Y 35=H
37 OrderID String C Unique identifier as assigned by Xpansiv Marketplace.
Note: at least one of the tags OrderID (37) or ClOrdID (11) must be provided in the request.
11 ClOrdID String(60) C Unique identifier for the order as assigned by a client.
Required for electronically submitted orders.
Note: at least one of the tags OrderID (37) or ClOrdID (11) must be provided in the request.
790 OrderStatusReqID String N Optional, can be used to identify a specific OrderStatusRequest message. Echoed back on ExecutionReport (35=8) if provided.
55 Symbol String Y Ticker symbol.
54 Side Char Y Side of the order.
Valid values:
1 - Buy;
2 - Sell.
Standard Trailer Y

3.6. OrderMassStatusRequest

The message requests the status of orders matching criteria specified withing request.
ExecutionReport (35=8) messages with ExecType (150=”current order status on the moment of receiving this request”). This request applicable only to a session configured as a Transacti session type .

Tag Name Data type Required Comment
Standard Header Y 35=AF
584 MassStatusReqID String Y Unique ID as assigned by institution to identify a specific OrderMassStatusReques message. Echoed back on series of ExecutionReport (35=8) messages in response.
585 MassStatusReqType Y Specifies the scope of the OrderMassStatusReques message.
Supported values are:
1 - status for all active orders for a security. Symbol (55) field must be present in the message in such case. Side (54) field is accounted if it is present in the request;
7 - status for all active orders. Symbol (55) and Side (54) fields are accounted as filters if they are present in the request.
55 Symbol String C Ticker symbol. Required when 585=1 (see above).
54 Side Char N Side of the order.
Valid values:
1 - Buy;
2 - Sell.
Standard Trailer Y

3.7. ExecutionReport

The message is issued by the exchange to convey the current state of submitted order and applicable only to a session configured as a Transaction or DropCopy session type.
Each execution report contains two fields which are used to communicate the current state of the order: OrdStatus (39) and the purpose of the message: ExecType (150).

Tag Name Data type Required Comment
Standard Header Y 35=8
37 OrderID String Y Unique identifier as assigned by Xpansiv Marketplace. For rejected orders returns value of ClOrdID (11)
11 ClOrdID String(60) C Unique identifier for the order as assigned by a client.
Required for electronically submitted orders.
41 OrigClOrdID String(60) C ClOrdID (11) of the previous order. Provided in response to a OrderCancelRequest (35=F) or OrderCancelReplaceRequest (35=G) messages.
790 OrdStatusReqID String C Required in response on OrderStatusRequest (35=H) if provided in the request.
584 MassStatusReqID String C Required in response on OrderMassStatusRequest (35=AF) message.
911 TotNumReports Int C Will be used in response on OrderMassStatusRequest (35=AF) message to identify the total number of ExecutionReport messages which will be returned.
912 LastRptRequested Boolean C Will be used in response on OrderMassStatusRequest (35=AF) message to indicate (912=Y) that this is the last ExecutionReport message which will be returned.
17 ExecID String Y Unique identifier of execution message as assigned by Xpansiv Marketplace.
If ExecutionReport was issued as a reply on OrderStatusRequest (35=H) or OrderMassStatusRequest (35=AF), then the value of this tag is “0”.
150 ExecType Char Y Is used to identify the purpose of the ExecutionReport.
If ExecutionReport was issued as a reply on OrderStatusRequest (35=H) or OrderMassStatusRequest (35=AF), then the value of this tag is “I”.
39 OrdStatus Char Y Is used to convey the current state of the order.
103 OrdRejReason Int N Code to identify the reason for order rejection.
54 Side Char Y Side of the order.
Valid values:
1 - Buy;
2 - Sell.
31 LastPx Price C The price of this trade. Required if ExecType = Trade (150=F).
32 LastQty Qty C The quantity bought/sold on this trade. Required if ExecType = Trade (150=F).
151 LeavesQty Qty Y The quantity open for further execution.
14 CumQty Qty Y Currently executed quantity for the order.
6 AvgPx Price Y Calculated average price of all fills on this order.
453 NoPartyIDs NumInGroup N Number of repeating group entries.
448 PartyID String(20) C Identifies the party. Required when NoPatryIDs (453) > 0 and PartyIDSource (447) is specified and must be the first field in this group.
447 PartyIDSource Char N Identifies the class or source of the PartyID (448) value.
Valid value: D - Proprietary.
452 PartyRole Int N The role of the party in the transaction.
198 SecondaryOrderID String(20) N Can be used to provide additional order info by executing system (MarketGrid Order.Reference).
527 SecondaryExecID String(20) N Can be used to provide additional trade info by executing system (MarketGrid Trade.Reference).
382 NoContraBrokers NumInGroup N Number of repeating group entries.
375 ContraBroker String(20) N Can be used to provide additional trade info by executing system (MarketGrid Trade.CounterPartyMpId).
Required if NoContraBroker (382) > 0
1 Account String(40) N Account supplied on the order.
660 AcctIDSource Int N Valid value: 99 - Other.
63 SettlType Char N Indicated order settlement period.
55 Symbol String Y Ticker symbol.
854 QtyType Int N Type of quantity specified in a quantity field.
Valid value:
0 - Units (shares, par, currency).
231 ContractMultiplier Float C Specifies the ratio or multiply factor to convert from “nominal” units to total units.
Required if QtyType 854=1.
38 OrderQty Qty N Total order quantity.
423 PriceType Int N Code to represent the price type.
Valid value:
2 - Per unit (i.e. per share or contract)
44 Price Price C Price per unit of quantity. Required if present on the order.
1057 AggressorIndicator Boolean N This value represents if the record is the aggressor.
Valid values:
Y - yes;
N - no.
40 OrderType Char N Mirrors the value provided in the NewOrderSingle.
59 TimeInForce Char N Mirrors the value provided in the NewOrderSingle for Limit orders.The tag is not present in the ExecutionReport for Market orders, because Xpansiv Marketplace Trading Engine considers all Market orders as a FOK and ignores TimeInForce value.
126 ExpireTime TimeStamp C Date/time of order expiration (UTC). Required if TimeInForce is GTD (59=6) and ExpireDate (432) is not present in the message.
432 ExpireDate LocalMktDate N The date of order expiration (local market date). Required if TimeInForce is GTD (59=6) and ExpireTime (126) is not present in the message.
75 TradeDate LocalMktDate N Indicates date of trade referenced in this message in YYYYMMDD format. Absence of the field indicates current day.
60 TransactTime TimeStamp N Time this ExecutionReport was initiated by Xpansiv Marketplace.
381 GrossTradeAmt Amt N Total amount traded (e.g. CumQty (14) * AvgPx (6)) expressed in units of currency.
119 SettlCurrAmt Amt N Total amount due expressed in settlement currency.
120 SettlCurrency Currency N Currency code of settlement denomination.
155 SettlCurrFxRate Float N Foreign exchange rate used to compute SettlCurrAmt (119) from Currency (15) to SettlCurrency (120)
156 SettlCurrFxRateCals Char N Specifies whether or not SettlCurrFxRate (155) should be multiplied or divided.
Valid values:
M - Multiply;
D - Divide.
110 MinQty Qty N Minimum quantity of the order to be executed.
111 MaxFloor Qty N Maximum quantity within the order to be shown on the exchange at any given time.
136 NoMiscFees NumInGroup N Number of repeating group entries of miscellaneous fees.
137 MiscFeeAmt Amt C Miscellaneous fee value. Required if NoMiscFees > 0 and must be the first field in this group.
138 MiscFeeCurr Currency N Currency code of miscellaneous fees.
139 MiscFeeType Int N Indicates type of miscellaneous fees.
Standard Trailer Y

3.8. SecurityListRequest

The message is used by a client to request a list of available securities from the exchange and applicable to all session types.

Tag Name Data type Required Comment
Standard Header Y 35=x
320 SecurityReqID String Y Unique identifier of the request.
559 SecurityListRequestType Int Y Identifies the type/criteria of the request.
This tag is required to comply with the FIX protocol. The value is ignored and considered as: 4 - All Securities.
Standard Trailer Y

3.9. SecurityList

The message is used by the exchange to return a list of available securities requested by a client in a SecurityListRequest (35=x) and applicable to all session types.

Tag Name Data type Required Comment
Standard Header Y 35=y
320 SecurityReqID String Y The identifier provided by a client in the original SecurityListRequest (35=x).
322 SecurityResponseID String Y Identifier of the SecurityList message.
560 SecurityListResult Int Y The result returned to a SecurityListRequest (35=x).
393 TotNoRelatedSym Int N Total number of securities.
893 LastFragment Boolean N Indicates whether this message is the last in a sequence of fragments.
Valid values:
Y - Last message;
N - Not last message.
146 NoRelatedSym Int N Specifies the number of repeating group symbols (instruments) in this fragment.
55 Symbol String C Ticker symbol. Required if NoRelatedSym (146) > 0 and must be the first field in this group.
48 SecurityID String N Security identifier value.
22 SecurityIDSource String C Required when SecurityID (48) is specified.
Valid value:
8 - Exchange Symbol
460 Product Int N Indicates the type of product the security is associated with.
167 SecurityType String N Indicates the type of security.
Standard Trailer Y

3.10. SecurityTypeRequest

The message is used by a client to request a list of available security types from the exchange and applicable to all session types.

Tag Name Data type Required Comment
Standard Header Y 35=v
320 SecurityReqID String Y Unique identifier of the request.
Standard Trailer Y

3.11. SecurityTypes

The message is used by the exchange to return a list of available security types requested by a client in a SecurityTypeRequest (35=v) and applicable to all session types.

Tag Name Data type Required Comment
Standard Header Y 35=w
320 SecurityReqID String Y The identifier provided by a client in the original SecurityTypeRequest (35=v).
322 SecurityResponseID String Y Identifier of the SecurityTypes message.
323 SecurityResponseType Int Y The result of the security request identified by SecurityReqID (320).
557 TotNoSecurityTypes int N Total number of security types.
893 LastFragment Boolean N Indicates whether this message is the last in a sequence of fragments.
Valid values:
Y - Last message;
N - Not last message.
558 NoSecurityTypes Int N Number of Security Type repeating group instances.
167 SecurityType String C Indicates type of security. Required if NoSecurityTypes (558) > 0 and must be the first field in this group.
762 SecuritySubType String N Sub-type qualification/identification of the SecurityType (167).
460 Product Int N Indicates the type of product the security is associated with.
Standard Trailer Y

3.12. MarketDataRequest

The message is used by a client to request a current state of market data snapshot or/and subscribe to real-time market data updates from the exchange and applicable only to a session configured as a MarketData session type.

Tag Name Data type Required Comment
Standard Header Y 35=V
262 MDReqID String Y Must be unique, or the ID of previous MarketDataRequest if SubscriptionRequestType (263) equals '2' (Disable previous Snapshot plus Updates request).
263 SubscriptionRequestType Char Y Valid values:
0 - Snapshot;
1 - Snapshot plus Updates;
2 - Disable previous Snapshot plus Updates request (unsubscribe).
264 MarketDepth Int Y Valid values:
0 - Full Book;
1 - Top of the Book;
N - Report best N price tiers of the Book.
Note: Xpansiv Marketplace Server has a configuration option to limit max value of market depth sent to clients. In this case, requested Full Book (264=0) will be capped by this limit, otherwise the MarketDataRequest will be rejected with MarketDataRequestReject (35=Y) message if requested MarketDepth value exceeds the limit set up by the exchange.
265 MDUpdateType Int C Required when SubscriptionRequestType (263) equals '1' (Snapshot plus Updates).
Valid values:
0 - Full Refresh;
1 - Incremental Refresh.
266 AggregatedBook Boolean N Valid value:
Y - one book entry per side per price.
Note: multiple entries per side per price (266=N) are not supported, the message will be rejected.
547 MDImplicitDelete Boolean N Defines what side is responsible for deleting bids or offers (order book levels) falling outside of requested/capped MarketDepth (264). Can be used when MarketDepth (264) > 1 and MDUpdateType (265) = 1 (Incremental Refresh), in other cases the value of this tag is ignored.
Defaults to 547=Y.
Valid values:
Y - Client has responsibility for implicitly deleting such levels;
N - Server must send an explicit delete for such levels.
267 NoMDEntryTypes Int Y Number of MDEntryType (269) fields in the repeating group.
269 MDEntryType Char Y Type of market data entry.
Valid values:
0 - Bid;
1 - Offer;
2 - Trade;
4 - Opening Price;
5 - Closing Price:
7 - Trading Session High Price;
8 - Trading Session Low Price:
B - Trade Volume.
Note: other possible values are not supported and will be ignored by the server.
146 NoRelatedSym Int Y Number of symbols (instruments) requested.
55 Symbol String Y Ticker symbol.
Standard Trailer Y

3.13. MarketDataRequestReject

The message may be sent by the exchange in response to MarketDataRequest (35=V) indicating it cannot be honoured and applicable only to a session configured as a MarketData session type.

Tag Name Data type Required Comment
Standard Header Y 35=Y
262 MDReqID String Y Refers to the value of MDReqID (262) in the original MarketDataRequest (35=V).
281 MDReqRejReason Char N Reason for the rejection of a MarketDataRequest (35=V).
58 Text String N Free format text string to explain the reason for rejection.
Standard Trailer Y

3.14. MarketDataSnapshotFullRefresh

The message is issued by the exchange in response to MarketDataRequest (35=V) and applicable only to a session configured as a MarketData session type.

Tag Name Data type Required Comment
Standard Header Y 35=W
262 MDReqID String Y Refers to the value of MDReqID (262) in the original MarketDataRequest (35=V).
55 Symbol String Y Ticker symbol.
268 NoMDEntries Int Y Number of market data entries in the repeating group.
269 MDEntryType Char Y Type of market data entry. Must be the first field in this group.
Valid values:
0 - Bid;
1 - Offer;
2 - Trade;
4 - Opening Price;
5 - Closing Price:
7 - Trading Session High Price;
8 - Trading Session Low Price:
B - Trade Volume.
270 MDEntryPx Price C Price (44) of the market data entry.
Required when MDEntryType (269) is not Trade Volume ('B').
271 MDEntrySize Qty C Quantity (53) or volume represented by the market data entry.
Required when MDEntryType (269) is a Bid ('0'), Offer ('1'), Trade ('2') or Trade Volume ('B').
272 MDEntryDate UTCDateOnly N Date of market data entry.
Actual if MDEntryType (269) is an Opening Price ('4') or Closing Price ('5').
273 MDEntryTime UTCTimeOnly N Time of market data entry.
Actual if MDEntryType (269) is a Trade ('2').
290 MDEntryPositionNo Int N Display position of a bid or offer, numbered from most competitive to least competitive, per market side, beginning with 1.
Actual if MDEntryType (269) is a Bid ('0') or Offer ('1').
346 NumberOfOrders Int N In an Aggregated Book shows how many individual orders make up a market data entry.
Actual if MDEntryType (269) is a Bid ('0') or Offer ('1').
58 Text String N Can appear in the group entry to identify the source of the data (applicable only to order book entries: Bid or Offer).
336 TradingSessionID String N Can appear in the group entry to identify trading session status.
Standard Trailer Y

3.15. MarketDataIncrementalRefresh

The message is issued by the exchange in response to MarketDataRequest (35=V) and applicable only to a session configured as a MarketData session type.

Tag Name Data type Required Comment
Standard Header Y 35=X
262 MDReqID String Y Refers to the value of MDReqID (262) in the original MarketDataRequest (35=V).
268 NoMDEntries Int Y Number of market data entries in the repeating group.
279 MDUpdateAction Char Y Type of market data update action. Must be the first field in this group.
Valid values:
0 - New;
1 - Change;
2 - Delete.
269 MDEntryType Char Y Type of market data entry.
Valid values:
0 - Bid;
1 - Offer;
2 - Trade;
4 - Opening Price;
5 - Closing Price:
7 - Trading Session High Price;
8 - Trading Session Low Price:
B - Trade Volume.
55 Symbol String C Ticker symbol.
Note: the instrument symbol is identified only for first market data entry
270 MDEntryPx Price C Price (44) of the market data entry.
Required when MDEntryType (269) is not Trade Volume ('B').
271 MDEntrySize Qty C Quantity (53) or volume represented by the market data entry.
Required when MDEntryType (269) is a Bid ('0'), Offer ('1'), Trade ('2') or Trade Volume ('B').
273 MDEntryTime UTCTimeOnly N Time of market data entry.
Actual if MDEntryType (269) is a Trade ('2').
290 MDEntryPositionNo Int N Display position of a bid or offer, numbered from most competitive to least competitive, per market side, beginning with 1.
Actual if MDEntryType (269) is a Bid ('0') or Offer ('1').
346 NumberOfOrders Int N In an Aggregated Book shows how many individual orders make up a market data entry.
Actual if MDEntryType (269) is a Bid ('0') or Offer ('1').
58 Text String N Can appear in the group entry to identify the source of the data (applicable only to order book entries: Bid or Offer).
336 TradingSessionID String N Can appear in the group entry to identify trading session status.
54 Side Char N Can appear in the group entry with 269=2 (trade) to identify an aggressor.
Valid values:
1 - Buy;
2 - Sell.
Standard Trailer Y