Call auctions: price discovery and rationing

Build a cumulative auction ledger, select a uniform price and reconcile competing integer fill rules.

38 minutes · intermediate · Original Poker4Quant lesson

What you will learn

Derive a uniform-price call-auction outcome through ordered volume and imbalance filters, then distinguish price selection from FIFO and integer proportional rationing.

Prerequisites: Price-time order matching · Book depth and execution curves · Reconstructing an action ledger

Freeze a batch, then define the rule

Continuous matching responds to arriving instructions. A call auction collects a batch and evaluates which common price can match the batch. This changes the question from which resting order an incoming instruction meets first to how much both sides can trade at one price. Price discovery and allocation are separate tasks: even a uniquely chosen price can leave more willing buyers than available units. A complete result therefore specifies a price, traded volume, individual fills and a balanced cash transfer. A price alone is an incomplete auction receipt.

Assume a fictional asset with integer units, firm fully displayed limit orders, distinct timestamps and no fees, hidden quantity, minimum fills, market orders, self-trade restrictions or intervening events. Buyers have sufficient funds and sellers have inventory. Candidate prices are exactly 98, 99, 100, 101, 102 and 103 chips. Every filled unit pays the selected uniform price. Our stated selection policy maximizes executable volume, then minimizes absolute eligible imbalance, then chooses the price nearest a reference, then the lower price if distance ties. This is our teaching policy, not a reproduction of ASX or another exchange algorithm.

Construct cumulative willingness, not just orders at a price

Buyer B1 requests two units at a maximum price of 103. B2 requests five at 101 and B3 requests three at 101, with B2 earlier than B3. B4 requests two at 100. Seller S1 offers three at a minimum price of 98, S2 offers four at 100 and S3 offers four at 102. A buy limit is a ceiling, so an order at 103 participates at 100 as well. A sell limit is a floor, so an order at 98 participates at 100. Equality counts on both sides. Do not count only the orders whose limits equal the candidate price.

Define D(p) as the sum of buy quantities with limit at least p and S(p) as the sum of sell quantities with limit at most p. Executable volume is V(p)=min(D(p),S(p)). The signed eligible imbalance is I(p)=D(p)−S(p). Positive I means excess eligible demand; negative I means excess eligible supply. Each matched unit has one buyer and one seller, so counting both sides as volume would double count the same trade. Orders excluded by their limits are not part of I at that price; I is not the total number of unfilled units across the entire book.

Derive the price through ordered elimination

Write each row as (price; demand, supply, volume, imbalance). At 98 the row is (98;12,3,3,+9); at 99 it is (99;12,3,3,+9); at 100 it is (100;12,7,7,+5); at 101 it is (101;10,7,7,+3); at 102 it is (102;2,11,2,−9); at 103 it is (103;2,11,2,−9). These totals can be checked directly by listing eligible orders. For example, at 101 B1, B2 and B3 contribute 2+5+3=10, while S1 and S2 contribute 3+4=7. B4 cannot buy at 101 because its maximum is 100.

Maximum volume is seven, so only 100 and 101 survive the first filter. Their absolute imbalances are five and three. Price 101 wins the second filter, even if the reference is 100. The reference is a late tie-break, not a target that can override an earlier criterion. This is lexicographic reasoning: once eliminated, a price never returns. Nor should one minimize the signed number I directly: a large negative imbalance would incorrectly appear preferable to a small positive one. The objective here is minimum magnitude after maximizing volume.

As an independent volume certificate, only two buy units have limits above 101, while the remaining buyers cannot trade with S3 at its minimum 102. At any candidate price at most seven units can therefore match: prices up to 101 have at most seven eligible seller units, and prices above 101 have at most two eligible buyer units. Price 101 attains seven. This bound verifies the maximum without trusting a sorting routine.

Allocate scarce fills and reconcile the uniform cash ledger

Now impose price priority on each side: higher buy limits first and lower sell limits first. At 101, S1 supplies three and S2 supplies four, so their total seven is completely used; S3 supplies zero. B1 takes two first because 103 is the highest eligible buy limit. Five units remain for the eight units requested by B2 and B3 at the same limit. Under FIFO, B2 receives all five and B3 zero. Buyer fills in B1,B2,B3,B4 order are (2,5,0,0). This allocation is rationing among equal limits, not another choice of clearing price.

