UMDFConflated MarketDataSpecification2.0.11
UMDFConflated MarketDataSpecification2.0.11
UMDFConflated MarketDataSpecification2.0.11
Version: 2.0.11
Last modified: 6/27/2019
Contacts
• Services Development Department (GDS): handles all enquiries for connectivity setup
and general exchange supported services.
o [email protected]
Index
REVISION HISTORY ....................................................................................................................... 4
1 PREFACE ............................................................................................................................... 6
© B3
2
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
3
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Revision History
Jun, 27st,2019 2.0.11 - Added new domain for tag 277 in section 6.8.3. AYSF
Aug. 6th, 2018 2.0.10 - Added new domains for tag 762. AYSF
© B3
4
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
5
UMDF PUMA Conflated Market Data Specification Version 2.0.11
1 Preface
UMDF PUMA Conflated provides a TCP protocol based, conflated market data feed for Equities,
Derivatives and FX listed in the BM&FBOVESPA Trading System using their native currency.
This document outlines UMDF PUMA Conflated system FIX 4.4 market data messages features
and is targeted at third-parties which need to consume those messages from UMDF PUMA
Conflated.
It is assumed that the reader of this document has previous knowledge of the basic functioning of
the FIX protocol.
1.1 Abbreviations
Abbreviation Description
FIX Financial Information Exchange Protocol
IP Internet Protocol
TCP Transport Control Protocol
1.2 Glossary
Term Definition
BM&FBOVESPA Electronic Link One of BM&FBOVESPA’s solutions for
accessing its electronic trading platform.
BM&FBOVESPA
Securities, Commodities and Futures
Exchange, based in São Paulo, Brazil. For
more information, visit
http://www.bmfbovespa.com.br.
© B3
6
UMDF PUMA Conflated Market Data Specification Version 2.0.11
2.1.1 RCCF
RCCF (“Rede de Comunicações da Comunidade Financeira” or Financial Community
Communications Network) is an MPLS network that connects all brokerage firms to
BM&FBOVESPA, as well as some distributors and other interested clients. This network allows
specific SLAs and contingency features. It is typically used to receive market data and transactional
messages (order management).
2.1.2 RCB
RCB (“Rede de Comunicação BM&FBOVESPA” or BM&FBOVESPA Communications Network) is
a newer communication option available to the BM&FBOVESPA’s customers. Based on Ethernet
over SONET (EoS/EoSDH), it allows participants to choose from a vast array of link speeds and
service levels, which contrasts with RCCF, as the latter offers packaged, predefined solutions.
• The customer´s FIX client is responsible for initiating a TCP connection to the UMDF TCP
Market Data Port.
• UMDF PUMA Conflated does not support encryption of FIX messages.
• BVMF Market Operations will provide clients with the IP addresses and port numbers of
UMDF PUMA Conflated Market Data Ports.
• The default heartbeat interval for the FIX connection is set to 30 seconds unless otherwise
agreed on with the participants.
Before connecting to BM&FBOVESPA, the counterparty must undergo the certification process
according to the activity it will perform.
The certification process is better described in section 6.8.15 of this document. The physical link
used for certification may vary from the one to be used in production, once it is the application that
is being certified, and not the physical layer. Hence, a client application which will run using either
© B3
7
UMDF PUMA Conflated Market Data Specification Version 2.0.11
RCCF or a dedicated link in the production environment may be certified through an Internet VPN
connection.
The diagram below illustrates the connection schema in respect to the remainder of the PUMA
Platform:
In the near future, a reference implementation to decode this compressed market data will be
available at:
ftp://ftp.bmf.com.br/FIXFAST/reference/UMDFTCP/
© B3
8
UMDF PUMA Conflated Market Data Specification Version 2.0.11
3 FIX Protocol
The FIX Protocol is a free and open messaging standard that was developed in 1992 by Jim Leman,
Jacques Perold, Bob Lamoureux, and Chris Morstatt of Salomon Brothers and Fidelity Investments
to facilitate a bi-lateral communications framework for equities trading.
Since its conception, its usage has significantly expanded in response to evolving industry needs
and today it is the predominant messaging standard for pre-trade and trade communication globally
within the equity markets.
The FIX Protocol is a generic protocol with a flexible structure that allows more than one possible
implementation. This chapter describes the specific features for the implementation of the FIX
protocol in the UMDF PUMA Conflated system.
Each message is composed by a stream of <tag>=<value> fields with a field delimiter between
fields in the stream. Tags are of data type TagNum (see table in section 3.3). All tags must have a
specified value. Optional fields without values should not be specified in the FIX message. A Reject
(MsgType=3) message will be the response to a tag with no value.
Except where noted, fields within a message can be defined in any sequence (Relative position of
a field within a message is inconsequential.) The exceptions to this rule are described below:
1. General message format is composed by the standard header followed by the body
followed by the standard trailer.
2. The first three fields in the standard header are: tag 8-BeginString followed by tag 9-
BodyLength followed by tag 35-MsgType.
3. The last field in the standard trailer is the tag 10-CheckSum.
Field Delimiter:
All the fields in a FIX message are terminated by a delimiter character. The non-
printing, ASCII "SOH" (#001, hex: 0x01, referred to in this document as <SOH>), is
used for field termination. Messages are delimited by the “SOH” character following
the CheckSum field. All messages begin with the “8=FIX.x.y<SOH>” string and
terminate with “10=nnn<SOH>“.
© B3
9
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
10
UMDF PUMA Conflated Market Data Specification Version 2.0.11
4 Session Management
This section describes session-level FIX messages sent between UMDF PUMA Conflated and FIX
clients.
In the following tables the REQ column means the tag is Required (Y), Conditionally Required (C)
or Non Required (N) in FIX.
It is a responsibility of the client to detect any message gaps after a connection break. If the
incoming sequence number is greater than expected, a retransmission of the messages can be
requested by sending the Resend Request (MsgType=2) message to the System.
© B3
11
UMDF PUMA Conflated Market Data Specification Version 2.0.11
4.4 Logon
4.4.1 Logon Request (MsgType=A)
The logon message authenticates a user establishing a connection to UMDF PUMA Conflated. The
logon message must be the first message sent to UMDF PUMA Conflated by the client.
The sequence number, in the initial logon for each trading day, must be set to “1”.
• If a client receives a sequence number that is less than expected, the client
must terminate the session immediately and contact BVMF Market
Operations to correct the problem.
• BVMF strongly advises clients to reset the sequence number on logon for
market data sessions
When UMDF PUMA Conflated returns a positive Logon response, the client can start performing
the following:
© B3
12
UMDF PUMA Conflated Market Data Specification Version 2.0.11
UMDF PUMA Conflated sends a message at least once in the heartbeat interval.
When UMDF PUMA Conflated receives a message with a sequence number that is less than
expected during normal session processing, a Logout (MsgType=5) message will be sent to the
client and the session will be terminated.
In the event of UMDF PUMA Conflated receiving a sequence number that is less than expected
when the client reconnects after a break in the session during the same trading day, the session
will be terminated immediately without sending a Logout. The client should contact the BVMF
Market Operations to correct the problem.
There are other scenarios where the client’s FIX session can be disconnected. Depending on the
situation, UMDF PUMA Conflated may either wait or not for the logout response message from the
client before terminating the connection, e.g. idle session with no message after two heartbeat
intervals.
© B3
13
UMDF PUMA Conflated Market Data Specification Version 2.0.11
The actions to be executed by the client system receiving the incremental message are determined
by the tag 279-MDUpdateAction, whose value carries an instruction that can be either add, delete,
change, delete from or delete through. The items in the order book that are affected by the action
stated in the tag 279 are stated in the tag 290-MDEntryPositionNo, which contains a position in the
order book.
PUMA Conflated will not send a modification of all MDEntries on the 2nd through the final position
just to update the MDEntryPositionNo field; the counterparty must infer the change.
Similarly, deleting a Market Data Entry on the 2nd position causes the 3rd Market Data Entry to move
into the 2nd position, the 4th to move into the 3rd position, etc. UMDF PUMA Conflated will not issue
a change action to modify the position of an entry in the book. Change updates are only sent when
a value applicable to a specific MDEntryPositionNo – such as total quantity or number of orders –
changes.
All Snapshot and Incremental Market Data messages containing book information (entry types
269=0,1) are sent on a separated message, containing only the book updates. This message will
have the tag 1021-MDBookType tag set to indicate the type of book to which is refers (Order depth
or Market depth).
However, Snapshot and Incremental Market Data messages containing statistics (all other entry
types different from 269=0,1) will be separated from messages containing book updates and these
messages will never contain the tag 1021-MDBookType.
BID OFFER
PosNo Size Px Px Size PosNo
One entry per order: same
1 5000 10.58 11.03 7000 1 price on more than one
entry.
2 4000 10.58 11.03 2000 2
3 3000 10.57 11.05 1000 3
4 4000 10.54 4
© B3
14
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Usually BVMF provides the full depth of the book for order-depth book, however, for instruments
with extremely deep books, even book by order can impose a limited depth. Client systems must
determine the book depth for an instrument from the tag 264-MarketDepth in the Security List
(MsgType=y) message.
In general, if a trade occurs, BVMF will send a delete or change data block to update the book. The
trade data block itself is not used to update the order book.
The change data block is sent to update characteristics of a price level without changing the price
itself, or impacting any other prices in the book (update to the order count or quantity at that price).
BID
PosNo NoOrders Size Px Top row of the book (best bid).
1 2 9000 10.58
2 1 3000 10.57
3 1 4000 10.54
4 4 10000 10.53
5 3 8000 10.50
Bottom row of the book.
New buy order is received (BUY 1000 @ 10.60), updating the top of the book (bid):
© B3
15
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Bid
PosNo NoOrders Size Px New bottom row of the book
1 1 1000 10.60
2 2 9000 10.58
3 1 3000 10.57
4 1 4000 10.54
5 4 10000 10.53 Implicit deletion of the previous
6 3 8000 10.50 bottom row.
The order with price 10.57 is deleted (CANCEL BUY 3000 @ 10.57):
© B3
16
UMDF PUMA Conflated Market Data Specification Version 2.0.11
So, the book will miss the last row until the insertion in the last position:
Bid
PosNo NoOrder Size Px
s
1 1 1000 10.60
2 2 9000 10.58
3 1 4000 10.54
4 4 10000 10.53
Bid
PosNo NoOrders Size Px New bottom row will be sent by
1 1 1000 10.60 BVM&F.
2 2 9000 10.58
3 1 4000 10.54
4 4 10000 10.53
5 3 8000 10.50
The throttling interval (i.e. the interval at which the book updates are sent) is deemed to be optimal
at 300 ms. Depending on the market data velocity, this interval may be increased to avoid the need
for bandwidth updates by end customers. It is known that such interval does not affect negatively
in any way the ability for a human trader to operate the markets. Customers willing to receive more
or less frequent Market Data, can adopt these different intervals (such as 100 ms or 500ms).
IMPORTANT
Please note that trades and statistical data (such as high price, low price, security
state and trading phase changes) are still sent without being throttled, in real time.
© B3
17
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Consider the instrument PETR4 and the arbitrary amount of time passed since the beginning of the
measurement period (“Δt”). As various market participants issue orders for this instrument, a non-
throttled market data feed would contain the following flow of messages:
The end state of buy and sell orders for PETR4 is shown below:
© B3
18
UMDF PUMA Conflated Market Data Specification Version 2.0.11
In the following tables, the REQ column means the tag is Required (Y), Conditionally Required (C)
or Non Required (N) in the FIX message. An X in the EQ column means the tag is used for Equities
and Corporate Fixed Income products, while an X in the DER column means the tag is used for
Derivatives/FX.
IMPORTANT
If a customer application sends repeated messages that result in a reject, the
respective session may get disconnected automatically.
© B3
19
UMDF PUMA Conflated Market Data Specification Version 2.0.11
In the following table REQ means the field is Required (Y), Conditionally Required (C) or Non
Required (N) in FIX.
© B3
20
UMDF PUMA Conflated Market Data Specification Version 2.0.11
on a subscription model, in which the clients subscribe to receive instrument definitions according
to specific criteria, and optionally receive updates afterwards. The subscription may be cancelled
at any time.
The new subscription mechanics on UMDF PUMA Conflated is entirely based on filters, hence
sometimes the selected filters will result in an empty instrument set. Since the platform supports
online creation of instruments, a subscription that results in an empty set is perfectly valid (the set
can receive new instruments later, during the day). Thus customers applications must know how
to handle 35=y responses containing no instruments.
For instance, one could subscribe to a SecurityGroup that usually contains only UDS instruments,
this group could start the day with no valid instruments, but subscribing to this will guarantee that if
one such instrument is ever created the customer will receive the related messages.
Also, two subscriptions could match instruments previously subscribed; in this case the response
will carry all matched instruments, even if they are repeated. However, incremental changes to
them will be relayed only once to each session.
It´s possible to maintain many simultaneous subscriptions, each with a unique value for tag 320-
SecurityReqID. In the event of instrument creation during the session, users will receive the
correspondent SecurityList messages, as long as it matches one of the subscription filters.
Additionally, if subscribing to a set of securities, the response may contain only the securities the
session has permission to access.
IMPORTANT
Since the new subscription policy is based on filters, it´s always mandatory for each
request to have at least one filter. This implies that to subscribe to all instruments
one will have to hold many simultaneous subscriptions.
© B3
21
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid Values:
2 = COMMODITY
3 = CORPORATE
4 = CURRENCY
5 = EQUITY
6 = GOVERNMENT
7 = INDEX
15 = ECONOMIC INDICATOR
16 = MULTILEG
© B3
22
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Just after subscribing to security list, the response will come as a series of Security List messages
(35=y), marked with tags 393-TotNoRelatedSym and 893-LastFragment. The customer application
should process all such messages until all securities are received (number of received securities
is equal to the value of tag 393) and the message containing tag 893-LastFragment equal to “Y” is
received.
There is a maximum limit of subscriptions that can be held simultaneously. This limit is configured
by the Market Surveillance, but it should be reasonable enough for customers to maintain several
subscriptions without degrading server performance.
Updates to any security will be sent out to customers on separate Security List messages (35=y)
in an ad-hoc fashion, carrying a single security per message. In this case the Security List message
will not carry request related tags such as 320-SecurityReqID, 560-SecurityRequestResult, 393-
TotNoRelatedSym and 893-LastFragment.
© B3
23
UMDF PUMA Conflated Market Data Specification Version 2.0.11
M = Maximum number of
subscriptions exceeded
Valid values:
Y = Last message
146 NoRelatedSym C X X Specifies the number of
repeating instruments
specified. Not sent if this
message is reporting an error
(tag 560 > 0).
➔ 55 Symbol Y X X Instrument symbol
➔ 48 SecurityID Y X X Unique instrument id.
➔ 22 SecurityIDSource Y X X Security ID qualifier.
➔ 207 SecurityExchange Y X X Market to which the
instrument belongs.
➔ 1141 NoMDFeedTypes Y X X Number of MD Feed Types.
➔ ➔ 1022 MDFeedType Y X X Indicates feed type as
standard or implied. Not sent
for MBO.
Valid values:
STD = Standard MBP
IMP = Implied MBP (not
used)
➔ ➔ 264 MarketDepth Y X X Identifies the number of
depth levels of the book.
2 = Price Depth
3 = Order Depth
➔ 201 PutOrCall C X X Indicates whether an option
contract is a put or call.
➔ 454 NoSecurityAltID C X X Number of alternate security
identifiers.
➔ ➔ 455 SecurityAltID C X X Security Alternate identifiers
for this security
➔ ➔ 456 SecurityAltIDSource C X X Identifies class or source of
the SecurityAltID (455) value.
Required if SecurityAltID is
© B3
24
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid Values:
2 = COMMODITY
3 = CORPORATE
4 = CURRENCY
5 = EQUITY
6 = GOVERNMENT
7 = INDEX
15 = ECONOMIC
INDICATOR
16 = MULTILEG
© B3
25
UMDF PUMA Conflated Market Data Specification Version 2.0.11
- PS (Preferred Stock)
- SECLOAN (Security loan,
or BTB)
- INDEXOPT (Option on
Index)
➔ 762 SecuritySubType Y X X
The sub type of the instrument.
© B3
26
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
27
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
28
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
A = Add
D = Delete
M = Modify
➔ 969 MinPriceIncrement C X X Number of minimum tick
increments
➔ 5151 TickSizeDenominator C X X Number of decimals, used for
pricing this instrument, e.g.
price = 0.001, decimals = 3.
➔ 9749 MinOrderQty C X X Minimum quantity of an order
for the security.
➔ 9748 MaxOrderQty C X X Maximum quantity of an
order for the security.
➔ 870 NoInstrAttrib C X X Number of repeating
InstrAttribType entries.
Valid values:
24 = Trade type eligibility
details for security.
34 = Eligibility for GTD/GTC
Conditionally required if
NoUnderlyings > 0.
➔ ➔ 309 UnderlyingSecurityID Y X X Underlying instrument’s
security identifier.
Conditionally required if
NoUnderlyings > 0.
© B3
29
UMDF PUMA Conflated Market Data Specification Version 2.0.11
8 = Exchange Symbol
© B3
30
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Conditionally required if
NoLegs > 0.
➔ ➔ 602 LegSecurityID C X X Unique identifier for the
instrument leg, as per
LegSecurityIDSource.
Conditionally required if
NoLegs > 0.
© B3
31
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid Values:
N1 = Level 1
N2 = Level 2
N3 = Level 3
NM = New Market
MA = MAIS Market
MB = SOMA Market
M2 = MAIS 2 Market
Valid values:
8 = Issuing/Buy Back
Auction
➔ 1234 NoLotTypeRules C X Number of Lot Type Rules
for the instrument
© B3
32
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
0 = Not implied (default)
Message Trailer Y X X
Like on section 6.4.1, the subscription mechanics on UMDF PUMA Conflated, entirely based on
filters, allows subscriptions where the selected filters will result in an empty instrument set. Since
the platform supports online creation of instruments, a subscription that results in an empty set is
perfectly valid (the set can receive new instruments later, during the day). Thus customers
© B3
33
UMDF PUMA Conflated Market Data Specification Version 2.0.11
applications must know how to handle 35=W responses containing no instruments (empty
Snapshots).
For instance, one could subscribe to a SecurityGroup that usually contains only UDS instruments,
this group could start the day with no valid instruments, but subscribing to this will guarantee that if
one such instrument is ever created the customer will receive the related incremental messages.
Also, two subscriptions could match instruments previously subscribed; in this case the response
will carry all matched instruments´ snapshots, even if they are repeated. However, incremental
updates (35=X) to them will be relayed only once for each session.
If the repeating group 146-NoRelatedSym is omitted it is assumed that the subscription pertains all
available instruments.
It´s possible to have multiple subscriptions using different filtering tags, providing the customer
sends different values for tag 262-MDReqID. For example, to subscribe to both Price depth and
Order depth books it´s necessary to send two subscriptions.
There is a maximum limit of subscriptions that can be held simultaneously. This limit is configured
by the Market Surveillance, but it should be reasonable enough for customers to maintain several
subscriptions without degrading server performance.
To cancel a subscription, tag 262-MDReqID must match another value used in a previous
subscription. After a successful cancelation of subscription, no confirmation messages will be
received (A 35=Y is still generated in case of failure).
IMPORTANT
Since the new subscription policy is based on filters, it´s always mandatory for each
request to have at least one filter. This implies that to subscribe to all market data
one will have to hold many simultaneous subscriptions.
Valid Values:
2 = Price Depth
3 = Order Depth
© B3
34
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
35
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
Y = Last message
© B3
36
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
37
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
1= Regular Day Session
6= Non Regular Session
➔ 625 TradingSessionSubID C X X Identifier for the trading
phase. Conditionally
required when
MDEntryType=’c’. If
absent the default value is
17 = Open.
Valid Values:
02 = Trading halt (Pause)
04 = No-Open (Close)
17 = Ready to trade
(Open)
18 = Not available for
Trading (Forbidden)
21 = Pre-Open (Reserved)
➔ 276 QuoteCondition N X X Space-delimited list of
conditions describing a
quote.
Valid values:
“R” = Retransmission of
the order
“K” = Implied Price
➔ 277 TradeCondition N X X For optional use in
reporting
Trades/Imbalance. Space
delimited list of conditions
describing a
trade/imbalance.
© B3
38
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
R = Opening Price
X = Crossed
L = Last Trade at the Same
Price Indicator
P = Imbalance more
buyers
Q = Imbalance more
sellers
U = Exchange Last
3 = Multi Asset Trade
(Termo Vista)
1 = Leg trade
2 = Marketplace entered
trade (trade on behalf)
RL = RLP Trade
➔ 286 OpenCloseSettlFlag C X X Identifies if the opening
price in field MDEntryPx
represents a theoretical
opening price and
applicable to describe
when the settlement data
are related to.
Valid values:
0 = Daily open/Close
settlement entry
1 = Session Open/Close
settlement entry
4 = Entry from previous
business day
5 = Theoretical settlement
entry
➔ 432 ExpireDate C X Date of order expiration
(last day the order can
trade), always expressed
in terms of the local market
date.
➔ 287 SellerDays N X Specifies number of days
that may elapse before
delivery of security.
➔ 37 OrderID C X X Unique identifier for Order
as assigned by the
exchange, maps to the
SecondaryOrderID field in
the Execution Report
message for the
derivatives market (for the
FX market, it is the actual
OrderID). Required for
© B3
39
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
40
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid Values:
1=percentage
2=per unit (i.e. per share
or contract)
3=fixed amount (absolute
value)
➔ 451 NetChgPrevDay C X X Net change from previous
trading day’s closing price
vs. last traded price
(offshore currency).
➔ 711 NoUnderlyings C X This group is
conditionally required for
269=D, Index Composite
Entry Type.
Number of repeating
groups is based on Index
Composite.
➔ ➔ 309 UnderlyingSecurityID Y X Underlying instrument’s
security identifier.
Conditionally required if
NoUnderlyings > 0.
➔ ➔ 305 UnderlyingSecurityIDSource Y X Qualifier for underlying
instrument’s securityID.
Valid Values:
8 = Exchange Symbol
➔ ➔ 308 UnderlyingSecurityExchange Y X Underlying instrument’s
exchange.
Valid Values:
BVMF
➔ ➔ 810 UnderlyingPx Y X Underlying instrument
price reflected in Index
value.
➔ ➔ 37018 UnderlyingPxType Y X Indicates the Underlying
Instrument price type
refelected in Index value.
Valid Values:
0 = Trade (default)
1 = Average of TOB
➔ 731 SettlPriceType C X X Type of settlement price:
1=final
2=theoretical/preview
3=updated
➔ 1003 TradeID C X X Contains the unique
identifier for this trade per
instrument + trading date,
as assigned by the
exchange. Required if
reporting a Trade.
➔ 1020 TradeVolume N X X Total traded quantity
(shares/contracts) of the
trading day. It could be
© B3
41
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
42
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Possible value:
4 – Reset Statistics
101 – Security Status
separated from Group
Phase
102 – Security Status
following Group Phase
➔ 1306 PriceLimitType N X X Indicates if price value is
expressed in tick,
percentage, or actual price
terms.
This tag not sent for 269=g
for economic indicator.
Valid Values:
0=price
1=ticks
2=percentage
➔ 1500 MDStreamID N X X The identifier or name of
the price stream. The
default value is “E”
(Electronic).
Valid Values:
E = Electronic
X - Ex-pit
T = Termo
O = Option Exercise
(E&B)
N = Index
L = Lending (BTB)
A = All
➔ 6939 PriceBandType C X X Indicates type of price
banding.
Valid Values:
1= Hard Limits
2= Auction Limits
3= Rejection Band
© B3
43
UMDF PUMA Conflated Market Data Specification Version 2.0.11
4= Static Limits
➔ 9325 LastTradeDate C X Date the instrument last
traded.
Used as an input in the
calculation of the
MaxTradeVol and used to
trigger an Auction. Not
published if the product has
never been traded.
Published as part of
Adjusted Closing Price
block 269=5 286=4.
➔ 37003 AvgDailyTradedQty C X Daily average shares
traded within 30 days –
equity market only.
Previously known as
DailyAvgShares30D.
➔ 37008 PriceBandMidpointPriceType C X X Band Midpoint Type, used
with Auction Price
Banding
Valid Values:
0 = Last Traded Price
(default)
1 = Complementary Last
Price
2 = Theoretical Price
➔ 37013 PriceAdjustmentMethod C X Indicator of previous day´s
closing price.
Valid Values:
0 = no adjustment (default)
1= Theoretical price of EX
share.
2 = Theoretical price of EX
share when greater than
WITH price.
3 = Theoretical price of EX
share, resulting from
dividends in different types
of stocks/companies.
4 =Price arbitrated by
Market Authority
➔ 37014 MDEntryInterestRate C X Interest Rate of the Termo
Trade Expressed in
decimal form. For
example, 1% points is
expressed and sent as
0.01. One basis point is
represented as 0.0001.
➔ 37016 MDInsertDate N X X The date when the order
was inserted or re-
© B3
44
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
0 = Normal termination
(default)
1 = Early termination
2 = Early termination also
in case of PTO
➔ 37023 BTBCertIndicator C X Indicates if the security
lending offer or pre-
contract is certified.
If not sent, means the offer
or pre-contract is not
certified.
Used for BTB instruments
only.
Valid values:
0 = Certified (default)
1 = Not certified
➔ 37024 BTBContractInfo C X Denotes extra information
about the BTB pre-
contract.
Used for BTB instruments
only.
Valid values:
1 = pre-contract (default)
2 = intention
➔ 37025 BTBGraceDate C X Indicates the minimum
date from when the
borrower can call the loan
contract to an end. Used
for BTB instruments only.
➔ 37100 IndexSeq C X Index Value Sequence.
Message Trailer Y X
© B3
45
UMDF PUMA Conflated Market Data Specification Version 2.0.11
© B3
46
UMDF PUMA Conflated Market Data Specification Version 2.0.11
1 = Offer
2 = Trade
3 = Index Value*
4 = Opening Price
5 = Closing Price
6 = Settlement Price
7 = Trading Session High
Price
8 = Trading Session Low
Price
9 = Trading Session VWAP
Price
A = Imbalance
J = Rebuild Book
g = Price Band
h = Quantity Band
B = Trade Volume
C = Open Interest
D = Composite Underlying
Price
v = Volatility Price
➔ 270 MDEntryPx C X X Price of the Market Data
Entry. Required when this
market data entry involves a
price. Represents the
notional value for trade
volume (B). Other entry types
that do not involve price do
not require this tag.
➔ 271 MDEntrySize C X X Quantity or volume
represented by the Market
Data Entry. Required when
MDUpdateAction = New (0)
and MDEntryType = Bid (0),
Offer (1), Trade (2), Trade
Volume (B) or Opening Price
(4).
➔ 272 MDEntryDate Y X X Date of Market Data Entry.
➔ 273 MDEntryTime Y X X Time of Market Data Entry,
up to milliseconds
(hhmmssSSS).
➔ 274 TickDirection C X X Direction of the price tick.
Used as part of a trade
message.
Ex. Order price sequence 90,
100, 100 will have 274=1
Valid values:
0 = Plus Tick
1 = Zero-Plus Tick
2 = Minus Tick
© B3
47
UMDF PUMA Conflated Market Data Specification Version 2.0.11
3 = Zero-Minus Tick
Valid values:
“R” = Retransmission of the
order
“K” = Implied Price
➔ 277 TradeCondition N X X For optional use in reporting
Trades/Imbalance. Space
delimited list of conditions
describing a
trade/imbalance.
Valid values:
R = Opening Price
X = Crossed
L = Last Trade at the Same
Price Indicator
P = Imbalance more buyers
Q = Imbalance more sellers
U = Exchange Last
3 = Multi Asset Trade (Termo
Vista)
1 = Leg trade
2 = Marketplace entered
trade (trade on behalf)
RL = RLP Trade
➔ 286 OpenCloseSettlFlag C X X Identifies if the opening price
in field MDEntryPx
represents a theoretical
opening price and applicable
to describe when the
settlement data are related
to. Valid values issued by
BVMF:
0 = Daily open/Close
settlement entry
1 = Session Open/Close
settlement entry
4 = Entry from previous
business day
5 = Theoretical settlement
entry
© B3
48
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
1= Regular Day Session
6 = Non Regular Session
(After Hours)
➔ 346 NumberOfOrders C X X Contains the number of
orders that make up the
aggregate quantity at the
price point. Required if this is
a price-depth book entry.
➔ 423 PriceType C X X Code to represent the price
type (applicable to settlement
data). The default value is “2”
(Per unit).
Valid values:
1 – Percentage
2 – Per unit (i.e. per share or
contract)
3 – Fixed amount (absolute
value)
© B3
49
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
0 = Trade (default)
1 = Average of TOB
➔ 731 SettlPriceType C X X Required only for
MDEntryType=6 (Settlement
Price).
Valid values:
1 = Final
2 = Theoretical/Preview
3 = Updated
➔ 1003 TradeID C X X Contains the unique identifier
for this trade per instrument +
trading date, as assigned by
the exchange. Conditionally
required if reporting a Trade.
➔ 1020 TradeVolume N X X Total traded quantity
(shares/contracts) of the
trading day. It could be
present only in the Trade
(269=2) and Trade Volume
(269=B) blocks.
© B3
50
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
0 = Price Unit
1= Ticks
© B3
51
UMDF PUMA Conflated Market Data Specification Version 2.0.11
2 = Percentage
➔ 1500 MDStreamID N X X The identifier or name of the
price stream. The default
value is “E” (Electronic).
Valid Values:
E = Electronic
X - Ex-pit
T = Termo
O = Option Exercise (E&B)
N = Index
L = Lending (BTB)
A = All
➔ 6939 PriceBandType C X X Indicates the type of price
banding (tunnel):
Valid values:
1= Hard Limit
2= Auction Limits
3= Rejection Band
4= Static Limits
➔ 9325 LastTradeDate C X Date the instrument last
traded.
Used as an input in the
calculation of the
MaxTradeVol and used to
trigger an Auction. Not
published if the product has
never been traded.
Valid values:
© B3
52
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
0 = No adjustment (default)
1 = Theoretical price of EX
share.
2 = Theoretical price of EX
share when greater than
WITH price.
3 = Theoretical price of EX
share, resulting from
dividends in different types of
stocks/companies.
4 = Price arbitrated by Market
Authority
➔ 37014 MDEntryInterestRate C X Interest Rate of the Termo
Trade.
Expressed in decimal form.
For example, 1% points is
expressed and sent as 0.01.
One basis point is
represented as 0.0001.
➔ 37016 MDInsertDate N X X Date when the order was
inserted or re-inserted into
the order book (used for
GTD/GTC orders, only for
equities market).
For PUMA: In Trade (269=2 -
New or Delete) – original
trade date or manually
entered by MktOps
➔ 37017 MDInsertTime N X X The time when the order was
inserted or re-inserted into
the order book or manually
altered by MktOps, up to
milliseconds (hhmmssSSS).
➔ 37019 EarlyTermination C X Indicates if the deal is subject
to anticipated liquidation
(early termination of the
borrowing/lending). Used for
BTB instruments only.
© B3
53
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
0 = Normal termination
(default)
1 = Early termination
2 = Early termination also in
case of PTO
➔ 37023 BTBCertIndicator C X Indicates if the security
lending offer or pre-contract
is certified.
If not sent, means the offer or
pre-contract is not certified.
Used for BTB instruments
only.
Valid values:
0 = Certified (default)
1 = Not certified
➔ 37024 BTBContractInfo C X Denotes extra information
about the BTB pre-contract.
Used for BTB instruments
only.
Valid values:
1 = pre-contract (default)
2 = intention
➔ 37025 BTBGraceDate C X Indicates the minimum date
from when the borrower can
call the loan contract to an
end. Used for BTB
instruments only.
➔ 37100 IndexSeq C X Index Value sequence
number. Used only for index
instruments.
Message Trailer Y X X
When tag 1174-SecurityTradingEvent is sent with value “4”, a statistics reset must be performed
by the client, erasing the memory values of the following statistics blocks:
MDEntryType Description
2 Last Trade
3 Index Value
4 Opening Price
4 Theoretical Price (tag 286=5)
7 Trading Session High Price
8 Trading Session Low Price
© B3
54
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
02 = Trading halt (Pause)
04 = No-Open (Close)
17 = Ready to trade (Open)
18 = Not available for trading
(Forbidden)
20 = Unknown or invalid
21 = Pre-Open (Reserved)
101 = Final Closing Call
336 TradingSessionID C X Identifier for Trading Session.
Valid values:
1 = Regular Day Session
6 = Non Regular Session (After
Hours)
342 TradSesOpenTime C X X Indicates the time the auction is
scheduled to end.
625 TradingSessionSubID C X X Phase related to a given
SecurityGroup.
Valid values:
02 = Trading halt (Pause)
04 = No-Open (Close)
17 = Ready to trade (Open)
18 = Not available for trading (Pre-
close)
21 = Pre-Open
101 = Final Closing Call
1151 SecurityGroup C X X The instrument group that is
changing the trading phase.
© B3
55
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Possible value:
4 - Change of Trading Session =
Reset Trading Statistics.
101 – Security Status separated
from Group Phase
102 – Security Status following
Group Phase
Message Trailer Y X X
© B3
56
UMDF PUMA Conflated Market Data Specification Version 2.0.11
(e.g.
http://www.bvmf.com/news.html)
© B3
57
UMDF PUMA Conflated Market Data Specification Version 2.0.11
When recovering trades/index values, it´s advised to request the latest snapshot for a given
instrument first to obtain the latest value for TradeID (or IndexSeq), as the Snapshot message
(35=W) always contains the last Trade / Index Value (when available).
Using the TradeID / IndexSeq obtained in the Snapshot message (35=W), assemble a request
passing the last known value in tag 7174-StartSequence (or “0” when no previous value was
received).
Please be advised that only up to 1000 trades / index values will be returned per request.
The request can contain a maximum delta between tags 7174 and 7175 of 10000 ids (meaning an
average of 1000 trades, since they are usually issued by increments of 10).
If the last Trade History Response message (35=UTHP) received is the last message (893-
LastFragment = Y) and the TradeID or IndexSeq returned does not match the last value received
in the Snapshot, the customer application should assemble another request using the highest value
received and repeat this process until the last UTHP message contains the requested TradeID /
IndexSeq.
It´s only possible to request data for instruments which a given session has access for.
This feature is meant to recover missing trades/index values only. Customers that
require the recovery of all market data messages for the session, for charting
purposes, are encouraged to use the TCP Historical Replay feature in standard
UMDF PUMA platform.
© B3
58
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
Y = Last message
[ Instrument identification block ]
See Section “Instrument Identification Block” for tag values.
Always sent, except when a query with no specified instrument is
replied with an empty response.
© B3
59
UMDF PUMA Conflated Market Data Specification Version 2.0.11
for, in YYYYMMDD
format. Absence of this
field indicates current day
(expressed in local time
in the place of trade).
➔ 270 MDEntryPx C X X Price of the MD entry.
Conditionally required if
the MD entry relates to a
price.
➔ 271 MDEntrySize C X X Quantity represented by
the Market Data Entry.
Conditionally required
when Trade (2) or
Opening Price (4).
➔ 272 MDEntryDate Y X X Date of Market Data
Entry generation.
➔ 273 MDEntryTime Y X X Time of Market Data
Entry generation.
➔ 274 TickDirection C X X Direction of the price tick.
Conditionally required if
reporting a Trade. Valid
values:
0 = Plus Tick
1 = Zero-Plus Tick
2 = Minus Tick
3 = Zero-Minus Tick
➔ 277 TradeCondition N X X For optional use in
reporting
Trades/Imbalance. Space
delimited list of conditions
describing a
trade/imbalance.
Valid values:
R = Opening Price
X = Crossed
L = Last Trade at the
Same Price Indicator
P = Imbalance more
buyers
Q = Imbalance more
sellers
U = Exchange Last
3 = Multi Asset Trade
(Termo Vista)
1 = Leg trade
2 = Marketplace entered
trade (trade on behalf)
RL = RLP Trade
© B3
60
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
0 = New
1 = Change
2 = Delete
Valid values:
0 = Daily open/Close
settlement entry
1 = Session Open/Close
settlement entry
4 = Entry from previous
business day
5 = Theoretical
settlement entry
➔ 288 MDEntryBuyer N X X For optional use in
reporting trades (buying
party) or indicating a new
bid entry.
Note: not sent for MBP
book messages.
➔ 289 MDEntrySeller N X X For optional use in
reporting trades (selling
party) or indicating a new
offer entry.
Note: not sent for MBP
book messages.
➔ 336 TradingSessionID C X X Used to mark Non-
Regular Session trades.
If it is not present the
default value is “1”
(Regular Session).
Valid values:
1= Regular Session
6= Non Regular Session
➔ 451 NetChgPrevDay C X X Net change from previous
trading day’s closing
price vs. last traded price
(offshore currency).
© B3
61
UMDF PUMA Conflated Market Data Specification Version 2.0.11
After a successful Logon, the customer application may subscribe / unsubscribe to Market Totals
by sending a 35=UTOTQ message. Currently it´s only possible to subscribe to all Market Totals
instruments at once.
After a successful subscription (replied by a 35=UTOTP message without errors being reported on
tag 281-MDReqRejReason), the system generates one or more 35=UTOTC messages informing
the composition of each Market Totals instrument.
© B3
62
UMDF PUMA Conflated Market Data Specification Version 2.0.11
After all 35=UTOTC messages are received, the system starts to periodically send 35=UTOT
messages informing the current totals for each Market Totals instrument.
© B3
63
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Valid values:
Y = Last message
6107 IndexID N X X The Symbol of the
referred index. Only used
when the Market Totals
refers to one.
146 NoRelatedSym Y X X Specifies the number of
repeating instruments
specified.
➔ 55 Symbol Y X X Symbol identifying the
Market Total
➔ 107 SecurityDesc Y X X Description of the Market
Total.
➔ 37022 NoSecurityGroups Y X X Number of underlying
SecurityGroups.
Apart from the messages mentioned herein this document, UMDF PUMA Conflated
does not support any other FIX message types.
© B3
64
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Here are the FIX tags that are associated with book updates repeating groups (X=required,
C=conditional):
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
272 MDEntryDate X
273 MDEntryTime X
© B3
65
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Here are the FIX tags sent for such a repeating group (X= required, C=conditional):
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
272 MDEntryDate X
273 MDEntryTime X
Below is the usage table for tag 277 in this block (X= required) :
L = Last Trade at the Same Price Indicator X X Indicates the trade uses
the same price as the
previous trade.
© B3
66
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Here are the FIX tags sent for a trade repeating group (X= required, C=conditional):
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
271 MDEntrySize X
272 MDEntryDate X
273 MDEntryTime X
37016 MDInsertDate X
37017 MDInsertTime X
274 TickDirection C
277 TradeCondition C
© B3
67
UMDF PUMA Conflated Market Data Specification Version 2.0.11
1020 TradeVolume C Total traded volume for the session (only sent
when 1500=E)
1003 TradeID X
NOTE 1
The last received repeating group MDEntryType (tag 269) = 2 (Trade) does not
mean it is the last traded price. Please per attention to the following fields to
determine the last traded price: MDEntryTime (tag 273) and TradeID (tag 1003).
NOTE 2
When receiving a message with the repeating group whose MDEntryType (tag 269)
= 2 (Trade) and TradeCondition (tag 277) contains U (Exchange Last), it means
that it is not a “real” trade, but only information of the last valid trade. Therefore, the
related repeating group only informs the price and quantity, and not contains other
information like buying and selling parties, trade identification, etc.
Market Data entry type Index Value (3) is used to inform the current value of given index and
described as follows:
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
© B3
68
UMDF PUMA Conflated Market Data Specification Version 2.0.11
37100 IndexSeq X
272 MDEntryDate X
273 MDEntryTime X
274 TickDirection C
The theoretical opening price is also sent on this block (indicated by the presence of the tag 286-
OpenCloseSettlFlag) and is calculated and updated based on the orders presented in the book
during every auction including the pre-opening / pre-closing auction.
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
272 MDEntryDate X
273 MDEntryTime X
Summary information about closing trading sessions per market data stream is described below
(X= required, C=conditional):
© B3
69
UMDF PUMA Conflated Market Data Specification Version 2.0.11
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
270 MDEntryPx X
272 MDEntryDate X
273 MDEntryTime X
The FIX message syntax for Session High/Low/VWAP Trade Price repeating groups lie below (X=
required, C=conditional):
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
270 MDEntryPx X
272 MDEntryDate X
273 MDEntryTime X
© B3
70
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Here are the FIX tags normally sent for this type of repeating group (X= required, C=conditional):
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
272 MDEntryDate X
273 MDEntryTime X
NOTE
Customer applications are responsible for deleting the existing theoretical opening price and
imbalance information from memory after trading phase changes from Pre-Open (tag 625-
TradingSessionSubID = 21) for each instrument in the group whose trading status is different
from Pre-Open status (tag 326-SecurityTradingStatus = 21).
© B3
71
UMDF PUMA Conflated Market Data Specification Version 2.0.11
Here are the FIX tags normally sent for this type of repeating group (X= required, C=conditional):
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
6939 PriceBandType “1”,”2”,”3”,”4” Not sent for reference price and quantity limits
1306 PriceLimitType “0”,”2” Not sent for reference price and quantity limits
1148 LowLimitPrice X
1149 HighLimitPrice X
272 MDEntryDate X
273 MDEntryTime X
48 SecurityID X
© B3
72
UMDF PUMA Conflated Market Data Specification Version 2.0.11
22 SecurityIDSource X
207 SecurityExchange X
15 Currency X
272 MDEntryDate X
273 MDEntryTime X
Below is the basic template of both market data entry type (C) (X= required, C=conditional):
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
272 MDEntryDate X
273 MDEntryTime X
© B3
73
UMDF PUMA Conflated Market Data Specification Version 2.0.11
day’s adjusted closing price and is sent after the close of the trading session and the opening price
(price of first trades in the current session).
Here are the FIX tags normally sent for this type of repeating group (X= required, C=conditional):
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
270 MDEntryPx X
272 MDEntryDate X
273 MDEntryTime X
Usually, settlement prices are sent in a regular order during the trading day. However, Market
Surveillance can issue corrections or updates to the settlement price for the previous or current
session. Hence, it´s advised that the customer application is able to process any combination for
the tags 286-OpenCloseSettlFlag and 731-SettlPriceType.
48 SecurityID X
© B3
74
UMDF PUMA Conflated Market Data Specification Version 2.0.11
22 SecurityIDSource X
207 SecurityExchange X
37100 IndexSeq X
711 NoUnderlyings X
309 UnderlyingSecurityID X
305 UnderlyingSecurityIDSource X
308 UnderlyingSecurityIDExchange X
810 UnderlyingPx X
37018 UnderlyingPxType C
272 MDEntryDate X
273 MDEntryTime X
48 SecurityID X
22 SecurityIDSource X
207 SecurityExchange X
272 MDEntryDate X
273 MDEntryTime X
© B3
75
UMDF PUMA Conflated Market Data Specification Version 2.0.11
811
PriceDelta C Only sent for MDEntryType =”v”
1025
FixPx C Only sent for MDEntryType =”v”
31
LastPx C Only sent for MDEntryType =”v”
272
MDEntryDate X
273
MDEntryTime X
© B3
76
UMDF PUMA Conflated Market Data Specification Version 2.0.11
7 Certification Process
Before connecting to BM&FBOVESPA, the counterparty must undergo the certification process,
which is described in details in separate documents at www.bmfbovespa.com.br, follow ‘Services’
➔ ‘Certification’.
For network connectivity to the exchange, please contact the Trading Support Group (TSG). For
certification arrangements, email the Certification and Testing Center (CTC). Check the ‘Contacts’
section for details.
The network setup is similar for all segments, once connectivity will be provided via a Certification
FIX Gateway. The physical link used for certification may vary from the one to be used in
production, as it is the application that is being certified, and not the physical layer. Hence, a client
application which will run using either RCCF or RCB in the production environment may be certified
through an Internet VPN connection.
When the participant considers that the application is ready to be certified, he will connect to a
certification FIX gateway, and will follow the BM&FBOVESPA’s certification document for market
data. The counterparty will perform a series of tests which are pre-specified by BM&FBOVESPA,
and the result will be used as an evidence of passing the certification.
© B3
77