johannesburg stock exchange · 2019-09-02 · johannesburg stock exchange trading and information...

90
Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 Market Data Gateway (MITCH UDP) Version 3.10 Release Date 23 July 2019 Number of Pages 81 (Including Cover Page)

Upload: others

Post on 01-Apr-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Johannesburg Stock Exchange

Trading and Information Solution

JSE Specification Document

Volume 05 – Market Data Gateway (MITCH – UDP)

Version 3.10

Release Date 23 July 2019

Number of Pages 81 (Including Cover Page)

Page 2: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 2 / 90

1 DOCUMENT CONTROL

1.1 Table of Contents

1 DOCUMENT CONTROL ......................................................................................................... 2

1.1 Table of Contents ....................................................................................................... 2 1.2 Document Information ................................................................................................ 5 1.3 Revision History .......................................................................................................... 5 1.4 References ................................................................................................................. 7 1.5 Contact Details ........................................................................................................... 7 1.6 Definitions, Acronyms and Abbreviations ................................................................... 8

2 OVERVIEW ........................................................................................................................... 11

3 SYSTEM ARCHITECTURE .................................................................................................. 12

3.1 Real-Time Channel................................................................................................... 12 3.2 Replay Channel ........................................................................................................ 13 3.3 Recovery Channel .................................................................................................... 13

4 MESSAGE OVERVIEW ........................................................................................................ 14

5 SERVICE DESCRIPTION ..................................................................................................... 18

5.1 Overview of a Trading Day ....................................................................................... 18 5.1.1 Trading on the Order Book ....................................................................... 18 5.1.2 Trade Reporting ........................................................................................ 18 5.1.3 Start of Day ............................................................................................... 18 5.1.4 List of Instruments .................................................................................... 18 5.1.5 Ex-Marker and Annotation Information ..................................................... 18 5.1.6 Trading Status........................................................................................... 19 5.1.7 Trading Halt .............................................................................................. 19 5.1.8 Pause ........................................................................................................ 19 5.1.9 Trading Suspension .................................................................................. 20 5.1.10 Market Close ............................................................................................. 20 5.1.11 Intra-Day Trading Session Updates.......................................................... 20 5.1.12 New Instruments ....................................................................................... 20 5.1.13 End of Day ................................................................................................ 21

5.2 Order Book Management (Order Depth) .................................................................. 22 5.2.1 Adding an Order ....................................................................................... 22 5.2.2 Quotes ...................................................................................................... 22 5.2.3 Deleting an Order ..................................................................................... 22 5.2.4 Modifying an Order ................................................................................... 23 5.2.5 Executions ................................................................................................ 23 5.2.6 Messages .................................................................................................. 23

5.3 Order Book Management (Top of Book) .................................................................. 24 5.3.1 Top of Book ............................................................................................... 24 5.3.2 Messages .................................................................................................. 24

5.4 Time and Sales ......................................................................................................... 24 5.4.1 Execution of Hidden Quantity ................................................................... 25 5.4.2 Execution of Multi-Legged (Strategy) Instruments ................................... 25 5.4.3 Auctions .................................................................................................... 25 5.4.4 Off Book Trades ........................................................................................ 25 5.4.5 Trade Cancellations .................................................................................. 25

5.5 Indicative Auction Information .................................................................................. 26 5.6 Statistics ................................................................................................................... 26 5.7 Market Operations Announcements ......................................................................... 27

6 CONNECTIVITY .................................................................................................................... 28

6.1 Transmission Standards ........................................................................................... 28 6.1.1 Multicast Channels ................................................................................... 28

Page 3: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 3 / 90

6.1.2 Unicast Channels ...................................................................................... 28 6.2 Interface User Ids (CompIDs) ................................................................................... 28 6.3 Passwords ................................................................................................................ 28 6.4 Gateway Subscriptions ............................................................................................. 28 6.5 Production IP Addresses and Ports ......................................................................... 29 6.6 Failover and Recovery ............................................................................................. 30

7 RECOVERY .......................................................................................................................... 31

7.1 Recipient Failures ..................................................................................................... 31 7.1.1 Replay Channel ........................................................................................ 31 7.1.2 Recovery Channel .................................................................................... 33

7.2 Failures at JSE ......................................................................................................... 40 7.2.1 Snapshots on the Real-Time Channel ...................................................... 40 7.2.2 Resetting Sequence Numbers .................................................................. 40

8 MESSAGE FORMATS .......................................................................................................... 41

8.1 Packet Composition.................................................................................................. 41 8.2 Sequence Numbers .................................................................................................. 41 8.3 Timestamps .............................................................................................................. 41 8.4 Data Types ............................................................................................................... 42 8.5 Message Overview ................................................................................................... 43

8.5.1 Administrative Messages .......................................................................... 43 8.5.2 Application Messages ............................................................................... 43

8.6 Unit Header .............................................................................................................. 46 8.7 Administrative Messages (Client – Initiated) ............................................................ 47

8.7.1 Login Request ........................................................................................... 47 8.7.2 Replay Request ........................................................................................ 47 8.7.3 Snapshot Request .................................................................................... 48 8.7.4 Logout Request......................................................................................... 50

8.8 Administrative Messages (Server – Initiated) ........................................................... 50 8.8.1 Heartbeat .................................................................................................. 50 8.8.2 Login Response ........................................................................................ 50 8.8.3 Replay Response ..................................................................................... 51 8.8.4 Snapshot Response ................................................................................. 52 8.8.5 Snapshot Complete .................................................................................. 54

8.9 Application Messages .............................................................................................. 57 8.9.1 Time .......................................................................................................... 57 8.9.2 System Event ............................................................................................ 57 8.9.3 Symbol Directory....................................................................................... 58 8.9.4 Symbol Status ........................................................................................... 62 8.9.5 Add Order ................................................................................................. 65 8.9.6 Add Attributed Order ................................................................................. 66 8.9.7 Order Deleted ........................................................................................... 66 8.9.8 Order Modified .......................................................................................... 67 8.9.9 Order Book Clear ...................................................................................... 67 8.9.10 Order Executed ......................................................................................... 68 8.9.11 Order Executed With Price/Size ............................................................... 68 8.9.12 Trade ......................................................................................................... 69 8.9.13 Auction Trade............................................................................................ 70 8.9.14 Off Book Trade.......................................................................................... 71 8.9.15 Trade Break .............................................................................................. 71 8.9.16 Recovery Trade ........................................................................................ 72 8.9.17 Auction Info ............................................................................................... 75 8.9.18 Statistics .................................................................................................... 75 8.9.19 Extended Statistics ................................................................................... 78 8.9.20 * - Generally, fields of data type ‘Price’ will have an eight byte integer field

with eight implied decimal places. There is an exception for the Turnover field where the field will have an eight byte integer field with four implied decimal places. News ............................................................................... 79

8.9.21 Top of Book ............................................................................................... 79

Page 4: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 4 / 90

9 OFF BOOK TRADE TYPES ................................................................................................. 81

10 TRADING REASON CODES ................................................................................................ 85

11 CORPORATE ACTION INFORMATION .............................................................................. 86

11.1 Valid Ex-Markers ...................................................................................................... 86 11.2 Valid Annotations...................................................................................................... 86

12 APPENDIX ............................................................................................................................ 87

12.1 Conversion of Order ID ............................................................................................ 87 Base 62 mapping table ............................................................................................. 88

12.2 Conversion of Trade ID ............................................................................................ 88

13 MARKET DATA GATEWAYS .............................................................................................. 90

Page 5: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 5 / 90

1.2 Document Information

Drafted By JSE

Status Final

Version 3.10

Release Date 23 July 2019

1.3 Revision History

Page 6: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 6 / 90

Date Version Description

08 July 2011 1.00 Initial draft

30 November 2011 1.01 JSE Specification Updates

13 March 2012 1.02 Updates to include the new Futures Closeout Auction

20 June 2012 1.03 Updates and clarifications added to specifications

05 July 2013 2.00 Functionality updates related to the 2013 product upgrade

08 August 2013 2.01 Applied minor document corrections

- Corrected the type of the LENGTH field from Uint8 to Uint16

- Corrected Volatility auction call field value from ‘E’ to ‘e’

4 November 2013 2.02 Minor document corrections

21 February 2014 2.03 Functionality updates for the introduction of the JSE Colocation service

22 February 2014 2.04 Minor typing correction to the Market Data Groups for the un-throttled MITCH Gateway for the JSE market.

22 August 2014 2.05 Naming convention change to MITCH

29 February 2016 3.00 Integrated Trading and Clearing Project changes.

Equity Market Enhancements:

Hidden Order functionality enhanced

Introduction of On Book Cross Order Trade

Introduction of EOD Volume Auction

13 April 2016 3.01 Updated section 8.9.1 with correct offset values

4 August 2016 3.02 Update to Trading Reason Codes

Updated the top of the book offsets

Added limitation on Auction info message

Updated field description for Halt Reason field.

Updated Trading Reason Codes

Updated Reserved field

Updated Notional Exposure, Notional Delta Exposure, Open Interest field descriptions

Enumeration Y added to the Open Close Indicator field

23 September 2016 3.03 Update to data type for Turnover field in Extended Statistics message

31 January 2017 3.04 Off book trade times updated

Information related to PUBLISH_INACTIVE_INSTRUMENTS configuration removed

6 February 2017 3.05 Inactive and Suspended enumerations added to Symbol Status field.

4 October 2017 3.06 8.9.19 Description of Notional Exposure field updated.

5.2.6 , 5.3.2 Message details for MITCH Order Depth Service and MITCH Top of the Book service added

07 November 2017 3.07 8.9.21 Corrected the offset in the Top of Book message

23 July 2018 3.08 5.1.12 Updated to include new Derivative Symbol Directory updates

8.9.3 New fields added to Symbol Directory message to disseminate additional information for derivative instruments

8.9.3 Link to segments removed

31 January 2019 3.09 New fields added to Symbol Directory message to disseminate additional information for derivative instruments that enable users to identify instruments better

Page 7: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 7 / 90

Length of contract multiplier updated (from 4 to 8) and offsets of trailing fields updated accordingly.

Description of contract multiplier updated.

Contract multiplier field will be 0 if the field does not exist for a derivative instrument. Description of contract multiplier updated.

Section updated to reflect that the system caters to any statistics request as long as the order book has been specified in the SysGuard configuration

New annotation added to make the document in sync with current production system setup.

Section updated to provide additional details on the dissemination of large negative values in the Extended Statistics message.

NOTE added to Top of Book message regarding a scenario where there can be an inconsistency between Underlying Reference Price field in Top of Book message and Full Depth channel.

19 July 2019 3.10 5.1.4 Detail added to Closing Price publication in Symbol Directory message

1.4 References

None

1.5 Contact Details

JSE Limited

Trading and Market Services Division

One Exchange Square

Gwen Lane, Sandown

South Africa

Tel: +27 11 520 7000

www.jse.co.za

Trading and Market Services ITAC Queries

Email: [email protected]

Disclaimer: All rights in this document vests in the JSE Limited (“JSE”) and Millennium IT Software (Private) Limited (”Millennium IT”). Please note that this document contains confidential and sensitive information of the JSE and Millennium IT and as such should be treated as strictly confidential and proprietary and with the same degree of care with which you protect your own confidential information of like importance. This document must only be used by you for the purpose for which it is disclosed. Neither this document nor its contents may be disclosed to a third party, nor may it be copied, without the JSE's prior written consent. The JSE endeavours to ensure that the information in this document is correct and complete but do not, whether expressly, tacitly or implicitly, represent, warrant or in any way guarantee the accuracy or completeness of the information. The JSE, its officers and/or employees accept no liability for (or in respect of) any direct, indirect, incidental or consequential loss or damage of any kind or nature, howsoever arising, from the use of, or reliance on, this information.

Page 8: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 8 / 90

1.6 Definitions, Acronyms and Abbreviations

Automated Trades (ATs)

On Book trades executed during continuous trading.

Auction Call The trading session immediately prior to an uncrossing (i.e. opening, closing, etc.). During this session orders are accumulated for execution in the auction and information on the indicative auction price is disseminated at a regular interval.

Client A Recipient connected to the Recovery or Replay channel of the market data feed.

FTP File Transfer Protocol

Indicative Auction Information

The Indicative Auction Price (if any) and the Indicative Auction Volume (if any) at the Indicative Auction Price

IPv4 IPv4 is a connectionless protocol for use on packet-switched Link Layer networks (e.g., Ethernet). It operates on a best effort delivery model in that it does not guarantee delivery, nor does it assure proper sequencing or avoidance of duplicate delivery. These aspects, including data integrity, are addressed by an upper layer transport protocol (e.g., Transmission Control Protocol).

JSE Johannesburg Stock Exchange.

MBO Market By Order (i.e. order depth), all the orders in the book will be disseminated on the feed. Time priority will be considered. Therefore the orders will be individually disseminated in terms of time priority.

MBP Market By Price (i.e. price depth), the aggregated volume of orders in the book based for each price point will be disseminated on the feed.

NSX Namibian Stock Exchange

Orders Executable order in the order book.

Off Book Trade A trade negotiated outside the System yet reported to the System, in accordance with the JSE rules and directives.

On Book Trade An Automatic Trade which is a trade automatically executed in the System which can either be an Automated Trade or an Uncrossing Trade.

Recipient A subscriber to the Real-Time multicast (UDP) channel of the market data feed who connects to the replay and recovery channels for recovery.

SAST South African Standard Time (GMT+2)

Server The MITCH market data Gateway at the JSE for the JSE and NSX markets

SS Snapshot

Trade Reporting The reporting of an Off Book trade.

Page 9: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 9 / 90

TCP/IP Transmission Control Protocol is a connection-oriented protocol, which means that it requires handshaking to set up end-to-end communications. Once a connection is set up user data may be sent bi-directionally over the connection.

Reliable – TCP manages message acknowledgment, retransmission and timeout. Multiple attempts to deliver the message are made. If it gets lost along the way, the server will re-request the lost part. In TCP, there's either no missing data, or, in case of multiple timeouts, the connection is dropped.

Ordered – if two messages are sent over a connection in sequence, the first message will reach the receiving application first. When data segments arrive in the wrong order, TCP buffers the out-of-order data until all data can be properly re-ordered and delivered to the application.

Heavyweight – TCP requires three packets to set up a socket connection, before any user data can be sent. TCP handles reliability and congestion control.

Streaming – Data is read as a byte stream, no distinguishing indications are transmitted to signal message (segment) boundaries.

UDP UDP is a simpler message-based connectionless protocol. Connectionless protocols do not set up a dedicated end-to-end connection. Communication is achieved by transmitting information in one direction from source to destination without verifying the readiness or state of the receiver.

Unreliable – When a message is sent, it cannot be known if it will reach its destination; it could get lost along the way. There is no concept of acknowledgment, retransmission or timeout.

Not ordered – If two messages are sent to the same recipient, the order in which they arrive cannot be predicted.