The uniform transfer is 7×101=707 chips. Buyers pay 2×101+5×101=202+505=707. Sellers receive 3×101+4×101=303+404=707. Executing S1 at 98 and S2 at 100 would instead produce 294+400=694, which belongs to a different pricing mechanism and contradicts our one-price assumption. A limit records willingness, not necessarily execution price. The 13-chip difference between those totals is not a fee, unexplained profit or rounding adjustment in this model.

Construct an integer proportional alternative

Keep the price-selection policy and all orders fixed, but replace time priority within a rationed equal-limit group with a declared largest-remainder policy. Higher price priority still applies, so B1 keeps two units. At the 101 group, B2 has ideal quota 5×5/8=25/8=3.125 and B3 has 5×3/8=15/8=1.875. First allocate each quota rounded down: three and one. Four units have been allocated from the available five, leaving exactly one unit. Give it to the larger fractional remainder, B3, producing (B2,B3)=(3,2). Equal remainders would be broken by timestamp.

Final buyer fills are now (2,3,2,0), still totaling seven. Their payments are 202, 303, 202 and zero, totaling 707. Sellers and total cash are unchanged. Independently rounding each quota is not the definition of our policy and need not conserve units in other books. Proportional allocation does not mean every buyer receives the same count, nor does it let a low-limit order bypass a better-priced one. This comparison demonstrates that volume and price do not identify individual fills. It also does not prove truthful bidding, fairness under every criterion, or an equilibrium. Those claims would require a model of values and strategic order submission.

Perturb the batch and test the boundary

Lower only B4’s limit from 100 to 99. At price 100 eligible demand falls from twelve to ten, so prices 100 and 101 now both have volume seven and imbalance +3. With reference 100 our policy selects 100; with reference 101 it selects 101. With reference 100.5 both distances are 0.5, so the final lower-price rule selects 100. The two price outcomes have the same quantity but cash transfers of 700 and 707 respectively. This is a genuine tie in the earlier filters, unlike the original book where reference 100 could not rescue price 100.

Use the workshop to change B4’s limit, the reference and the rationing rule. Its cumulative ledger updates, but you must select the clearing price and construct individual buyer fills yourself. Try a feasible-looking allocation that gives B4 units above its limit, then one that conserves quantity but violates priority. The audit diagnoses those different errors separately. Construct both certified FIFO and proportional outcomes, then restore the original book and verify that changing the reference no longer changes the winning price. Edits invalidate earlier audit feedback; reset clears the draft. This activity lasts for the visit and does not award account progress.

Read the sources within their actual scope

ASX’s auction explanation supplies institutional context for cumulative eligibility and ordered price criteria. Its actual process also includes a market-pressure stage, which our teaching policy omits. Thus our reference tie example must not be labeled an ASX outcome. CME’s matching documentation distinguishes FIFO from quantity-proportional steps and explains the need to handle fractional residuals. Its product-specific sequences and residual handling differ from our declared largest-remainder policy. Neither source supplies this invented book or these calculations.

Before using any auction result outside the exercise, identify the exact candidate-price set, order eligibility, selection hierarchy, priority rules, integer residual policy and cash convention. If no price has positive executable volume, report no trade rather than implying that an arbitrary selected label is an execution. Our workshop always has crossing orders; the shared allocation routine separately tests zero available volume. The transferable skill is to derive a mechanism’s outcome from its explicit rules and verify conservation, while keeping that mechanical result separate from an assessment of incentives or economic value.

Worked example

