yield-x data feed specifications - jse · yield-x data feed specifications january 2006 page 2 ......

32
Yield-X Data Feed Specifications Last updated: January 2006 Version 9.8

Upload: lyhuong

Post on 19-Jul-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Yield-X Data Feed Specifications

Last updated:

January 2006 Version 9.8

Yield-X Data Feed Specifications January 2006 Page 2

Foreword This document is the official JSE Securities Exchanges’ technical guide to Data Vendors who would like to connect to the Yield-X Data Feed. It is a subset of the ITC specifications used internationally. A Data Vendor is any company that receives a data feed from the JSE Securities Exchange for own use or distribution purposes. It is not complete with all possible message types, but rather serves as a basis to connect to the JSE Securities Exchange and to receive on-line information. Please refer to the ITC specifications for more detail. The JSE Securities Exchange is not responsible for any problems that might arise from using this document, and is not reliable for any damages that might result from using it or the Yield-X data feed. This document is the property of the JSE Securities Exchange and may not be copied without prior written permission from the JSE Securities Exchange. Please contact Warren Geers at the JSE Securities Exchange in connection with any problems you may have with this document: Tel.: +27 11 520 7470 Fax: +27 11 520 8470 mailto:[email protected]

Yield-X Data Feed Specifications January 2006 Page 3

Table of Contents

CHAPTER 1 OVERVIEW AND PROCESS 4

1.1 GETTING CONNECTED TO YIELD-X 4 1.2 SECURITY 4 1.3 LOGIN PROCESS 4 1.4 PROBLEM RESOLUTION 5

CHAPTER 2 MESSAGE TYPES AND LAYOUT 7

2.1 MAIN MESSAGE TYPES 7 SOH CONTROL CHARACTER 7 2.2 STATUS MESSAGE LAYOUT 8 2.3 REQUEST MESSAGE LAYOUT 9 2.4 MARKET INFORMATION MESSAGE LAYOUT 12 2.5 ADDITIONAL DATA 24 2.5.1 JBARS 24

APPENDIX A DEST ENCRYPTION 27

A1 DEST ENCRYPTION 27

APPENDIX B ABBREVIATIONS AND CODES 28

B.1 DECIMAL PLACES / FRACTIONAL INDICATOR 28 B.2 PRICE 28 B.3 BATE CODES 29 TABLE B2 MONTH CODES 29

Yield-X Data Feed Specifications January 2006 Page 4

Chapter 1 Overview and process

1.1 Getting Connected to Yield-X The first step is to sign a contract as a Data Vendor with the JSE. This spells out legal responsibilities and pricing. A sample copy is attached in the appendices. Pricing is affected by the number of clients to whom data is distributed. The second step is a physical connection via the Telkom network to Yield-X. The current serial communication is now replaced with TCP/IP communication. The functionality and logical flow is still the same as the previous Digiboard system except that all communications now utilize TCP/IP. The JSE IT Department will support any person with the line application if needed. The third step is to develop a communication software product. This product must adhere to the protocol as specified in this document. It should have a DEST encryption module to ensure a successful logon to Yield-X. The last step is to obtain a member id and Key from the JSE Yield-X division. This will be used to log into Yield-X and provides the required security in conjunction with the DEST encryption module.

1.2 Security Security is handled at different levels: • Physical security. A Data Vendor can only connect via a dedicated link into the Yield-X

Data Feed. This prohibits unauthorized connections. • Member id and key. Each Data Vendor requires a unique member id (different to the

Automated Trading System user id) and key (or password). These are allocated by the Yield-X division of the JSE and remain fixed until changed

• DEST encryption . A member requires a DEST encryption module that can provide an appropriate response to a random challenge. This provides for a further level of security.

• Coding. All messages are coded according to the rules of this document. This ensures a relatively simple way of encoding.

1.3 Login process Each message is identified by the Category Code (see Table 2.2 for more detail). Each Category Code has a certain function. These are explained in more detail in chapter 2. Each Category Code has a sub classification, called the Type Code. These two characters uniquely identify the role of the message. This document uses the term user to describe the user or Data Vendor who wants to log into the Yield-X system. It can also be called the terminal, remote station, user PC or remote. The login process to Yield-X is as follows: • the user waits for Yield-X to request if the user has information to send. • the user then request to login, sending his member code • if the member code is valid, Yield-X will acknowledge this and send a challenge • the user will calculate a response, and reply

Yield-X Data Feed Specifications January 2006 Page 5

• the Yield-X system then allows the user in if the response was valid, else denies access

An alternative description of the login process follows: A user who is not logged on or is not active on a communication link will periodically receive a communications control message (“DEN” type). As soon as one of these messages are ACKed by the user, the feed will acknowledge their existence by sending communications control type message (“ACK” type). Once these are received, the user can attempt a logon by sending the logon request message type (“LR”) together with their member ID. The data feed will either respond with a “DEN” type message denying the logon (usually invalid member ID) or with a “LOG” type message which includes the logon request challenge. The user must reply with a “LI” type message which includes the member ID, member key, challenge response and the Sequence number from where the data vendor wish to receive messages. The challenge response is calculated using the member ID, member key and the request challenge string using a DEST encryption technique. The data feed will either respond with a “DEN” type message denying the logon (usually invalid challenge response) or and “ACK” type message which indicates a successful logon.

All login messages are of Category Code 8. The messages from Yield-X are of Type Code S (ie 8S status messages as described in section 2.2) and the messages from the user are of Type Code R (ie 8R request messages as described in section 2.3). The process is described in more detail at the end of section 2.3.

1.4 Problem resolution The Yield-X division of the JSE runs a HelpDesk to which all problems must be reported. The contact number is +27-11-520-7475 in Johannesburg. Each call received is logged for follow up and management purposes. Since Data Vendors normally depend on for accurate and timely information for their business, such calls are treated as urgent. Whenever a problem has arisen with market data, it is important to give as much information as possible. For example, it is basically impossible to trace any problem if the helpdesk does not have the date(s) on which the problem occurred. If possible, include the contract code(s) and approximate time of problem occurrence. For example, it is quite simple to resolve a problem that states that the Bid price on the ALSI June 97 was incorrect on 30 May 1997 at 08:22:00. An equally clear message would be that no settlement prices were received yesterday for any contract. Support is also given to members or Data Vendors with the installation of their Telkom lines. It should however be emphasised that these lines does not belong to Yield-X, and the member is still responsible for backup routes and payment.

Yield-X Data Feed Specifications January 2006 Page 6

Yield-X Data Feed Specifications January 2006 Page 7