Lightweight – There is no ordering of messages, no tracking connections, etc. It is a small transport layer designed on top of IP.

Datagrams – Packets are sent individually and are checked for integrity

only if they arrive. Packets have definite boundaries which are honored upon receipt, meaning a read operation at the receiver socket will yield an entire message as it was originally sent.

No congestion control - UDP itself does not avoid congestion, and it's possible for high bandwidth applications to trigger congestion collapse, unless they implement congestion control measures at the application level.

Uncrossing Trades (UTs)

On Book trades executed during any auction uncrossing.

VWAP Volume weighted average price.

CPP Session Closing Price Publication is the session where the Closing Price is calculated and published to the Market

Page 10: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 10 / 90

CPX Session

Cross Order Trade

Pegged Order

Pegged Limit Order

EOD Volume Auction Uncrossing

Closing Price Cross is the session where automated trading can occur at the Closing Price calculated during the CPP session

A trade resulting from the submission of a Cross Order by market participants that results only in a trade and has no impact to orders.

A hidden order pegged to the mid-point of the best bid and offer price or pegged to the best bid(offer) for instrument

A pegged order with a stop price also known as a hard limit.

A dark auction call which is triggered at end of the day after the CPX session. The uncrossing will happen at the closing price.

Page 11: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 11 / 90

2 OVERVIEW

The market data feed is a stream of fixed width binary messages which provides the following real-time information for each instrument traded on the Equity and Derivatives/Bonds Markets.

(i) Order depth for the entire order book. The feed provides information on the side, price and displayed quantity of each order in the order book.

(ii) Price, volume, trade type, date and time for each executed On Book trade that is published to the market.

(iii) Price, volume, trade type, date and time of each confirmed Off Book trade.

(iv) Indicative Auction Information which is the auction uncrossing price and the associated trade volume.

(v) Official previous closing price, opening price and closing price.

(vi) Trading status of the instrument.

(vii) News

(viii) Extended Statistics

In addition, each feed enables participants to download the Symbol Directory messages for all instruments.

The above services will be provided to Clients via the Market Data Gateways listed in section 13. Clients need to meet the required minimum bandwidth per Gateway in order to subscribe to the un-throttled Gateway.

The un-throttled MITCH Gateway will not be available or be published via the JSE London Point of Presence (PoP) due to the large bandwidth requirement for this feed, however all international and local clients, who connect directly to the JSE in Johannesburg and have the required bandwidth, will be allowed to subscribe to this Gateway.

Page 12: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 12 / 90

3 SYSTEM ARCHITECTURE

The market data feed is load balanced by market data group.

While each group will contain multiple instruments, each instrument is assigned to just one market data group. Although the group an instrument is assigned to may change from day to day, it will not change within a day.

Each market data group includes a multicast Real-Time channel for the dissemination of real time market data.

Two TCP recovery channels are available per market data group: Replay and Recovery.

While a recipient may connect to the Replay channel to recover from a small data loss, it should use the Recovery channel after a large data loss (i.e. late joiner or major outage).

3.1 Real-Time Channel

The Real-Time channel is the primary means of disseminating market data. Real-time updates to instruments and all market data supported by the feed are available on this multicast channel.

The list of active instruments in the market data group is broadcast at the start of the trading day via the Symbol Directory message. The details of instruments created during trading hours as well as updates of the trading status of instruments are also disseminated via the Symbol Status message.

Real-time updates to order books and indicative auction information are published along with the details of each trade (Order Executed, Order Executed With Price/Size, Trade, Auction Trade and Off-Book Trade.). The official opening price, previous close and closing price of each instrument will also be disseminated on this channel. The Previous Close is disseminated via the Symbol Directory message. The Opening and Closing Prices are disseminated via the Statistics message. Announcements will also be disseminated via this channel.

The Extended Statistics message, which provides clients with more detailed statistics like High Price, Low Price, VWAP etc is also published on this channel..

Each application message includes a sequence number which is incremented by one for every message disseminated on the Real-Time channel within a particular market data group. The sequence numbers of each is reset to 1 at the start of each day.

The server will send a Heartbeat message to exercise the communication line during periods of inactivity. A Heartbeat will be sent every HEART_BEAT <2> seconds when the Real-Time channel is inactive.

Market Data Group (Main Site)

Real-Time

Channel A

(UDP)

Replay

Channel

(TCP)

Recovery

Channel

(TCP)

Instruments,

Order Book Updates,

Trades,

Indicative Auction Info,

Trading Status

Recipients

Order Book

Snapshot

Market Data Group (Backup Site)

Real-Time

Channel B

(UDP)

Replay

Channel

(TCP)

Recovery

Channel

(TCP)

Instruments,

Order Book Updates,

Trades,

Indicative Auction Info,

Trading Status

Order Book

Snapshot

Snapshot

Request

Snapshot

Request

Missed

Messages

Missed

Messages

Missed

Message

Request

Missed

Message

Request

Page 13: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 13 / 90

Recipients have access to two identically sequenced Real-Time feeds: one from the main site (Feed A) and one from the backup feed (Feed B). It is recommended that Recipients process both feeds and arbitrate between them to minimise the probability of a data loss.The sequence numbers of both feeds will be identical. However, those connected at the main site should consider the additional latency of Feed B.

3.2 Replay Channel

The TCP Recovery channel should be used by Recipients to recover from a small-scale data loss.

The Replay channel permits recipients to request the retransmission of a limited number of messages already published on the Real-Time channel.

The Replay channel supports the retransmission of the last REPLAY_CACHE_SIZE<250,000> messages published on the Real-Time channel. The channel does not support the retransmission of messages published on the Recovery channel or from previous trading days.

While a Replay channel is available from the backup feed, it will only be activated in the unlikely event of an outage at the main site.

3.3 Recovery Channel

The TCP Recovery channel should be used by Recipients to recover from a large-scale data loss (i.e. Later joiner or major outage).

The Recovery channel permits recipients to request a snapshot of the order book and statistics for any active instrument in the market data group as well as the current trading status. In addition, it enables recipients to request the retransmission of the trades published during the last MAX_TRADE_HISTORY_DURATION <60> minutes on the Real-Time channel. Furthermore it is possible to request the retransmission of the MAX_ANNOUNCEMENT_COUNT last <10,000>market announcements that were published by the system. It also enables recipients to download the list of active instruments in the market data group. This channel may be used by recipients to recover from a large-scale data loss.

While a Recovery channel is available from the backup feed, it will only be activated in the unlikely event of an outage at the main site.

Page 14: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 14 / 90

4 MESSAGE OVERVIEW

The market data feed utilises the MITCH application messages described below to disseminate instruments and market data for the Equity, Derivative and Bond Markets of JSE and Equity Market of NSX.

Page 15: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 15 / 90

Message Description Usage (By Channel)

Real-Time Recovery Replay

Time Sent by the server for every second for which at least one application message is generated. This message is not transmitted during periods where no other application messages are generated.

√ × √

System Event Sent by the server to indicate the start and end of the day.

√ × √

Symbol Directory Used to disseminate information (e.g. Instrument ID, segment, ISIN, etc.) on each instrument. The previous closing price of each instrument is also disseminated.

√ √ √

Symbol Status Indicates the trading session (e.g. opening auction call, continuous trading, etc.) that currently applies to an instrument.

√ √ √

Add Order Sent to indicate that a visible limit or market order is added to the order book.

√ √ √

Add Attributed Order Indicates that an attributable limit order is added to the order book. The identity of the submitting firm is included in the message. Only applicable for Derivatives/Bonds markets.

√ √ √

Order Deleted Sent to indicate that the remainder of a visible order is cancelled.

√ × √

Order Modified Indicates that the quantity or price of a visible order has been updated. The message will include an indication whether the order has retained or lost its time priority.

√ × √

Order Book Clear Sent to instruct Recipients to remove all orders from the order book for the specified instrument.

√ × √

Page 16: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 16 / 90

Order Executed

(Automated Trade)

Indicates that the visible portion of an order is fully or partially filled at its displayed price. The executed quantity is included in the message.

√ × √

Order Executed With Price/ Size

(Automated Trade)

Sent if a visible order is fully or partially filled at a price that is different from its displayed price. The executed quantity and price is included in the message along with an indication of whether the trade should update time and sales and statistics displays.

√ × √

Trade

(Automated)

Sent if a hidden Pegged or Pegged limit order is fully or partially filled and therefore results in a trade.

√ × √

Auction Trade Sent to report details of any auction trades (e.g. opening, closing, etc.). The message indicates the price and bulk volume associated with the auction trades.

√ × √

Off Book Trade Sent to report the details of a trade negotiated outside the System yet reported to the System in accordance with the JSE Rules and Directives.

√ × √

Trade Break Indicates that a previously published trade (On Book or Off Book) is cancelled.

√ × √

Recovery Trade Used to disseminate the details of missed On Book and Off Book trades on the Snapshot channel.

× √ ×

Auction Info Used to disseminate the indicative auction price and the tradable quantity (volume) at this price.

√ × √

Statistics Used to disseminate the official opening and closing prices.

√ √ √

Extended Statistics Used to disseminate the High Price, Low Price, VWAP, Volume, Turnover and Number of Trades.

√ √ √

Page 17: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 17 / 90

News Used to publish market operations announcements.

√ × √

Top Of Book Used to communicate the best bid and the best offer prices and sizes of an order book in Top of Book service

√ √ ×

Page 18: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 18 / 90

5 SERVICE DESCRIPTION

5.1 Overview of a Trading Day

5.1.1 Trading on the Order Book

The regular trading day for On Book trading will, for each instrument, consist of many sessions: Start of Trading, Opening Auction, Continuous Trading, Intraday Auction, Halt, Halt and Close, Pause, Closing Auction, Closing Price Publication, Closing Price Cross, Post-Close etc. The start time for each of these sessions may vary from one set of instruments to another. The Symbol Status message will be published on the Real-Time channel to indicate when a particular session has commenced for an instrument with a Book Type of “1”.

5.1.2 Trade Reporting

The JSE is open for the reporting of Off Book trades depending on the Market from 7:00 to 18:30 SAST each trading day. Please refer to Volume 00 for all trading cycles per market.

Off Book trades can be reported for suspended instruments. Hence Off Book statistics will be published for such suspended instruments even after publishing its closing price upon suspension.

At the start of the reporting period a Symbol Status message, with a Trading Status of “T” and a Book Type of “2”, will be broadcast for each instrument for which trade reporting is permitted.

Similarly, at the end of the trade reporting period a Symbol Status message, with a Trading Status of “v” and a Book Type of “2”, will be broadcast for each such instrument.

A Symbol Status message, with a Trading Status of Market Close “c” and a Book Type of “2”, will be broadcast for each such instrument at the market close.

5.1.3 Start of Day

The market data feed begins at the Start of Day. Recipients should aim to join the feed at this time SEC_DEF_DELAY_FROM_SOD <One> minute after the Start of Day, a System Event message will be published with the Event Code “O”. Outside the Time message, this will be the first application message for the day.

5.1.4 List of Instruments

A Symbol Directory message will be broadcast for each active, inactive and suspended instrument on the Real-Time channel at the Start of Day and each time an instrument is modified intra-day.

The official previous closing price of each instrument will also be published via the Symbol Directory message at the Start of Day.

If an instrument has multiple order books associated with it (e.g. Normal, Off Book) the previous closing price disseminated via the Symbol Directory message will be the previous close for the Normal order book (priority will always be given to the Normal order book). Should an instrument only have an Off Book order book attached, the previous closing price will be that of the Off Book closing price.

This will be subsequent to the System Event message indicating Start of Day. There will be no Symbol Directory message published for inactive instruments.

5.1.5 Ex-Marker and Annotation Information

The Ex-Marker and Annotation information will be broadcast real time through the Symbol Directory message via the “Corporate Action” field.

If Ex-Marker and Annotation information associated with an instrument are updated during the inter-day period, the notification to the market will be published at market start of the next trading day.

Page 19: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 19 / 90

If Ex-Marker and Annotation information associated with an instrument are updated during the intra-day period, the notification to the market will be published real time at the time of associating the Corporate Action Indicators with the instrument.

The Ex-Marker and Annotation information with regard to a particular instrument will be disseminated in a particular format as described below.

<Ex-MarkerID(XX)><EffectiveFromDate(YEARMMDD)><EffectiveToDate(YEARMMDD)>

As a single instrument may contain multiple Ex-Markers and/or Annotations, the “Corporate Action” field will publish the information in a string format delimited by a space as per the example below.

GT2011041920110520 XD2011010520110705

5.1.6 Trading Status

The Symbol Status message will disseminate the trading status changes of each instrument real time as and when the instrument moves from one session to another during the trading day. Symbol Status message will also indicate whether the status changes take place in the normal order book, bulletin book, negotiations order book or Ooff Bbook.

5.1.7 Trading Halt

An instrument may be halted from trading during the day.

Trading in an instrument can be halted manually by JSE Market Operations. Trading of an instrument being manually halted could be resumed via the current trading status for On Book trading and to the Off Book trading session (e.g. Start Trade Reporting) for trade reporting.

The Symbol Status message will be published to indicate when a particular instrument is halted manually. The Symbol Status message will be published with Halt (H) as the Trading Status. The reason for the halt and whether it applies to On Book trading or Off Book trade reporting will be specified in the Halt Reason and Book Type fields respectively.

When trading is resumed a Symbol Status message will be published with the appropriate status (i.e. Re-Opening Auction Call (f), Regular Trading (T), etc.) or Start Trade Reporting (T) for on book trading and trade reporting respectively with the relevant Book Type.

An instrument could also be halted automatically as a result of a circuit breaker breach. Trading of such an instrument could be resumed by moving to continuous trading.

The Symbol Status message will be published to indicate when a particular instrument is halted automatically. The Symbol Status message will be published with Halt (H) as the Trading Status. The reason for the halt will be specified in the Halt Reason field. The end time of the halt will be specified in the New End Time field.

When trading is resumed for Off Book trade reporting a Symbol Status message will be published with the current Trading Status of Start Trade Reporting (T) and Book Type of Off Book (2).

When an instrument is halted clients will not be able to submit new orders or amend open orders of the halted instrument. However open orders can be cancelled. A trading halt will not be carried forward to the next trading day.

5.1.8 Pause

JSE Market Operations may also manually trigger the pause session during the day. Trading of an instrument being paused can be resumed to the current trading status.

Page 20: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 20 / 90

The Symbol Status message will be published to indicate when a particular instrument is paused. The Symbol Status message will be published with Pause (l) as the Trading Status.

When trading is resumed a Symbol Status message will be published with the current trading status.

5.1.9 Trading Suspension

An instrument may be suspended during or outside trading hours. The suspension may be lifted later in the day or it may be carried forward to subsequent trading days. The Symbol Directory message will be published, with a Status of “S”, if an instrument is suspended during trading hours. A suspension only applies to On Book trading.

If at the start of a trading day, an instrument is still in a suspended state it will be included in the Symbol Directory messages published by the server.