Clear the original batch with B4 limit 100 and reference 100. Compare FIFO with the declared largest-remainder rationing.

  1. At candidate prices 98 through 103, V=(3,3,7,7,2,2) and I=(9,9,5,3,−9,−9). The maximum-volume set is {100,101}.
  2. Minimum absolute imbalance leaves 101 because 3<5. The reference criterion is never reached.
  3. Seller fills are (3,4,0). B1 receives two first, leaving five for B2 and B3.
  4. FIFO yields buyer fills (2,5,0,0). Proportional quotas at the rationed level are 25/8 and 15/8. Floors (3,1) leave one; the larger 7/8 remainder belongs to B3, giving (2,3,2,0).
  5. Both sides exchange seven units for 707 chips. FIFO buyer payments 202+505 and proportional buyer payments 202+303+202 both equal seller receipts 303+404.
  6. Lowering B4’s limit to 99 makes 100 and 101 tie on volume and imbalance. Reference 100.5 yields equal distance, so the explicit lower-price rule selects 100 and cash becomes 700.

Price filters, equal-limit rationing and payment reconciliation answer different questions; each needs its own rule and certificate.

Hands-on: Clear and ration a call auction

Construct cumulative eligibility, select a common price and build FIFO and integer proportional allocations under a changing batch.

Clear and ration a call auction

A frozen, fictional call auction: B1 buys 2 at limit 103; B2 buys 5 at 101; B3 buys 3 at 101; B4 buys 2 at an editable limit. S1 sells 3 at 98; S2 sells 4 at 100; S3 sells 4 at 102. B2 precedes B3. Candidate prices are the integers 98 through 103. Select maximum volume, then minimum absolute imbalance, then nearest reference, then lower price. No fees or hidden orders; all fills pay the one selected price.

Change the batch and policy

B4 limit: 100. Reference: 100. Rationing: FIFO.

Cumulative price ledger

D is eligible demand, S eligible supply, V matched units and I signed imbalance. Read the rows to apply the filters yourself.

Price 98: D=12; S=3; V=3; I=9.

Price 99: D=12; S=3; V=3; I=9.

Price 100: D=12; S=7; V=7; I=5.

Price 101: D=10; S=7; V=7; I=3.

Price 102: D=2; S=11; V=2; I=-9.

Price 103: D=2; S=11; V=2; I=-9.

Select a clearing price

Candidate: none.

Construct buyer fills

B1: 0 filled of 2

Buy limit 103.

B2: 0 filled of 5

Buy limit 101. Earlier than B3.

B3: 0 filled of 3

Buy limit 101. Later than B2.

B4: 0 filled of 2

Buy limit 100.

Buyer units: 0. Candidate cash: choose a price. A balanced total still needs limit and priority checks.

Sellers: S1: 3 at minimum 98; S2: 4 at minimum 100; S3: 4 at minimum 102. The audit constructs their priority fills at the correct price.

Choose a price and construct buyer fills.

Common mistakes

  • Summing only orders at exactly the candidate price instead of all eligible limits.
  • Letting a reference override a price already eliminated by imbalance.
  • Minimizing signed imbalance rather than its magnitude.
  • Treating buyer plus seller quantities as twice the traded volume.
  • Applying proportional rationing across different price priorities.
  • Rounding quotas without an explicit unit-conserving residual rule.
  • Paying each order its limit in a uniform-price auction.

Keep these ideas

  • Cumulative eligible demand and supply determine executable volume.
  • Apply the price hierarchy in order and preserve genuine ties until the next filter.
  • A common clearing price does not determine each participant’s allocation.
  • Integer rationing needs priority and a residual rule; both sides must reconcile quantity and cash.

Further reading

  • ASX: Auctions, price calculation principles ↗

    Read How opening and closing prices are calculated, including cumulative eligibility, volume, surplus, market pressure and reference-price stages. Supports the conceptual distinction between cumulative eligibility and ordered price criteria. The lesson omits the ASX market-pressure stage and uses its own finite candidate set and tie policy; no ASX implementation or source example reproduced. Checked 2026-10-25.

  • CME Group: Globex Matching Algorithm Steps, FIFO and Pro Rata ↗

    Read introductory sequencing paragraphs, FIFO definition, and Pro Rata definition, formula and rounding discussion. Supports the distinction between time and quantity priority and the need for residual handling. Our auction and largest-remainder policy are original teaching rules, not the documented CME product algorithms. No source example or video reused. Checked 2026-10-25.

Check your understanding

Untimed · 5 checks · Guest progress stays in this browser. Sign in to save account snapshots.

Loading saved lesson…