Chapter 2 Message Types and Layout The first process to program is probably the login procedure. Recommended steps to complete the program, are: • Complete DEST encryption (see appendix A) • Write the login procedure (see sections 2.2 and 2.3) • Decode the messages received by Yield-X (see section 2.4)

Section 2.1 gives an overview of all the different message types (Category Codes). Two of these are of particular importance for the login process, viz Category Code R and S. These are discussed in sections 2.2 and 2.3 in detail to give an overview of the format. At the end of section 2.3 the login process is discussed in detail using the formats given.

2.1 Main Message Types Each message contains a fixed header and a dynamic, message specific data portion. The dynamic data portion depends on the values of the category and type codes which are always present in the header portion. All numeric fields are right justified with spaces for unused positions. All character fields are left justified and space filled to the right for unused positions. For the convenience of the user the size of each field (length in bytes) as well as the start position (offset) is included in the relevant tables. This is convenient when counting character positions during programming. For example, in table 2.1 below the Category Code is in position 5 and contains 1 byte or ASCII Character. The Header information for Yield-X is as follows:

Table 2.1 Message Header Information Contents Size (bytes) Start SOH Control Character 1 1 Exchange ID (D or I for Yield-X) 1 2 Vendor ID 2 3 Message ID Category Code (described in table 2.2 below)

15

Type Code 1 6 Message Sequence Number 6 7 Message Time Stamp 6 13 STX Control Character 1 19 Total Length 19

The exchange id will be ‘D for Yield-X derivatives and ‘I’ for Yield-X spot (bonds).

Note:

Yield-X Data Feed Specifications January 2006 Page 8

The standard ASCII Character set will be used with the following limitations : Control Characters Ascii Values SOH (Character 1) STX (Character 2) ETX (Character 3) ACK (Character 6) CR (Character 13) NACK (Character 21) Lower case characters though permitted will be avoided. DEL will not be used.

In table 2.1 the Message ID consists of the Category Code and Type Code. Please note that Yield-X does not necessarily use the full set of Category Codes as specified by the ITC Specifications. The detail layout of message type will be described in detail in Chapter 2. The message Category Code will identify the following fundamental message formats and contents:

Table 2.2 Category Codes

Category Code Messages A Spot B Bid & Ask C Control Message H High-Low I Volume & Open Interest J New JROD data added P Closing Range Q Settlement Rate & Next Days Limits R Refresh T Trade 8 Yield-X specific messages

2.2 Status Message Layout

The Status Messages received from Yield-X are of Category Code 8 (position 5 in the Header of the message). See table 2.2 a detailed list of Category Codes. Status Messages are used for login and control purposes, and do not contain market information. The sequence number in the header on a Type 8 message – Yield-X specific message will be zero (0). If the user side receives a message out of sequence, they should request a retransmission from Yield-X using a Type R - User request to Yield-X. (See section 5.27.6). Type 8 messages will consist of the standard header - with Category Code 8 and various types. It should also then contain a Yield-X header (see below), and then the specific message layout. As mentioned before, each Category Code has a specific layout. The layout of the Status Message is described in table 2.3 below. Note that the Header of the message is a fixed format for all messages.

Yield-X Data Feed Specifications January 2006 Page 9

Table 2.3 - Status Message Layout Title Content Length Start Header See table 2.1 for detail 19 1 Yield-X Header Sequence Yield-X Message Sequence Number 6 20 Message Status See Note Below 1 26 Reserved Reserved for future use 2 27 Status Code Message Status Code (see table 2.4) 3 29 Sequence Number The message to which this status applies 6 32 ETX ETX 1 38 Total Length 39

The Status Code (position 29 to 31 in table 2.3) specifies the precise meaning of each Status Message. Once the user program has identified a message as a Status Message, the program then has to act upon the Status Code. The Status Code is required for the login process, as described at the end of section 2.3 below:

Table 2.4 Status Codes Status Code Description ACK Request Acknowledged. DEN Request Denied - Login again. Whenever a request is denied,

Yield-X will require the user to login again, to ensure that the line integrity is maintained. It is also transmitted regularly to a line with no user attached. Receipt of an ACK message by Yield-X indicates an active connection, and causes the status code to change to ‘ENQ’. The “DEN” type messages are also received if the communications link has gone down or the logon is terminated.

BUS Busy processing Request. ENQ Yield-X is enquiring if the user side has any requests. The user

side may only send a message to Yield-X after receiving an ENQ. The “ENQ” type messages are also received once logged on to ensure that the communications link is still established.

COM Request Completed. LOG Yield-X requests the user side to login using the sequence number

as a response

2.3 Request Message Layout These are messages sent to Yield-X by the user (remote side) requesting data or access to data. A status message is similar to a Yield-X Status message (see section 2.2 for details): it has a Category Code of 8, but a Code Type of R. The layout of the Request Message is noted in table 2.5 below.

Table 2.5 - Request Message Layout Title Content Length Start Header See table 2.1 for detail 19 1 Yield-X Header Sequence Yield-X Message Sequence Number 6 20

Yield-X Data Feed Specifications January 2006 Page 10

Message Status See Note Below 1 26 Reserved Reserved for future use 2 27 Request Type See table 2.6 below 2 29 Member ID Member ID allocated by Yield-X 5 31 Request Record Sequence range or Logout 12 36

Status (discussed below) ETX ETX 1 48 Total Length 49

Once the user has identified the message as a Request Message, the detail action will be determined by the Request Type. The Request type can take one of the following values:

Table 2.6 Request Type Status Code Description LR The Login request. The Member Id is sent LI Login with password. The DEST key is sent RT Request Terminate. RR Request Retransmission or earlier messages

There are four categories of request - Login requests; Deal requests; Position Information; and Status Requests. The content of the Request Record (see table 2.5) varies for each Request type: Login RequestsLR - The Login request. The Member ID (position 31 to 35 in table 2.5) would contain the five (5) character Member ID (provided by Yield-X) for the member (left justified, right space filled). The Request Record should be space filled. LI - Login with password. The Member ID (position 31 to 35 in table 2.5) would contain the five (5) character Member ID (provided by Yield-X) for the member (left justified, right space filled). The Request Record should contain the key, and the Sequence number of the last message sequence number received. LO - Request to Logout. This would disable any requests from that station for data, but still allowing “broadcast” messages. Status RequestsRT - Request Terminate. The user also has the ability to abort a request during it’s execution. All subsequent messages will be marked as not transmitted at the user’s request, and the last message will have a status of T - Terminated by user’s request. Yield-X will reply with a status message either acknowledging or denying the request. In this instance the sequence range would contain the number of the request message, and the last message received by the user side. RR - Request Retransmission.