If the suspension is lifted during the trading day recipients will receive a Symbol Directory message with a space in the Status field. Separate Symbol Status messages will also be published if On Book trading and/or Off Book trade reporting is enabled for the instrument.

5.1.10 Market Close

For active, inactive and suspended instruments Symbol Status messages will be disseminated at the market close.

5.1.11 Intra-Day Trading Session Updates

5.1.11.1 Extension of an Auction Call Session

An auction call session (Volatility, Intra-Day, etc.) may be extended due to a market order imbalance or if the current auction price is significantly different from the last sale. An auction call session could also be extended or even shortened manually by JSE Market Operations.

Upon such events, a Symbol Status message will be broadcast with the Session Change Reason of 1 (Extended by Market Ops) or 2 (Shortened by Market Ops) or 3 (Market Order Imbalance) or 4 (Price Outside Range) in the field Session Change Reason. The message will indicate whether the change applies to On Book trading or Off Book trade reporting and this message will also include the new time at which the auction will take place in the New End Time field and the current instrument status in Trading Status.

5.1.11.2 Adjustment of other trading sessions by Market Operations

JSE Market Operations may manually extend or shorten a particular trading session. In such a case, a Symbol Status message will be broadcast with the Session Change Reason of 1 (Extended by Market Ops) or 2 (Shortened by Market Ops) in the field Session Change Reason. The message will indicate whether the change applies to On Book trading or Off Book trade reporting and this message will also include the new time at which the session will end in the New End Time field and the current instrument status in Trading Status.

5.1.11.3 Automatic trading session updates

A trading session (Regular Trading, Opening Auction Call, etc.) may be changed automatically to another session (Volatility Auction Call, Halt) due to a circuit breaker breach caused by volatile trading. In such a case, a Symbol Status message will be broadcast with the Session Change Reason of 5 (Circuit Breaker Tripped) in the field Session Change Reason. The message will indicate whether the change applies to On Book trading or Off Book trade reporting and this message will also include the new time at which the session will end in the New End Time field and the current instrument status in Trading Status.

5.1.12 New Instruments

New instruments may be created during the trading day. In such a case, the server will publish a Symbol Directory message to notify recipients of the details of the new instrument (symbol,

Page 21: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 21 / 90

segment, underlying, expiration date, etc.). Separate Symbol Status messages will also be published depending on how many order books are attached to the instrument.

Symbol Directory messages disseminated on MITCH gateway instances configured to distribute market data for derivative instruments will have additional fields compared to the Symbol Directory message disseminated for equity instruments. These fields will contain additional information to easily distinguish between derivative instruments.

5.1.13 End of Day

The market data feed will stop at End of Day. A System Event message will be published with the Event Code “C”. This will be the last application message for the day.

All open TCP/IP connections to the Recovery or Replay channels will be disconnected by the server at End of Day. Clients will be unable to login to these channels after this time.

Page 22: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 22 / 90

5.2 Order Book Management (Order Depth)

The market data feed provides Recipients with the order depth for the entire order book. It provides the side, price and displayed quantity of each active order. The MITCH feed is based on Market By Order. Clients must build the order book sequence using the price and time.

Details of all active orders will be sent at the start of the first session in which the order book is published i.e. at the start of the Start of Trading session. There after the order book updates will be sent incrementally real time.

5.2.1 Adding an Order

An Add Order message will be sent each time a new visible order is added to the order book. The message includes the side, price and displayed quantity of the order. On receipt of this message Recipients should add the order to the order book.

The message also includes an identifier of the order which will be referenced on all future updates (e.g. executed, deleted, modified, etc.) for the order. The recipients will be able to identify their own orders with this Order ID while ensuring anonymity as the same Order ID will also be tagged in the execution reports carrying the relevant order information in the FIX or Native Trading Gateways. The MITCH messages will represent this Order ID in binary while the Trading Gateways will represent the same Order ID in Hexadecimal. Order IDs are unique across instruments and trading days.

This Order ID will further be tagged for leg trades that occur as a result of a trade in a strategy instrument. Within the corresponding Execution Report message sent via the Drop Copy Gateway the SecondaryOrderID (198) field will be populated. Market Orders

The displayed quantity of each market order is disseminated during a Pre-Auction session via the Add Order message. Such a message will include a price of zero and an indication that the order is a market order via the Flags field of Market Order (1=Yes). On receipt of this message Recipients should add the order to the order book.

5.2.1.1 Attributed Orders

The Add Attributed Order message will be used in the case of an attributed order. The identity of the firm that submitted the order will be included in the message. This is applicable only for derivative and bond instruments.

5.2.2 Quotes

Quote message will be handled as two separate buy and sell orders. Buy side of the quote is added to the order book before sell side. Once a Quote is added, an Add Order message for the buy side will be sent which will be followed by an Add Order message for the sell side.

5.2.3 Deleting an Order

An Order Deleted message will be used to notify recipients if a displayed order is cancelled or expired. The Order ID identifier of the order will be included in the message. On receipt of this message recipients should remove the order from the order book. It is also used in scenarios when an existing order in the book is modified in such a way that the order executes with the passive side. If the order has any remaining quantity after the execution, it is added back to the order book via the Add Order message or the Add Attributed Order message (in the case of an attributed order).The same Order ID identifier of the order will be included in the message.

Page 23: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 23 / 90

5.2.4 Modifying an Order

An Order Modified message will be sent if the display quantity of an order or its price is changed or if an order loses time priority. The message will include the applicable display quantity and price as well as an indication of whether the order has retained or lost its time priority. A modification will not result in the order being assigned a new Order ID. On receipt of this message Recipients should update the order in the order book with the new values received. Order Modified message will be used when a quote is modified by the user.

5.2.5 Executions

An Order Executed message will be sent whenever a displayed order is fully or partially filled at its displayed price. On receipt of this message recipients should deduct the quantity specified in the field Executed Quantity from the quantity displayed for the order in the order book. The Order Executed message does not contain an executed price. The execution price will be the limit price of the order as indicated in the last Add Order, Add Attributed Order or Order Modified message sent for it.

An Order Executed With Price/Size message will be sent if a displayed order is fully or partially filled at a price different from its displayed price (e.g. during an auction). On receipt of this message recipients should change the quantity displayed for the order in the order book to that specified in the field Display Quantity. The message contains an explicit execution price and an instruction in the Printable field as to whether or not the trade should update time and sales and statistics displays.

As an order may be filled in multiple executions, Recipients may receive several Order Executed and Order Executed With Price/Size messages for a particular order. The effect of each message is cumulative. When the displayed quantity of an order reaches zero it should be removed from the order book.

5.2.6 Messages

Messages used when order book is published as an order depth service:

Message Trade Condition or Type

Order Executed Any execution to a visible portion of an order.

A message is only generated for the passive order that was executed.

The order ID will be stamped in the message.

A message will not be generated for the aggressive order.

Order Executed with Price/Size

Any execution where the price of the trade is different to the price of the order. In addition, during the Closing Price Cross trading session for passive orders in a book with their order IDs that gets executed due to an aggression.

When an auction takes place, this message is generated for each displayed order that was executed, (both passive and aggressive) with their respective order IDs, with the Printable field set to 'No'.

The message is not used in continuous trading. Trade Any execution to a non-visible portion of an order.

Auction Trade Any auction trade.

Off-Book Trade Any off-book trade.

Page 24: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 24 / 90

Trade Break When a trade is cancelled.

5.3 Order Book Management (Top of Book)

5.3.1 Top of Book

The Top of Book message will be used to communicate the best bid and the best offer prices and sizes of an order book in the Top of Book service. Separate Top of Book messages are used to communicate best bid details and best offer details. The Action field of the message will denote if the top of book of the specified side should be updated or deleted. If the Action field is set to Update (1), then the clients should repaint their top of book picture of the specified side with the information provided in the message. This could mean that a new price is present or that the limit or market visible quantity at top of book has changed. If for a given side there are no visible market and limit order quantities, then the Top of Book message will be published with an Action of Delete (2).

NOTE: In a scenario when an option is traded with values such that the Options calculator cannot calculate a valid Delta value, MITCH users consuming both the Full Depth and Top of Book channels will experience a slight inconsistency in the 'Underlying Reference Price' field.

1. The Full Depth – Order Executed message disseminates a 0 value for Underlying reference price (similar to how it is displayed on Service Desk)

2. The Top of Book – Trade message disseminates the last known valid underlying reference price (see screenshot below where I’ve filtered all trades for the instrument.. notice the last valid trade had underlying reference price of 74).

Due to clients validating order prices before submission, trades happening in Production with an invalid delta value is extremely unlikely.

5.3.2 Messages

Messages used when order book is published as a Top-Of-Book service:

Message Trade Condition or Type

Trade Any execution to either a visible or non-visible portion of an order.

Auction Trade Any auction trade.

Off-Book Trade Any off-book trade.

5.4 Time and Sales

Recipients may build time and sales and statistics displays by combining the execution information received via the Order Executed, Order Executed With Price/Size, Trade, Auction Trade and Off-Book Trade messages published by the server.

Each of the above messages will include a Trade ID identifier of the trade which will be referenced if a trade is ever cancelled. The recipients will be able to identify their own trades with this Trade ID while ensuring anonymity as the same Trade ID will also be tagged in the trade capture reports carrying the relevant trade information in the Post Trade Gateway. The MITCH messages will represent this Trade ID in binary while the Post Trade Gateway will represent the same Trade ID in Hexadecimal. The Trade IDs used for a particular type of trade (i.e. On Book or Off Book) are unique across instruments and days. However, an On

Page 25: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 25 / 90

Book trade and an Off Book trade may have the same Trade ID but the prefix ensures uniqueness i.e. currently On Book and Off Book trade IDs are prefixed with the values ‘T’ and ‘N’, thereby ensuring uniqueness. In MITCH, these prefixes are normally removed when converting these trade IDs to binary format. In such a scenario, the trade IDs may therefore be the same for an On Book and Off Book trade and the JSE suggests that the prefix is somehow retained to ensure uniqueness.

5.4.1 Execution of Hidden Quantity

The Trade message is sent whenever a hidden Pegged or Pegged Limit order is fully or partially filled during regular trading. This message will also be used to inform the market of any Cross Order Trades that appear in the market. An Order Executed or Order Executed With Price/Size message will not be published for hidden order executions.

5.4.2 Execution of Multi-Legged (Strategy) Instruments

Trade messages are sent for the leg instruments of a multi-legged instrument as a result of the execution of two explicit orders in the strategy (multi-legged ) instrument. The Trade Condition Flag in the Trade message will be set to Yes.

Order Executed With Price/Size message or Order Executed message is sent for the executions of the Strategy instrument.

5.4.3 Auctions

Each displayed order executed in the auction will be updated via an Order Executed With Price/Size message irrespective of whether or not it was executed at its displayed price. The Printable field of each such message will be “N” to indicate to Recipients that they should not update time and sales and statistics displays as the Auction Trade message is published with the Auction statistics.

The executions that take place during an auction will be reported as a single bulk print via the Auction Trade message. This message will include details of the type of auction (i.e. opening, closing, Volatility, Intra-Day etc.), the auction price and the total volume executed.

The EOD Volume Auction will only publish an Auction Trade message at the end of the auction period and no Auction information as all activity within this auction period will not be visible to the market.

5.4.4 Off Book Trades

The details of privately negotiated trades confirmed by JSE will, after the applicable delay, be disseminated via the Off Book Trade message. In addition to the instrument, price, quantity and Trade ID, this message will include the trade type as well as the date and time the trade was agreed between the firms.

5.4.5 Trade Cancellations

A Trade Break message will be sent if a trade is cancelled by the JSE or by members as approved by JSE Surveillance. The message will include the Trade ID of the cancelled trade along with an indication whether it is an On Book, Negotiated Trade or Off Book trade. A trade cancellation is final. Once a trade is cancelled it cannot be reinstated.

If a trade is executed during a session where trade publication is disabled and is cancelled during a session where it is enabled, recipients will not receive a Trade Break message. If a trade is executed during a session where trade publication is enabled and is cancelled during a session where it is disabled or when there is no session, recipients will receive a Trade Break message. For On Book trades, the original session would be the session the trade took

Page 26: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 26 / 90

place in. For Off Book trades, the original session would be the session the trade was published in.

Details of trade corrections are not disseminated on the market data feed. The JSE will not be using trade correction functionality.

5.5 Indicative Auction Information

The market data feed provides Recipients with the indicative price as well as the indicative executable auction volume for each auction (i.e. opening, closing, etc.) via the Auction Info message. The indicative auction price is disseminated along with the executable volume.

Indicative auction info message does not contain information about the imbalance quantity as required by JSE although the millennium system supports it. Therefore if the imbalance quantity is updated, the system will still generate an auction information message however no information related to the imbalance quantity is disseminated in the message.

The update frequencies and times are configurable and may be changed with due notice to Recipients. Indicative Auction Information will be published real time during the following auction call sessions:

(a) Opening Auction Call

(b) Intra-day Auction Call

(c) Volatility Auction Call

(d) Re-Opening Auction Call

(e) Closing Auction Call

(f) FCO Auction Call

If an indicative auction price does not exist (i.e. the order book is not locked or crossed) the Imbalance Direction field of the message will be “Insufficient Orders for Auction” i.e. “O”.

Note: EOD Volume Auction will not disseminate any Auction Info messages.

5.6 Statistics

The market data feed provides Recipients with the official opening and closing prices for each instrument via the Statistics message. The method used to compute the opening/closing price (e.g. auction, last sale, mid-point, etc.) will be specified in the Open Close Indicator field. Statistics calculated will be rounded down to three decimal places.

In the unlikely that event the opening or closing price needs to be corrected by JSE Market Operations, a Statistics message will be transmitted with the corrected value. The message will include a negative value in the Price field if a previously published price is to be cleared. If a correction is published the Open/Close Price Indicator will be set to F=Manual.

Trade Cancellations and Corrections performed may update the official opening and closing prices for each instrument and will be reflected via the Statistics message.

The Market data feed will also provide High Price, Low Price, VWAP, Volume, Turnover and Number of Trades via the Extended Statistics message. The fields will include a large negative value (i.e. -92233720367.54775808) in the relevant fields (i.e. High Price, Low Price etc.) if a previously published value is to be cleared. Clearing of a value can happen,

1. If there was only one trade for the instrument and the trade was cancelled.

2. If the statistic is manually cleared by Market Operations.

Statistics will not be updated for cross orders.

The Open Interest for derivatives products will also be published via the Extended Statistics message. This field must only be used if populated with a value as the JSE will only be updating this field periodically.

Page 27: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 27 / 90

A negative value will be published if the previously published price is cleared due to trade cancellations clearing the statistic.

5.7 Market Operations Announcements

JSE Market Operations announcements are included in the market data feed. In addition to the actual text of the announcement and an associated headline or subject, recipients are provided with its urgency, the time it was generated and the list of instruments and underlying instruments, if any, to which the announcement relates.

Market Operations Announcements are disseminated via the News message.

