Session3: Multiple market phases and order types in ASX

12 March 2012

The aim of this session is to learn about the concept of a trading platform, focusing on the ASX system. It describes the cycle of market phases and different order types in reference to the ASX but the concepts can be applied to other exchanges.

Background

History of ASX trading platforms

The Australian Securities Exchange (ASX) is the primary stock exchange in Australia. The ASX began as separate state-based exchanges established as early as 1861. Today trading is all-electronic and the exchange is a public company, listed on the exchange itself. The Australian Securities Exchange as it is now known resulted from the merger of the Australian Stock Exchange and the Sydney Futures Exchange in December 2006, becoming the 9th largest stock exchange in the world. Since 2 October 2006, trading of shares, warrants, fixed-interest securities and company-issued options and rights has been conducted on the Click-XT system, also known as the Integrated Trading System (ITS). Prior to October 2006, ASX used the Stock Exchange Automated Trading System (SEATS) as a trading platform. SEATS was an all-electronic order matching system, based on time and price priority.

In November 2010, ASX launched its next generation trading system, ASX Trade, providing the fastest integrated equities and derivatives trading platform in the world. ASX Trade is powered by NASDAQ OMX’s Genium INET platform. Latency is now 100 times faster than it was two years ago, having been improved from 30 milliseconds in 2008 to 300 microseconds today. The improved latency has been coupled with increased capacity, rising from 20,000 orders per second to 100,000 orders per second now.

Due to different trading platforms being used, there are significant differences between trading data at different periods in time, particularly before and after 2 October 2006 when the trading platform changed from SEATS to ITS.

Market phases on ASX

Capital markets normally apply phases during the trading hour for the purpose of facilitating fair and efficient market. The ASX has several modes of operation which affect the information available to users and their ability to trade13. In Table 1, the various phases in a typical trading day on the ASX are outlined. Trading normally takes place on a continuous basis between 10:00 am and 4:00 pm. However, immediately prior to the commencement of trading a call market operates on the ASX. In this type of market, investors through their brokers are invited (called) to submit orders to the exchange. Since investors do not have homogeneous expectations regarding the price of a security, or because each faces different transaction costs, bids (orders to buy) and asks (orders to sell) may be priced very differently. It is possible that the highest bid price can be higher than the lowest asking price. During the call market no trading takes place until the end of the call.

Table 1: Trading phases in ASX (Sydney Times)

Time

SEATS Market Phases

2:25 am - 7:00 am

Close

7:00 am - 10:00 am

Pre-Open

10:00 am (in 5 blocks of companies with random +/- 15 secs)

Opening

10:00 am - 4:00 pm

Normal Trading

4:00 pm

End of Trading

4:00 pm - 4:10 pm

Pre-CSPA

4:10 pm (With randomness) - 4.12 pm

Closing Single Price Auction

4:12 pm - 6:50 pm

Adjustments

6:50 pm – 6:59 pm

Purge Orders

6:59 pm - 7:00 pm

System Maintenance

7:00 pm - 7:am

Close or System Unavailable

Morning Auction

The morning auction is split into groups to allow traders time to effectively manage their orders during the opening of trade. The opening rotation is split into five groups as follows:

·         Group 1 10:00:00 am +/- 15 secs A-B e.g. ANZ, BHP

·         Group 2 10:02:15 am +/- 15 secs C-F e.g. CPU, DJS, FXJ

·         Group 3 10:04:30 am +/- 15 secs G-M e.g. GPT, IPL

·         Group 4 10:06:45 am +/- 15 secs N-R e.g. QAN, RIO

·         Group 5 10:09:00 am +/- 15 secs S-Z e.g. TLS, WOW

In the pre-open phase, brokers can enter orders but trades will not be generated. Immediately prior to the stock being placed in continuous trading mode it goes through an instantaneous phase called the opening, where the ASX computes opening prices according to a specific algorithm (see next section). Once stocks are open in normal trading mode they will normally trade continuously until 4:00 pm when they all close together. Between 4:00 pm and 4:10 pm (Pre-CSPA phase) , the market is placed in Pre-open mode i.e. no matching occurs but brokers can enter, change and cancel orders in preparation for the market closing. The Closing Single Price Auction takes place between 4:10* pm and 4:12 pm and the algorithm used is similar to the one used in the opening phase.

