borsa i̇stanbul itch protocol specification rules of

Transcription

borsa i̇stanbul itch protocol specification rules of
BORSA İSTANBUL
ITCH PROTOCOL SPECIFICATION
RULES OF ENGAGEMENT
December 30, 2014 Version 1.2
©2014 Borsa İstanbul A.Ş., All rights reserved
DOCUMENT HISTORY
Date
Version Description of changes
July 7, 2014
September 19, 2014
1.0
1.1
December 30, 2014
1.2
© 2014 Borsa İstanbul A.Ş.
First release.
LastSeqNum field is added to Heartbeat message.
Requested Sequence Number field is updated in section “3.1.2.1
Login Request Packet”
2
TABLE OF CONTENTS
1.
INTRODUCTION ............................................................................................................................... 5
1.1 PURPOSE ................................................................................................................................. 5
1.2 TARGET AUDIENCE .................................................................................................................. 6
2.
ITCH ................................................................................................................................................. 6
2.1 ARCHITECTURE ........................................................................................................................ 7
2.1.1 HEADER ........................................................................................................................... 7
2.1.2 MESSAGE BLOCK ............................................................................................................. 7
2.2 DATA TYPES ............................................................................................................................. 8
2.3 MESSAGE FORMATS ................................................................................................................ 9
2.3.1 HEARTBEAT ..................................................................................................................... 9
2.3.2 TIME MESSAGES ............................................................................................................ 10
2.3.3 REFERENCE DATA MESSAGES ....................................................................................... 11
2.3.4 EVENT AND STATE CHANGE MESSAGES ....................................................................... 14
2.3.5 ORDER LEVEL DATA ....................................................................................................... 17
2.3.6 TRADE MESSAGES ......................................................................................................... 22
2.4 PROTOCOL FLOW .................................................................................................................. 23
2.5 HOW TO BUILD AN ORDER BOOK VIEW ............................................................................... 25
2.6 SAMPLE SCENARIOS .............................................................................................................. 27
2.6.1 CASE 1 ........................................................................................................................... 27
2.6.2 CASE 2 ........................................................................................................................... 27
2.6.3 CASE 3 ........................................................................................................................... 27
2.6.4 CASE 4 ........................................................................................................................... 28
2.6.5 CASE 5 ........................................................................................................................... 28
3.
GLIMPSE ........................................................................................................................................ 29
3.1 ARCHITECTURE ...................................................................................................................... 29
3.1.1 LOGICAL PACKETS SENT BY SERVER .............................................................................. 29
3.1.2 LOGICAL PACKETS SENT BY CLIENT ............................................................................... 31
3.2 DATA TYPES ........................................................................................................................... 32
3.3 MESSAGE FORMATS .............................................................................................................. 32
3.3.1 END OF SNAPSHOT MESSAGE ....................................................................................... 32
3.4 PROTOCOL FLOW .................................................................................................................. 33
4.
REWINDER..................................................................................................................................... 34
4.1 ARCHITECTURE ...................................................................................................................... 34
4.1.1 LOGICAL PACKETS SENT BY SERVER .............................................................................. 35
4.1.2 LOGICAL PACKETS SENT BY CLIENT ............................................................................... 36
4.2 DATA TYPES ........................................................................................................................... 37
4.3 MESSAGE FORMATS .............................................................................................................. 37
© 2014 Borsa İstanbul A.Ş.
3
4.4 PROTOCOL FLOW .................................................................................................................. 37
© 2014 Borsa İstanbul A.Ş.
4
1. INTRODUCTION
The message protocol of ITCH is widely used and considered an industry standard. ITCH™ is a
registered service mark of the NASDAQ OMX Group.
ITCH™ is the ultra-low latency protocol for accessing Borsa İstanbul Equity Market Data. ITCH has
been developed to maximize performance and so meet the requirements of latency sensitive
traders.
GLIMPSE™ is a point-to-point data feed connection that provides direct data feed customers with a
snapshot of the current state of the order books traded in the trading system. GLIMPSE uses the
same message formats as ITCH. GLIMPSE can be used to quickly sync up with the ITCH feed. Clients
must start listening to the real-time ITCH channel first. Then at the end of the GLIMPSE snapshot, a
sequence number is provided that can be used to connect and sync up with the real-time ITCH feed.
REWINDER™ is a point-to-point data feed connection that provides tick-by-tick missing data.
REWINDER is utilized if a sequence number gap is detected.
NOTE:
OUCH™ is an order entry protocol supported by the NASDAQ OMX Group. OUCH™ only provides a
method for participants to send orders and receive updates on those orders entered. For
information about all orders entered into and executed on the book, refer to the ITCH™ protocol
(available separately). Borsa İstanbul does not provide OUCH order entry.
Borsa İstanbul co-location customers only send FIX protocol based orders and get market data via
ITCH.
1.1
PURPOSE
This document explains access to the market data of Borsa İstanbul Equity Market via the ITCH
protocol for Borsa İstanbul co-location customers. Borsa İstanbul new data center is scheduled to
open in the summer of 2014. This data center is located in Borsa İstanbul İstinye campus and offers
the same network facilities with trading systems to co-location customers. A low-latency trading
infrastructure is a must for high-frequency trading (HFT) for algo-traders.
This document describes the flow and specifies application messages.
© 2014 Borsa İstanbul A.Ş.
5
1.2 TARGET AUDIENCE
The information provided by this document is relevant for IT staff responsible for performing the
implementation of ITCH application.
For further information and inquiries regarding market data or for questions concerning ITCH
connectivity, please contact Borsa İstanbul Technical Support via email to:
[email protected]
Further copies of this document can also be downloaded from Borsa İstanbul website
http://www.borsaistanbul.com/uyeozel/SoftwareAndDocuments/pay-piyasalari
2. ITCH
ITCH is a direct data feed product. The ITCH feed displays all public orders and trades. ITCH features
the following data elements:

Order level data: The system will provide its full order depth using the standard ITCH
format. ITCH uses a series of order messages to track the life of a customer order, including
order executions.

Trade messages: ITCH supports a trade message to reflect a match of a non-displayable
order in the system.