Page 28: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 28 / 90

6 CONNECTIVITY

6.1 Transmission Standards

6.1.1 Multicast Channels

The Real-Time channel utilises UDP over IP version 4 (IPv4) Ethernet standards. UDP header information is as defined in the IETF RFC 791 (IPv4) and RFC 768 (UDP) transmission standards. Each UDP packet will contain just one Unit Header.

6.1.2 Unicast Channels

The Recovery and Replay channels utilise TCP over IP version 4 (IPv4) Ethernet standards. TCP header information is as defined in the IETF RFC 793 standard and IPv4 is as defined in the RFC 791 standard.

6.2 Interface User Ids (CompIDs)

The Interface User ID (CompID) and the IP address of each client wishing to connect to the Recovery and Replay channels must be registered with JSE before communications can begin. Each Interface User ID (CompID) will be assigned a password on registration.

The same Interface User ID (CompID) can be used to login to Recovery and Replay channels across market data groups. A client could also use the same Interface User ID (CompID) to login to the Recovery and Replay Channels of both FAST and MITCH feeds.

However, an Interface User ID (CompID) may, at any particular time, only be logged into one TCP channel across all market data groups. (This means that the Interface User ID cannot login to other TCP channels of other market data groups nor can it login to another TCP channel in the same market data group at the same time. i.e. cannot login to the Recovery and Replay channels at the same time.)

6.3 Passwords

Each new Interface User ID (CompID) will be assigned a password on registration. Clients will not be required to change the password on first use.

6.4 Gateway Subscriptions

The market data feed for the JSE Equity, Derivative and Bond Markets is provided via both a throttled and un-throttled Gateway. Clients who are subscribed to the un-throttled Gateway should ensure they receive the market data updates via an un-restricted line. i.e. un-throttled output message rate requires adequately sized bandwidth.

The market data feed for the NSX Equity Market is only provided via a throttled gateway. See section 13 – Market Data Gateways, for a complete list of gateways allocated to all markets.

Market data services provided via the throttled and un-throttled Gateways will be the same on both Gateways including the replay and recovery functionality, the only difference is that they will publish at different output rates as per throttled or un-throttled configuration.

Page 29: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 29 / 90

6.5 Production IP Addresses and Ports

The feed is load balanced by market data group. While each group will contain multiple instruments, each instrument is assigned to just one market data group. Although the group an instrument is assigned to may change from day to day, it will not change within a day. The Symbol Directory messages available on the Real-Time channel of the various market data groups may be utilized by recipients to identify the instruments assigned to each group.

Market Data groups are a logical grouping and do not affect the Market data services. Initially, the only market data grouping that will be implemented for instruments is by the relevant market. (i.e. JSE and NSX). The Market Data Group identifiers will be assigned as below. Clients are required to specify the Market Data Group identifier accordingly on performing Replay Request message via the Replay Channel based on the server the client is connected to.

Throttled Gateway:

Un-throttled Gateway:

Market Data Group

Replay Channel

Primary Secondary

Equity Market

JSE 1 2

NSX 3 4

Derivative Markets

JSE_EDM-F 9 A

JSE_EDM-L1 B C

JSE_FXM

JSE_BONDS

-F

F G

JSE_FXM

JSE_BONDS

-L1

H I

JSE_CDM

JSE_IRM

-F

L M

JSE_CDM

JSE_IRM

-L1

N O

Page 30: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 30 / 90

Market Data Group

Replay Channel

Primary Secondary

Equity Market

JSE 5 6

Derivatives Markets

JSE_EDM 7 8

JSE_FXM

JSE_BONDS D E

JSE_CDM

JSE_IRM J K

The IP addresses and ports of the production servers for both the throttled and un-throttled gateways will be detailed in a consolidated JSE Production Market Facing Client document. The JSE will assign each registered client to one of the primary IP addresses and ports and one of the secondary IP addresses and ports.

6.6 Failover and Recovery

The JSE Market will have a resilient solution at the primary site. For all TCP/IP connections clients will be given two IP addresses, a Primary and Backup address for the Production SiteThe IP addresses for the Disaster Recovery Site will be the same, as the JSE will implement a NAT-ing of services. Clients should use the Production Site IP addresses until directed that a site failover has been invoked.On unexpected disconnection from the Production Site primary gateway a client should try to reconnect 3 times to the primary gateway with a time out value of three seconds on each connection before attempting to connect to the Production Site secondary gateway – and this should then be retried a further 3 times. After six failed connection attempts (3 on each gateway) the client should contact JSE Market Ops for guidance.

In case a successful connection is made with the secondary gateway and reconnection is required on unexpected disconnection, it is expected that the client should try to reconnect to the last successful IP (secondary gateway) three times and then attempt to connect to the primary gateway three times. If the six connection attempts (3 on each gateway) fail, the client should contact JSE Market Ops for guidance.

Page 31: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 31 / 90

7 RECOVERY

7.1 Recipient Failures

Recipients have access to two identically sequenced Real-Time feeds: one from the main site (Feed A) and one from the backup feed (Feed B). Recipients should process both feeds and arbitrate between them to minimise the probability of a data loss.

A message loss can be detected using the Sequence Number field included in the Unit Header of each message on the Real-Time channel. If a gap in sequence numbers is detected on the Real-Time channel, the recipient should assume that some or all of the order books maintained on its systems are incorrect and initiate one of the recovery processes outlined below.

7.1.1 Replay Channel

The TCP Replay channel should be used by recipients to recover from a small-scale data loss. It permits clients to request the retransmission of a limited number of messages already published on the Real-Time channel. The channel supports the retransmission of the last REPLAY_CACHE_SIZE <250,000> messages published on the Real-Time channel.

Each Interface User ID (CompID) may login to the Replay channel of a particular market data group up to USER_MAX_LOGINS_FOR_REPLAY_CHANNEL <1000> times each day. The total number of Replay Requests that a client may send for a particular market data group is also limited to USER_MAX_REQUESTS_FOR_REPLAY_CHANNEL to <1000> each day.

Recipients may request the JSE to reset its login and request counts. This feature is intended to help manage an emergency situation and should not be relied upon as a normal practice.

While a client may submit multiple Replay Requests, it may not have more than USER_MAX_CONCURR_REQUESTS_FOR_REPLAY_CHANNEL <10> concurrent unprocessed requests at any point in time. If a client submits multiple requests on the Replay channel, they will be processed serially (i.e. one at a time). Active requests of multiple clients will be served on a FIFO basis. Clients are unable to cancel outstanding Replay Requests.

If consecutive LOGIN requests are sent by an Interface User ID (CompID) within a time span of MINIMUM_LOGIN_DELAY <10> milliseconds, the System will treat this Interface User ID as a potential Denial of Service attack. If this behavior of consecutive LOGIN requests is repeated 3 times by an Interface User, the Gateway will apply a delay of 1 second in the response message to the LOGIN message to prevent rapid login attempts. Until the response is sent to the Interface User, the Interface User will be maintained in the System in a ‘Pending State’ and will not be able to Login to the Replay Channel until the delayed response is sent.

7.1.1.1 Establishing a Connection

The client should use the relevant IP address and port details as outlined in the JSE Client Enablement Information Form (CEIF) to establish a TCP/IP session with the Replay channel. The client should initiate a session by sending the Login Request message. The client should identify itself by specifying its CompID in the Username field. The server will validate the Interface User ID (CompID) in the Username, password and IP address of the client. The server will validate the Interface User ID (CompID), password and IP address of the client.

Once the client is authenticated, the server will respond with a Login Response message with the Status “A”.

The client must wait for the server’s Login Response before sending additional messages. Messages received from the client before the exchange of logons will be ignored.

If a logon attempt fails because of an invalid Interface User ID (CompID), IP address or invalid password or if a message is sent prior to the login being established, the server will break the TCP/IP connection with the client without sending a Login Response message.

Page 32: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 32 / 90

If a logon attempt fails because of an invalid or expired password, a locked Interface User ID (CompID) or if logins are not currently permitted, the server will send a Login Response and then break the TCP/IP connection with the client.

If a client has already logged into the Replay channel USER_MAX_LOGINS_FOR_REPLAY_CHANNEL <1000> times during the current day, the server will reject any new logon attempt with a Login Response and then break the TCP/IP connection. The Status of such a Login Response message will be “b”.

The Replay channel supports only MAX_CONCURRENT_LOGINS_FOR_REPLAY_CHANNEL <150> concurrent logins across all clients per gateway. Once the number of active logins has reached this limit, the server will reject login requests from additional clients with a Login Response and then break the TCP/IP connection. The Status of such a Login Response message will be “d”.

If a Login Request is not received within USER_MAX_IDLING_TIME <5> seconds of the establishment of a TCP/IP connection or a Replay Request is not received within USER_MAX_IDLING_TIME <5> seconds of a successful logon, the server will break the TCP/IP connection with the client.

Each time the TCP/IP connection is terminated, it will increment the counter of the amount of times each Interface User ID (CompID) has logged in to the Replay channel.

A second attempt to log in by an already logged in client will be rejected via a Status of “Failed (Other)” i.e. ‘e’ in the Replay Response message.

A second attempt to log in to the same Market Data Replay channel or to a Market Data Replay channel of a different Market Data Group, by an already logged in CompID will be rejected immediately by breaking the TCP/IP connection without sending a Login Response. No message is sent to the client in this case, as the client is not authenticated. The original session is not affected by this disconnection.

At any point in time the Replay channel can queue only _CONCURRENT_LOGINS_FOR_REPLAY_CHANNEL <150> unprocessed requests from a client. The server will reject any further Snapshot Request messages via a Snapshot Response message. The Status of such a message will be “c”.

7.1.1.2 Heartbeats

The server will not send heartbeats on the Replay channel during periods of inactivity.

7.1.1.3 Requesting Missed Messages

Once connected to the Replay channel, clients may use the Replay Request message to request the retransmission of missed messages. The request should include the sequence number of the first message in the range to be retransmitted along with the number of messages to be retransmitted.

The retransmission request will be serviced from the server’s cache of the last REPLAY_CACHE_SIZE <250,000> messages published on the Real-Time channel. If the retransmission request includes one or more messages that are not in the server’s cache, the entire request will be rejected and no messages will be retransmitted.

7.1.1.4 Response to a Retransmission Request

The server will respond to the Replay Request with a Replay Response message to indicate whether the retransmission request is successful or not. A Status other than “A” will indicate that the request has been rejected. The First Message and Count fields of the Replay Response will always be zero if the response is rejected.

In the case of a successful request, the server will retransmit the requested messages immediately after the Replay Response. The sequence numbers of the retransmitted messages will be the same as when they were first disseminated on the Real-Time channel. As the header on the Replay Channel will only carry the sequence number of the first message, the framing of the replayed messages inside of Unit Headers may differ between the original transmission and the retransmission.

Page 33: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 33 / 90

A retransmission request cannot be cancelled once it has been submitted.

7.1.1.5 Termination of the Connection

If the client does not send a Logout Request and terminate the connection within USER_MAX_IDLING_TIME <5> seconds of the retransmission of the last missed message, the server will break the TCP/IP connection with the client.

The server will terminate the TCP/IP connection if the number of messages that are buffered for a client exceeds USER_MAX_BUFFERED_COUNT <1,000>.

7.1.2 Recovery Channel

The TCP Recovery channel should be used by Recipients to recover from a large-scale data loss (i.e. late joiner or major outage).

The Channel permits clients to request a snapshot of the order book and statistics for the active instruments in the market data group as well as their current trading status. It also enables recipients to download the list of active and suspended instruments in the market data group.

In addition, it enables Recipients to request the retransmission of trades published during the last MAX_TRADE_HISTORY_DURATION <60> minutes on the Real-Time channel. It also enables recipients to download the list of active instruments in the market data group. Furthermore it enables the recipients to request the retransmission of the last MAX_ANNOUNCEMENT_COUNT <10,000> market announcements published on Real Time channel.

Each Interface User ID (CompID) may login to the Recovery channel of a particular market data group up to USER_MAX_LOGINS_FOR_SNAPSHOT_CHANNEL <500> times each day. The total number of Snapshot Request messages that a client may submit for a particular market data group is also limited to USER_MAX_REQUESTS_FOR_SNAPSHOT_CHANNEL <500> each day.

Recipients may request JSE to reset its login and request counts. This feature is intended to help manage an emergency situation and should not be relied upon as a normal practice.

While a client may submit multiple Snapshot Requests, it may not have more than USER_MAX_CONCURR_REQUESTS_FOR_SNAPSHOT_CHANNEL <10> concurrent unprocessed requests at any point in time. If a client submits multiple concurrent requests, they will be processed serially (i.e. one at a time). Active requests of multiple clients will be served on a FIFO basis. Clients are unable to cancel outstanding Snapshot Requests.

7.1.2.1 Establishing a Connection

The client should use the relevant IP address and port details as outlined in the JSE Client Enablement Information Form (CEIF) to establish a TCP/IP session with the Recovery channel. The client should initiate a connection by sending the Login Request message. The client should identify itself by specifying its Interface User ID (CompID) in the Username field. The server will validate the Interface User ID (CompID), password and IP address of the client.

Once the client is authenticated, the server will respond with a Login Response message with the Status “A”.

The client must wait for the server’s Login Response before sending additional messages. Messages received from the client before the exchange of logons will be ignored.

If a logon attempt fails because of an invalid Interface User ID (CompID), IP address or invalid password or if a message is sent prior to the login being established, the server will break the TCP/IP connection with the client without sending a Login Response message.

If a logon attempt fails because of a locked Interface User ID (CompID) or if logins are not currently permitted, the server will send a Login Response and then break the TCP/IP connection with the client.

Page 34: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 34 / 90

If a client has already logged into the Recovery channel USER_MAX_LOGINS_FOR_SNAPSHOT_CHANNEL <500> times during the current day, the server will reject any new logon attempt with a Login Response and then break the TCP/IP connection. The Status of such a message will be “b”.

The Recovery channel supports only MAX_CONCURRENT_LOGINS_FOR_SNAPSHOT_CHANNEL _CONCURRENT_LOGINS_FOR_REPLAY_CHANNEL <150> concurrent logins across all clients. Once the number of active logins has reached this limit, the server will reject login requests from additional clients with a Login Response and then break the TCP/IP connection. The Status of such a Login Response message will be “d”.

If a Login Request is not received within USER_MAX_IDLING_TIME <5> seconds of the establishment of a TCP/IP connection or a Snapshot Request is not received within USER_MAX_IDLING_TIME <5> seconds of a successful logon, the server will break the TCP/IP connection with the client.

A second attempt to log in by an already logged in client will be rejected via a Status of “Failed (Other)” i.e. ‘e’ in the Snapshot Response message.

A second attempt to log in to the same Market Data Snapshot channel or to a Market Data Snapshot channel of a different Market Data Group, by an already logged in CompID will be rejected immediately by breaking the TCP/IP connection without sending a Login Response. No message is sent to the client in this case, as the client is not authenticated. The original session is not affected by this disconnection.

