Opening price, closing price and trading sessions of stock market

Have you ever wondered why opening price of a stock is different from closing price from previous day? This is because before opening of stock market, there is a session called “pre-opening”. Similarly prior to closing of trading day, there is a corresponding “pre-closing” session. Opening price and closing price are determined separately during these sessions based on share price that can result in the highest matched quantities, therefore closing price and opening price could be different. With understanding of how they are determined, you can employ “cut queue” tactic that will be explained at end of the article.

Trading session

Before going into how theoretical opening and closing price of stock is calculated, you have to first understand trading sessions on Bursa Malaysia.

  • 8:30am: Pre-opening of 1st trading session
  • 9:00am: Start of 1st trading session
  • 12:30pm: End of 1st trading session
  • 2:00pm: Pre-opening of 2nd trading session
  • 2:30pm: Start of 2nd trading session
  • 4:45pm: Pre-closing of 2nd trading session
  • 4:50pm: Trading at last
  • 5:00pm: End of trading day

In this article, I will show how stock is priced and traded in blue-highlighted sessions above.

Pre-opening (8:30am) / (2:00pm)

During pre-opening, order entry / modification / cancellation is allowed but no orders are matched. Based on every order action, theoretical opening price (TOP) is calculated on continuous basis. Theoretical opening price is broadcasted and available to investors.

Opening (9:00am) / (2:30pm)

Opening price = last theoretical opening price (TOP) calculated at pre-opening session.

Orders are matched, if any, at opening price.

Normal trading session (9:00am – 12:30pm) / (2:30pm – 4:45pm)

Orders are matched based on price and time priority

  • Price: Buy-side orders with higher price and sell-side orders with lower price have higher matching priority
  • Time: Order submitted earlier have higher matching priority

Pre-closing (4:45pm)

All outstanding and unmatched orders are carried forward to pre-closing session. Similar to pre-opening, order entry / modification / cancellation is allowed but no orders are matched. Based on every order action, theoretical closing price (TCP) is calculated on continuous basis. Theoretical closing price is broadcasted and available to investors.

Trading at last (4:50pm)

Closing price = last theoretical closing price (TCP) calculated at pre-closing session.

Order entry / modification / cancellation is permitted, but order can only be entered, modified and matched at closing price.

Calculating theoretical opening and closing price (TOP & TCP)

Here are the rules how theoretical opening and closing price (TOP & TCP) are determined.

  1. Maximize matching quantity
  2. Minimize unfilled quantity
  3. Depending on whether unfilled quantity is on buy side or sell side
  4. Closest price to reference price

Rules above are arranged in hierarchy order, i.e. if price cannot be determined based on rule #1, it has to go to rule #2. For instance, if there is more than one price with maximum matching quantity, price is selected based on rule #2 that minimizes unfilled quantity.

There are examples at the bottom of article.

What is reference price

All stocks have a reference price that is valid throughout the whole trading day. Order can only be entered and matched within upper and lower limit of reference price (these are commonly called by investors as “limit up” and “limit down”).

Normally reference price is last transacted price in previous day. In case there are stocks with ex-entitlement (such as dividend, bonus issue, share split etc.), stock exchange will adjust reference price accordingly to protect investors.

Examples

Below are examples taken from Bursa trading manual available here.

Example of rule #1 (Maximize matching quantity)

Order quantity at pre-opening or pre-closing session:

Buy PriceBuy QtySell PriceSell Qty
100108020
90509030

Assuming theoretical opening/closing price to be 100, match quantity = 10

Buy PriceBuy QtyBuy MatchSell PriceSell QtySell Match
10010 10802010
90509030

Assuming theoretical opening/closing price to be 90, match quantity = 50

Buy PriceBuy QtyBuy MatchSell PriceSell QtySell Match
1001010802020
905040903030

Assuming theoretical opening/closing price to be 80, match quantity = 20

Buy PriceBuy QtyBuy MatchSell PriceSell QtySell Match
1001010802020
9050109030

In this case, based on rule #1, share price of 90 can result in the highest matching quantity, therefore opening/closing price = 90.

Example of rule #2 (Minimize unfilled quantity)

Order quantity at pre-opening or pre-closing session:

Buy PriceBuy QtySell PriceSell Qty
100508050
901010040
8020

Assuming theoretical opening/closing price to be 100, match quantity = 50 and unfilled quantity = 40

Buy PriceBuy QtyBuy ok?Buy MatchBuy Un-filledSell PriceSell QtySell ok?Sell MatchSell Un-filled
10050Yes5008050Yes500
9010No10040Yes040
8020No

Assuming theoretical opening/closing price to be 90, match quantity = 50 and unfilled quantity = 10