Reference Data:
-
Order Book Directory messages provide basic security data.
-
Tick Size Table Entry messages convey Tick Sizes for order books.
Event controls, such as the states of the different order books.
-
Order Book State message to inform receivers of state changes.
NOTE:
ITCH does not provide;
-
Order entry (Co-lo customers can use FIX protocol for order entry protocol. OUCH is not
supported by Borsa İstanbul.)
Market-by-price (MBP) data feed. (ITCH makes it possible for subscribers to track the status
of each order from the time it is first entered until the time it is either executed or
canceled.)
Privately negotiated (special terms of orders) trades feed.
© 2014 Borsa İstanbul A.Ş.
6
2.1 ARCHITECTURE
ITCH Gateway sends “downstream” packets that are received by clients.
Each packet consists of a “Downstream Packet Header” and a series of “Message Blocks”. The
Message Blocks carry the actual data of the stream.
The ITCH feed is made up of a series of sequenced messages. Each message is variable in length
based on the message type. The ITCH packet can be maximum 1024 bytes.
Every ITCH Packet:
Downstream Header (20 bytes) + Message Blocks (variable bytes)
2.1.1
max 1024 bytes
HEADER
DOWNSTREAM PACKET HEADER
NAME
OFFSET LENGTH
VALUE
NOTES
Session
0
10
Alpha
Not used by Borsa İstanbul.
Sequence Number
10
8
Numeric
The sequence number of the first message
in the packet.
If there is more than one message contained
in a packet, any messages following the first
message are implicitly numbered
sequentially.
For Heartbeat message, sequence number is
always set to 0.
Message Count
2.1.2
18
2
Numeric
The count of messages contained in this
packet.
MESSAGE BLOCK
The first field of a Message Block is the two byte Message Length.
The remainder of the Message Block is the variable length Message Data field. The first Message
Block field will always start immediately following the Header which is 20 bytes (10+8+2) from the
beginning of the packet. Subsequent Message Blocks will begin after the last byte of the previous
Message Block.
Message Block contains variable message data which are defined at message count field in header.
© 2014 Borsa İstanbul A.Ş.
7
DOWNSTREAM PACKET MESSAGE BLOCK
NAME
OFFSET LENGTH
VALUE
NOTES
Message Length
*
Numeric
Indicates the length in bytes of the message
contained in this Message Block.
2
The Message Length is an unsigned binary
count representing the number of message
data bytes following this Message Length
field. The message length field value does
not include the two bytes occupied by the
message length field. The total size of the
message block is the value of the message
length field plus two.
Message Data
*
*
Alpha
The Message Data is the actual data of the
message being transmitted by server.
It is variable in length and can be zero
length. The meaning of the data is
application specific.
* Variable values
2.2 DATA TYPES
All Numeric fields are composed of big-endian binary encoded numbers.
All alpha fields are left justified and padded on the right with spaces.
The Alpha fields are composed of non-control ISO 8859-1 (Latin-1) encoded bytes.
Timestamps are represented as nanoseconds since midnight.
DATA TYPES
TYPE
SIZE
NOTES
Numeric
1, 2, 4 or 8 bytes
Unsigned big-endian binary encoded numbers.
NOTE: Borsa İstanbul uses big-endian architecture. If the
client computers use a little-endian system (Most
computers, including PCs, use the little-endian system),
they must convert data between the two systems.
Alpha
variable
Left justified and padded on the right with spaces.
Price
4 bytes
Prices are signed integer fields. Number of decimals is
specified at “Number of decimals in Price” in the “Order
Book Directory (R)” message.
The default number of decimals in price is always 3 digits
for all price values. For example; the price value “1234”
© 2014 Borsa İstanbul A.Ş.
8
DATA TYPES
TYPE
SIZE
NOTES
describes “1,234”.
Exception: The “Tick Size Table Entry (L)” message
contains an 8 Byte Price field instead of 4 Byte!
2.3 MESSAGE FORMATS
The ITCH feed is composed of a series of messages that describe orders added to, removed from,
and executed on Borsa İstanbul. It also contains messages for basic reference data of the order
books as well as state changes and halts.
MESSAGES LIST
Categories
Code
Message
Heartbeat
H
Heartbeat
Time Messages
T
Second Message
Reference Data
R
Order Book Directory
L
Tick Size Table Entry
S
System Event Message
O
Order Book State Message
A
Add Order
E
Order Executed Message
U
Order Replace Message
D
Order Delete Message
P
Trade Message
Event & State Change
Order Level Data
Trade Message
2.3.1
HEARTBEAT
Heartbeats are sent periodically by the ITCH server, so receivers can sense packet loss even during
times of low traffic. Typically, these packets are transmitted once per 10 second. A Heartbeat packet
contains only one heartbeat message. If the client does not receive anything (neither data nor
heartbeats) for an extended period of time, it can assume that the link is down.
For Heartbeat message, sequence number in the header is always set to 0.
REWINDER and GLIMPSE do not send Heartbeat packets.
© 2014 Borsa İstanbul A.Ş.
9
HEARTBEAT
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“H”
H – Heartbeat Message
Second
1
4
Numeric
Unix time (number of seconds since 197001-01 00:00:00 UTC). (Big-endian)
Timestamp –
Nanoseconds
5
4
Numeric
Nanoseconds portion of the timestamp.
(Big-endian)
LastSeqNum
9
8
Numeric
Last sequence number of ITCH channel.
2.3.2
TIME MESSAGES
For bandwidth efficiency, the ITCH timestamp is separated into two parts:
TIMESTAMP PORTION
MESSAGE TYPE
NOTES
Seconds
Standalone message.
Unix Time (number of seconds
since 1970-01-01 00:00:00
UTC).
Unix Time (Epoch Time or
POSIX Time) is a system for
describing points in time.
Defined as the number of
seconds (excluding leap
seconds) that has elapsed since
the midnight of January 1, 1970
Coordinated Universal Time
(UTC).
NOTE: A Timestamp – Second
message will be disseminated
for every second for which
there is at least one message.
Nanoseconds
Field within individual messages.
Reflects the number of
nanoseconds since the most
recent Timestamp-Seconds
message that the data message
was generated.
A nanosecond (ns) is an SI unit
of time equal to one billionth of
a second.
10-9 s or 1/1,000,000,000 s
© 2014 Borsa İstanbul A.Ş.
10
2.3.2.1 SECOND MESSAGES
This message is sent every second, for which at least one ITCH message is generated. The message
contains the number of seconds since the start of 1970-01-01 00:00:00 UTC, also called Unix Time.
TIMESTAMP – SECONDS MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“T”
T - Second Message.
Second
1
4
Numeric
Unix time (number of seconds since 197001-01 00:00:00 UTC). (Big-endian)
2.3.2.1.1 SAMPLE MESSAGE
T|1071934401
2.3.3
REFERENCE DATA MESSAGES
2.3.3.1 ORDER BOOK DIRECTORY
At the start of each trading day, Order Book Directory messages are disseminated for all active
securities, including halted securities, in Borsa İstanbul trading system.
NOTE:
An Order Book Directory message will occur when new order books (securities) are added to the
system between the first and the second sessions, during lunch break.
Updates to existing order books will also be represented by intra-day Order Book Directory
messages.
ORDER BOOK DIRECTORY
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“R”
R - Order Book Directory Message
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
(Big-endian)
Order book ID
5
4
Numeric
Denotes the primary identifier of an order
book.
Symbol
9
32
Alpha
Security short name.
Long Name
41
32
Alpha
Only warrant long name.
© 2014 Borsa İstanbul A.Ş.
11
ORDER BOOK DIRECTORY
NAME
OFFSET LENGTH
VALUE
NOTES
Stock Market
73
Alpha
Values:
12
N=National
L=Second National
W=Watchlist
K=Collective Products,
S=Free Trade Platform,
G=Emerging Companies
Financial Product
85
1
Numeric
(Suffix)
Values:
1=Old Market ("E")
6=Rights Coupon Market ("R")
7=Exchange Traded Funds ("F")
8=Warrants Market ("V")
9=Certificate Market ("C")
NOTE: Primary Market(IPO), Buyin and
Offical Auction products are not available in
ITCH.
Trading Currency
86
3
Alpha
Trading currency.
NOTE: Default value is “TRY”.
Number of
decimals in Price
89
2
Numeric
This value defines the number of decimals
used in price for this order book.
NOTE: Default value is 3.
NOTE: Number of decimals is specified in
the Order Book Directory message and valid
for all price values.
Number of
decimals in
Nominal Value
91
2
Numeric
Not used by Borsa İstanbul.
Reserved
93
4
Alpha
Not used by Borsa İstanbul.
Reserved
97
4
Alpha
Not used by Borsa İstanbul.
Reserved
101
4
Alpha
Not used by Borsa İstanbul.
Nominal Value
105
8
Numeric
Not used by Borsa İstanbul.
2.3.3.1.1 SAMPLE MESSAGE
R|392557824|2207822 |ACSEL
© 2014 Borsa İstanbul A.Ş.
|
|L
|E|TRY|3|0| | | |0
12
2.3.3.2 TICK SIZE TABLE ENTRY
This message contains information on a tick size for a price range. Each Order Book has a set of Tick
Size Table Entries to define its tick size table.
The price range is calculated by using the base price of a security and the Order Book always has one
Tick Size Table.
NOTE:
The numbers of decimals in prices are given in the “Number of decimals in Price” value by the
Order Book Directory message for this Order Book. The default number of decimals in price is
always 3 digit for all price values.
TICK SIZE TABLE ENTRY
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“L”
L – Tick Size Message
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
Order book ID
5
4
Numeric
The order book to which this entry belongs.
Tick Size
9
8
Price
Tick Size for the given price range
Price From
17
4
Price
Start of price range for this entry.
(LowLimitPrice)
NOTE: Zero (0) means free float (there is no
lowest and highest price according to the
related rules).
NOTE: Number of decimals is specified in
the Order Book Directory message and is
valid for all price values.
Price To
21
4
Price
End of price range for this entry.
(HighLimitPrice)
NOTE: Zero (0) means free float (there is no
lowest and highest price according to the
related rules).
NOTE: Number of decimals is specified in
the “Number of Decimals in Price” value in
the Order Book Directory message and is
valid for all price values.
2.3.3.2.1 SAMPLE MESSAGE
L|392557824|2207822|100|84250|103250
© 2014 Borsa İstanbul A.Ş.
13
2.3.4
EVENT AND STATE CHANGE MESSAGES
2.3.4.1 SYSTEM EVENT MESSAGE
The system event message type is used to signal a market or data feed handler event. The format is
as follows:
SYSTEM EVENT MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“S”
S – System Event Message.
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
Event Code
5
1
Alpha
Values:
O = Start of Messages. Outside of time
stamp messages, the start of day message is
the first message sent on any trading day.
C = End of Messages. This is always the last
message sent on any trading day.
2.3.4.1.1 SAMPLE MESSAGE
S| 331235922|O
2.3.4.2 ORDER BOOK STATE MESSAGE
The Order book state message relays information on state changes.
NOTE:
Securities that are traded with single price method are subject to a total of five session states in the
trading day. There are 2 session states before lunch break, and the others are performed after
lunch break.
If the trading method is “single price” and there is no matching after the end of session state, the
clients may receive the order book state message “M-PreOpenEnd (Matching)” with delay.
ORDER BOOK STATE MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“O”
O – Order Book State Message.
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
© 2014 Borsa İstanbul A.Ş.
14
ORDER BOOK STATE MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Order book ID
5
4
Numeric
Order book identifier.
State Name
9
20
Alpha
Values:
P = PreOpen Begin
M = PreOpen End(Matching)
O = Open
S = Surcon(End state of session )
H = Halted
2.3.4.2.1 SAMPLE MESSAGE
O|331235923|111694|P
2.3.4.2.2 TRADING SESSION STATUS MAPPING
The following tables describe the daily “Order Book State Message” according to trading method of
the individual instrument.
Warrants, certificates and rights coupons is not subject of call phase, therefore there will be no P
and M messages for these kind of instruments.
TRADING METHOD: CONTINUOUS MATCHING
TRADING DAY
TRADING SESSION STATE
DESCRIPTION
ORDERBOOKSTATE
(STATENAME)
TIME
1
Call Phase / Order collection
P (PreOpen Begin)
09:15
2
Price Determination Phase and
M (PreOpen
End/Matching)
09:30
FIRST SESSION
Opening
Session
Opening Transactions.
Main Trading
3
Continuous Auction
O (Open)
09:35
4
End of Continuous Auction
S (Surcon)
12:30
5
Call Phase / Order collection
P (PreOpen Begin)
14:00
M (PreOpen
14:10
SECOND SESSION
Opening
Session
(Opening Session)
6
Price Determination Phase and
© 2014 Borsa İstanbul A.Ş.
15
TRADING DAY
Main Trading
Closing Session
TRADING SESSION STATE
DESCRIPTION
ORDERBOOKSTATE
(STATENAME)
TIME
Opening Transactions.
End/Matching)
7
Continuous Auction (Main Trading)
O (Open)
14:15
8
End of Continuous Auction
S (Surcon)
17:30
9
Call Phase (order collection)
P (PreOpen Begin)
17:33
10
Closing Price Determination Phase
M (PreOpen
End/Matching)
17:36
11
Trades at Closing Price/Single Price
O (Open)
17:38
12
End of Trading at Closing Price/Single
S (Surcon)
17:40
TRADING SESSION STATE
DESCRIPTION
ORDERBOOKSTATE
(STATENAME)
TIME
1
Call Phase / Order collection
P (PreOpen Begin)
09:15
2
Price Determination Phase and
M (PreOpen
End/Matching)
09:30
Price
TRADING METHOD: SINGLE PRICE
TRADING HOURS
FIRST SESSION
Opening
Session
Opening Transactions.
Single Price
Auction
3
Call Phase (order collection)
P (PreOpen Begin)
09:35
4
Price Determination Phase
M (PreOpen
End/Matching)
12:30
5
Call Phase / Order collection
P (PreOpen Begin)
14:00
M (PreOpen
End/Matching)
14:10
SECOND SESSION
Opening
Session
(Opening Session)
6
Price Determination Phase and
Opening Transactions.
© 2014 Borsa İstanbul A.Ş.
16
TRADING HOURS
Single Price
Auction
Closing Session
TRADING SESSION STATE
DESCRIPTION
ORDERBOOKSTATE
(STATENAME)
TIME
7
Call Phase (order collection)
P (PreOpen Begin)
14:15
8
Price Determination Phase
M (PreOpen
End/Matching)
17:30
9
Trades at Closing Price/Single Price
O (Open)
17:38
10
End of Trading at Closing Price/Single
S (Surcon)
17:40
Price
NOTE:
Closing session will be run on half trading days phases of which are given below:
•Call Phase (Order Collection): (3 minutes, 12.33 – 12.36)
•Price Determination Phase: (2 minutes, 12.36 – 12.38)
•Trades at Closing Price/Single Price: (2 minutes, 12.38 – 12.40)
2.3.5
ORDER LEVEL DATA
NOTE:
Order IDs are always unique in Borsa İstanbul trading system
2.3.5.1 ADD ORDER MESSAGES
An Add Order Message indicates that a new order has been accepted by Borsa İstanbul trading
system and was added to the displayable book. The message includes an Order ID that is unique in
Borsa İstanbul trading system.
NOTE:
If the incoming order was fully matched with the existing order in the book, add order message will
not be generated.
Add Order Message does not include participant identifier of an order.
© 2014 Borsa İstanbul A.Ş.
17
ADD ORDER MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“A”
A – Add Order Message.
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
Order ID
5
8
Numeric
The unique identifier assigned to the new
order.
Order book ID
13
4
Numeric
Order book identifier.
Side
17
1
Alpha
The type of order being added.
“B” = buy order.
“S” = sell order.
Order book
Position
18
4
Numeric
Rank within order book.
Quantity
22
8
Numeric
The quantity of the order.
Price
30
4
Price
The price of the new order.
Quote Indicator
34
2
Numeric
Possible values:
Always start at 1.
1 = Normal (casual) order
2 = This order is a side of quote order.
NOTE: The quote order is divided into buy
and sell side orders in Borsa İstanbul trading
system. This field can be used to distinguish
normal and quote orders by clients while
tracking the order books.
Lot Type
36
1
Numeric
Not used by Borsa İstanbul.
2.3.5.1.1 SAMPLE MESSAGE
A|331235922|1309201300004145|3406|B|110|235|6960|1|0
2.3.5.2 MODIFY ORDER MESSAGES
Modify Order messages always include the Order ID, Order book ID and Side of the original Order to
which the update applies.
There are three kinds of modify messages;