Yield-X Data Feed Specifications January 2006 Page 11

The user side can also request retransmission of lost messages. The Sequence Range (position 36 to 47 in table 2.5) would contain the range of messages that need to be retransmitted. If a Sequence range is appropriate, the following format is applicable:

Start Number 6 (position 36) End Number 6

The login sequence is as follows:

1. Yield-X sends an ENQ Status Message. A Status Message has a Category Code of 8 and a Type Code of S. See section 2.2 for detail about the Status Message layout. The Status Code is in position 29 to 31 in table 2.3 (all Status Codes are listed in table 2.4). This is the signal that the user may request some information from Yield-X. Prior to this the user may get other message, for example DEN messages. These should be acknowledged in order for Yield-X to send an ENQ message. This acknowledgement should be done with the status message and ACK as the status code.

2. The user now sends a Login Request. This is a Request Message. The Category Code is 8, and the Type Code is R (see table 2.5 for detail of the Request Message layout). The Request Type is LR (see table 2.6 for the different types). See section 2.3 above for detail about the Request Message layout. This message must include the Member ID in position 31 to 35 in table 2.5, right justified and space filed.

3. Yield-X sends a Status Message (Category Code 8 and Type Code S in table 2.3) if the Member ID is valid. The Status Code (see table 2.4) is LOG. This message contains a challenge of 6 bytes following the ‘LOG’. In the Sequence Number field (position 32 to 37 in table 2.3).

4. The user calculates the response to the challenge (see appendix A for more detail on DEST encryption). The user now sends a LI message with the response. This is a Request Message type, which has a Category Code of 8 and a Code Type of R (see table 2.5). The Request Type is LI (see table 2.6 for detail). This message must include the Member ID in position 31 to 35 in table 2.5, right justified and space filed. The Challenge is included in position 36 to 41. Note that only the first 6 characters of the DEST encryption result are returned to Yield-X. The Sequence field must include the starting sequence number from where the data vendor wishes to receive messages. In other words if the last message received by the data vendor was 102 the Sequence field in the Yield-X header part of the message should be set to 000102. This will result in the data feed sending 103 as the next message to the data vendor, right justified and spaced filled. If a 000000 or a blank is specified in the Sequence Number field, Yield X will broadcast all messages sent for the day to the data vendor.

5. Yield-X responds with an ACK status message if the response is valid or DEN if the response is invalid. The DEN is a Status Message type, with a Status Code of DEN.

6. The user will now receive all messages once logged in. Each message has a fixed Header (see table 2.1). See table 2.2 for the basic message types (Category Codes) and section 2.4 for the detail layout.

Yield-X Data Feed Specifications January 2006 Page 12

2.4 Market information Message Layout The different message types (Category Codes) are explained in table 2.2. Each message type with market information contains different data portion information with different layouts, which will now be discussed. 2.4.1 Category Code A - Spot Yields The detail layout of this message is listed in table 2.7 below:

Table 2.7 Category A - Message Layout (Bid/Ask) Field Group Length (Offset / Start) Header (see table 2.1) 19 1 ML-Message Length 1 20 Contract ID 5 21 Yield 6 26 BATE Code (B/A/Space) 1 32 ETX 1 33 Total length 34

Since many such messages are expected to be transmitted for futures without volume, this abbreviated form of message has been provided with neither an Option ID Field Group nor a Volume Field Group. This message is used to provide the spot prices, where the spot code is followed by a ‘Y’ in the Contract ID field (position 20 to 22). It can also be identified with the BATE code in position 31 which will contain a ‘Y’. The BATE code abbreviation is listed in the appendix. ML is the message length from position 20 to the BATE code. The ML field has been added to accommodate data vendors to indicate the data block. This is so that the relevant data blocks can be extracted from a stream with ease. Example: Listed below is a sample data message with positions. The first row shows the character positions in the message, while the second row shows the data in the message in each corresponding position. The first character is the SOH character (printed as a #). The ‘D’ or ‘S’ in position 2 is the Exchange and market code forYield-X. These two characters will be the same for all messages received from Yield-X. The A in position 5 indicates the Category Code (see table 2.2 for a full list of codes). The Sequence Number of this message is 8108. Each message with market data has a unique and consecutive sequence number. No gaps will appear in this number. The message was sent at 18:54:57 (see position 13 to 18). Character 19 is the STX indicating the Start of Text. The contract code is in position 20 to 24. In the example below it is a spot yield for the Deutsch Mark (see the appendices for Codes and Abbreviations of other contracts). Note that spot yields do not contain a month or year, but only the character “Y”. The decimal places is 4 (position 24 as for all contracts) and the Yield is 16552 (in position 25 to 30). Note that the yield may not fill all given position depending on its value. Reading

Yield-X Data Feed Specifications January 2006 Page 13

the decimal places together with the yield gives a real value of 1.6552. The BATE code is Y (position 31) indicating a spot yield and the message is terminated by an ETX (position 32). Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 Data in Record: # F A 8 1 0 8 1 8 5 4 5 7 ## D M Y 4 1 6 5 5 2 Y #

2.4.2 Category Code B - Bid & Ask The Bid & Ask records contain details about bid and ask yields. The detail layout of a Category Code B message is listed below in table 2.8:

Table 2.8 Category B Message Layout (Bid/Ask) Field Group Length (Offset / Start) Header 19 1 ML – Message Length 1 20 Contract ID 5 21 Option ID 9 26 Bid Yield 6 35 Bid Size 5 41 Ask Yield 6 46 Ask Size 5 52 ETX 1 57 Total length 58

The Bid or Ask size fields may be filled at the option of the exchange; if size is not provided these fields will be space filled. ML is the message length from position 20 to the ETX character. The ML field has been added to accommodate data vendors to indicate the data block. This is so that the relevant data blocks can be extracted from a stream with ease. Both the bid yield and the ask yield will be provided in each message; if either or both fields are ASCII space filled the respective fields of the vendor’s display should be blanked. Example: Listed below is a sample data message with positions. The first character is the SOH character. The ‘S’ or ‘D’ in position 2 is the Exchange code for Yield-X. The B in position 5 indicates the Category Code. The message was sent at 16:04:10 (see position 13 to 18). Character 19 is the STX indicating the Start of Text. The Contract code is IIH70 (see the appendices for all contract abbreviations), which is the Industrial Index Futures contract for March (month H in position 22) 1997 (year 7 in position 23). The contract code abbreviation is explained in detail in the appendices. It has 0 decimal places in the yields that follows (0 in position 24). Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: # F B 8 1 0 8 1 8 5 4 5 7 # # I I H 7 0

The above lists the message positions 1 to 29. Below positions 30 to 56 are listed. The bid yield is displayed in position 34 to 39 (8085 in this case), and the size is 11 (position 40 to

Yield-X Data Feed Specifications January 2006 Page 14

44). The ask yield is 8090 (position 45 to 50) for 10 contracts (position 51 to 55). The message is terminated with an ETX character in position 56. Position 30-56: . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: : 8 0 8 5 1 1 8 0 9 0 1 0 #

2.4.3 Category code C - Control Messages Control messages are provided to appraise vendors’ systems of significant exchange system status changes and to test system integrity. Control messages will consist of a standard header including a Category Code and a Type Code which will explicitly identify the system control message. The text of a control message will consist of 46 characters, plus a 47th ETX control character, and will contain a specified message structure which is subject to processing by vendors’ systems. Valid message Type Codes are as follows; i) Type Code A - Start of Simulated Data Simulated data streams are to be used primarily to test software modifications. Simulated data will be representative of genuine data; therefore, vendors must provide adequate controls to insure that their data bases are not updated by simulated data. The start of Simulated Data message will be transmitted at least three times prior to the transmission of simulated data. The first transmission will be made in lieu of the Official Transmission message; therefore, the first Start of Simulated Data message will have a Message Sequence Number of one (1). All subsequent Start of Simulated Data messages will also be sent with Message Sequence Numbers of one (1), and the Vendor ID field will be filled with ”AV” in accordance with the retransmission protocol (alternatively, the Vendor ID field may be filled with “TV” - Test Vendor - or specific Vendor’s ID if all simulated data to be transmitted is to be addressed to the respective Vendor ID). In lieu of the Line Integrity Verification Control message a Simulated Data Warning control message will be sent each minute with simulated data. Therefore, vendors who program to recognise the Simulated Data Warning control message should process no more than one or two (2) minutes of simulated data even of the Start of Simulated Data messages are missed. Whenever possible, testing will be conducted off-line (with the ticker line disconnected), with dummy Commodity Codes, or with retransmissions addressed to a particular vendor or to “Test Vendor” (Vendor ID, TV). However, these precautions are subject to human failure and may not be practical in all circumstances. Therefore, vendors are expected to program to recognise the Start of Simulated Data and Simulated Data Warning control messages. ii) Type Code B - End of Simulated Data Each Cycle of simulated data will be followed by the End of Simulated Data message. The end of Simulated Data message will be transmitted at least three (3) times after each cycle of simulated data. The first transmission will be made in lieu of the End of Official Transmissions message. All subsequent End of Simulated Data messages will be sent with the same Message Sequence Number as was sent with the first such message, and the Vendor ID field will be filled with “AV” in accordance with the transmission protocol (alternatively,

Yield-X Data Feed Specifications January 2006 Page 15

the Vendor Field may be filled with “TV” or a specific vendor’s ID if all simulated data was addressed to the respective Vendor ID). Vendors must provide adequate controls to insure that the End of Simulated Data message is registered in their systems to insure that genuine data transmitted thereafter is properly updated in their data bases. Any of the following should indicate an error condition while vendor’s system is in “Simulated Data” mode:

1. Receipt of the Line Integrity Verification control message. 2. Reversion of the Message Sequence Number to one (1).

3. Passing of the time by which the first market is open on the exchange. Recovery from any such error will be facilitated by retransmission of the valid messages which were missed, provided that the error is detected promptly. iii) Type Code C - Start of Communications testing The Start of Communications Testing message indicates that the exchange system has been turned on and that communications testing will be initiated promptly. The Start of Communications testing message does not imply that the exchange will open. The Start of Communications Testing control message will reset the Message Sequence Number to zero (0). Only the Line Integrity Verification control message (Type T), the character Test Pattern control message (Type N and Type O), Start of Simulated Data Warning (Type S) and the End of Simulated Data (Type B) will be sent between the Start of Communication Testing Message and the Start of Official Transmissions message. All messages sent after Start of Communications Testing and before Start of Official Transmission (except simulated data) will contain Message Sequence Number of zero (0). No message between the Start of Communications Testing and Start of Official Transmission messages will be logged or available for retransmission. In normal processing, the Start of Communications Testing Message will be sent at least 30 minutes prior to the opening of the first contract. iv) Type Code D - Start of Official Transmissions The Start of Official Transmissions control message indicates that the messages to follow will contain official exchange information including text messages and trading data. In normal processing, the Start of Official Transmissions message will be sent not sooner than 60 minutes, nor later than five (5) minutes, prior to the opening of the first contract.

Yield-X Data Feed Specifications January 2006 Page 16

The Message Sequence Number for Start of Official Transmissions will always be one (1). v) Type Code E - Market Opening Imminent Not sooner than two (2) minutes before, nor later than one (1) minute before, the opening of the first market of the day the Market Opening Imminent message will be sent. vi) Type Code G - Halt in Trading If the exchange determines to halt trading temporarily, it will so indicate by transmitting a Halt in Trading message. A Halt in Trading may be announced for:

1. All contracts on an exchange by space filling the Contract ID or Option ID field Groups of the message.

2. All contracts for a single commodity (ie., Puts, Futures and Calls) by filling the

Commodity Code in the Contract ID Group Field. (All other fields will be space filled.) 3. Only a single contract for a single commodity by filling each field in the contract ID and

Option ID Field Groups.

The time at which the exchange expects to resume trading will be indicated in the designated field; in the event that the exchange changes its expected resumption of trading time, the Halt in Trading message will be transmitted again with the new expected resumption of trading time. If trading is not expected to resume that day, the time field will be filled with six (6) nines (9’s). If the time at which trading is expected to resume cannot be determined, the time field will be space filled. vii) Type Code H - end of Transaction Reporting End of Transaction Reporting indicates that the exchange has terminated all normal transmissions and all Inserts and Deletes. viii) Type Code I - End of Official Transmissions End of Official Transmission message is transmitted to indicate that the exchange has terminated all official transmissions for the day. After the End of Official Transmissions message has been transmitted, no further messages will be transmitted except for Type T - Line Integrity Verification, Type A - Start of simulated Data, simulated data, Type S - Simulated Data warming, Type B - End of simulated Data, and the Character Test Pattern control message Types N and O. ix) Type code J - end of Communications Testing

Yield-X Data Feed Specifications January 2006 Page 17