Buy PriceBuy QtyBuy ok?Buy MatchBuy Un-filledSell PriceSell QtySell ok?Sell MatchSell Un-filled
10050Yes5008050Yes500
9010Yes01010040No
8020No

Assuming theoretical opening/closing price to be 80, match quantity = 50, unfilled quantity = 30.

Buy PriceBuy QtyBuy ok?Buy MatchBuy Un-filledSell PriceSell QtySell ok?Sell MatchSell Un-filled
10050Yes5008050Yes500
9010Yes01010040No
8020Yes020

In this case, opening/closing price cannot be determined based on rule #1 because there are multiple prices that can result in the highest match quantity. Based on rule #2, share price of 90 results in less unfilled quantity of 10, therefore opening/closing price = 90.

Example of rule #3 (Based on higher unfilled quantity)

Order quantity at pre-opening or pre-closing session:

Buy PriceBuy QtySell PriceSell Qty
100408040
901010020

Assuming theoretical opening/closing price to be 100, match quantity = 40, unfilled quantity = 20 (sell side).

Buy PriceBuy QtyBuy ok?Buy MatchBuy Un-filledSell PriceSell QtySell ok?Sell MatchSell Un-filled
10040Yes4008040Yes400
9010No10020Yes020

Assuming theoretical opening/closing price to be 90, match quantity = 40, unfilled quantity = 10 (buy side).


Buy Price
Buy QtyBuy ok?Buy MatchBuy Un-filledSell PriceSell QtySell ok?Sell MatchSell Un-filled
10040Yes4008040Yes400
9010Yes01010020No

Assuming theoretical opening/closing price to be 80, match quantity = 40, unfilled quantity = 10 (buy side).


Buy Price
Buy QtyBuy ok?Buy MatchBuy Un-filledSell PriceSell QtySell ok?Sell MatchSell Un-filled
10040Yes4008040Yes400
9010Yes01010020No

In this case, opening/closing price cannot be determined based on rule #1 + rule #2 because there are two prices resulting in the highest match quantity and least unfilled quantity. Either share price of 80 and 90 results in unfilled quantity on buy side, based on rule #3, higher price is selected if unfilled quantity is on buy side, therefore opening/closing price = 90.

Resources

All information above are based on Bursa Malaysia’s trading manual, which is available on Bursa official website here.

“Cut queue” strategy

This is a special strategy that can only be employed during pre-opening and pre-closing sessions.

During normal trading hour, to ensure that you can buy or sell a stock for sure, you can just place an order with the first queueing price that can be seen from your trading platform.

On the other hand, during pre-opening and pre-closing sessions, traders can queue but no order will be matched. This is when traders can employ “cut queue” strategy.

The reason to use this strategy is, upon stock opening or trading at last, orders will be matched based on price priority first followed by time priority, i.e. for orders with same price, the one placed earlier will be executed first.

To get ahead of orders placed earlier (i.e. cut queue), you have to make use of price priority. Here’s how.

  1. Purposely place a higher buying price or lower selling price so that system will execute your order first. Of course, that is not the actual price you intend to trade.
  2. Order placed during pre-opening or pre-closing will be executed based on opening price or trading at last price determined based on logic explained above.

Cut-queue illustration with example

Don’t get it? Let’s use an example to illustrate.

Below is snapshot of trading queue of Genting Malaysia stock taken during pre-opening.

Stock trading queue

Based on understanding on how system calculate opening price, trader “A” knows RM2.02 or RM2.03 will most likely be the opening price. Because there was bad news on this stock overnight, trader “A” reckons after opening the stock price would continue to drop so he wants to ensure the stock get sold immediately at opening. Therefore he decided to employ “cut queue” strategy to place a selling order at RM1.86.

Upon opening of stock market, he successfully sold the stock at RM2.02.

This is the reason why there are always so weird selling and buying price in queue during pre-opening and pre-closing sessions.

When to cut queue?

Here are some scenarios why some people want to employ this strategy

  • Bad news after closing or overnight, so the trader wants to sell immediately at opening before more traders are aware of the news
  • Good news after closing or overnight, so the trader wants to buy immediately at opening before more traders are aware of the news
  • Desperately want to buy or sell a stock at whatever available price at the end of trading day.

Risk of cut queue strategy

The risk here is, stock market is very dynamic with people placing orders at real time, especially for stocks with very large trading volume. During pre-opening and pre-closing, system is updating theoretical opening/closing price in real time based on orders placed. Trades can only do a best guess on opening price or trading at last price. Therefore, using this strategy might result in your order matched at undesired price rather than expected price.

Leave a Reply