At any point in time the Recovery channel can queue only _CONCURRENT_LOGINS_FOR_REPLAY_CHANNEL <150>unprocessed requests from a client. The server will reject any further Snapshot Request messages via a Snapshot Response message. The Status of such a message will be “c”.

7.1.2.2 Heartbeats

The server will not send heartbeats on the Recovery channel during periods of inactivity.

7.1.2.3 General Event Model

Once connected to the Recovery channel, clients may use the Snapshot Request message to download the list of active and suspended instruments, request a snapshot of an order book, statistics or trading status or download the trades published during the last MAX_TRADE_HISTORY_DURATION <60> minutes or recover the last MAX_ANNOUNCEMENT_COUNT <10,000> market announcements.. The Snapshot Type field of the message should be used to indicate the nature of the request.

The server will transmit a Snapshot Response to indicate whether the request is accepted or rejected. A Status other than “A” will indicate that the request is rejected.

If the request is successful, a series of application messages (e.g. Add Order, Symbol Directory, Recovery Trade, etc.) will then be disseminated to serve the request.

A Snapshot Complete message will be sent once all application messages have been transmitted in response to a request. Snapshot Complete messages may also be sent prior to the final Snapshot Complete to indicate that all messages relating to a particular sub book or instrument have been transmitted.

A Snapshot Request may optionally include a Request ID which, if specified, will be included in each Snapshot Response and Snapshot Complete sent in response to it.

7.1.2.4 Instrument List

A Snapshot Request with a Snapshot Type of Instrument (2) may be used to request the details of all active and suspended instruments in the market data group or those in the group from a particular segment. The request will be deemed as one for all instruments if it does not contain a value in the Segment field. The Sequencer Number, Instrument ID, Sub Book and

Page 35: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 35 / 90

Last Trade Time fields of the request will be ignored by the server when processing a snapshot request for an instrument list.

The server will send a Snapshot Response to indicate whether the request is accepted or rejected. The Sequence Number and Order Count fields of this message should be ignored as these fields should be used when processing Order Book snapshots, which require the Gateway to send out sequence numbers and order counts so that the order book can be built. These fields are not required for other snapshot updates and therefore these fields should be ignored for any other updates.

If the request is successful, the server will then disseminate a series of Symbol Directory messages. Each such message will provide the details of a requested instrument.

The server will transmit a Snapshot Complete once the details of all instruments are disseminated. The message will include the appropriate value in the Segment field if the request was for a particular segment. In addition the message will include the sequence number of the Real-Time channel with which the instrument snapshot was synchronised. The Symbol, Instrument ID, Sub Book and Trading Status fields of the message should be ignored when processing a snapshot request for an instrument list.

The Snapshot Response will be immediately followed a Snapshot Complete if there are no active or suspended instruments for the specified segment.

7.1.2.5 Requesting Order Book Snapshots

Order books are maintained per sub book of an instrument (e.g. Regular or Off Book) A Snapshot Request with a Snapshot Type of Order Book (0) may be used to request a snapshot of the current order book for one of the following:

(i) All sub books for all instruments in a specified segment.

(ii) All sub books for a single instrument.

(iii) Multiple sub books for a single instrument.

(iv) A single instrument and sub book combination.

The JSE currently supports three sub books per instrument: Regular (On Book), Off Book and negotiated trades. An order book request that includes the Off Book or negotiated trades sub book will be rejected.

A request that relates to a single sub book of an instrument may include the sequence number of the Real-Time multicast channel from which the client can build its order book. The sequence number, if any, included in such a Snapshot Request is validated by the server against the sequence number with which its current order book snapshot is synchronised. In the unlikely event the sequence number included in the Snapshot Request is higher than that with which the server’s current order book snapshot is synchronised, the request will be rejected. The Snapshot Response transmitted in such an event will include a Status of “O”.

The value in the Sequence Number field of a Snapshot Request is ignored by the server if the request relates to more than one sub book.

7.1.2.6 Response to an Order Book Snapshot Request for an Instrument

The server will send a Snapshot Response to indicate whether a Snapshot Request for an Instrument is accepted or rejected. The Sequence Number and Order Count fields of the Snapshot Response will be zero and should be ignored if the request is rejected.

The Snapshot Response will, if the request is accepted, include the message sequence number of the Real-Time channel with which the instrument’s order book snapshot will be synchronised. This sequence number will be equal to or higher than the one, if any, included in the Snapshot Request. The response will also include the total number of active orders for the requested instrument. The client should buffer all messages on the Real-Time channel for the order book with sequence numbers greater than that specified in the Snapshot Response. Each order that is sent out is MBO. The orders are sent out based on Price Time priority

Page 36: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 36 / 90

If the request is successful, the server will disseminate a snapshot of the current order book for the requested instrument via a series of Add Order and Add Attributed Order messages. Order book snapshots for the requested instrument will be transmitted serially (i.e. one book at a time). Each such message will represent a single active order and will not include a sequence number. If a particular price point contains multiple orders, they will be disseminated in terms of their time priority (i.e. the oldest order first).

The server will transmit the Snapshot Complete message once the details of all active orders for the instrument are disseminated. The message will include the sequence number of the Real-Time channel with which the order book snapshot was synchronised and the instrument and sub book to which it relates. It will also include the current trading status of the instrument in the sub book. The client may begin processing the buffered messages for the instrument from the Real-Time channel once the order book snapshot is processed.

7.1.2.7 Response to an Order Book Snapshot Request for a Segment

The server will send a Snapshot Response to indicate whether a Snapshot Request for a segment is accepted or rejected. The Sequence Number and Order Count fields of the Snapshot Response will be zero and should be ignored if the request is rejected.

If the request is successful, the server will disseminate a snapshot of the current order book for all instruments in the requested segment via series of Add Order and Add Attributed Order messages. Each such message will represent a single active order and will not include a sequence number (orders will be in price time priority sequence). If a particular price point contains multiple orders, they will be disseminated in terms of their time priority (i.e. the oldest order first as the oldest order within a price point has the higher priority).

Order book snapshots for the requested instruments will be transmitted serially (i.e. one instrument at a time). The server will transmit a Snapshot Complete message once the details all active orders for a particular instrument’s order book are disseminated. This message will include the sequence number of the Real Time channel with which the order book snapshot for the instrument was synchronised. While such a Snapshot Complete will include the instrument and sub book to which it relates, it will not include a value in the Segment field. The segment is only specified in the final Snapshot Complete message once the details of all instruments belonging to the segment are disseminated. It will also include the current trading status of the book. The client may begin processing the buffered messages for the instrument from the Real-Time channel once its order book snapshot is processed. A Snapshot Complete message will be sent if On Book trading is enabled for an instrument even if there are no active orders for it. A Snapshot Complete message will not be sent if On Book trading is disabled for an instrument.

The server will also transmit a Snapshot Complete message once the details of all active orders for all instruments in the requested segment are disseminated. The Sequence Number field of the message will be zero. While the final Snapshot Complete will include an indication of the segment to which it relates.

The Sequence Number, Instrument ID, Sub Book and Trading Status fields of the message should be ignored.

7.1.2.8 Statistics Snapshots

Statistics are maintained per sub book of an instrument (i.e. Regular, Off Book or Negotiated Trades). A Snapshot Request with a Snapshot Type of Statistics (4) may be used to request a snapshot of the statistics for one of the following:

(i) All sub books for all instruments in a specified segment.

(ii) All sub books for a single instrument.

(iii) Multiple sub books for a single instrument.

(iv) A single instrument and sub book combination.

The request will be deemed as one for a segment if it contains a value in the Segment field (the contents, if any, of the Instrument ID and Sub Book fields will be ignored). It will be

Page 37: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 37 / 90

deemed as one for all sub books of an instrument if it only contains a value in the Instrument ID field.

The server will disseminate the statistics for the order book definitions which are specified in

the SysGuard parameter ORDER_BOOKS_FOR_STATISTICS upon request. A statistics

request that includes a sub book which is not specified in the parameter will be rejected by the server.The server will send a Snapshot Response to indicate whether the request is accepted or rejected. The Sequence Number and Order Count fields of this message should be ignored as these are not required for the statistics messages.

If the request is successful, the server will then disseminate a snapshot of the statistics for each requested sub book via a series of Statistics and Extended Statistics messages. A separate message will be published for each type of statistic (e.g. opening price, closing price, etc.) and a separate Extended Statistics message will be published for each sub book.

Statistics snapshots for the requested sub books will be transmitted serially (i.e. one sub book at a time). The server will transmit a Snapshot Complete message once all statistics for a particular sub book are disseminated. The message will include the sequence number of the Real-Time channel with which the statistics snapshot was synchronised and the instrument and sub book to which it relates. It will also include the current trading status of the sub book. The client may begin processing the buffered messages for the instrument from the Real-Time channel once the statistics snapshot is processed. The Segment field of the message should be ignored. Only a Snapshot Complete message will be transmitted for a sub book if there are no statistics for it (i.e. no trades for the day).

In the case of segment level request, the server will also transmit a Snapshot Complete message once the statistics for all sub books in the requested segment are disseminated. This final Snapshot Complete will include an indication of the segment to which it relates.

The Sequence Number, Instrument ID, Sub Book and Trading Status fields of the message should be ignored.

7.1.2.9 Missed Trades

A Snapshot Request with a Snapshot Type of Trades (3) may be used to request missed trades for all instruments in a particular segment or for a single instrument. The ability to request missed trades for a particular instrument and sub book combination is not currently available1. The request must include the sending time of the last trade on the Real-Time channel processed by the client in the Last Trade Time field. If the sending time is not specified, the snapshot response will denote that the request is rejected due to invalid time formats. The ‘Status’ field will denote the value of ‘e’ Failed (Other). The request will be deemed as one for a segment if it contains a value in the Segment field (the contents, if any, of the Instrument ID field will be ignored).

The server only caches the trades published during the last MAX_TRADE_HISTORY_DURATION <60> minutes on the Real-Time channel. If the request includes a Last Trade Time that is prior to that of the oldest trade in the server’s cache, all eligible trades in the cache will be retransmitted. Clients will not be able to recover trades that are not in the server’s cache.

The server will send a Snapshot Response to indicate whether the request is accepted or rejected. The Sequence Number and Order Count fields of this message should be ignored as they are not required.

If the request is successful, the server will then disseminate the continuous trades, auction trades, Off Book trades and trade cancellations missed by the client via a series of Recovery Trade messages.

Trades for the requested instruments will be transmitted serially (i.e. one instrument at a time). The server will transmit a Snapshot Complete once all trades for a particular instrument are disseminated. The message will indicate the instrument to which it relates. In addition the message will include the sequence number of the Real-Time channel with which the missed trades snapshot was synchronized. The, Segment, Sub Book and Trading Status fields of the

1 The Sub Book field is ignored by the server if the Snapshot Request is for missed trades.

Page 38: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 38 / 90

message should be ignored. Only a Snapshot Complete message will be transmitted for an instrument if there are no trades for it in the server’s cache.

In the case of segment level request, the server will also transmit a Snapshot Complete message once trades for all instruments in the requested segment are disseminated. This final Snapshot Complete will include an indication of the segment to which it relates. The Sequence Number, Instrument ID, Sub Book and Trading Status fields of the message should be ignored as they are not required.

7.1.2.10 Trading Status

Trading status is maintained per sub book of an instrument (i.e. Regular, Off Book or negotiated trades). A Snapshot Request with a Snapshot Type of Instrument Status (1) may be used to request the trading status for one of the following:

(i) All sub books for all instruments in a specified segment.

(ii) All sub books for a single instrument.

(iii) Multiple sub books for a single instrument.

(iv) A single instrument and sub book combination.

The request will be deemed as one for a segment if it contains a value in the Segment field (the contents, if any, of the Instrument ID and Sub Book fields will be ignored). It will be deemed as one for all sub books of an instrument if it only contains a value in the Symbol field.

The server will send a Snapshot Response to indicate whether the request is accepted or rejected. The Sequence Number and Order Count fields of this message should be ignored.

If the request is successful, the status of each instrument for each requested sub book will be disseminated via a series of Symbol Status messages. Each such message will include the applicable Trading Status and a Session Change Reason of Unavailable (9).

The server will transmit a Snapshot Complete message after the Symbol Status for a particular sub book. The Snapshot Complete will include the sequence number of the Real-Time channel with which the trading status was synchronised and the instrument and sub book to which it relates. The Segment and Trading Status fields of the message should be ignored.

In the case of segment level request, the server will also transmit a Snapshot Complete message once the trading status for all instruments for all sub books in the requested segment are disseminated. This final Snapshot Complete message will include an indication of the segment to which it relates. The Sequence Number, Instrument ID, Sub Book and Trading Status fields of the message should be ignored.

7.1.2.11 Requesting Missed Market Operations Announcements

A Snapshot Request with a Snapshot Type of News (5) may be used to request missed market operations announcements published by the server. The request should include the sending time of the last announcement on the Real-Time channel processed by the client in the Recover From Time field.

The server only caches the last MAX_ANNOUNCEMENT_COUNT <10,000> market announcements published on the Real-Time channel. If the request includes a Recover From Time that is prior to that of the oldest announcement in the server’s cache, all eligible announcements in the cache will be retransmitted. Clients are unable to recover announcements not in the server’s cache.

The server will send a Snapshot Response to indicate whether the request is accepted or rejected. The Sequence Number and Order Count fields of this message should be ignored.

If the request is successful, the server will then disseminate market operations announcements missed by the client via a series of News messages.

Announcements will be transmitted serially. The server will transmit a Snapshot Complete once all qualifying announcements are disseminated. The message will include the sequence

Page 39: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 39 / 90

number of the Real-Time channel with which the announcements snapshot was synchronised. A Snapshot Complete message will be transmitted if there are no announcements in the server’s cache.

7.1.2.12 Termination of the Connection

If the client does not send a Logout Request and terminate the connection or submit another Snapshot Request within USER_MAX_IDLING_TIME <5> seconds of the transmission of the Snapshot Complete message, the server will break the TCP/IP connection with the client.

Page 40: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 40 / 90

7.2 Failures at JSE

7.2.1 Snapshots on the Real-Time Channel

In the unlikely event of an outage at the JSE, Recipients may be required to refresh their order book and statistics displays for one or more instruments.

In such a scenario the server will, on the Real-Time channel, broadcast an Order Book Clear message for each affected instrument. In such an event Recipients must discard the contents of their order book and statistics displays for these instruments.

The server will then transmit a series of Add Order, Add Attributed Order, Statistics and Extended Statistics messages, on the Real-Time channel, to disseminate the current order book and statistics for each affected instrument.

7.2.2 Resetting Sequence Numbers

If the market data feed is, in the unlikely event of an outage, failed over to the backup feed or is restarted, the message sequence number of the Real-Time channel will be reset to 1.In such a case, messages sent on the Real-Time channel prior to the resetting of sequence numbers will not be available for retransmission on the Replay channel.