The End of Communications Testing message will be transmitted to indicate that the system has terminated all transmissions, including Type T - Line Integrity Verification. (A failure to receive a Line Integrity Verification Message for more than one (10 minute, without having received an End of Communications Testing Message implies an exchange system or line failure.) x) Type Code K - Set Sequence Number The Set Sequence Number message will be transmitted to advise vendors that the Message Sequence Number is to be reset to the value registered in the Message Sequence Number in the Header Field Group of the message The Message Sequence Number should be reset by the exchange to a value greater than the last message sent. xi) Type Code N - Character test Pattern - Part l Two (2) Character Test Pattern Control messages have been defined to verify the integrity of the exchange and vendors’ systems to generate and identify, respectively, the principal characters which may be utilised in the system specification. The set of characters specified in this document is broken down into two (2) message Types N and O which will be sent serially in a testing sequence. xii) Type Code R - Trading Resumed When an exchange determines to resume trading after having announced to a halt in trading with a Control Message Type G, it will transmit a Trading Resumed message. The filling of fields will correspond to the description of the Halt in Trading message. xiii) Type Code S - Simulated Data Warning The Simulated Data Warning control message will be sent with simulated data in lieu of the Line Integrity Verification Control message; that is, generation of the Start of Simulated Data by the exchange system should toggle on the routine (each minute) generation of Simulated Data Warning messages, and toggle off the generation of Line Integrity Verification message, Generation of the End of Simulated Data Warning messages, and toggle on the generation of Line Integrity Verification messages. “Start” and “End” of Simulated Data messages should set vendors’ systems in ‘Simulated Data” and “Normal Data” modes respectively. Receipt of the simulated Data Warning Message while a vendor’s system is in “Normal Data” mode, or receipt of the Line Integrity Verification message while a vendors system is in “Simulated Data” mode, implies an error condition. Other than the Type Code and text, the simulated Data Warning message will be used in the context of simulated data in a manner analogous to that of the Line Integrity Verification message.

Yield-X Data Feed Specifications January 2006 Page 18

xiv) Type Code T - Line Integrity Verification The Line Integrity Verification message will now be transmitted each minute to verify continued integrity of the communication line. The Line Integrity Verification message will not interrupt a transmission in progress but may be transmitted whether additional messages are queued for transmission. Format of Control Messages Control messages will be formatted as follows: 00000000011111111112222222222333333333344444444 12345678901234567890123456789012345678901234567 Type Code A START OR SIMULATED DATA B END OF SIMULATED DATA C START OF COMMUNICATIONS TESING MMDDYYHHMMSS” D START OF OFFICIAL TRANSMISSION MMDDYYHHMMSS” E MARKET OPENING IMMINENT MMDDYYHHMMSS” G HALT IN TRADING CCMYFTSSNNNNNN HHMMSS” H END OF TRANSACTION REPORTING MMDDYYHHMMSS” I END OF OFFICIAL TRANSMISSION MMDDYYHHMMSS” J END OF COMMUNICATION TESTING MMDDYYHHMMSS” K SET SEQUENCE NUMBER N !”#$%&’()*+,-./0123456789:;=?@ o ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/_ R TRADING RESUMED CCMYFTSSNNNNNN HHMMSS” S SIMULATED DATA WARNING MMDDYYHHMMSS” T LINE INTEGRITY VERIFICATION MMDDYYHHMMSS” Example: Below are two Category C examples. Please note that the messages are not given with exact positions, but serve merely as an example of the contents. The first message was sent at 18:28:52. #F CH 6412182852#END OF TRANSACTION REPORTING 021097182852# #F CI 7927182852#END OF OFFICIAL TRANSMISSIONS 021097182852# 2.4.4 Category Code H - High - Low - Last The detail layout of a Category Code I message is listed below in table 2.9:

Table 2.9 Category H Message Layout (High/Low/Last) Field Group Length (Offset / Start) Header 19 1 Contract ID 5 20 Option ID 9 25 High Yield 6 34

Yield-X Data Feed Specifications January 2006 Page 19

High BATE Code 1 40 Low Yield 6 41 Low BATE Code 1 47 Last Yield 6 48 Last BATE Code 1 54 ETX 1 55 Total length 56

The High-Low-Last message may be sent (but is not required to be sent) following the deletion of any message which is numerically equal to the high or low yield of the day or the last yield. Although use of the High-Low-Last message is at the option of each exchange, an exchange which elects to utilize the High-Low-Last message should constantly send after each deletion and without regard to whether the transaction to be deleted was the particular transaction which set the high or low yield for the day. Example: Listed below is a sample data message with positions. The first character is the SOH character. The ‘I’ or ‘D’ in position 2 is the Exchange code for Yield-X. The H in position 5 indicates the Category Code. The message number is 7921. The message was sent at 18:28:52 (see position 13 to 18). Character 19 is the STX indicating the Start of Text. The Contract code is YMN72 (see the appendices for all contract abbreviations), which is the Yellow Maize Futures contract for July (month N in position 22) 1997 (year 7 in position 23). It has 2 decimal places in the yields that follow (2 in position 24). Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: # F H 8 1 0 8 1 8 5 4 5 7 # Y M N 7 0

The High yield is displayed in position 34 to 39 (58000 in this case), the low yield is 57000 (position 41 to 46) and the last yield is 58000 (position 48 to 53). The message is terminated with an ETX character in position 55. Position 30-56: . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: : 5 8 0 0 0 5 7 0 0 0 5 8 0 0 0 #

2.4.5 Category Code I - Volume & Open Interest The total volume and open interest for the day is contained in a message type I. The layout of Category Code I messages is shown in table 2.10 below:

Table 2.10 Category I - Message Layout (Volume / Open Interest) Field Group Length (Offset / Start) Header 19 1 Contract ID 5 20 Option ID 1 25 Reserved 2 26 Strike Price 6 28 Day’s volume traded 7 34 Open Interest 7 41 Volatility (including 2 decimals) 7 48

Yield-X Data Feed Specifications January 2006 Page 20

Opening Yield for the day 7 55 ETX 1 62 Total length 63

Volume cleared on the previous day, open interest as of the close of the previous day, exchanges of futures for physicals, deliveries and option exercises may be filled in the indicated fields. If no data is available for a particular field, the field will be space filled. Example: Listed below is a sample data message with positions. The first character is the SOH character. The ‘S’ or ‘D’ in position 2 is the Exchange code for Yield-X. The I in position 5 indicates the Category Code. The message number is 8108. The message was sent at 18:54:57 (see position 13 to 18). Character 19 is the STX indicating the Start of Text. The Contract code is AIH80 (see the appendices for all contract abbreviations), which is the All Share Index Futures contract for March (month H in position 22) 1998 (year 8 in position 23). It has 0 decimal places in the yield that follows (0 in position 24). This is a Call Option (position 25). Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: # F I 8 1 0 8 1 8 5 4 5 7 # A I H 8 0 C 2 0