Order Executed Message (E)

Order Replace Message (U)

Order Delete Message (D)
© 2014 Borsa İstanbul A.Ş.
18
To determine the current display quantity for an order, ITCH subscribers must deduct the number of
lots stated in the modify message (executed) from the original quantity stated in the Add Order
message with the same Order ID.
Borsa İstanbul trading system may send multiple Modify Order messages for the same order and the
effects are cumulative. When the visible quantity for an order reaches “0”, the order should be
removed from the order book.
2.3.5.2.1 ORDER EXECUTED MESSAGE
This message is sent whenever an order on the book is executed in whole or in part.
If the incoming order causing the match cannot be entirely fulfilled, the remainder will be placed in
the book after the match has occurred.
It is possible to receive several Order Executed Messages for the same order if that order is executed
in several parts. Multiple Order Executed Messages on the same order are cumulative.
ORDER EXECUTED MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“E”
E – Order Executed Message.
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
Order ID
5
8
Numeric
The identifier assigned to the new order.
Order book ID
13
4
Numeric
Order book identifier.
Side
17
1
Alpha
The type of order being added. Values:
“B” = buy order.
“S” = sell order.
Executed Quantity
18
8
Numeric
The quantity being executed.
Match ID
26
8
Numeric
Assigned by the system to each match
executed.
Combo Group ID
34
4
Numeric
Not used by Borsa İstanbul.
Reserved
38
7
Alpha
Not used by Borsa İstanbul.
Reserved
45
7
Alpha
Not used by Borsa İstanbul.
2.3.5.2.1.1
SAMPLE MESSAGE
E|912519948|1309201300005775|1739854|B|100|652|0|
© 2014 Borsa İstanbul A.Ş.
19
2.3.5.2.2 ORDER REPLACE MESSAGE
This message is sent whenever an order on the book has been amended. The remaining quantity
from the original order is no longer accessible, and must be removed.
OrderID, Side and Order book ID remain the same as the original order.
ORDER REPLACE MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“U”
U – Order Replace Message.
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
Order ID
5
8
Numeric
The original order identifier of the order
being replaced.
NOTE: The Order ID does not change when
the order is replaced.
Order book ID
13
4
Numeric
Order Book Identifier.
Side
17
1
Alpha
Values:
“B” = buy order.
“S” = sell order.
New Order book
Position
18
4
Numeric
New Rank within order book.
The order won’t loose (keep) its price/time
priority in the following modification
situations;