Trades executed just prior to and during the failover or restart may not be published on the Real-Time channel once it resumes. Clients may, if required, recover these trades from the Recovery channel.

It should be noted that the system disseminates the full order book and statistics snapshot (as per section 7.2.1) but recipients will need to recover trades separately if they wish to do so.

Page 41: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 41 / 90

8 MESSAGE FORMATS

This section provides details on the data types, unit header, nine administrative messages and seventeen application messages utilised by the server. For each message, a description of each field is provided along with the applicable data type, offset and length (in bytes).

8.1 Packet Composition

The Unit Header is used to deliver all administrative and application messages to and from the server on all three channels. A Unit Header may contain zero, one or more payload messages. While a Unit Header may contain multiple application messages, it will never contain more than one administrative message. A Unit Header will not contain both administrative and application messages.

8.2 Sequence Numbers

All application messages transmitted by the server on the Real-Time and Replay channels are sequenced. The Unit Header only contains the sequence number of the first message. Each subsequent message in the Unit Header will have an implied sequence number one greater than the previous message. The sequence number of first message of the next Unit Header can be determined by adding the value in the Message Count field of the Unit Header to the value in its Sequence Number field.

The application messages sent by the server on the Recovery channel as well as all administrative messages transmitted by both the server and the client are un-sequenced. The Unit Header used to transport all such messages, other than a Heartbeat, will include a Sequence Number of zero.

8.3 Timestamps

Application messages on the Real-Time channel will include an indication of when they were transmitted. The server will, on the Real-Time channel, transmit a Time message for every second for which at least one application message is generated. The time specified in this message serves as a reference for the times specified in all other application messages. The timestamps in all the other messages are specified as a nanosecond offset from the most recent Time message. The Time message is not transmitted during periods where no application messages are generated for the Real-Time channel.

The retransmission of messages on the Replay channel will include the Time messages originally broadcast on the Real-Time channel (i.e. with the same timestamp).

While Time messages will be included when an order book snapshot is provided on the Recovery channel, the times in these messages will be different from those published when the active orders were originally disseminated on the Real-Time channel. Clients are unable to determine the time at which an active order was submitted from the messages transmitted on the Recovery channel.

Page 42: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 42 / 90

8.4 Data Types

The fields of the various messages utilised by the server will support the data types outlined below.

Data Type

Length Description

Alpha Variable These fields use standard ASCII character bytes. They are left justified and padded on the right with spaces.

Bit Field 1 A single byte used to hold up to eight 1-bit flags. Each bit will represent a Boolean flag. The 0 bit is the lowest significant bit and the 7 bit is the highest significant bit.

Byte 1 A single byte used to hold one ASCII character.

Date 8 Date specified in the YYYYMMDD format using ASCII characters.

Time 8 Time specified in the HH:MM:SS format using ASCII characters.

Price 8 Signed Little-Endian encoded eight byte integer field with eight implied decimal places.

UInt8 1 8 bit unsigned integer.

UInt16 2 Little-Endian encoded 16 bit unsigned integer.

UInt32 4 Little-Endian encoded 32 bit unsigned integer.

UInt64 8 Little-Endian encoded 64 bit unsigned integer.

All Reserved Fields with Alpha Data Type will be populated with Spaces (Hex 0x20). All other Reserved Fields will be populated with Hex 0x00.

Page 43: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 43 / 90

8.5 Message Overview

8.5.1 Administrative Messages

Name Message Type Usage

ASCII Hex

Heartbeat - - Used by the server, on the Real-Time channel, to exercise the communication line during periods of inactivity.

Login Request

(soh) 0x01 Used by the client to login to the Replay or Recovery channel.

Login Response

(stx) 0x02 Used by the server to accept or reject a login request to the Replay or Recovery channel.

Logout Request

(enq) 0x05 Used by the client to logout of the Replay or Recovery channel.

Replay Request

(etx) 0x03 Used by the client to request a retransmission of messages on the Replay channel.

Replay Response

(eot) 0x04 Used by the server to respond to a retransmission request on the Replay channel.

Snapshot Request

• 0x81 Used by the client to request for a snapshot of the current order book on the Recovery channel.

Snapshot Response

‚ 0x82 Used by the server to respond to a snapshot request on the Recovery channel.

Snapshot Complete

ƒ 0x83 Used by the server to indicate that the transmission of an order book snapshot is complete.

8.5.2 Application Messages

Applications messages may only be sent by the server.

Name Message Type Usage

ASCII Hex

Time T 0x54 Sent by the server for every second for which at least one application message is generated. This message is not transmitted during periods where no other application messages are generated.

System Event

S 0x53 Sent to indicate the start and end of the day.

Symbol Directory

R 0x52 Used to disseminate information (e.g. Instrument ID, segment, ISIN, underlying, etc.) on each instrument. The previous closing price of each instrument is also disseminated.

Symbol Status

H 0x48 Indicates the trading session (e.g. pre-opening, continuous trading, etc.) that currently applies to an instrument.

Add Order

A 0x41 Sent to indicate that a limit or market order is added to the order book.

Add Attributed Order

F 0x46 Indicates that an attributable limit order is added to the order book. The identity of the submitting firm is included in the message.

Page 44: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 44 / 90

Name Message Type Usage

ASCII Hex

Order Deleted

D 0x44 Sent to indicate that the remainder of a displayed order is cancelled.

Order Modified

U 0x55 Indicates that the displayed quantity or price of a displayed order has been updated. The message will include an indication whether the order has retained or lost its time priority.

Order Book Clear

y 0x79 Sent to instruct Recipients to remove all orders from the order book for the specified instrument.

Order Executed

E 0x45 Indicates that the displayed portion of an order is fully or partially filled at its displayed price. The executed quantity is included in the message.

Order Executed With Price/ Size

C 0x43 Sent if a displayed order is fully or partially filled at a price that is different from its displayed price. The executed quantity and price is included in the message along with an indication of whether the trade should update time and sales and statistics displays.

Trade P 0x50 Sent if a hidden Pegged or Pegged limit order is fully or partially filled.

Sent for the leg instruments of a multi-legged instrument as a result of the execution of two explicit orders in the strategy (multi-legged ) instrument. In such scenarios the Trade Condition Flag will be set to Yes.

Auction Trade

Q 0x51 Sent to report details of an auction (e.g. opening, closing, etc.). The message indicates the price and bulk volume associated with the auction.

Off Book Trade

x 0x78 Sent to report the details of a trade negotiated outside the System yet reported to the System in accordance with the JSE Rules and Directives.

Trade Break

B 0x42 Indicates that a previously reported trade (On Book or Off Book) is cancelled.

Recovery Trade

v 0x76 Used to disseminate the details of missed On Book and off-book trades on the Snapshot channel.

Auction Info

I 0x49 Used to disseminate the indicative auction price and the tradable quantity (volume) at this price.

Statistics w 0x77 Used to disseminate the official opening and closing prices.

Extended Statistics

€ 0x80 Used to disseminate the High Price, Low Price, VWAP, Volume, Turnover and Number of Trades.

News u 0x75 Used to publish market operations announcements.

Top of Book

q 0x71 Used to communicate the best bid and the best offer prices and sizes of an order book

Page 45: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 45 / 90

Page 46: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 46 / 90

8.6 Unit Header

Field Offset Length Type Description

Length 0 2 UInt16 Length of the message block including the header and all payload messages.

Message Count

2 1 UInt8 Number of payload messages that will follow the header.

Market Data Group

3 1 Byte Identity of the market data group the payload messages relate to.

This field is not validated for client initiated messages.

Sequence Number

4 4 UInt32 Sequence number of the first payload message.

Payload 8 Variable - One or more payload messages.

Page 47: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 47 / 90

8.7 Administrative Messages (Client – Initiated)

8.7.1 Login Request

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x01 Login Request

Username 3 6 Alpha CompID assigned to the client.

Password 9 10 Alpha Password assigned to the CompID.

8.7.2 Replay Request

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x03 Replay Request

Market Data Group

3 1 Byte Identity of the market data group the replay request relates to.

First Message

4 4 UInt32 Sequence number of the first message in range to be retransmitted.

Count 8 2 UInt16 Number of messages to be resent

Page 48: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 48 / 90

8.7.3 Snapshot Request

Page 49: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 49 / 90

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x81 Snapshot Request

Sequence Number

3 4 UInt32 Sequence number from which the client can build the order book.

This is only required for instrument level requests

Segment 7 6 Alpha Segment the request relates to. The field should contain only spaces if it does not relate to a segment.

Instrument ID 13 4 UInt32 JSE unique numeric Instrument Identifier. Instrument the request relates to. The field should contain only spaces if it does not relate to an instrument and the Segment field is populated.

Reserved 17 1 Byte Reserved field

Reserved 18 1 Byte Reserved field

Sub Book 19 1 Bit Field Bit Name Meaning

0 Regular 0: No

1: Yes

1 Off Book 0: No

1: Yes

5 Bulletin Board

0: No

1: Yes

6 Negotiated Trades

0: No

1: Yes

Bit ‘0’ is the rightmost bit in the array of bits. This bit can be either set to ‘0’ or ‘1’. The ‘0’ or ‘1’ value meanings are denoted here.

Snapshot Type

20 1 UInt8 Value Meaning

0 Order Book

1 Instrument Status

2 Instrument

3 Trades

4 Statistics

5 News

8 Top of Book

Page 50: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 50 / 90

Recover From Time

21 8 Time Sending time of the last processed trade specified in terms of local time for the server (i.e. SAST) with regards to Trades (3) or the last received announcement with regards to News (5).

This field is ignored if the Snapshot Type is not Trades (3) or News (5).

Request ID 29 4 UInt32 Optional identifier of the request.

This is a user input field which can be used to track the requests sent via the Recovery channel.

8.7.4 Logout Request

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x05 Logout Request

8.8 Administrative Messages (Server – Initiated)

8.8.1 Heartbeat

A Unit Header with a Message Count of zero will be used by the server as a Heartbeat message. Such a message will never increment the sequence number of the Real-Time channel. However, the next expected sequence number will be included in the Sequence Number to enable Recipients to detect gaps on the Real-Time channel.

8.8.2 Login Response

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x02 Login Response

Status 3 1 Byte Status of the login request.

Value Meaning

A Login Accepted

a CompID Inactive/Locked

b Login Limit Reached

c Service Unavailable

d Concurrent Limit Reached

e Failed (Other)

Page 51: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 51 / 90

8.8.3 Replay Response

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x04 Replay Response

Market Data Group

3 1 Byte Identity of the market data group the replay request relates to.

First Message

4 4 UInt32 Sequence number of the first message in range to be retransmitted. This will be zero if Status is not “A”.

Count 8 2 UInt16 Number of messages to be resent. This will be zero if Status is not “A”.

Status 10 1 Byte Status of the replay request.

Value Meaning

A Request Accepted

D Request Limit Reached

I Invalid Market Data Group

O Out of Range

U Replay Unavailable

c Concurrent Limit Reached

d Unsupported message type

e Failed (Other)

Page 52: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 52 / 90

8.8.4 Snapshot Response

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x82 Snapshot Response

Sequence Number

3 4 UInt32 Sequence number with which the snapshot is synchronised.This will be zero if Status is not “A”. Ignore if Snapshot Type is not Order Book (0).

Order Count 7 4 UInt32 Number of orders that will be transmitted in the snapshot.This will be zero if Status is not “A”. Ignore if Snapshot Type is not Order Book (0).

Status 11 1 Byte Status of the snapshot request.

Value Meaning

A Request Accepted

O Out of Range

U Snapshot Unavailable

a Segment, Instrument ID or Sub Book Invalid or Not Specified

b Request Limit Reached

c Concurrent Limit Reached

d Unsupported message type

e Failed (Other)

Snapshot Type

12 1 UInt8 Value Meaning

0 Order Book

1 Instrument Status

2 Instrument

3 Trades

4 Statistics

5 News

8 Top of Book

Request ID 13 4 UInt32 Identifier, if any (optional), of Snapshot Request.

This is a user input field which can be used to track the requests sent via the Recovery channel.

Page 53: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 53 / 90

Page 54: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 54 / 90

8.8.5 Snapshot Complete

Page 55: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 55 / 90

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x83 Snapshot Complete

Sequence Number

3 4 UInt32 Sequence number with which the snapshot is synchronised.

Segment 7 6 Alpha Segment the snapshot relates to. The field will contain only spaces if it does not relate to a segment.

Instrument ID 13 4 UInt32 JSE unique numeric Instrument Identifier. Instrument the snapshot relates to. The field will contain only spaces if it does not relate to an instrument.

Reserved 17 1 Byte Reserved field

Reserved 18 1 Byte Reserved field

Sub Book 19 1 Bit Field Bit Name Meaning

0 Regular 0: No

1: Yes

1 Off-Book 0: No

1: Yes

5 Bulletin Board

0: No

1: Yes

6 Negotiated Trades

0: No

1: Yes

Page 56: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 56 / 90

Trading Status

20 1 Byte This will only be indicated if the message is sent as a book level complete and the Snapshot Type is Order Book (0) or Statistics (4).

Value Meaning

H Halt

T Continuous Trading

a Opening Auction Call

b Post-Close

c Market Close

d Closing Auction Call

e Volatility Auction Call

E EOD Volume Auction Call

f Re-Opening Auction Call

l Pause

p Futures Close Out

s Closing Price Cross

u Intra-Day Auction Call

v End of Trade Reporting

w No Active Session

x End of Post Close

y Start of Trading

z Closing Price Publication

Snapshot Type

21 1 UInt8 Value Meaning

0 Order Book

1 Instrument Status

2 Instrument

3 Trades

4 Statistics

5 News

8 Top of Book

Request ID 22 4 UInt32 Identifier, if any (optional), of Snapshot Request.

This is a user input field which can be used to track the requests sent via the Recovery channel.

Page 57: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 57 / 90

8.9 Application Messages

8.9.1 Time

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x54 Time

Seconds 3 4 UInt32 Number of seconds since midnight. Midnight will be in terms of the local time for the server (i.e. SAST).

8.9.2 System Event

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x53 System Event

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Event Code 7 1 Byte Value Meaning

C End of Day

O Start of Day

Page 58: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 58 / 90

8.9.3 Symbol Directory

Page 59: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 59 / 90

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x52 Symbol Directory

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Instrument ID 7 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 11 1 Byte Reserved field.

Reserved 12 1 Byte Reserved field.

Symbol Status

13 1 Alpha Value Meaning

H Halted

S Suspended

a Inactive

This field will contain a space if the instrument is active.

ISIN 14 12 Alpha International Securities Identifying Number

Symbol 26 25 Alpha Symbol of an instrument.

TIDM 51 12 Alpha Tradable Instrument Display Mnemonic

Segment 63 6 Alpha Segment the instrument is assigned to.

Previous Close Price

69 8 Price Previous Close Price of the Instrument

Expiration Date

77 8 Date Date an instrument expires or matures. This field will contain only spaces if the instrument is not a derivative or fixed income instrument.