The volume traded for the day is 6800 (position 34), the Open Interest is 0 (position 41), the Volatility (accurate to two decimals) is 2.00 (position 48), the Opening Yield for the day is 1920 (position 55 where the decimals is according to the value specified in the contract code). The message is terminated with an ETX control character in position 62. Position 30-56: . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 ... 5 6 .... 2 Data in Record: : 0 . 0 0 6 8 0 0 0 2 0 0 1 9 2 0 #

The Closing Range message contains the yields which a vendor should display in its closing range fields. Exchanges which report closing range yields in the sequence in which they occurred will fill the yields in the same sequence in the Closing Range message. The Closing Range message will always follow the last timely transaction message pertaining to a particular contract; however, Interest and Delete messages may follow the closing Range message. In the event that the market closes at a single yield, the yield and associated BATE Code will appear in the First Yield and BATE Code Fields; the Second Yield and BATE fields of the message will be space filled. The Market Direction Indicator will indicate that the market was rising (+) or falling (-) from the first to last quotations occurring during the closing interval. A Market Direction Indicator, “S”, will connote that the market was stable during the closing interval. A space character in the Market Direction Indicator field indicates that the exchange elected not to report the direction of the market. The volume traded may be reported at the option of the exchange. Volume reported in the closing Range message will exclude all volume which may have been reported in other

Yield-X Data Feed Specifications January 2006 Page 21

messages pertaining to transactions which occurred during the closing interval. If volume is not reported, the field will be space filled. 2.4.6 Category Code J – New JROD data added JROD contracts can trade for 252 different expiry dates. This message will be sent when a new JROD expiry date is loaded. The layout of Category Code J messages is shown in table 2.9 below:

Table 2.9 Category J Message Layout (New JROD data added) Field Group Length (Offset / Start) Header 19 1 Contract ID 5 20 BATE code 1 25 ETX 1 26 Total length 27

Contract ID codes will be formatted in the following manner: J + [Year code] + [Month code] + [Day code] Year codes are defined from 0..9A..Z. This indicates the year part of the expiry date. Month codes are defined in Table B2. Day codes are defined from 00..31. This indicates the date part of the expiry date. Example: J5N31 – This represents a JROD contract expiring on the 31st of July 2005. The message will be formatted in the following manner: Record position: 123456789.123465789.123456789.123456789 Data in record: #D J 8108185552#J5N31 # 2.4.7 Category Code Q - Settlement yield and limits The layout of Category Code Q messages is shown in table 2.10 below:

Table 2.11 Category Q Message Layout (Settlement Prices and limits) Field Group Length (Offset / Start) Header 19 1 Contract ID 5 20 Option ID 1 25 Reserved 2 26 Strike Price 6 28 Yield (Settlement) 6 34 Yield (High Limit) 6 40 Yield (Low Limit) 6 46 Price Settlement 10 52 ETX 1 62 Total length 63

Yield-X Data Feed Specifications January 2006 Page 22

The settlement yield and limits message will be sent following the close of trading in the particular contract. The fields will be filled with the settlement yield for the current day and the highest yield and lowest yield at which trading will be permitted on the following day. In the event that no limits are established for the particular contract on the following day, the high and low limit yield field will be space filled. In the event that no settlement yield is reported for the particular contract, the settlement yield will be space filled. Price Settlement is the price calculated from the yield settlement. PLEASE NOTE: On Category Q messages all yield fields (Yield settlement, Yield high limit, Yield low limit) must be validated to 3 decimal places and the Price Settlement field must be validated to 5 decimal places. This is in contrast with the Contract ID's last character. Example: Listed below is a sample data message with positions. The first character is the SOH character. The ‘S’ or ‘D’ in position 2 is the Exchange code for Yield-X. The Q in position 5 indicates the Category Code. The message number is 6832. The message was sent at 18:28:52 (see position 13 to 18). Character 19 is the STX indicating the Start of Text. The Contract code is AIH80 (see the appendices for all contract abbreviations), which is the All Share Index Futures contract for March (month H in position 22) 1998 (year 8 in position 23). It has 0 decimal places in the yield that follows (0 in position 24). This is a Call Option (position 25). Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: # F Q 8 1 0 8 1 8 5 4 5 7 # A I H 8 0 C 2 0

The Settlement yield is 12% (position 36 to 37), the high yield limit is 13% (position 44 to 45) and the low price yield was 11% (position 50 to 51). The message is terminated with an ETX in position 52. Position 30-62: . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 1 2 Data in Record: : 0 . 0 0 1 2 1 3 1 1 1 2 3 1 2 3 4 #

2.4. 8 Category Code T - Trade The layout of Category Code T messages is shown in table 2.12 below:

Table 2. 12 Category T Message Layout (Bid/Ask/Trade) Field Group Length (Offset / Start) Header 19 1

Type Code (1) (6) ML – Message Length 1 20 Contract ID 5 21 Option ID 9 26

Type (Call / Put) (1) (27) Strike Price (8) (28)

Premium/Price (naked options / futures) 6 36 BATE Code 1 42 Volume Traded 5 43 Indicator 1 48

Yield-X Data Feed Specifications January 2006 Page 23

ETX 1 49 Total length 50

This message will be filled at the option of the exchange. ML is the message length from position 20 to the BATE. The ML field has been added to accommodate data vendors to indicate the data block. This is so that the relevant data blocks can be extracted from a stream with ease. Type Code As a further definition of a Future or Option, the Type Code represents a type of Future or Option. This type code is found in the header. The indicates that the field consists of a set of fields or that the field is found the header area of the message. Type Code D This type code shall represent a “Delta Option” and will be displayed in the Header Field Group as a character “D” and will occupy position 6 of the Header Field. Type Code V This type code will represent a “Naked Option”. It will be shown in the Header Field Group by a character “V”, this will occupy position 6 of the Header Field. Example 1 : Futures Listed below is a sample data message with positions. The first character is the SOH character. The ‘S’ or ‘D’ in position 2 is the Exchange code for Yield-X. The T in position 5 indicates the Category Code. The message number is 8108. The message was sent at 18:54:57 (see position 13 to 18). Character 19 is the STX indicating the Start of Text. The Contract code is AIH70, (see the appendices for all contract abbreviations) which is the All Share Index Futures contract for March (month H in position 22) 1997(year 7 in position 23). It has 0 decimal places in the prices that follow (0 in position 24). This is a Futures Contract and the price is 6512 (in position 34 - 39 and is left justified). Because this is a Future, there will be no strike price and no D or V indicator in position 6. The volume traded is 100 (position 41 - 45.)

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: # F T 8 1 0 8 1 8 5 4 5 7 # # A I H 7 0