For more details about the other phases, see ASX Web Site (http://www.asx.com.au/products/ASX-Trading%20hours-Market-phases.htm.)

Calculating opening and closing prices in ASX

In call markets, a matching algorithm is exercised when the market is called. A unique set of market opening procedures is used on ASX before ‘normal’ trading starts each morning. The price of the first trade resulting from the opening procedure is referred as the opening price in that trading day for this particular security. Similarly, the way in which ASX closes gives rise to the last sale price of the day. So the same algorithm is used to determine both opening and closing prices for all stocks.

Currently used algorithm

For details about the currently used algorithm, see: http://www.asx.com.au/products/calculate-open-close-prices.htm. The algorithm requires prices to be specified in fixed increments or “price steps”. The rules regarding price steps are listed in http://www.asx.com.au/resources/price.htm.

Algorithm used in SEATS until 2 October 2006

Click on the link above for a description and examples. This algorithm is easier to implement as it is well specified.

Order and trade types

Participants on the ASX are offered a range of different order and trade types by which they may implement their trading strategies. The different order and trade types enable managers to manage execution costs. This session highlights the different orders and trade types available to investors and the frequency of their use.

Order types

Orders are typically of two generic types: limit or market orders. A limit order is an order to buy or sell at a specified price. A market order is an order to buy at the best limit ask price or sell at the best limit bid price at the time the order is placed. Therefore, unlike limit order, a market order will not be queued in the orderbook since it is matched as soon as it is entered into the trading engine.

The trading engine allows brokers to place one of a variety of types of limit orders, thereby providing them with some degree of flexibility. The type of limit order placed is confidential and is not shown to other brokers. Specific types of orders are differentiated by qualifiers (described in next activity).

Trade types

Trades can be broadly classified as on-market or off-market. On market trades may result from either the overlapping of two limit orders or a crossing order on trading engine. Off-market trades do not play a role in the orderbook and can be ignored.

Trades can also be categorised according to whether they are buyer or seller initiated trades.

·         Buyer initiated trades occur when a market buy order executes against a limit sell order. This type of trades incur a buyer extra cost for a value = spread*volume.

·         Seller initiated trades occurs when a market sell order executes against a limit buy order. This type of trades incur a seller extra cost for a value = spread*volume.

Qualifiers

So far, all orders submitted in the input files were limit orders because they are queued up in the orderbook according to price/time criteria. A limit order remains in the orderbook until it becomes at the front and an order from the opposite side of the orderbook has matched its price. A limit order can also be canceled or amended explicitly by the owner broker as described in Session 1.

In order to accommodate other types of orders, an additional column with a header “Qualifiers” is provided in the CSV file. This column will comprise a list of codes separated by 1 or more blank spaces. These codes will vary according to the period when they were generated.

Here is a description of some of the qualifiers and their history.

Next, we will describe a separate example for three order types (market order, fill-and-kill, all-or-nothing).

Market order example

Consider the following orders input file:

#Instrument,Date,Time,Record Type,Price,Volume,Value,Qualifiers,Trans ID,Bid ID,Ask ID,Bid/Ask

Market in preopening phase

HIJ,1-Apr-05,7:33:26,ENTER,421,400,168400,,5044,889024888125048,,B

HIJ,1-Apr-05,7:33:41,ENTER,422,20000,844000,,5045,657291406094408,,B

HIJ,1-Apr-05,7:34:03,ENTER,422,1000,422000,,5046,242062359407230,,B

HIJ,1-Apr-05,7:45:35,ENTER,422,5000,2110000,,5047,1127193705767590,B

HIJ,1-Apr-05,7:46:03,ENTER,420,5000,2100000,,5048,,253803710837903,B

HIJ,1-Apr-05,7:46:24,ENTER,425,6000,2550000,,5049,,1265162355224700,A

HIJ,1-Apr-05,7:46:41,ENTER,426,800,340800,,5050,,160695464670030,A

HIJ,1-Apr-05,7:48:34,ENTER,425,8000,3400000,,5051,,1207277960876310,A

HIJ,1-Apr-05,7:48:34,ENTER,423,1000,423000,,5052,, 1207277960879500,A

Opening algorithm followed by continuous phase starts here

The current orderbook for this file is:

Ask[5050],        426.0,   vol:800.0,                    [160695464670030]

Ask[5051],        425.0,   vol:8000.0,      [1207277960876310]

Ask[5049],        425.0,   vol:6000.0,      [1207277960876310]

Ask[5052],        423.0,   vol:1000.0,      [1207277960879500]

            <--spread=1.0-->

Bid[5045],         422.0,   vol:2000.0,      [657291406094408]

Bid[5046],         422.0,   vol:10000.0,     [242062359407230]

Bid[5047],         422.0,   vol:5000.0,      [1127193705767590]

Bid[5044],         421.0,   vol:400.0,                    [889024888125048]

Bid[5048],         420.0,   vol:5000.0,      [253803710837903]

 

Let’s now demonstrate the submission of the following orders:

HIJ,1-Apr-05,7:51:26,ENTER,800,,,J,5053,1507277560876710,,B

HIJ,1-Apr-05,7:52:26,ENTER,7000,,,J,5054,1607277560898710,,B

CASE 1

CASE 2

The generated trades after executing the two cases are shown in the output file as follows:

Market in preopening phase

HIJ,1-Apr-05,7:33:26,ENTER,421,400,168400,5044,889024888125048,,B

HIJ,1-Apr-05,7:33:41,ENTER,422,2000,844000,5045,657291406094408,,B

HIJ,1-Apr-05,7:34:03,ENTER,422,1000,422000,5046,242062359407230,,B

HIJ,1-Apr-05,7:45:35,ENTER,422,5000,2110000,5047,1127193705767590,B

HIJ,1-Apr-05,7:46:03,ENTER,420,5000,2100000,5048,,253803710837903,B

HIJ,1-Apr-05,7:46:24,ENTER,425,6000,2550000,5049,,1265162355224700,A

HIJ,1-Apr-05,7:46:41,ENTER,426,800,340800,5050,,160695464670030,A

HIJ,1-Apr-05,7:48:34,ENTER,425,8000,3400000,5051,,1207277960876310,A

HIJ,1-Apr-05,7:48:34,ENTER,423,1000,423000,5052,, 1207277960879500,A

Opening algorithm followed by continuous phase starts here

HIJ,1-Apr-05,10:01:03,TRADE,426,800,340800,5053,1507277560876710, 1207277960876310

HIJ,1-Apr-05,10:02:03,TRADE,423,200,84600,5054,1607277560898710, 1207277960879500

HIJ,1-Apr-05,10:03:03,TRADE,425,6000,2550000,5055,1607277560898710, 1207277960876310

HIJ,1-Apr-05,10:04:03,TRADE,425,800,340000,5056,1607277560898710, 1207277960876310

Fill-And-Kill Order example

Consider the following input file:

#Instrument,Date,Time,Record Type,Price,Volume,Value,Qualifiers,Trans ID,Bid ID,Ask ID,Bid/Ask

Market in preopening phase

HIJ,1-Apr-05,7:33:26,ENTER,421,400,168400,,5044,889024888125048,,B

HIJ,1-Apr-05,7:33:41,ENTER,422,2000,844000,,5045,657291406094408,,B

HIJ,1-Apr-05,7:34:03,ENTER,422,1000,422000,,5046,242062359407230,,B

HIJ,1-Apr-05,7:45:35,ENTER,422,5000,2110000,,5047,1127193705767590,B

HIJ,1-Apr-05,7:46:03,ENTER,420,5000,2100000,,5048,,253803710837903,B

HIJ,1-Apr-05,7:46:24,ENTER,425,6000,2550000,,5049,,1265162355224700,A

HIJ,1-Apr-05,7:46:41,ENTER,426,800,340800,,5050,,160695464670030,A

HIJ,1-Apr-05,7:48:34,ENTER,425,8000,3400000,,5051,,1207277960876310,A

HIJ,1-Apr-05,7:48:34,ENTER,423,1000,423000,,5052,, 1207277960879500,A

Opening algorithm followed by continuous phase starts here

This generates the following orderbook:

Ask[5050],                    0426.0, vol:800.0,                   [160695464670030]

Ask[5051],                    0425.0, vol:8000.0,      [1207277960876310]

Ask[5049],                    0425.0, vol:6000.0,      [1265162355224700]

Ask[5052],                    0423.0, vol:1000.0,      [1207277960879500]

            <--spread=1.0-->

Bid[5045],                     0422.0, vol:2000.0,      [657291406094408]

Bid[5046],                     0422.0, vol:1000.0,      [242062359407230]

Bid[5047 ],                    422.0,   vol:5000.0,      [1127193705767590]

Bid[5044],                     421.0,   vol:400.0,                    [889024888125048]

Bid[5048],                     420.0,   vol:5000.0,      [253803710837903]

Let’s now demonstrate the submission of a fill-and-kill order by trader “960”for a volume of 24000. Such order can be demonstrated by submitting the following transaction:

HIJ,1-Apr-05,7:49:26,ENTER,422,24000,10128000,E,5056,1807877568812310,,A

In this case, this fill-and-kill order attempt to fill as much as it can from the best bid orders. In this example, there are 3 orders at the best bid price of a total volume of 8,000 that are consumed by the fill-and-kill order. The remaining volume of the fill-and-kill order of 17,000 is dismissed and not placed in the orderbook. The content of the order book after processing this fill-and-kill order is as follows (not that fill-and-kill order which is not completely filled increases the spread by 1 price step):

Ask[5050],                    0426.0, vol:800.0,                   [160695464670030]

Ask[5051],                    0425.0, vol:8000.0,      [1207277960876310]

Ask[5049],                    0425.0, vol:6000.0,      [1265162355224700]

Ask[5052],                    0423.0, vol:1000.0,      [1207277960879500]

            <--spread=2.0-->

Bid[5044],                     421.0,   vol:400.0,                   [889024888125048]

Bid[5048],                     420.0,   vol:5000.0,      [253803710837903]

The generated trades after executing the two cases are shown in the output file as follows:

Market in preopening phase

HIJ,1-Apr-05,7:33:26,ENTER,421,400,168400,5044,889024888125048,,B

HIJ,1-Apr-05,7:33:41,ENTER,422,2000,844000,5045,657291406094408,,B

HIJ,1-Apr-05,7:34:03,ENTER,422,1000,422000,5046,242062359407230,,B

HIJ,1-Apr-05,7:45:35,ENTER,422,5000,2110000,5047,1127193705767590,B

HIJ,1-Apr-05,7:46:03,ENTER,420,5000,2100000,5048,,253803710837903,B

HIJ,1-Apr-05,7:46:24,ENTER,425,6000,2550000,5049,,1265162355224700,A

HIJ,1-Apr-05,7:46:41,ENTER,426,800,340800,5050,,160695464670030,A

HIJ,1-Apr-05,7:48:34,ENTER,425,8000,3400000,5051,,1207277960876310,A

HIJ,1-Apr-05,7:48:34,ENTER,423,1000,423000,5052,, 1207277960879500,A

Opening algorithm followed by continuous phase starts here

HIJ,1-Apr-05,10:21:26,ENTER,422,E,5056,1807877568812310,,A

HIJ,1-Apr-05,10:22:03,TRADE,422,2000,844000,5057,657291406094408, 1807877568812310

HIJ,1-Apr-05,10:23:03,TRADE,422,10000,422000,5058,242062359407230, 1807877568812310

HIJ,1-Apr-05,10:24:03,TRADE,422,50000,2110000,5059,11271937055767590, 1807877568812310

 

All-Or-Nothing Order example

Consider the following orders input file:

#Instrument,Date,Time,Record Type,Price,Volume,Value,Qualifiers,Trans ID,Bid ID,Ask ID,Bid/Ask

Market in preopening phase

HIJ,1-Apr-05,7:33:26,ENTER,421,400,168400,,5044,889024888125048,,B

HIJ,1-Apr-05,7:33:41,ENTER,422,2000,844000,,5045,657291406094408,,B

HIJ,1-Apr-05,7:34:03,ENTER,422,10000,422000,,5046,242062359407230,,B

HIJ,1-Apr-05,7:45:35,ENTER,422,5000,2110000,,5047,1127193705767590,B

HIJ,1-Apr-05,7:46:03,ENTER,420,5000,2100000,,5048,,253803710837903,B

HIJ,1-Apr-05,7:46:24,ENTER,425,6000,2550000,,5049,,1265162355224700,A

HIJ,1-Apr-05,7:46:41,ENTER,426,800,340800,,5050,,160695464670030,A

HIJ,1-Apr-05,7:48:34,ENTER,425,8000,3400000,,5051,,1207277960879000,A

HIJ,1-Apr-05,7:48:34,ENTER,423,1000,423000,,5052,, 1207277960879500,A

Opening algorithm followed by continuous phase starts here

It generates the following orderbook:

Ask[5050],                    426.0,   vol:800.0,                   [160695464670030]

Ask[5051],                    425.0,   vol:8000.0,      [1207277960879000]

Ask[5049],                    425.0,   vol:6000.0,      [1265162355224700]

Ask[5052],                    423.0,   vol:1000.0,      [1207277960879500]

            <--spread=1.0-->

Bid[5047],                     422.0,   vol:5000.0,      [1127193705767590]

Bid[5046],                     422.0,   vol:10000.0,     [242062359407230]

Bid[5045],                     422.0,   vol:2000.0,      [657291406094408]

Bid[5044],                     421.0,   vol:400.0,              [889024888125048]

Bid[5048],                     420.0,   vol:5000.0,      [253803710837903]

Let’s now demonstrate the effect of submitting 4 All-or-nothing orders using these transactions:

HIJ,1-Apr-05,7:51:26,ENTER,422,24000,10128000,A,5056, 657291406094408,,A

HIJ,1-Apr-05,7:52:26,ENTER,422,16000,6752000,A,5060,7507277560898710,,A

HIJ,1-Apr-05,7:53:26,ENTER,425,16000,6800000,A,5061,857291406094408,,B

HIJ,1-Apr-05,7:54:26,ENTER,422,15000,6330000,A,5057,9507277560898710,,B

CASE 1

CASE 2

CASE 3

CASE 4

The generated trades after executing the two cases are shown in output file as follows:

Market in preopening phase

HIJ,1-Apr-05,7:33:26,ENTER,421,400,168400,5044,889024888125048,,B

HIJ,1-Apr-05,7:33:41,ENTER,422,2000,844000,5045,657291406094408,,B

HIJ,1-Apr-05,7:34:03,ENTER,422,1000,422000,5046,242062359407230,,B

HIJ,1-Apr-05,7:45:35,ENTER,422,5000,2110000,5047,1127193705767590,B

HIJ,1-Apr-05,7:46:03,ENTER,420,5000,2100000,5048,,253803710837903,B

HIJ,1-Apr-05,7:46:24,ENTER,425,6000,2550000,5049,,1265162355224700,A

HIJ,1-Apr-05,7:46:41,ENTER,426,800,340800,5050,,160695464670030,A

HIJ,1-Apr-05,7:48:34,ENTER,425,8000,3400000,5051,,1207277960879000,A

HIJ,1-Apr-05,7:48:34,ENTER,423,1000,423000,5052,, 1207277960879500,A

Opening algorithm followed by continuous phase starts here

HIJ,1-Apr-05,10:01:26,ENTER,422,A,24000,A,5056, 657291406094408,,A

HIJ,1-Apr-05,10:02:26,ENTER,422,A,16000,A,5060,7507277560898710,,A

HIJ,1-Apr-05,10:22:03,TRADE,422,2000,844000,5061,657291406094408, 7507277560898710

HIJ,1-Apr-05,10:23:03,TRADE,422,10000,422000,5062,242062359407230, 7507277560898710

HIJ,1-Apr-05,10:24:03,TRADE,422,50000,2110000,5063,11271937055767590, 7507277560898710

HIJ,1-Apr-05,10:24:26,ENTER,425,16000,A,5061, 857291406094408,,B

HIJ,1-Apr-05,10:25:26,ENTER,422,15000,A,5062,9507277560898710,,B

HIJ,1-Apr-05,10:24:03,TRADE,423,1000,2110000,5063,9507277560898710, 1207277960879500

HIJ,1-Apr-05,10:25:03,TRADE,425,6000,2110000,5064,9507277560898710, 1265162355224700

HIJ,1-Apr-05,10:26:03,TRADE,425,8000,2110000,5065,9507277560898710, 1207277960879000