Underlying 85 25 Alpha Symbol of the underlying instrument. This field will contain only spaces if the instrument is not a derivative.

Strike Price 110 8 Price Strike price of an option. The price will be zero if the instrument is not an option.

Option Type 118 1 Alpha Value Meaning

C Call Option

P Put Option

This field will contain a space if the instrument is not an option.

Issuer 119 6 Alpha Issuer of the instrument. This field will contain all spaces if the instrument is not a fixed income instrument.

Page 60: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 60 / 90

Issue Date 125 8 Date Date instrument was issued. This field will contain all spaces if the instrument is not a fixed income instrument.

Coupon 133 8 Price Rate of interest applied to the face value. This is a percentage field (e.g. 0.05 represents 5%). The price will be zero if the instrument is not a fixed income instrument.

Flags 141 1 Bit Field Bit Name Meaning

0 Inverse Order Book

0: No

1: Yes

Sub Book 142 1 Bit Field

Bit Name Meaning

0 Regular 0: No

1: Yes

1 Off Book 0: No

1: Yes

5 Bulletin Board

0: No

1: Yes

6 Negotiated Trades

0: No

1: Yes

Corporate Action

143 189 Alpha

Contains Ex-Marker and/or Annotation information (if any) associated with an instrument.

Please refer to Section 11 for valid Ex-Markers and Annotations. See section 4.1.5 for the format of this field.

Leg 1 Symbol

332 25 Alpha

Symbol of Leg 1 instrument.

This field will contain only spaces if the instrument is not a multi-legged instrument

(This field will only be available for Symbol Directory messages disseminated via MITCH gateway instances configured to distribute market data for derivative instruments)

Leg 2 Symbol

357 25 Alpha Symbol of Leg 2 instrument.

This field will contain only spaces if the instrument is not a multi-legged instrument

(This field will only be available for Symbol Directory messages disseminated via MITCH gateway instances configured to distribute market data for derivative instruments)

Page 61: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 61 / 90

Contract Multiplier

382 8 Price Defines the multiplier of the instrument.

This field will contain 0 value if the instrument does not have a contract multiplier (i.e. Underlying Instrument)

(This field will only be available for Symbol Directory messages disseminated via MITCH gateway instances configured to distribute market data for derivative instruments)

Settlement Method

390 1 Alpha Defines the settlement method of the underlying contract

Value Meaning

C Cash

P Physical

This field will contain only spaces if the instrument does not have a settlement method (i.e. only applicable for Futures, Options and Forward Forwards)

(This field will only be available for Symbol Directory messages disseminated via MITCH gateway instances configured to distribute market data for derivative instruments)

Instrument Sub Category

391 30 Alpha Defines the instrument sub category for which the instrument belongs.

(This field will only be available for Symbol Directory messages disseminated via MITCH gateway instances configured to distribute market data for derivative instruments)

Page 62: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 62 / 90

8.9.4 Symbol Status

Page 63: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 63 / 90

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x48 Instrument Status

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Instrument ID

7 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 11 1 Byte Reserved field

Reserved 12 1 Byte Reserved field

Trading Status

13 1 Byte Value Meaning

H Halt

T Regular Trading/Start Trade Reporting

a Opening Auction Call

b Post-Close

c Market Close

d Closing Auction Call

e Volatility Auction Call

E EOD Volume Auction Call

f Re-Opening Auction Call

l Pause

p Futures Close Out

s Closing Price Cross

u Intra-Day Auction Call

v End Trade Reporting

w No Active Session

x End of Post Close

y

Start of Trading (This indicates that continuous trading or an opening auction is about to take place)

z Closing Price Publication

Flags 14 1 Bit Field Reserved for future use.

Reason 15 4 Alpha The reason code for the change in session.

This field will contain only spaces if the reason is unknown.

Please refer to Section 10 for an explanation of the reason codes.

Page 64: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 64 / 90

Session Change Reason

19 1 UInt8 Value Meaning

0 Scheduled Transition

1 Extended by Market Ops

2 Shortened by Market Ops

3 Market Order Imbalance

4 Price Outside Range

5 Circuit Breaker Tripped

9 Unavailable (recovery service only)

New End Time

20 8 Time New session end time specified in terms of local time for server (i.e. SAST). The field will contain only spaces if Session Change Reason is “0” or “9”.

Book Type 28 1 UInt8 Value Meaning

1 On Book

2 Off Book

9 Bulletin Board

11 Negotiated Trades

Page 65: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 65 / 90

8.9.5 Add Order

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x41 Add Order

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Order ID 7 8 UInt64 Unique identifier of the order.

Side 15 1 Byte Value Meaning

B Buy Order

S Sell Order

Quantity 16 4 UInt32 Displayed quantity of the order.

Instrument ID

20 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 24 1 Byte Reserved field

Reserved 25 1 Byte Reserved field

Price 26 8 Price Limit price of the order.

Flags 34 1 Bit Field Bit Name Meaning

4 Market Order

0: No

1: Yes

5 Bulletin Board

0: No

1: Yes

Page 66: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 66 / 90

8.9.6 Add Attributed Order

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x46 Add Attributed Order

Nanosecond 3 4 UInt32 Nanoseconds offset from the last Time message.

Order ID 7 8 UInt64 Unique identifier of the order.

Side 15 1 Byte Value Meaning

B Buy Order

S Sell Order

Quantity 16 4 UInt32 Displayed quantity of the order.

Instrument ID

20 4 UInt32 JSE unique numeric Instrument Identifier.

Price 24 8 Price Limit price of the order.

Attribution 32 11 Alpha Identity of firm that submitted the order.

Flags 43 1 Bit Field

Bit Name Meaning

0 Regular 0: No

1: Yes

5 Bulletin Board

0: No

1: Yes

8.9.7 Order Deleted

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x44 Order Deleted

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Order ID 7 8 UInt64 Unique identifier for the order.

Page 67: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 67 / 90

8.9.8 Order Modified

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x55 Order Modified

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Order ID 7 8 UInt64 Unique identifier for the order.

New Quantity 15 4 UInt32 New displayed quantity of the order.

New Price 19 8 Price New limit price of the order.

Flags 27 1 Bit Field Bit Name Meaning

0 Priority Flag

0: Priority Lost

1: Priority Retained

8.9.9 Order Book Clear

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x79 Order Book Clear

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Instrument ID 7 4 UInt32 JSE unique numeric Instrument Identifier.

Sub Book

11 1 UInt8 Value Meaning

1 Regular

2 Off Book

9 Bulletin Board

11 Negotiated Trades

Book Type 12 1 Byte Value Meaning

0 MBO

1 Top of Book

Page 68: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 68 / 90

8.9.10 Order Executed

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x45 Order Executed

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Order ID 7 8 UInt64 Unique identifier for the order.

Executed Quantity

15 4 UInt32 Quantity executed.

Trade ID 19 8 UInt64 Unique identifier of the trade.

LastOptPx 27 8 Price Converted price of the executed volatility of the options instrument.

Volatility 35 8 Price Converted volatility of the executed price of the options instrument.

Underlying Reference Price

43 8 Price Underlying Reference Price related to converted value calculated upon an options instrument trade execution.

8.9.11 Order Executed With Price/Size

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x43 Order Executed With Price/Size

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Order ID 7 8 UInt64 Unique identifier for the order.

Executed Quantity

15 4 UInt32 Quantity executed.

Display Quantity

19 4 UInt32 Displayed quantity of the order after the execution.

Trade ID 23 8 UInt64 Unique identifier of the trade.

Printable 31 1 Byte Value Meaning

N Non-Printable

Y Printable

Price 32 8 Price Price at which the order was executed.

LastOptPx 40 8 Price Converted price of the executed volatility of the options instrument.

Volatility 48 8 Price Converted volatility of the executed price of the options instrument.

Underlying Reference Price

56 8 Price Underlying Reference Price related to converted value calculated upon an options instrument trade execution.

Page 69: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 69 / 90

8.9.12 Trade

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x50 Trade

Nanosecond 3 4 UInt32 Nanoseconds since last Time message,

Executed Quantity

7 4 UInt32 Quantity executed.

Instrument ID

11 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 15 1 Byte Reserved field

Reserved 16 1 Byte Reserved field

Price 17 8 Price Executed price.

Trade ID 25 8 UInt64 Unique identifier of the trade.

Sub Book 33 1 UInt8 Value Meaning

1 Regular

11 Negotiated Trades

Flags 34 1 Bit-Field Bit Name Meaning

0 Trade Condition Flag

0:No

1: Yes (Leg trades of a synthetic trade)

1 Crossed

Order Trade

0:No

1: Yes

Trade Sub Type

35 4 Alpha Type of RFQ trade. Only applicable if Sub book value 11.

Value Meaning

0001 RG - Regular

0002 EP – Exchange for Physical

0003 RP - Repo

0004 SR - Sharia

LastOptPx 39 8 Price Converted price of the executed volatility of the options instrument.

Volatility 47 8 Price Converted volatility of the executed price of the options instrument.

Underlying Reference Price

55 8 Price Underlying Reference Price related to converted value calculated upon an options instrument trade execution.

Page 70: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 70 / 90

8.9.13 Auction Trade

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x51 Auction Trade

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Quantity 7 4 UInt32 Quantity executed in auction.

Instrument ID 11 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 15 1 Byte Reserved field

Reserved 16 1 Byte Reserved field

Price 17 8 Price Price of auction.

Trade ID 25 8 UInt64 Unique identifier of the trade.

Auction Type 33 1 Byte Value Meaning

C Closing Auction

O Opening Auction

A Volatility

E Re-Opening Auction

K Intra-Day Auction

L Futures Close out Auction

D EOD Volume Auction Call

LastOptPx 34 8 Price Converted price of the executed volatility of the options instrument.

Volatility 42 8 Price Converted volatility of the executed price of the options instrument.

Underlying Reference Price

50 8 Price Underlying Reference Price related to converted value calculated upon an options instrument trade execution.

Page 71: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 71 / 90

8.9.14 Off Book Trade

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x78 Off Book Trade

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Executed Quantity

7 4 UInt32 Quantity executed.

Instrument ID

11 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 15 1 Byte Reserved field

Reserved 16 1 Byte Reserved field

Price 17 8 Price Executed price.

Trade ID 25 8 UInt64 Unique identifier of the trade.

Off Book Trade Type

33 4 Alpha Type of Off Book trade.

Please refer to Section 9 for the valid Off Book trade types.

Trade Time 37 8 Time Time the Off Book trade was agreed between the firms in terms of the local time for the server (i.e. SAST).

Trade Date 45 8 Date Date the Off Book trade was agreed between the firms.

LastOptPx 53 8 Price Converted price of the executed volatility of the options instrument.

Volatility 61 8 Price Converted volatility of the executed price of the options instrument.

Underlying Reference Price

69 8 Price Underlying Reference Price related to converted value calculated upon an options instrument trade execution.

8.9.15 Trade Break

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x42 Trade Break

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Trade ID 7 8 UInt64 Unique identifier of the cancelled trade.

Trade Type 15 1 Byte Value Meaning

T On Book Trade

N Off Book Trade

R Negotiated Trades

Page 72: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 72 / 90

8.9.16 Recovery Trade

Page 73: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 73 / 90

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x76 Recovery Trade

Nanosecond 3 4 UInt32 Nanoseconds offset from the last Time message.

Executed Quantity

7 4 UInt32 Quantity executed.

Instrument ID 11 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 15 1 Byte Reserved field

Reserved 16 1 Byte Reserved field

Price 17 8 Price Executed price.

Trade ID 25 8 UInt64 Unique identifier of the trade.

Auction Type 33 1 Byte Value Meaning

C Closing Auction

A Volatility Auction

O Opening Auction

E Re-Opening Auction

K Intra-Day Auction

L Futures Close out Auction

D EOD Volume Auction Call

This field will contain a space if the trade is not an auction trade.

Off Book/RFQ Trade Type

34 4 Alpha Type of Off Book or RFQ trade.

This field will contain only spaces for On Book trades.

Please refer to Section 09 for the valid off book trade types

Trade Time 38 8 Time Time trade was executed. The time is specified in terms of the local time for the server (i.e. SAST).

Trade Date 46 8 Date Date the off-book trade was executed. This field will contain only spaces for On Book trades.

Action Type 54 1 Byte Value Meaning

C Cancelled Trade

N Trade

Sub Book 55 1 UInt8 Value Meaning

1 Regular

2 Off-Book

11 Negotiated Trades

Page 74: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 74 / 90

Flags 56 1 Bit-Field Bit Name Meaning

0 Trade Condition Flag

0:No

1: Yes (Leg trades of a synthetic trade)

1 Crossed

Order

0:No

1: Yes

LastOptPx 57 8 Price Converted price of the executed volatility of the options instrument.

Volatility 65 8 Price Converted volatility of the executed price of the options instrument.

Underlying Reference Price

73 8 Price Underlying Reference Price related to converted value calculated upon an options instrument trade execution.

Page 75: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 75 / 90

8.9.17 Auction Info

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type 2 1 Byte Hex Meaning

0x49 Indicative Auction Information

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Paired Quantity 7 4 UInt32 Quantity that will be matched at the indicative price.

Reserved 11 4 UInt32 JSE unique numeric Instrument Identifier.

Imbalance Direction 15 1 Byte Value Meaning

O Insufficient Orders for Auction

Instrument ID 16 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 20 1 Byte Reserved field

Reserved 21 1 Byte Reserved field

Price 22 8 Price Indicative auction price.

Auction Type 30 1 Byte Value Meaning

C Closing Auction

O Opening Auction

A Volatility

E Re-Opening Auction

K Intra-Day Auction

L Futures Close out Auction

8.9.18 Statistics

Page 76: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 76 / 90

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x77 Statistics

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Instrument ID 7 4 UInt32 JSE unique numeric Instrument Identifier.

Reserved 11 1 Byte Reserved field

Reserved 12 1 Byte Reserved field

Statistic Type 13 1 Alpha Value Meaning

O Opening Price

C Closing Price

Price 14 8 Price Opening or Closing price.

Open Close Indicator

22 1 Alpha

Value Meaning

A UT

B AT

C Mid of BBO

D Last AT

E Last UT

F Manual

H VWAP

I Previous Close

J Zero

U Best Bid

V Best Offer

Y Reference Price

Page 77: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 77 / 90

Sub Book

23 1 UInt8 Value Meaning

1 Regular

2 Off Book

9 Bulletin Board

Page 78: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 78 / 90

8.9.19 Extended Statistics

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x80 Extended Statistics

Nanosecond 3 4 UInt32 Nanoseconds offset from the last Time message.

Instrument ID 7 4 UInt32 JSE unique numeric Instrument Identifier.

High Price

11 8 Price High Price of the instrument. Will be set to a negative value if the value is not set or withdrawn.

Low Price 19 8 Price Low Price of the instrument. Will be set to a negative value if the value is not set or withdrawn.

VWAP 27 8 Price VWAP of the instrument. Will be set to a negative value if the value is not set or is withdrawn.