Quantity decrease
Time validity decrease (from day
order to session order)
When the modification has resulted in the
order losing price/time priority, the new
rank will be indicated in the “New Order
Book Position”. Otherwise, the rank will be
same with the above modification; “New
Order Book Position” value will be set to
zero (“0”).
Quantity
22
8
Numeric
The new quantity of the order.
Price
30
4
Price
The new price of the order.
Order Attributes
34
2
Numeric
Not used by Borsa İstanbul.
2.3.5.2.2.1
SAMPLE MESSAGE
U|94630116|1309201300005881|B|0|236|4230|0
© 2014 Borsa İstanbul A.Ş.
20
2.3.5.2.3 ORDER DELETE MESSAGE
This message is sent whenever an order on the book is deleted. There will be no balance, so the
order should be removed from the book.
Please note that normally, no Order Delete message is sent when an order is completely fulfilled
except quote orders. The receiver needs to keep track of the balance on all orders by recalculating
the remaining quantity on each Order Executed message received. Orders must be removed from
the book when the balance reaches zero (“0”). However, in the quote orders (quote indicator field is
equal to 2 in add order message), clients must keep orders with zero quantity in the book in
accordance with Borsa İstanbul ranking rules. Borsa İstanbul always sends an Order Delete message
for quote orders if necessary.
NOTE:
In normal (casual-standard) orders (Quote Indicator = 1 “AddOrder”)
Order Delete messages are not sent when orders with undisclosed quantity are entirely fulfilled.
In quote orders (Quote Indicator = 2 “AddOrder”)
Order Delete messages will be sent, clients must wait for Order Delete message for ranking issues
when orders with undisclosed quantity are entirely fulfilled.
ORDER DELETE MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“D”
D – Order Delete Message.
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
Order ID
5
8
Numeric
The ID of the order is deleted.
Order book ID
13
4
Numeric
The Order book ID.
Side
17
1
Alpha
Values:
“B” = buy order.
“S” = sell order.
2.3.5.2.3.1
SAMPLE MESSAGE
D| 331235922| 1309201300004145|3406|B
© 2014 Borsa İstanbul A.Ş.
21
2.3.6
TRADE MESSAGES
2.3.6.1 TRADE MESSAGE
The Trade Message is designed to provide execution details for normal match events involving nondisplayable order types.
Since no Add Order Message is generated when a non-displayed order is initially received, the Order
Executed message cannot be used for all matches. The Trade Message is used to report a match for
a non-displayable order in the book.
It is possible to receive multiple Trade Messages for the same order if that order is executed in
several parts. Trade Messages for the same order are cumulative.
Trade Messages should be included in trade tickers as well as volume and other market statistics.
TRADE MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
1
“P”
P – Trade Message Identifier
Timestamp –
Nanoseconds
1
4
Numeric
Nanoseconds portion of the timestamp.
Match ID
5
8
Numeric
Assigned by the system to each match
executed.
Combo Group ID
13
4
Numeric
Not used by Borsa İstanbul.
Side
17
1
Alpha
Values:
“B” =buy order
“S” =sell order
Quantity
18
8
Numeric
The quantity being matched in this
execution.
Order book ID
26
4
Numeric
Order book ID
Trade Price
30
4
Price
Trade Price
Reserved
34
7
Alpha
Not used by Borsa İstanbul.
Reserved
41
7
Alpha
Not used by Borsa İstanbul.
Printable
48
1
Alpha
Indicates if the trade should be included in
trade tickers and volume calculations.
Values:
“Y” = printable
© 2014 Borsa İstanbul A.Ş.
22
TRADE MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
*”N” is not used by Borsa İstanbul.
Occurred at Cross
49
1
Alpha
Values:
“Y” = Yes, trade occurred at the cross
*”N” is not used by Borsa İstanbul.
2.3.6.1.1 SAMPLE MESSAGE
P|774328242|166|B|2786|57422|5760|
|
|Y|Y
2.4 PROTOCOL FLOW
TIME LINE
DETAIL
Beginning of the
Trading Day
The ITCH channel begins sending messages at 08:50 on every trading day.
The “Second Message (T)” will be disseminated for every second for
which, there is at least one message.
“System Event Message (S)” with “Event Code=O” is the first message
that will be sent on any trading day.
The reference data for all securities (Equities, ETFs, Warrants, Coupons,
Certificates - including halted) will be disseminated with “Order Book
Directory (R) and “Tick Size Table Entry (L)“ for the following session.
Intraday / During the
Trading Sessions
The ITCH channel starts to send “Order Book State (O)” message with
“State Name = P” for all securities when the opening session starts. ITCH
does not provide standalone information on the status of the market.
During call phase (pre-open, order collection), order books are blind and
there is no data disseminating. The ITCH channel starts to send “Order
Book State (O)” message with “State Name = M” for all securities when
the opening session ends. The “Trade (P)” Message is used to report a
match for a non-displayable order in the book following the price
determination phase.
! IMPORTANT NOTE:




© 2014 Borsa İstanbul A.Ş.
During call phase (dark pool, blind orders) clients will not receive
any ITCH messages for book changes.
After receiving “Order Book State (O)” message with “State
Name = P (PreOpen Begin)” for a book, all outstanding orders in
the book must be cleared by the client. “Order Delete (D)”
messages will not be sent in this case; don’t expect them.
“Trade (P)” messages will be sent.
Finally, the client will get snapshot of the book with “Add Order
23
TIME LINE
DETAIL

(A)” messages starting with ranking #1.
If there is no matching after the end of call phase, the clients will
not receive the order book state message “M-PreOpenEnd
(Matching)”.
The ITCH channel starts to send “Order Book State (O)” message with
“State Name = O” when the continuous auction starts.
Each time an anonymous order is added to the order book of an
instrument, an “Add Order (A)” message will be published with details of
the side, price and displayed quantity stated in the “Side”, “Price” and
“Quantity” fields respectively.
When an order is deleted from the book, the “Order Deleted (D)”
message will be published.
If an order’s price or volume is modified, an “Order Replace (U)” message
will be disseminated with the revised price and quantity.
! IMPORTANT NOTE:


The order won’t loose (keep) its price/time priority in the
following modification situations;
 Quantity decrease
 Time validity decrease (from day order to session order)
When the modification has resulted in the order losing
price/time priority, the new rank will be indicated in the “New
Order Book Position”. Otherwise, the rank will be same with the
above modification, “New Order Book Position” value will be set
to zero (“0”).
On-book executions at the displayed price of the order are published in
the “Order Executed (E)” message. The quantity specified in the
“Executed Quantity” field should be deducted from the original displayed
quantity of the order. The “Order Executed (E)” message will not contain
a price and this should be inferred from the original limit price of the
order.
All executions will have a unique “Match ID” value.
As an instrument transitions through its various states (e.g. halted, open)
during the trading day, an “Order Book State (O)” message is
immediately published with the new state identified in the field “State
Name”.
The ITCH channel starts to send “Order Book State (O)” message with
“State Name =S” when the continuous auction ends.
“Order Book State (O)” message behavior is the same as the opening
session for single price auction and closing session.
In Between Two
Trading Sessions
Order Delete Message (D) is sent for the session orders that will be
cancelled after the first session close.
The updated reference data for all securities (Equities, ETFs, Warrants,
Coupons, Certificates - including halted) will be disseminated with “Order
Book Directory (R) and “Tick Size Table Entry (L)“ for the following
© 2014 Borsa İstanbul A.Ş.
24
TIME LINE
DETAIL
session.
There is no data disseminating except cancelled orders and reference
data from 12:45 to 13:15 (Break time between two sessions may vary
according to the internal operational procedures).
End Of The Trading Day
Order Delete Message (D) is sent for the session and day orders that will
be cancelled at the end of the trading day.
“System Event Message (S)” with “Event Code=C” is the last message that
will be sent on any trading day.
The ITCH channel stops sending messages for the day at 17:55.
2.5 HOW TO BUILD AN ORDER BOOK VIEW
The information needed to build an order book view from the ITCH message flow is contained in the
Add Order Messages and the Modify Order Messages. The messages are:
•
Add Order
•
Order Executed
•
Order Replace
•
Order Delete
Orders shall be ranked by:
•
Order Book Position. 1 denotes the highest ranked order. For an Order Replace, the order
must be removed from its previous position and inserted at New Order Book Position. An
order inserted at an existing position shifts the order on that position down (and all orders
below as well). A deleted or fully filled order causes existing orders below it to shift their
position up one step to fill the “void”.
•
If the remaining quantity is “0” (zero), Order Delete message will not be sent for normal
(standard-casual) orders. Track the remaining quantity and remove the order from the book
if the quantity reaches “0” (zero). Otherwise, in quote orders, Order Delete message is sent
by Borsa İstanbul.
The Order Replace message signals that the order has been modified. The current rank may or may
not be lost in the process Order Book Position will show the new rank within the book.
The “Order Delete (D)” message tells the recipient to remove the order from the book.
© 2014 Borsa İstanbul A.Ş.
25
NOTE:
If the rank will be the same with the Order Replace message, then New Order Book Position (rank)
value will be set to “0” (zero).
NOTE:
•
•
•