Position 30-56: . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: : 6 5 1 2 0 1 0 0 #

Please note : The Indicator in position 46 which is currently a “0” will be replaced with a “space”. Example 2 : Naked Options - Type Code V The Contract code is AIH70, which is the All Share Index Futures contract for March 1997, this is a Put Option (indicated by the ‘P’ in position 25), the strike price is 5400 (position 27 - 33 and is left justified. The Premium is 2285 (position 34 - 39, this value is left justified). The volume traded is 5 (position 41 -45 and is right justified). The new comms string for a Naked Option will look as follows:

Yield-X Data Feed Specifications January 2006 Page 24

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: # F T V 8 1 0 8 1 8 5 4 5 7 # # A I H 7 0 P 5 4 0

Position 30-56: . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: : 0 2 1 0 0 0 0 0 0 5 #

Example 3 : Delta Options - Type Code D The Contract code is AIH70, which is the All Share Index Futures contract for March 1997, this is a Call Option (indicated by the ‘C’ in position 25), the strike price is 5400 (position 27 - 33 and is left justified). The Volatility is 21,00% (position 34 - 39, this value is left justified) and has no comma denoting a percentage. The volume traded is 5 (position 41 -45, and is right justified). The new comms string for a Delta Option will look as follows: Please Note: The Indicator in position 6 either a ‘D’ or a ‘V’ denotes a Delta or Naked Option Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: # F T D 8 1 0 8 1 8 5 4 5 7 # A I H 7 0 C 5 4 0

Position 30-56: . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 Data in Record: : 0 2 2 8 5 0 0 0 0 5 #

2.5 Additional Data 2.5.1 JBARS

Yield-X will publish the following rates daily between Monday and Friday by approximately 11h00. The following rates will be sent in a category A (spot price) type message. The detail layout of this message is listed below:

Table 3.1 Category A - Message Layout (Spot) Field Group Length (Offset / Start) Header (see table 2.1) 19 1 Contract ID 5 20 Yield 6 25 BATE Code (B/A/Space) 1 31 ETX 1 32 Total length 33

Please note that position 24 indicates the number of decimals in the yield. This is set to 4 for the JBAR messages – currently only 3 digits are used. (a) 1month JBAR rate

Data Feed Code: J1

Yield-X Data Feed Specifications January 2006 Page 25

E.g.: a 1 month JBAR at a yield of 10.234 % will be sent as follows:

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 Data in Record: # F A 8 1 0 8 1 0 5 8 5 7 # J 1 Y 4 1 0 2 3 4 0 Y

(b) 3 month JBAR rate

Data Feed Code: J2 E.g.: a 3 month JBAR at a yield of 10.126 % will be sent as follows

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 Data in Record: # F A 8 1 0 8 1 0 5 8 5 7 # J 2 Y 4 1 0 1 2 6 0 Y

(c) 6 month JBAR rate Data Feed Code: J3 E.g.: a 6 month JBAR at a yield of 9.999 % will be sent as follows:

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 Data in Record: # F A 8 1 0 8 1 0 5 8 5 7 # J 3 Y 4 9 9 9 9 0 Y

(d) 12 month JBAR rate Data Feed Code: J4 E.g.: a 6 month JBAR at 9.662 % will be sent as follows:

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 Data in Record: # F A 8 1 0 8 1 0 5 8 5 7 # J 4 Y 4 9 6 6 2 0 Y

(e) 3 month discount JBAR rate

Data Feed Code: J5

E.g.: a 3 month JBAR at a discount of 9.662 % will be sent as follows:

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 Data in Record: # F A 8 1 0 8 1 0 5 8 5 7 # J 5 Y 4 9 6 6 2 0 Y

2.5.2 YIELD-X Money Market Rates Yield-X Margin on deposit rate, Yield-X Rand overnight deposit rate and Prime Rate

These rates will be sent daily between Monday and Friday at approximately 13h00. The following rates will be sent in a category A (spot price) type message. Please note that position 24 indicates the number of decimals in the yield. This is set to 4 for the following messages.

(a) Yield-X Margin on Deposit Rate

Category Code: A

Yield-X Data Feed Specifications January 2006 Page 26

Data Feed Code: S1 E.g.: the Yield-X margin on deposit rate at 13.56 % will be sent as follows:

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 Data in Record: # F A 8 1 0 8 1 2 5 9 5 7 # S 1 Y 4 1 3 5 6 0 0 Y

(b) Yield-X Rand overnight deposit rate

Category Code: A Data Feed Code: S2 E.g.: the Yield-X margin on deposit rate at 11.56 % will be sent as follows:

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 Data in Record: # F A 8 1 0 8 1 2 5 9 5 7 # S 2 Y 4 1 1 5 6 0 0 Y

(c) Prime Rate

Category Code: A Data Feed Code: S3 E.g.: the prime rate at 13.5 % will be sent as follows:

Record Position: 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 4 5 6 7 8 9 . 1 2 3 Data in Record: # F A 8 1 0 8 1 2 5 9 5 7 # S 3 Y 4 1 3 5 0 0 0 Y

Yield-X Data Feed Specifications January 2006 Page 27

Appendix A DEST encryption

A1 DEST Encryption The main purpose of the DEST encryption mechanism is to prevent unauthorized access. The basic mechanism is quite simple: Yield-X will send a random challenge (6-character string), which will be used to calculate a unique key. In conjunction with the member’s private key, the first 6 characters of this key are then returned to Yield-X. If it agrees with the key expected by Yield-X, access will be granted. A C source program and a test program are also available from the Yield-X division of the HSE to verify the DEST encryption calculations of the user.

Yield-X Data Feed Specifications January 2006 Page 28

Appendix B Abbreviations and codes

B.1 Decimal places / Fractional Indicator

The last digit in the Contract Code is the Decimal Position Code

All fractions are expressed as fractions or in decimals as is customary for the particular commodity. Note that, although the Fractional Indicator Code is included in the Commodity Code Field Group, it is not to be used to differentiate one commodity from another (e.g., there will not be one contract ID of PBK23 and another of PBK24 on the same exchange). The Fractional Indicator Code will be one (1) Character as follows:

Table B4 - Fractional Indicator (number of decimal places) Fraction Code 1/1 0 1/10 1 1/100 2 1/1,000 3 1/10,000 4 1/100,000 5 1/1,000,000 6 1/10,000,000 7 1/100,000,000 8 1/1,000,000,000 9

NOTE: Yield-X Option Prices are broadcasted in Premium and not Volatility. The Decimal Places / Fractional Indicator must therefore be ignored for all Yield-X Option Prices.

B.2 Price The Price field will be a six (6) character numeric field. The delineation of the whole number portion of the price and the decimal/fractional portion of the price will be defined by the Fractional Indicator code (e.g., a price of 123 4/8th cents will be displayed as 001234). For example: transmit an amount of 10347 with a decimal indicator of 2. This translates into 103,47. No truncation of price data is permitted by this Specification except for high order zeros for commodities which trade in fractions of 1/10,000,000 or smaller. Therefore, commodities such as livestock, which are customarily traded in increments of 2 ½ per hundredweight with the ½ being implicit, will be quoted in increments of .025 always explicit. This specification contemplates the quotation without truncation of commodities that trade in increments as small as 1/1,000,000 such as Japanese Yen where one (1) Yen is worth approximately US $0.004288. Any commodity, which is traded in smaller increments, will have truncated leading zeros, such as Italian Lire where one (1) is worth approximately US $0.0008285. Italian Lire, traded in four (4) non-zero digits will be quoted with the first

Yield-X Data Feed Specifications January 2006 Page 29

leading zero (0) truncated. Such truncation would be implicit from the Fractional Indicator Code which, in the case of price with seven (7) digits to the right of the decimal place, is defined as seven (7).

B.3 BATE Codes The BATE code indicates the record type:

Table B5 - BATE Code BATE Code Description

B Bid A Ask T Trade E Not used Y Spot

(Space) Other use

Table B2 Month Codes

Spot and Forward Bonds S As Below: Character 1: Represents the contract (R152 = A, R194 = B) Character 2: Represents Spot/Forward Bonds (S) Character 3: No expiry month hence S Character 4: No expiry year hence 0 Character 5: Decimal places 3 RSA 152 Bond (R152) ASS03 RSA 194 Bond (R194) BSS03 RSA 153 Bond (R153) CSS03 RSA 201 Bond (R201) DSS03 RSA 157 Bond (R157) ESS03 RSA 203 Bond (R203) FSS03 RSA 186 Bond (R186) GSS03 jCarries C As Below: Character 1: Represents the contract (R152 = A, R194 = B) Character 2: Represents jCarries (C) Character 3: Expiry (oneday = A, twoday = B) Character 4: Expiry year (2005 = 5) Character 5: Decimal places 3 RSA 152 Bond (R152) oneday ACA53 RSA 152 Bond (R152) twoday ACB53 RSA 152 Bond (R152) threeday ACC53 RSA 152 Bond (R152) three+1 day ACD53 RSA 152 Bond (R152) tomorrow+3 ACE53 RSA 152 Bond (R152) oneweek ACF53 RSA 152 Bond (R152) monthly ACG53

Yield-X Data Feed Specifications January 2006 Page 30

RSA 152 Bond (R152) quaterly ACH53 RSA 152 Bond (R152) semi-annual ACI53 RSA 152 Bond (R152) oneyear ACJ53 RSA 194 Bond (R194) BC RSA 153 Bond (R153) CC RSA 201 Bond (R201) DC RSA 157 Bond (R157) EC RSA 203 Bond (R203) FC RSA 186 Bond (R186) GC Futures on Bonds F As Below: Character 1: Represents the contract (R152 = A, R194 = B) Character 2: Represents Futures on Bonds (F) Character 3: Expiry Month (Feb=G, May=K) Character 4: Expiry year (2005 = 5) Character 5: Decimal places 3 RSA 152 Bond (R152) A Feb05 AFG53 May05 AFK53 Aug05 AFQ53 Nov05 AFX53 RSA 194 Bond (R194) B Feb05 BFG53 RSA 153 Bond (R153) C Feb05 CFG53 RSA 201 Bond (R201) D Feb05 DFG53 RSA 157 Bond (R157) E Feb05 EFG53 RSA 203 Bond (R203) F Feb05 FFG53 RSA 186 Bond (R186) G Feb05 GFG53 jRods R As Below: Character 1: Represents the contract (R=jRods) Character 2: Represents the contract (R=jRods) Character 3: Expiry Month (Jan=F, Feb=G) Character 4: Expiry year (2005 = 5, 2006=6) Character 5: Decimal places 3 Jan-05 RRF53 Feb-05 RRG53 Mar-05 RRH53

Yield-X Data Feed Specifications January 2006 Page 31

Apr-05 RRJ53 May-05 RRK53

Jun-05 RRM53

Jul-05 RRN53 Aug-05 RRQ53 Sep-05 RRU53 Oct-05 RRV53 Nov-05 RRX53 Dec-05 RRZ53 Jan-06 RRF63 jSwaps X As Below: Character 1: Represents the contract (R152 = A, R194 = B) Character 2: Represents jSwaps (X) Character 3: Represents jSwaps (X) Character 4: No expiry year hence 0 Character 5: Decimal places 3 RSA 152 Bond (R152) AXX03 RSA 194 Bond (R194) BXX03 RSA 153 Bond (R153) CXX03 RSA 201 Bond (R201) DXX03 RSA 157 Bond (R157) EXX03 RSA 203 Bond (R203) FXX03 RSA 186 Bond (R186) GXX03 jNotes N As Below: Character 1: Represents the contract (JN02 = A, JN05 = B) Character 2: Represents jNotes (N) Character 3: Expiry Month (Mar=H, Jun=M) Character 4: Expiry year (2005 = 5, 2006=6) Character 5: Decimal places 3 JN02 Mar-05 ANH53 Jun-05 ANM53 Sep-05 ANU53 Dec-05 ANZ53 JN05 Mar-05 BNH53 Jun-05 BNM53 Sep-05 BNU53 Dec-05 BNZ53 JN10 Mar-05 CNH53

Jun-05 CNM53

Sep-05 CNU53

Yield-X Data Feed Specifications January 2006 Page 32

Dec-05 CNZ53 jFRAs F As Below: Character 1: Represents the month of the Jibar (3 month = H, 6 month = M) Character 2: Represents jFra (F) Character 3: Expiry Month (Mar=H, Jun=M) Character 4: Expiry year (2005 = 5, 2006=6) Character 5: Decimal places 3 3 Mnth Jibar Future HFH53

6 Mnth Jibar Future MFM53

9 Mnth Jibar Future UFU53 12 Mnth Jibar Future ZFZ53 jTRIs T As Below: Character 1: Represents the month of the Tris (3 month = H, 6 month = M) Character 2: Represents jTris (T) Character 3: Expiry Month (Mar=H, Jun=M) Character 4: Expiry year (2005 = 5, 2006=6) Character 5: Decimal places 3 Mar-05 HTH53

Jun-05 MTM53

Sep-05 UTU53 Dec-05 ZTZ53