Volume 35 4 UInt32 Volume of the instrument. Will be set to zero if the value is not set or is withdrawn.

Turnover 39 8 Price* Turnover of the instrument. Will be set to a negative value if the value is not set or is withdrawn.

Number of Trades

47 4 UInt32 Number of trades for this instrument. Will be set to zero if the value is not set or is withdrawn.

Reserved Field

51 8 Alpha Reserved for future use

SubBook 59 1 UInt8 Order Book for which Extended Statistics are published. Value Meaning

1 Regular

2 Off-Book

11 Negotiated Trades

Notional Exposure

60 8 Price Notional exposure will be set to a negative value if the value is not set or withdrawn.

Notional Delta Exposure

68 8 Price Notional exposure updated by the delta of the option based on trade executions. Will be set to a negative value if the value is not set or withdrawn.

Open Interest 76 8 Price Open Interest of the specified instrument. Will be set to a negative value if the value is not set or withdrawn.

* - Generally, fields of data type ‘Price’ will have an eight byte integer field with eight implied decimal places. There is an exception for the Turnover field where the field will have an eight byte integer field with four implied decimal places.

Page 79: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 79 / 90

8.9.20 News

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type

2 1 Byte Hex Meaning

0x75 News

Nanosecond 3 4 UInt32 Nanoseconds since last Time message.

Time 7 8 Time Time the announcement was published. Time will be specified in terms of the local time for the server SAST (i.e. not UTC).

Urgency 15 1 Byte Value Meaning

0 Regular

1 High Priority

2 Low Priority

Headline 16 100 Alpha Headline or subject of the announcement.

Text 116 750 Alpha Text of the announcement.

Instruments 866 100 Alpha Pipe separated list of instruments of the instruments for which the announcement has been sent for.

Underlyings 966 100 Alpha Pipe separated list of symbols of the underlyings announcement relates to.

8.9.21 Top of Book

Page 80: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 80 / 90

Field Offset Length Type Description

Length 0 2 UInt16 Length of message including this field.

Message Type 2 1 Byte Hex Meaning

0x71 Top of Book

Nanosecond 3 4 UInt32 Nanoseconds offset from the last Time message.

instrument ID 7 4 UInt32 JSE unique numeric Instrument Identifier.

Reserve Field 11 2 UInt16 Reserved for future use

Sub Book 13 1 Bit-Field Bit Name Meaning

0 Regular 0: No

1: Yes

5 Bulletin Board

0: No

1: Yes

Action 14 1 Byte Value Meaning

1 Update

2 Delete

Side 15 1 Byte Value Meaning

B Buy

S Sell

Price 16 8 Price Best price for the particular side.

Quantity 24 4 UInt32 Cumulative visible size at best price. This will be set to zero on a delete action.

Market Order Quantity

28 4 UInt32 Cumulative visible size of market orders.

Reserved Field 32 2 - Reserved for future use.

Page 81: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 81 / 90

9 OFF BOOK TRADE TYPES

Page 82: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 82 / 90

TrdSubType Value

Description

17 LC – Off Book Post Contra Trade (cancellation of previous day’s published Off Book trade )

24 PC – On Book Post Contra Trade (cancellation of a previous day’s On Book trade)

2001 BT - Block Trade

2002 CF - Corporate Finance Trade

2003 LT - Late Trade (After hours trade)

2004 NX - Namibia Trade

2005 OD - Delta Trade

2006 OP - Off Order Book Principal Trade

2007 OX - Option Exercised

2008 TX - Trade Option Exercised

2009 PF - Portfolio Trade

2011 WX - Warrant Exercised

2013 GU – Give Up Trade

3001 BK – Book Build

3015

NC – Off Book Post Contra Trade non-published (cancellation of previous day’s non-published Off Book trade)

This trade type will never be published via the market data, it is only valid via the Post Trade Gateway when cancelling a non-published trade.

4001 NT - A generic reported trade that provides the ability to be linked to other reported trades for the purposes of billing and valuations downstream. A new field will be required to link these.

4002 TI - Trade by a member as a result of an off market bookbuild, where additional bonds have been issued

4003 PT - Trade by a member as a result of an off market bookbuild on the listing of a new bond

4004 ST - A trade by a member where it is back to back with an OTC transaction

4005 BX - When the owner of an OTC option which is not traded in the secondary market exercises his or her right to buy or sell bonds

4006 BV - Trade by a member where the member is the buyer and seller on behalf of 2 different clients

4007 RO - Trade by a member for a repurchase agreement or sell/buy back.

4008 RR - Trade by a member for a reverse repurchase agreement.

Page 83: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 83 / 90

4009

GI - A transaction where a member trades in a single equity security as a principal with another member, who trades either as an agent on behalf of a client or as a principal for that member’s own account. The purpose is to pass a trade that has been executed by the first member (“executing member”) on the same day or the previous day to the second member (“receiving member”) at the price of the original trade. The trade that is given up to the receiving member must have originally been executed by the executing member with the intention of giving it up to the receiving member.

4010 EP - A transaction negotiated privately in which a Futures contract for a physical item is exchanged for an actual physical good.

4011 ER - This involves the exchange of OTC positions for future positions

4012 PO - PCT Trades in currency derivatives concluded by a market maker with a professional client

4013

DT - A trade type that hedges derivative exposures in the same market where the derivative exposure sits. A trade type that hedges derivative exposures in the same market where the derivative exposure sits.

4014 LD - A Late trades concluded by a trading member after trading hours.

4015 RT - Roll trade which give effect to the closing out of positions in the expiring contract to a contract with a new expiry date.

4016 SO - Structured option trades include two or more strikes and are agreed on a wholesale basis and will be linked via a field allowing these trades to be identified for regulatory purposes

4017

NO - Net-offs result when a client builds up opposite positions through various accounts with in the same member or multiple members. The client then wishes to consolidate these positions, representing both long and short position of the same expiry/contract.

4018

NS -Non Standard Structured trades that include two or more legs and are agreed on a wholesale basis and will be linked via a field allowing these trades to be identified for regulatory or valuation purposes. Non-standard strategies include those strategies that do not form part of the following list of standard JSE strategies: Inverse Calendar Spreads Forward Forwards Splits Delta Options Butterflies Condors Straddles Strangles Call/Put Calendar Spreads

4019 CD - Contracts for difference report only trades

4020

SR - Structured trades that include two or more legs and are agreed on a wholesale basis and will be linked via a field allowing these trades to be identified for regulatory or valuation purposes. These standard JSE strategies include:Inverse Calendar SpreadsForward ForwardsSplitsDelta Options ButterfliesCondorsStraddlesStranglesCall/Put Calendar Spreads

Page 84: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 84 / 90

4021

BS - Occurs when a trader quotes a Bond instrument as a spread over another reference Bond instrument. However when trading a Bond Spread trade, the trader does not trade in both bond instruments

4022

TB - In instances where an on book trade has been cancelled, the JSE may ask traders to recapture 2 new off book trades. The reason is to ensure that certain market counterparties are not prejudiced due to the initial cancellation. The first off book trade will be a recapture of the incorrect original trade which was subsequently cancelled. The second off book trade will be reported to the trading system at an adjusted price (as determined by the JSE) giving the relevant compensation to the parties that are not responsible for the original error. Both off book trades that are captured will be Trade Bust off book trade types.

4023

PA - Similar concept to the trade bust trade type. When a trade is captured at the incorrect price and both traders wish to recapture the original trade at the correct price then the original trade should be cancelled and a new off book trade type of PA (Price Adjust) is captured at the correct price.

4024 RP

Page 85: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 85 / 90

10 TRADING REASON CODES

Code Reason

9998 Matching partition suspended

9999 System suspended

Space Reason not available

1 System Issues Being Experienced

2 Company Announcement Expected

3 Company Requested Halt

4 Company Requested Suspension

5 JSE Initiated Halt/Suspension

101 Instrument-level circuit breaker tripped

102 Instrument status is halted

Page 86: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 86 / 90

11 CORPORATE ACTION INFORMATION

11.1 Valid Ex-Markers

Ex-Marker Code

Description

GT Green Triangle – Declared Payment (dividend or other type of payment) still to be paid

XD Ex-Dividend or other payment

11.2 Valid Annotations

Annotation Code

Description

A^ Adverse Auditors Opinion Expressed

D^ Disclaimed Annual Audit Opinion

E^ Annual Audit Report “Emphasis of matter” paragraph

OT Orange Triangle – Caution in dealing in shares

Q^ Qualified Annual Audit Opinion

R^ Failure to Provide Annual Compliance Certificate

RE Red Square – Company Violation of the JSE Rules

SV Shareholder Spread Violation

TA Tax Applicable

G^ Going Concern

Note: The Exchange may amend these values at any time following one month’s prior written notice to clients. Single characters on Ex-Markers and Annotations will be right padded with a space as denoted above with the ‘^’ symbol.

Page 87: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 87 / 90

12 Appendix

12.1 Conversion of Order ID

The Order ID assigned by the matching engine is converted to binary on publishing through the market data feed. The Order ID received through the order management gateways can be mapped to the Order ID received through the market data gateway based on the below conversion.

To convert FIX Order ID to MITCH Order ID:

Step 1 – Remove leading O (prefix)

Step 2 – Convert using base 62 using the base 62 conversion table below.

Step 3 – Convert to binary

Order ID format (in ASCII)

The composition of the Order IDs assigned by the matching system is given below. This Order ID is specified as ASCII printable characters and will not exceed 12 bytes.

1 byte 11 bytes

O 0-9, A-Z, a-z

Prefix Base 62 encoded order id

E.g.

OrderID in FIX (ASCII base 62 characters)

O04Xj7Wu76ta

OrderID in MITCH gateway (Binary ID converted to decimal)

61512470073704470

Steps to follow:

Remove the prefix from the ASCII order ID - “O” 04Xj7Wu76ta

Convert using base 62 conversion in to decimal as depicted below

Note: Please refer to the base 62 conversion table attached below

Convert the decimal value to binary.

FIX Order ID (ASCII

Character)

Corresponding

decimal value

Base 62^x

value Multiplied decimal value

a 36 62^0 1 36

t 55 62^1 62 3,410

6 6 62^2 3,844 23,064

7 7 62^3 238,328 1,668,296

u 56 62^4 14,776,336 827,474,816

W 32 62^5 916,132,832 29,316,250,624

7 7 62^6 56,800,235,584 397,601,649,088

j 45 62^7 3,521,614,606,208 158,472,657,279,360

X 33 62^8 218,340,105,584,896 7,205,223,484,301,568

Page 88: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 88 / 90

4 4 62^9 13,537,086,546,263,552 54,148,346,185,054,208

0 0 62^10 839,299,365,868,340,224

-

OrderID in MITCH gateway in Decimal 61,512,470,073,704,470

Note

Please use 64 bit integer data types for the calculation else integers will overflow

Excel also rounds the value since its using a 64 bit float data type for the calculation

Base 62 mapping table

0 0 20 K 40 e 60 y

1 1 21 L 41 f 61 z

2 2 22 M 42 g

3 3 23 N 43 h

4 4 24 O 44 i

5 5 25 P 45 j

6 6 26 Q 46 k

7 7 27 R 47 l

8 8 28 S 48 m

9 9 29 T 49 n

10 A 30 U 50 o

11 B 31 V 51 p

12 C 32 W 52 q

13 D 33 X 53 r

14 E 34 Y 54 s

15 F 35 Z 55 t

16 G 36 a 56 u

17 H 37 b 57 v

18 I 38 c 58 w

19 J 39 d 59 x

12.2 Conversion of Trade ID

The Trade ID assigned by the matching engine is converted to binary on publishing through the market data feed. The Order ID received through the post trade gateway can be mapped to the Trade ID received through the market data gateway based on the below conversion.

To convert FIX Trade Match ID to MITCH Trade ID:

Step 1 – Remove leading (prefix)

Step 2 - Convert using base 62

Step 3 – Convert to binary

Trade ID format (ASCII)

Page 89: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 89 / 90

1 Byte 9 bytes

T/M 0-9, A-Z, a-z

Prefix Base 62 encoded Trade id

E.g.:

ASCII trade id for FIX T5DIF33YV0

Binary trade id (decimal) for MITCH 1138517709214786

Steps to follow:

Remove the prefix from the ASCII order ID - “T” 5DIF33YV0

Convert using base 62 conversion in to decimal as depicted below

Note: Please refer to the base 62 conversion table attached below

Convert the decimal value to binary.

FIX Trade ID

(ASCII Character)

Corresponding decimal value

Base 62^x

value Multiplied decimal

value

0 0 62^0 1 0

V 31 62^1 62 1,922

Y 34 62^2 3,844 130,696

3 3 62^3 238,328 714,984

3 3 62^4 14,776,336 44,329,008

F 15 62^5 916,132,832 13,741,992,480

I 18 62^6 56,800,235,584 1,022,404,240,512

D 13 62^7 3,521,614,606,208 45,780,989,880,704

5 5 62^8 218,340,105,584,896 1,091,700,527,924,480

Trade ID in MITCH gateway in Decimal 1,138,517,709,214,786 Note

Please use 64 bit integer data types for the calculation else integers will overflow

Excel also rounds the value since its using a 64 bit float data type for the calculation

Page 90: Johannesburg Stock Exchange · 2019-09-02 · Johannesburg Stock Exchange Trading and Information Solution JSE Specification Document Volume 05 – Market Data Gateway (MITCH –

Volume 05 - Market Data Feed – (MITCH – UDP) Page 90 / 90

13 MARKET DATA GATEWAYS

One service refers to a single market data gateway partition instance. i.e. primary and mirror services (also known as A Feed and B Feed) hosted as primary and mirror gateway instances. The Un-throttled Services will publish a higher maximum bandwidth value than the Throttled Service, however the data published will be identical.

Protocol Markets No of Un-throttled GWs

Un-throttled services No of Throttled GW

Throttled services

MITCH

EQM 1 1. Full depth MBO with statistics of ALL - EQM (Un-Throttled)

2 1. Full depth MBO with statistics of ALL – JSE

(Throttled)

2. Full depth MBO with statistics of ALL – NSX

(Throttled) EDM 1 1 x Full depth MBO with statistics of ALL

– EDM (Un-Throttled) 2 1. Full depth MBO with statistics of ALL –

(Throttled)

2. Level 1 [Book Depth 1 ] with statistics of ALL

– (Throttled) FX, IRD, Spot Bonds

1 1. Full depth MBO with statistics of ALL - FX, IRD, Bonds (Un-Throttled)

2 1. Full depth MBO with statistics of ALL–

(Throttled)

2. Level 1 [Book Depth 1 ] with statistics of ALL

– (Throttled)

Commodities 1 1 x Full depth MBO with statistics of ALL – Commodities (Un-Throttled)

2 1. Full depth MBO with statistics of ALL–

(Throttled)

2. Level 1 [Book Depth 1 ] with statistics of ALL

– (Throttled)