During call phase (dark pool, blind orders) clients will not receive any ITCH messages for
book changes.
After receiving “Order Book State (O)” message with “State Name = P (PreOpen Begin)” for
a book, all outstanding orders in the book must be cleared by the client*. “Order Delete
(D)” messages will not be sent in this case; don’t expect them.
“Trade (P)” messages will be sent.
Finally, the client will get snapshot of the book with “Add Order (A)” messages** starting
with ranking #1.
* Outstanding orders in the client side book will be invalid after the call (order collection) phase.
Therefore client must clear the book when Preopen (State Name = P) “Order Book State” message
is received.
* Pre-Open of the first and second session, closing session and call phase of single price securities
during the continuous auction of the first and second sessions will have blind orders (dark pool).
** Nanosecond field of “Add Order (A)” messages will be always “0” (zero) for snapshot of blind
orders (dark pool) because waiting orders written on the book after matching and original order
receive times are not distributed.
© 2014 Borsa İstanbul A.Ş.
26
2.6 SAMPLE SCENARIOS
2.6.1
CASE 1
New order entry, amend and delete
STEP
SCENARIO
ITCH
ATTRIBUTES
ACTIVITY
1
Order Entered Into Book (A)
A
Order ID (A) qty and
price (A).
Store Order ID, Quantity
and Price for (A)
U
Order ID (A) qty and
price (A).
Modify quantity and price
for Order ID
D
Order ID (A)
Remove Order ID (A)
[ADD ORDER] (A)
2
Order Amended (A)
[ORDER REPLACE] (A)
3
Order Deleted (A)
[ORDER DELETE] (A)
2.6.2
CASE 2
New order fully trades with existing order(s)
STEP
SCENARIO
ITCH
ATTRIBUTES
ACTIVITY
1
Order Entered Into Book (A)
A
Order ID (A) qty and
price (A).
Store Order ID, Quantity
and Price for (A)
E
Execution qty order
ID (A) price (A)
Subtract executed
quantity from stored
Order ID (A)
[ADD ORDER] (A)
2*
New order (B) fully trades with
(A) (and possibly other existing
orders)
[ORDER EXECUTED] (A)
2.6.3
*If stored Order ID (A)
quantity is zero, delete the
stored order
CASE 3
New order partially trades with existing order(s)
STEP
SCENARIO
ITCH
ATTRIBUTES
ACTIVITY
1
Order Entered Into Book (A)
A
Order ID (A) qty and
price (A).
Store Order ID, Quantity
and Price for (A)
E
Execution qty order
ID (A) price (A)
Subtract executed
quantity from stored
Order ID (A)
[ADD ORDER] (A)
2*
New order (B) partially trades
with (A) (and possibly other
existing orders)
[ORDER EXECUTED] (A)
© 2014 Borsa İstanbul A.Ş.
*If stored Order ID (A)
quantity is zero, delete the
stored order
27
STEP
SCENARIO
ITCH
ATTRIBUTES
ACTIVITY
3
Remaining quantity of Order
Entered into book (B)
A
Remaining Order ID
(B) qty and price (B)
Store Order ID, Quantity
and Price for (B)
[ADD ORDER] (B)
2.6.4
CASE 4
Existing order is amended and fully trades with the existing order
STEP
SCENARIO
ITCH
ATTRIBUTES
ACTIVITY
1
Order Entered Into Book (A)
A
Order ID (A) qty and
price (A).
Store Order ID, Quantity
and Price for (A)
A
Order ID (B) qty and
price (B).
Store Order ID, Quantity
and Price for (B)
U
Price (B)
Modify price for Order ID
E
Execution qty order
ID (A)
Modify quantity for Order
ID (A)
D
Order ID (B)
Stored Order ID (B)
quantity is zero
[ADD ORDER] (A)
2
Order Entered Into Book (B)
[ADD ORDER] (B)
3
Existing order amended(B)
[ORDER REPLACE] (B)
4
Order(B) fully trades with
existing order(A)
[ORDER EXECUTED] (A)
5
Order (B) Amended to trade
with (A) (and possibly other
existing orders)
Remove Order ID (B)
[ORDER DELETE] (B)
2.6.5
CASE 5
Existing order is amended and partially trades with existing order
STEP
SCENARIO
ITCH
ATTRIBUTES
ACTIVITY
1
Order Entered into Book (A)
A
Order ID (A) qty and
price (A).
Store Order ID, Quantity
and Price for (A)
A
Order ID (B) qty and
price (B).
Store Order ID, Quantity
and Price for (B)
U
Price (B)
Modify price for Order ID
E
Execution qty order
Stored Order ID (A)
[ADD ORDER] (A)
2
Order Entered into Book (B)
[ADD ORDER] (B)
3
Existing order amended(B)
[ORDER REPLACE] (B)
4
Order(B) partially trades with
© 2014 Borsa İstanbul A.Ş.
28
STEP
SCENARIO
ITCH
existing order(A) and Order(A) is
ATTRIBUTES
ACTIVITY
ID (A)
quantity is zero, delete the
stored order!
Remaining quantity
(B)
Store Order ID (B) with
new quantity
fully filled.
[ORDER EXECUTED] (A)
5
Modify quantity for Order ID(B)
U
[ORDER REPLACE] (B)
3. GLIMPSE
GLIMPSE is a recovery channel which should be used by ITCH direct data feed subscribers to recover
from a late join or large-scale data loss.
Using the GLIMPSE facility, ITCH data feed subscribers may obtain a snapshot of the order books at
any point during the trading day. Clients may use the GLIMPSE channel to validate order book
displays or to recover from major data gaps during the trading day.
3.1 ARCHITECTURE
GLIMPSE channel includes a series of logical packets that are used for client-server communication
and delivery of a set of sequenced messages from a server to a client.
LOGICAL PACKETS
Categories
Code
Message
Sent by Server
A
Login Accepted Packet
J
Login Rejected Packet
S
Sequenced Data Packet
Z
End Of Session Packet
L
Login Request Packet
Sent by Client
3.1.1
LOGICAL PACKETS SENT BY SERVER
All packets in GLIMPSE channel have got variable length and can be maximum 1024 bytes.
3.1.1.1 LOGIN ACCEPTED PACKET
GLIMPSE server sends a “Login Accepted Packet” in response to receiving a valid “Login Request”
from the client. This packet will always be the first packet sent by the server after a successful login
request.
© 2014 Borsa İstanbul A.Ş.
29
LOGIN ACCEPTED PACKET
NAME
OFFSET LENGTH
VALUE
NOTES
Packet Length
0
2
Numeric
Number of bytes after this field until the
next packet
Packet Type
2
1
“A”
Login Accepted Packet
Session
3
10
Alpha
The session ID of the session that is now
logged into. Left padded with spaces.
Sequence Number
13
8
Numeric
NOTE1: The sequence number of the last
sent Sequenced Message in the Rewinder
channel.
NOTE2: This value is always 0(zero) in the
Glimpse channel.
Max Number Of
Message In
Memory
21
8
Numeric
NOTE1: The maximum number of the latest
messages from the cache in the Rewinder
channel.
NOTE2: This value is always 0(zero) in the
Glimpse channel.
Max Number Of
Message Per
Request
29
4
Numeric
NOTE1: The maximum number of messages
per request in the Rewinder channel.
NOTE2: This value is always 0(zero) in the
Glimpse channel.
3.1.1.2 LOGIN REJECTED PACKET
GLIMPSE server sends this packet in response to an invalid “Login Request” from the client. The
server closes the socket connection after sending the Login Reject Packet. The Login Rejected Packet
will be the only packet sent by the server in the case of an unsuccessful login attempt.
LOGIN REJECTED PACKET
NAME
OFFSET LENGTH
VALUE
NOTES
Packet Length
0
2
Numeric
Number of bytes after this field until the
next packet
Packet Type
2
1
“J”
Login Rejected Packet
Reject Reason Code
3
1
Alpha
Valid values:
A = Not Authorized. There was an invalid
username and password combination in the
Login Request Message.
S = Session not available. The Requested
Session in the Login Request Packet was
© 2014 Borsa İstanbul A.Ş.
30
LOGIN REJECTED PACKET
NAME
OFFSET LENGTH
VALUE
NOTES
either invalid or not available.
3.1.1.3
SEQUENCED DATA PACKET
The Sequenced Data Packets act as an envelope to carry the actual sequenced data messages that
are transferred from the server to the client. Each Sequenced Data Packet carries one message. The
sequence number of each message is implied; the initial sequence number of the first Sequenced
Data Packet for a given TCP/IP connection is specified in the Login Accepted Packet and the
sequence number increments by 1 for each Sequenced Data Packet transmitted. Since logical
packets are carried via TCP/IP sockets, the only way logical packets can be lost is in the event of a
TCP/IP socket connection failure.
SEQUENCED DATA PACKET
NAME
OFFSET LENGTH
VALUE
NOTES
Packet Length
0
2
Integer
Number of bytes after this field until the
next packet
Packet Type
2
1
“S”
Sequenced Data Packed
Message
3
*
3.1.1.4 END OF SESSION PACKET
The server will send an End of Session Packet to denote that the current session is finished. The
connection will be closed shortly after this packet, and the user will no longer be able to reconnect
to the current session.
END OF SESSION PACKET
NAME
OFFSET LENGTH
VALUE
NOTES
Packet Length
0
2
Numeric
Number of bytes after this field until the
next packet
Packet Type
2
1
“Z”
End of Session Packet
3.1.2
LOGICAL PACKETS SENT BY CLIENT
3.1.2.1 LOGIN REQUEST PACKET
Client must send a Login Request Packet immediately upon establishing a new TCP/IP socket
connection to the server. Client and server must have mutually agreed upon the username and
© 2014 Borsa İstanbul A.Ş.
31
password fields. Both Username and Password are case-sensitive and should be padded on the right
with spaces.
The server can terminate an incoming TCP/IP socket if it does not receive a Login Request Packet
within a reasonable period of time (typically 30 seconds).
LOGIN REQUEST PACKET
NAME
OFFSET LENGTH
VALUE
NOTES
Packet Length
0
2
Numeric
Number of bytes after this field until the
next packet
Packet Type
2
1
“L”
Login Request Packet
Username
3
6
Alpha
Username
Password
9
10
Alpha
Password
Requested Session
19
10
Alpha
Always must be blank to log into the
currently active session.
Requested
Sequence Number
29
20
Alpha
Always must be “1”.
Exception: Right justified and padded with
spaces on the left.
3.2 DATA TYPES
GLIMPSE messages have the same data types as ITCH messages.
3.3 MESSAGE FORMATS
GLIMPSE uses a subset of ITCH messages and also contains below “End of Snapshot Message”.
3.3.1
END OF SNAPSHOT MESSAGE
The end of snapshot message is sent at the end of a GLIMPSE snapshot and returns the current ITCH
sequence number to be used when connecting to the ITCH feed.
To maintain a real-time order display, real-time processing of ITCH messages should begin with the
sequence number stated in this snapshot message.
END OF SNAPSHOT MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Message Type
0
“G”
End of Snapshot Message.
© 2014 Borsa İstanbul A.Ş.
1
32
END OF SNAPSHOT MESSAGE
NAME
OFFSET LENGTH
VALUE
NOTES
Sequence Number
1
Alpha
Last proceeded ITCH sequence number at
the time the snapshot was taken.
20
To be used when applying messages
received via the ITCH feed.
3.4 PROTOCOL FLOW
GLIMPSE can be used to quickly sync up with the ITCH feed. Client must connect to real-time ITCH
feed before the GLIMPSE connection.
Client connection begins with the client opening a TCP/IP socket to the server and sending a “Login
Request Packet”. If the login request is valid, the server responds with a “Login Accepted Packet”.
The connection continues until the TCP/IP socket is broken. Otherwise, “The Login Rejected Packet”
will be sent by the server in the case of an unsuccessful login attempt.
The server will not send heartbeats on the GLIMPSE channel during periods of inactivity.
If a “Login Request Packet” is not received within 30 seconds of the establishment of a TCP/IP
connection, the server will break the TCP/IP connection with the client.
The sequence number of the first sequenced message in each session is always 1.
After a successful login attempt, GLIMPSE utilizes all snapshot messages with “Sequenced Data
Packet” used by ITCH to describe the current state of the book, with the exception of those
messages that change the state of the order book (e.g. Delete, Execute and Trade).
Clients do not need to submit any request on the GLIMPSE channel to get outstanding snapshot.
After a successful login attempt, GLIMPSE will be processed automatically.
Glimpse provides the following:

Basic Reference Data for each order book including intra-day updates

Current trading state of each order book

All outstanding orders for each order book.
At the end of the Glimpse snapshot, a sequence number is provided with “End of Snapshot
Message” that can be used to connect and sync up with the real-time ITCH feed.
GLIMPSE will send an “End of Session Packet” to denote that the current session is finished.
Lastly, the server will break the TCP/IP connection with the client and terminate the connection.
© 2014 Borsa İstanbul A.Ş.
33
NOTE:
If there is a gap between ITCH sequence number and GLIMPSE sequence number, the client should
use REWINDER and request the retransmission of missing messages.
NOTE:
In such a scenario, when the transmission is broken (e.g. connection break) before the outstanding
snapshot is complete, clients must discard the affected order book. Then clients should re-connect
to the GLIMPSE channel and follow the protocol from the first step.
4. REWINDER
REWINDER is the point-to-point TCP replay channel that should be used by the recipients to recover
from a small-scale data loss in the event of a gap in sequence numbers. It permits clients to request
the retransmission of a limited number of messages already published on ITCH. The channel
supports the retransmission of the last 100,000 messages published. Retransmission of every single
request can cover maximum 5,000 messages that have been already published.
Clients should login to the REWINDER channel up to a limited number of times each day. This feature
is intended to help manage an emergency situation and should not be relied upon as a normal
practice.
4.1 ARCHITECTURE
REWINDER channel uses a subset of logical packets which are defined in the “GLIMPSE
Architecture”. These logical packets are used for client-server communication.
The logical packets below are used for only REWINDER channel.
LOGICAL PACKETS
Categories
Code
Message
Sent by Server
A
Login Accepted Packet
J
Login Rejected Packet
V
Request Accept Packet
Y
Request Reject Packet
Z
End Of Session Packet
© 2014 Borsa İstanbul A.Ş.
34
LOGICAL PACKETS
Categories
Code
Message
Sent by Client
L
Login Request Packet
X
Request Message
4.1.1
LOGICAL PACKETS SENT BY SERVER
All packets in REWINDER channel have got variable length and can be maximum 1024 bytes.
4.1.1.1 REQUEST ACCEPT PACKET
The server will respond to the “Request Packet” with a “Request Accept Packet” to indicate that the
retransmission request is successful.
In the case of a successful request, the server will retransmit the requested messages immediately
after the “Request Accept Packet”. The sequence numbers of the retransmitted messages will be the
same as when they were first disseminated on the ITCH channel.
REQUEST ACCEPT
NAME
OFFSET LENGTH
VALUE
NOTES
Packet Length
0
2
Numeric
Number of bytes after this field until the
next packet
Packet Type
2
1
“V”
Request Accepted Packet
4.1.1.2 REQUEST REJECT PACKET
The server will respond to the “Request Packet” with a “Request Reject Packet” to indicate that the
retransmission request is not successful.
REQUEST REJECT PACKET
NAME
OFFSET LENGTH
VALUE
NOTES
Packet Length
0
2
Numeric
Number of bytes after this field until the
next packet
Packet Type
2
1
“Y”
Request Reject Packet
Reject Reason Code
3
3
Alpha
Valid Values:
400 = Beqin sequence number is less than
“1” (one).
402 = End sequence number is less than “0”
(zero).
© 2014 Borsa İstanbul A.Ş.
35
REQUEST REJECT PACKET
NAME
OFFSET LENGTH
VALUE
NOTES
404 = Beqin sequence number is greater
than the end sequence number.
406 = Messages are not ready.
408 = Message interval is too big.
410 = Messages are not in the recovery
storage.
412 = Messages are not ready for recovery,
try again.
498 = Unknown request type.
Sequence Number
6
8
Numeric
This field is only available if the reject reason
code is 410 or 412. Otherwise the Request
Reject Packet does not contain the sequence
Number field.
If the Reject Reason Code equal to 410; this
field represent the lowest sequence number
of the messages that are in the recovery
storage.
If the Reject Reason Code equal to 412; this
field represent the highest sequence
number of the messages that are in the
recovery storage.
4.1.2
LOGICAL PACKETS SENT BY CLIENT
4.1.2.1 REQUEST PACKET
Clients can use the “Request Packet” to request the retransmission of missed messages.
The request should include begin and/or end sequence number(s) of the range to be retransmitted
along with the number of messages to be retransmitted. The maximum range of sequence numbers
can be 5000.

