Equilibrium Price Discovery
Equilibrium price discovery: at the end of the call auction, the system calculates a single price (the auction price) where the highest trading volume can occur. this price reflects the collective supply and demand, leading to a fairer and more stable price.
The algorithm for it is a call auction typically follows these steps:
Collect Orders: During the call auction period, all buy and sell orders are collected. Each order includes the price and quantity.
Sort Orders: The buy orders are sorted in descending order of price (highest first), while the sell orders are sorted in ascending order of price (lowest first).
Calculate Cumulative Quantities: For each price level, calculate the cumulative quantity of buy and sell orders. This helps to determine how many shares can be traded at each price level.
Determine Equilibrium Price: The system identifies the price at which the cumulative quantity of buy orders equals the cumulative quantity of sell orders. This price is the equilibrium price, as it maximizes the trading volume. If there are multiple prices that yield the same maximum volume, the system may use additional rules (e.g., prioritize the price closest to the last traded price) to select the final auction price.
Execute Trades: Once the equilibrium price is determined, all orders that can be executed at that price are matched and executed. This results in a single price at which the maximum volume of shares is traded, reflecting the market's supply and demand at that moment.
This process ensures that the price discovery is efficient and fair, as it aggregates all market participants' intentions and finds a price that best represents the collective market sentiment.
Example call-auction summary (no code).
Orders:
Buys: (101, 50), (100, 30), (99, 20)
Sells: (99, 40), (100, 30), (102, 50)
Last traded price: 100
99
100
40
40
100
80
70
70
101
50
70
50
102
0
120
0
Result: equilibrium price = 100 (max matched = 70), executed quantity = 70. Simple allocation (highest bids to lowest asks up to 70): B101→S99 (40), B101→S100 (10), B100→S100 (20).
Last updated