To request a single message: Begin Sequence Number = End Sequence Number

To request a range of messages: Begin Sequence Number = first message of range, End
Sequence Number = last message of range

To request all messages subsequent to a particular message: Begin Sequence Number =
first message of range, End Sequence Number = 0 (represents infinity – to the latest
number).
© 2014 Borsa İstanbul A.Ş.
36
The retransmission request will be serviced from the cache of the last 100,000 messages published
on the ITCH channel. If the retransmission request includes one or more messages that are not in the
cache, the entire request will be rejected but no message will be retransmitted.
If “Request Packet” is not received within 30 seconds of a successful logon, the server will break the
TCP/IP connection with the client.
NAME
OFFSET LENGTH
VALUE
NOTES
Packet Length
0
2
Numeric
Number of bytes after this field until the
next packet
Packet Type
2
1
“X”
Request Packet
Begin Sequence
Number
3
8
Numeric
The sequence number of the Begin
Sequenced Message to be sent (big-endian)
End Sequence
Number
11
8
Numeric
The sequence number of the End Sequenced
Message to be sent (big-endian)
4.2 DATA TYPES
REWINDER messages have the same data types as ITCH messages.
4.3 MESSAGE FORMATS
REWINDER uses a subset of ITCH messages
4.4 PROTOCOL FLOW
Client connection begins with the client opening a TCP/IP socket to the server and sending a “Login
Request Packet”. If the login request is valid, the server responds with a “Login Accepted Packet”.
The connection continues until the TCP/IP socket is broken. Otherwise, “The Login Rejected Packet”
will be sent by the server in the case of an unsuccessful login attempt.
The server will not send heartbeats on the REWINDER channel during periods of inactivity.
If a “Login Request Packet” is not received within 30 seconds of the establishment of a TCP/IP
connection, the server will break the TCP/IP connection with the client.
After a successful login attempt, the client can send “Request Packet” to request the retransmission
of missed messages.
© 2014 Borsa İstanbul A.Ş.
37
If a “Request Packet” is not received within 30 seconds of a successful logon, the server will break
the TCP/IP connection with the client.
The server will respond to the “Request Packet” with a “Request Accept Packet” to indicate the
retransmission request is successful. If request is unsuccessful, then “Request Reject Packet” will be
sent by the server.
In the case of a successful request, the server will retransmit the requested messages immediately
after the “Request Accept Packet”. The sequence numbers of the retransmitted messages will be the
same as when they were first disseminated on the ITCH.
REWINDER will send an “End of Session Packet” to denote that the retransmission is finished.
Lastly, the server will break the TCP/IP connection with the client and terminate the connection.
© 2014 Borsa İstanbul A.Ş.
38