The Exchange Problem
Abstract
Auctions are widely used in exchanges to match buy and sell requests. Once the buyers and sellers place their requests, the exchange determines how these requests are to be matched. The two most popular objectives used while determining the matching are maximizing volume at a uniform price and maximizing volume with dynamic pricing. In this work, we study the algorithmic complexity of the problems arising from these matching tasks.
We present a linear time algorithm for uniform price matching which is an improvement over the previous algorithms that take time to match requests. For dynamic price matching, we establish a lower bound of on the running time, thereby proving that the currently known best algorithm is time-optimal.
Key words:
Call Auctions, Matching Algorithms, Element Distinctness, Time Complexity.
1 Introduction
We study problems of the following nature: The input is a list of trade requests from buyers and sellers of a particular product. Each request consists of a price and a quantity. The buyer’s request, known as a bid, is represented by a pair , which indicates that the buyer offers to buy a maximum of units of the product while paying at most per unit. Similarly, a seller’s request, known as an ask, is also a pair , which indicates that the seller offers to sell a maximum of units of the product provided they receive at least per unit. On receiving the input, we are required to generate a matching, which is a collection of transactions.111We use the term matching, which has been traditionally used for this object in the auction theory literature [NP13, ZZKP10, WWW98, NSS21], while a term like flow might be more suitable for a computer science audience. A transaction between a bid and an ask consists of a transaction price and a transaction quantity , indicating that units of the product change hands between the traders at price per unit. For each trade request , the sum of the total transaction quantities of the transactions involving the request must be at most . The volume of the matching is the total quantity that changes hands. The matching is uniform if all transactions occur at a common price. We consider the following two tasks.
- Task 1:
-
Determine a matching with the largest volume.
- Task 2:
-
Determine a uniform matching with the largest volume.
The first task can be solved by formulating it as a max-flow problem. However, due to the underlying problem structure, simpler solutions are available for these tasks. In fact, two simple and almost identical algorithms can be used for these tasks. We describe them below.
- Algorithms:
-
These algorithms start with sorting the list of bids in decreasing order of their prices. Next, the list of asks is sorted. For the first task, the sell requests are sorted in decreasing order of their prices. Whereas, for the second task, the sell requests are sorted in increasing order of their prices.
After the sorting step, both algorithms work in linear time as follows. The bid on top of its sorted list is matched with the ask on top of its sorted list if they are compatible, i.e., . In this case, a transaction between them is established with quantity ; a quantity of is reduced from their existing quantities of and ; finally, the quantity requests are deleted from the lists. If the requests are incompatible, the topmost ask in the sorted list of asks is deleted. The above steps are then repeatedly applied until one of the lists becomes empty. Finally, for the first task, for each matched pair: any transaction price in the interval can be put. For the second task, let the last matched pair in the above process be . Then, for all matched pairs any number in the interval can be chosen as the common transaction price.
Clearly, the above algorithms take time in the comparison model. We ask the following question.
-
Do these algorithms have the optimal running time for the above tasks?
The problems we consider in this work are slight generalizations of the above tasks where bids and asks have additional parameters, and the objectives incorporate a notion of fairness. These problems arise out of call auctions, which are a class of double auctions, that are extensively used to match the buy and sell requests of traders at various centralized marketplaces such as exchanges of stocks and commodities. Numerous works have focused on the mechanism-design and game-theoretic aspects of such auctions (e.g., see [DGHK02] and the citations therein), with only a few of them that include a runtime analysis of their algorithms ([WWW98, NP13, ZZKP10]). The problems considered in this work arise all the time in the real world and could easily be introduced in an undergraduate course in algorithms. For the above tasks, we prove the following.
Theorem 1.1.
Any algorithm for Task 1 requires time in the worst-case, where is the number of trade requests.
Theorem 1.2.
There exists an algorithm for Task 2 that runs in time, where is the number of trade requests.
Thus, interestingly, for Task 1, the algorithm described above is time-optimal, whereas for Task 2, the algorithm described above is not time-optimal.
To describe the general problems that we consider, previous results, and our contributions formally, we need the following preliminaries.
1.1 Preliminaries
We now describe call auctions which are slight generalizations of the tasks introduced above. A call auction is used at an exchange to match the bids and asks of traders for a particular product. Bids and asks are collectively termed orders. Orders are collected by the exchange for a fixed duration of time, at the end of which the collected orders are simultaneously matched to produce transactions. Each transaction between a bid and an ask consists of a transaction price and a transaction quantity. Each order consists of four attributes that are natural numbers: a unique identification number (id), a unique timestamp, a limit price, and a quantity that is at least one.222Later, the orders given as input to the algorithms, are all assumed to have distinct ids and distinct timestamps. represents the time the order was received. For an order , the limit price is the minimum (if is an ask) or maximum (if is a bid) possible transaction price of a transaction involving . For an order , the quantity represents the total quantity offered for trade, i.e., the sum of transaction quantities of transactions involving in the matching must be at most . Given a collection of orders with distinct ids, i.e., given a set of bids and asks with distinct ids, a matching is a collection of transactions that satisfy the natural constraints. We formally define a matching below, along with some other important terms.
Definition 1.3 (tradable, traded quantity , volume , matching).
Given a bid and an ask , we say that and are tradable if .
For a set of transactions and an order , denotes the sum of transaction quantities of transactions in that involve , and denotes the sum of all transaction quantities of the transactions in . With slight abuse of notation for a set of asks or a set of bids , we define to be the sum of the quantities of the orders in .
A set of transactions is a matching over a list of bids and asks with distinct ids if (i) For each transaction , the bid and ask of come from and , respectively. (ii) For each transaction , the bid of is tradable with the ask of . (iii) For each order , .
There are two main types of call auctions: uniform-price and dynamic-price. In both these auctions, the matching produced needs to be fair, which essentially states that more competitive orders (based on price-time priority) have to be given preference in the matching. We now formally define a fair matching along with the notion of competitiveness.
Definition 1.4 (Competitiveness , Fair).
For bids and we say is more competitive than , denoted by , iff or ( and ). Similarly, for asks and , we say is more competitive than , denoted by , iff or ( and .
We say a matching is fair on bids if a bid participates in , then all bids that are more competitive than must be fully traded in . Formally, is fair on bids iff for all pairs of bids and such that , . Similarly, a matching is fair on asks iff for all pairs of asks and such that , . A matching is fair if it is fair on bids as well as fair on asks.
In uniform price call auctions, the exchange is supposed to output a fair matching with maximum volume subject to the constraint that all transaction prices in the matching are identical. Customarily, the transaction price of a uniform price matching is referred to as the equilibrium price, and the process of discovering this price is called price discovery. In contrast, for dynamic price call auctions, the exchange is supposed to output a fair matching with maximum volume, where the transaction prices need not be the same. It must be noted that drop** the requirement of fairness from a dynamic price matching can only make the problem easier; the following result states that for any matching, there exists a fair matching of the same volume.
Theorem 1.5 (Theorem 15 and Page 13 of [NSS21]).
Given a set of bids , a set of asks , and a matching over , one can find a fair matching over such that
-
(a)
, and
-
(b)
if is uniform, then is uniform.
Remark 1.6.
It is clear from the above theorem, that unlike uniformity, ensuring fairness does not change the volume of a matching. More precisely, given sets of bids and asks , consider the following matchings over . Let be a largest volume matching, be a fair matching with the largest volume, be a uniform matching with the largest volume, and finally let be a uniform and fair matching with the largest volume. Then,
Nevertheless, computing can be easier than computing , and similarly computing can be easier than computing . More precisely, computing reduces to computing , and computing reduces to computing .
The two matching problems that we study in this work can be stated as follows.
- Problem 1
-
Given a set of bids and a set of asks , find a fair matching over of maximum volume.
- Problem 2
-
Given a set of bids and a set of asks , find a fair and uniform matching over of maximum volume.
To show our lower bound results, we have to explain the model of computation we assume.
- The comparison model:
-
We assume that the prices of the orders in the input are not given explicitly. Rather, two prices can be compared to each other via an oracle in unit time.
- The binary query model:
-
We will also derive a lower bound in a more general model, namely the binary query model, where the oracle can be made to evaluate an arbitrary function on two prices in unit time.
Remark 1.7.
Our upper bound results do adhere to the more restricted comparison model.
We are now ready to state the previous and new results.
1.2 Results, techniques, and discussion
We first briefly summarize the past results that were obtained for Problems 1 and 2. In the following, represents the number of orders in the input, i.e., .
-
•
First, in [WWW98] it was shown that Problem 2 can be solved in time.
-
•
Next, in [ZZKP10] it was shown that Problem 1 can be solved in time under the assumption that all orders have unit quantity. The authors mention that for multi-unit orders, one can simply break an order into multiple single-unit orders and use their algorithm. But, this would then result in overall complexity , where is the sum of the total demand and total supply, i.e., .
-
•
This was improved in [NP13] where it was shown that Problem 1 can be solved in time for single-unit orders.
-
•
Finally, inspired from previous works, in [NSS21] algorithms for both Problems 1 and 2 were presented that run in time each for arbitrary multi-unit orders. However, the authors did not analyze the time complexity of their algorithms, as they were more focused on formalizing these algorithms in a theorem prover. Their algorithms are general versions of the two algorithms we saw on page 1, where instead of sorting the lists of bids and asks by their prices, they are sorted by their competitiveness. After this modification, the first algorithm yields a maximum volume matching (note that Problem 1 requires the output matching to be also fair), whereas the second algorithm yields a uniform and fair matching with maximum volume (precisely solving Problem 2). For solving Problem 1, in addition to the above algorithm, they use an time algorithm that takes an arbitrary matching and outputs a fair matching of the same volume (this is always possible, see Theorem 1.5). It is straightforward to see that their algorithms indeed run in time.
Now we describe the results obtained in this work.
For Problem 1, we show that an easier problem, namely finding a maximum volume matching (which need not be fair), requires time for processing requests in the comparison model and time in the binary query model.
Theorem 1.8 (Result 1).
Any algorithm that takes as input a set of bids and a set of asks and computes a matching over with the maximum volume has a worst-case running time of in the comparison model and in the binary query model, where .
From our earlier discussion, Theorem 1.5 implies that these lower bounds also apply to Problem 1.
As described above, there is an algorithm [NP13, NSS21] for finding a fair and maximum volume matching (which also works for determining a maximum volume matching) that takes time. Our lower bound result implies that such an algorithm is time-optimal in the comparison model.
As we will see later, the Proof of Theorem 1.8 also applies to Theorem 1.1. In this proof, we obtain the desired lower bound by reducing the element distinctness problem over a small domain to the maximum volume matching problem.333An entropy-based argument similar to the one used for sorting in [Rad03] also yields a lower bound for the maximum matching problem in the comparison model, but it fails to deliver any non-trivial lower bound in the binary query model. Our result then follows from applying known lower bounds on the time complexity of the element distinctness problem [Bop94, Meh84]. We include a proof of the lower bound in the comparison model making the argument in [Meh84] more precise as it seems to be missing some important details. Our reduction uses a stronger version of the demand-supply inequality of [NP13], which states that the volume of any matching is upper bounded by the sum of the total demand and the total supply at any price.
Theorem 1.9 (demand-supply inequality).
If is a matching over a set of bids and a set of asks , then for all numbers , we have
where consists of bids whose limit prices are at least , consists of asks whose limit prices are at most .
Our strengthening, which is crucially required for our reduction to work, comes from observing that the above inequality holds even if we replace by or by , and can be stated as follows.
Theorem 1.10 (Result 2).
If is a matching over a set of bids and a set of asks , then for all numbers , we have
where consists of bids whose limit prices are greater than , consists of asks whose limit prices are less than , and (or ) consists of bids (or asks) whose limit prices are exactly .
For Problem 2, we obtain a linear time algorithm.
Theorem 1.11 (Result 3).
There exists an algorithm that takes as input a set of bids and a set of asks , and outputs a uniform and fair matching with maximum volume in time, where .
As noted earlier, this is an improvement over the previous algorithms [WWW98, ZZKP10, NSS21] that take time to match requests. Note that Theorem 1.11 immediately implies Theorem 1.2, as ensuring fairness does not reduce the size of a uniform matching, as observed earlier.
Our improvement for uniform-price matching, roughly speaking, comes from getting rid of the sorting step in the algorithm of [NSS21] as described earlier. We instead compute the "medians" of the bids and asks in linear time which bisects the sets of bids and asks into two "equal halves" each. Based on whether the medians are tradable or not, we either can get rid of half of the bids and asks, or we can match half of the input in linear time, thus in either case reducing the problem size by half. This results in a linear time algorithm. Note that obtaining a linear time algorithm in the volume of the input orders is much simpler than our result.
1.3 Other related work
In [GS22, GS23], continuous auctions were studied, that form a class of double auctions that complement the call auctions. The authors presented an algorithm that implements the continuous auction and runs in time for processing instructions (requests/orders). They also showed that their algorithm is time-optimal by reducing the task of sorting to continuous auctions.
Organization of the paper. In Section 2, we prove Theorem 1.10. Then, Theorems 1.8 and 1.1 are proved in Section 3. Next, in Section 4, Theorem 1.11 is proved. Finally, we conclude the paper in Section 5 with some concluding remarks.
2 Stronger demand-supply inequality
In this section, we prove Theorem 1.10.
See 1.10
Proof of Theorem 1.10.
First observe that the volume of any matching is upper bounded by the volume of all bids as well as the volume of all asks, i.e., if is a matching over , then
To prove Theorem 1.10, it suffices to prove the following two inequalities.
To prove the first inequality we partition the matching into two sets: consisting of all transactions in whose participating bid price is at least and consisting of all transactions in whose participating bid price is strictly less than . Thus, .
It is easy to see that is a matching over sets of bids and asks , and hence from the above observation, .
Next, we prove that is a matching over sets of bids and asks . Consider a transaction from , which is between a bid and an ask . Since , , and from the definition of , we have . This implies , i.e., asks of come from . Hence, is a matching over , and applying the above observation again, we have .
Combining, we have , which completes the proof of first inequality.
Similarly, we can prove the second inequality by first partitioning the matching into and , noticing that is a matching over and is matching over , and finally, using the observation again to obtain the desired inequality. ∎
3 Maximum volume matching lower bound
In this section we prove Theorem 1.8 (note the proof also works for Theorem 1.1), i.e., we establish a lower bound of on the running time of any algorithm that computes a maximum volume matching on a list of bids and a list of asks , where . Let be an algorithm for the maximum matching problem. We reduce the element distinctness problem on a small domain to in linear time.
Element Distinctness Problem (on small domain): Given an input , where each , check whether there are distinct indices and such .444For , denotes the set .
Our result then immediately follows from the fact that the element distinctness problem on a small domain requires time in the comparison model [Meh84] (for which we include a proof in the next subsection) and time in the binary query model [Bop94].
In the reduction, we will make use of the stronger version of the demand-supply inequality Theorem 1.10, which was proved in Section 2.
The reduction. Given an instance for the element distinctness problem, we construct two sets of orders and such that the quantity of each order in is set to . We set the prices as follows. and . Observe that the prices of orders in are all distinct. Next, we run the maximum matching algorithm twice on these inputs by first treating as the set of bids and then treating as the set of asks to obtain two matchings and , respectively; and .
We now claim that if elements of are all distinct then , otherwise . Note that if we show this claim the reduction is complete, as we can then solve the element distinctness problem mentioned above in time plus twice the time taken by on orders.
It is easy to see that if the ’s are all distinct, then ; the bid with price is matched with the ask with price .
Now, we show that if the ’s are not distinct, then or . From the pigeon-hole principle, if two elements are repeating in , then one of the elements from must be missing from . Let the smallest missing element in be and the smallest repeating element in be .
For a set of orders , we define , , and . Now, observe that (since is missing from which is the set of prices of ), which implies .
We now consider two cases: or .
Case: . In this case we will show that . Observe that the number of elements in that are at most is precisely , since no element smaller than is repeating and itself is missing. Here, the input ’s are set to be the ask prices, i.e., is the set of asks, and is the set of bids. Therefore, and . Hence, from Theorem 1.10,
Case: . In this case we will show that . Note that no element in is missing below but some elements are repeating. Thus, the number of elements that are greater than are at most . Hence, similar to the above case, applying Theorem 1.10, we have ∎
3.1 Element distinctness on small domain
We now show a lower bound on the number of comparisons needed to solve the element distinctness problem on a small domain: Given an input where each , check whether there exists and such that and .
Any algorithm for element distinctness can be seen as a decision tree where each internal node is labeled by a comparison , for some , and each leaf is labeled either Yes or No. On a given input the decision tree is applied as follows. We start at the root node, traverse a path to a leaf, and declare the label of the leaf as the output. On encountering a node labeled , if , we take its left child as the next node in the path, otherwise, we take its right child. Inputs corresponding to permutations on must receive the answer Yes, and inputs where for some must receive the answer No.
We fix a decision tree for the element distinctness problem and prove that its height is at least . We make the following claim.
Claim 3.1.
Each permutation on ends up in a distinct leaf of .
This immediately implies that the number of leaves is at least and hence the height of the tree is at least . We now turn to proving the above claim.
For the sake of contradiction we assume two distinct permutations and end up at the same leaf of . To obtain a contradiction we will find an input where for some which also ends up in the leaf .
We define a poset on the set of symbols . In our poset when and are related, we will write and call it a constraint. For each node labeled in the path from the root to the leaf in the tree , we have a constraint of the from or (in fact, suffices, but we use the weaker form) which must be satisfied for a computation to take this path. Let be the set of all such constraints. We define ; notice that this is a non-empty intersection, as we have at least one poset, namely the total order which satisfies all constraints in as ends up in the leaf . We define .
We say an input respects a poset if whenever is a constraint in . The following proposition is easy to prove.
Proposition 3.2.
An input reaches the leaf iff it respects the poset .
Next, observe that since and are two distinct permutations that respect , the length of a largest chain in is at most .555At this point, the proof in [Meh84] instantly concludes that there must be two elements in the poset that are not related and fixes an input which respects the poset and where these two coordinates are equal, to complete the proof, without specifying why such an input exists. We fill such gaps in the proof. Mirsky’s theorem [Mir71] then implies that there is an antichain decomposition of with at most antichains. Since has elements, there must be an antichain in that has at least two elements. Let be a maximal antichain in that has at least two elements. We can write as a disjoint union of three sets , where consists of elements below and consists of elements above in the poset : and (observe that an element cannot be both above and below ). The constraints in restricted to and restricted to give rise to the posets: and . Now we define the poset such that as follows. Take a linear extension of : and add all the implied constraints to . Do not add any constraints between the elements of the antichain . Take a linear extension of : and add all the implied constraints to . Furthermore, add the following constraints to : For each , add . For each and , add . For each and each , add . Clearly, . Now fix the input such that , , . Now, clearly respects the poset . Thus, it also respects the poset (as ) and reaches the leaf . Since , is a No instance which reaches , a contradiction.∎
4 Uniform price matching
In this section, we prove Theorem 1.11, i.e., we obtain a linear time algorithm for uniform price matching. We begin by first describing the previous algorithm as described in [NSS21], which we will critically use in establishing the correctness of our linear time algorithm.
We may assume that the input lists of asks and bids are such that . This can be achieved by adding a dummy order. Say , then add a dummy ask with and . If , then add a dummy bid with and . Strictly speaking, according to our definition, we cannot set the to be or , but our definitions can be adjusted to allow for this.
4.1 Previous algorithm
We describe the algorithm in [NSS21], which we denote by . The transaction prices that are set by are not guaranteed to be uniform initially. After the matching is produced, a linear time algorithm is employed to put a uniform transaction price for all the transactions. For example, the maximum of the limit prices of the asks that participate in the output matching can be set as the transaction price of all the transactions in the output matching.
Given the list of bids B and asks A, first sorts the lists based on their respective competitiveness with the most competitive order on the top. It then invokes on the sorted lists , , and an empty matching . Throughout the algorithm, can only grow, and at the end of the algorithm, will contain a desired uniform-price matching.
on picks the most competitive bid and the most competitive ask from and respectively, and checks if they are tradable. If they are not tradable, it returns , and the algorithm terminates.
Otherwise, if they are tradable, it adds a transaction between and with transaction quantity to , reduces the quantity of and by in the lists and . Note that at least one of or must be fully exhausted and removed completely from or . It then recursively calls on .
Clearly takes time, whereas takes time, where .
The algorithm can be simply described as first sorting the lists and based on competitiveness, and then doing a top-down greedy matching as long as the current bid and ask are tradable.
The following result states that the above result is correct.
Theorem 4.1 (Theorem 20 of [NSS21]).
outputs a uniform price matching.
We give a brief intuition of the proof of the above result. Let . To see that is a fair matching is trivial, as it starts matching the bids and asks in the decreasing order of competitiveness. Similarly, it is easy to convince oneself that has a uniform price; any price between the limit prices of the last paired bid and ask is acceptable to all orders that participate in the matching; this again follows from the fact that matching is done top down in the order of decreasing competitiveness. Finally, to see that has maximum volume needs some work: fix an optimal matching . We can gradually transform into without altering its volume. The illuminating case to consider is when the most competitive orders and are fully traded in . Note that the transaction quantity between and in is . Since is fair, and must also be fully traded in . In particular and . Now, if the transaction quantity between and in is strictly less than , then can be modified by making the transaction quantity between and equal to . Let us say is matched with and is matched with in , then we can reduce the quantity of these transactions by a unit quantity, increase the transaction quantity between and by unit quantity, and increase the transaction quantity between and by a unit quantity (this is possible since every matched bid is tradable with every matched ask as all the transaction prices are identical). Note that in the end, remains the same. We can repeat this surgery over and over again till the matched quantity between and in becomes equal to . We remove this transaction from both and and apply the same argument repeatedly till .
4.2 Useful lemmas and subroutines
Before we proceed to describe our improved algorithm, we establish certain lemmas and subroutines that will be useful in describing our algorithm and proving its correctness.
We first need some definitions.
Definition 4.2 (, ).
For a set of bids or a set of asks and an element , returns a partition of , where and . Thus, splits into two parts, one containing orders that are at least as competitive as , and the other containing orders that are less competitive than . Clearly, can be implemented in linear time.
We now define the range of an order in a set of orders which are all bids or all asks. Let be an order in . Let . Let . . If all orders in have unit quantities, then the of the most competitive order is the singleton . In general, range of the most competitive order is the set . The range of the next most competitive order is , and so on. Thus, the ranges of orders in partition .
Observe the following fact about the previous algorithm .
Lemma 4.3.
If a bid and an ask are matched in the matching output by , then .
This is trivial to see when all orders in have unit quantities since matches the most competitive bid with the most competitive ask for all , where , and the of the most competitive bid (and ask) is the singleton . To see why the general statement is true observe that whenever is called it potentially matches the most competitive bid with the most competitive ask , and .
Our main workhorse is the subroutine which works in linear time by employing the classical algorithm of [BFP73]. Given a list of orders (all bids or all asks) and a number , outputs the most competitive order in .
We also use a weighted version of called which takes as input and a quantity and outputs the unique element such that . can be implemented in linear time using the algorithm as subroutine as described below.
We get the following recurrence relationship on the running time of : , which yields , where .
The next subroutine we consider is , which partitions into two parts consisting of orders in which are at least as competitive as , and orders which are strictly less competitive than . We now want to define a subroutine which takes as input a list of orders and a quantity . We want to ‘partition’ into two parts so that the volume of the more competitive part is precisely . For this, we first find the element such that . We then to obtain . If , then we are immediately done. Else and . Thus we must break a part of and put it in so that is precisely . This can be achieved in linear time by the following subroutine . Apart from outputting the partition as described above, it also returns the order . clearly runs in linear time.
We are now ready to state another lemma regarding the previous algorithm .
Lemma 4.4.
Let be the most competitive bid that gets completely traded in . Let and . Let . Then, can be partitioned into such that and .
The above statement is easy to check. Since gets completely traded in , all orders in must get traded with the most competitive asks in whose total quantity is , which is precisely the set . Let consist of the transactions produced while matching orders in . Then will be obtained by running the on .
Note that a symmetric statement holds where we start with the assumption that the most competitive ask gets traded in .
We are now ready to describe our improved algorithm.
4.3 Improved algorithm
Our improved algorithm takes as input a list of bids and a list of asks . It immediately invokes on . will grow into the final matching output by the algorithm.
There are two main subroutines of our algorithm and which are symmetric in nature and they alternatively call each other. This is done to ensure that in two successive return calls the problem size, i.e., reduces by a factor of two, as halves the number of the bids, whereas halves the number of the asks. So just understanding will be sufficient for understanding our algorithm.
On receiving first finds the median bid by invoking . It then splits into two halves based on the median bid by invoking . Let . It then finds the element such that and splits into its most competitive and least competitive asks such that by applying .
After that, the algorithm checks if and are tradable. Two cases arise. If and are tradable, then every order in and are tradable and they will exhaustively be matched to each other to produce a matching of volume in linear time using the subroutine. adds this matching to and recursively calls on . Intuitively, the previous algorithm would also match all orders in and exhaustively to each other to produce a matching of size and proceed to matching orders in and .
In the case and are not tradable, then discards and calls on . Intuitively, the previous algorithm will halt (i.e., produce its last transaction) before it even comes down to examining orders in and .
Having described our algorithm , we now turn to prove its correctness. The main theorem that establishes the correctness is as follows.
Theorem 4.5.
Given a list of bids and a list of asks , let and . Then, for each order , .
Once we prove the above theorem, the correctness follows from the following proposition and Theorem 4.1.
Proposition 4.6.
If is a uniform price matching over and is a matching over such that for all , , then is a uniform price matching.
The proposition is obvious: the volumes of and must be the same from the condition above. Also, since the same orders participate in both and , transactions in can be assigned the same uniform price that is in . Finally, fairness also follows immediately since the more competitive orders are fully traded in , they must be fully traded in as for all orders .
We now turn to proving Theorem 4.5.
Proof of Theorem 4.5.
For a list of orders , we use to denote the list obtained by sorting by decreasing competitiveness.
We make the following claim.
Claim 4.7.
Let be a list of bids, be a list of asks, and be a matching such that . Let , , and . Then, for all , .
If the claim is true, then Theorem 4.5 follows immediately by observing that without loss of generality we had assumed that our inputs and are such that (which was achieved by adding a dummy untradable order), , and .
We now prove the claim by induction on .
We focus on showing the following part: for all , . A symmetric argument will yield .
The base cases include and . The proof in these cases follows easily.
Thus, we are left with cases where , , and . Now, we argue that it suffices to consider cases where . Let us analyze what happens when we run on , where and . will compute and (as is a singleton and ). checks whether the ‘median’ bid (the only bid in ) and the ask (the least competitive ask in ) are tradable or not. If they are tradable, then each order in will be exhaustively matched. Since it is a uniform price matching, every bid-ask pair is tradable, so on will also match every order in exhaustively, and the claim follows easily. If they are not tradable, then will return , i.e., , and in this case and will be handled when we apply the symmetric argument to prove .
Thus, we may assume that and this will imply that both and will turn out to be proper subsets of when we run on .
We fix sets , , and such that . Also, and . We need to show that for all , .
In the proof below, we will be using the following facts.
-
•
-
•
-
•
-
•
, where the union is a disjoint union (which is a list concatenation operation when thinking of the matchings as lists).
on first finds the ‘medians’ bid and ask , and the partitions of , of . Let . then checks whether and are tradable which gives rise to two cases.
Case: and are tradable: In this case, is matched completely with to produce a matching with quantity and the final output matching is
Also, .
We now invoke Lemma 4.4 by setting to to argue that the matching output by on is
. Thus,
Note that we have expressed both and as a disjoint union (list concatenation) of three sets. Fix an . Now, (trivially), (as is obtained by exhaustively matching all orders in ), and (from induction). Thus, we have .
Case: and are not tradable completely discards and and outputs the matching
Also, Observe that no bid in is tradable with any ask in , as bids in are strictly less competitive than and asks in are at most as competitive as , and and are not tradable. We further claim that does not match any orders from . To see this, we invoke Lemma 4.3. Note that except for bid and ask , the respective ranges of orders in and have numbers strictly less than and the respective ranges of orders in and have numbers that are all strictly greater than , as . Thus, any potential matches between and or between and can only happen between and , but they are not tradable (as per the case). Thus, we conclude that the . Therefore,
From induction, arguing as before, we get for all orders , , and we are done. ∎
We now analyze the running time of . Let represent the running time of , where the number of orders .
calls , which in turn calls after decreasing the number of the bids by a factor of two. then calls again after decreasing the number of the asks by a factor of two. So after two successive returns, we can see that the number of bids and asks decreases by a factor of two. Also, since all the subroutines take linear time, by simple inspection, we conclude
, where is an absolute constant. Thus, clearly .
This completes the proof of Theorem 1.11.
5 Conclusions
The problems we consider are clearly of fundamental interest and we achieve asymptotically tight results for them using elementary techniques. Surprisingly, despite their fundamental nature and wide practical applicability, prior to this work, the complexity aspects of such problems were not deeply studied. The following natural questions arise from our work.
-
•
In this work, the most classical exchange model is assumed; there are execution principles other than price-time priority (like pro-rata matching) which are also being employed in the real world. These alternative principles present opportunities for studying algorithmic complexity beyond the traditional price-time priority model.
-
•
Furthermore, it might be interesting to consider similar problems in the context of decentralized exchanges.
-
•
Finally, bridging the gap between the upper and lower bounds on the time complexity of Problem 1 in the binary query model remains open.
Acknowledgement
The authors express their gratitude to Jaikumar Radhakrishnan for bringing the element distinctness problem to their attention and for engaging in insightful discussions that enriched their understanding of it. They are also thankful to him for hel** improve the presentation of this work.
References
- [BFP73] Manuel Blum, Robert W. Floyd, Vaughan R. Pratt, Ronald L. Rivest, and Robert Endre Tarjan. Time bounds for selection. J. Comput. Syst. Sci., 7(4):448–461, 1973.
- [Bop94] Ravi B. Boppana. The decision-tree complexity of element distinctness. Inf. Process. Lett., 52(6):329–331, 1994.
- [DGHK02] Kaustubh Deshmukh, Andrew V. Goldberg, Jason D. Hartline, and Anna R. Karlin. Truthful and competitive double auctions. In Rolf H. Möhring and Rajeev Raman, editors, Algorithms - ESA 2002, 10th Annual European Symposium, Rome, Italy, September 17-21, 2002, Proceedings, volume 2461 of Lecture Notes in Computer Science, pages 361–373. Springer, 2002.
- [GS22] Mohit Garg and Suneel Sarswat. The design and regulation of exchanges: A formal approach. In Anuj Dawar and Venkatesan Guruswami, editors, 42nd IARCS Annual Conference on Foundations of Software Technology and Theoretical Computer Science, FSTTCS 2022, December 18-20, 2022, IIT Madras, Chennai, India, volume 250 of LIPIcs, pages 39:1–39:21. Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 2022.
- [GS23] M Garg and S Sarswat. Efficient and Verified Continuous Double Auctions. In R. Piskac and A. Voronkov, editors, Short Papers of the 24th International Conference on Logic for Programming Artificial Intelligence and Reasoning, 2023.
- [Meh84] Kurt Mehlhorn. Data Structures and Algorithms 1: Sorting and Searching, volume 1 of EATCS Monographs on Theoretical Computer Science. Springer, 1984.
- [Mir71] L. Mirsky. A dual of dilworth’s decomposition theorem. The American Mathematical Monthly, 78(8):876–877, 1971.
- [NP13] **zhong Niu and Simon Parsons. Maximizing matching in double-sided auctions. In Maria L. Gini, Onn Shehory, Takayuki Ito, and Catholijn M. Jonker, editors, International conference on Autonomous Agents and Multi-Agent Systems, AAMAS ’13, Saint Paul, MN, USA, May 6-10, 2013, pages 1283–1284. IFAAMAS, 2013.
- [NSS21] Raja Natarajan, Suneel Sarswat, and Abhishek Kr Singh. Verified double sided auctions for financial markets. In Liron Cohen and Cezary Kaliszyk, editors, 12th International Conference on Interactive Theorem Proving, ITP 2021, June 29 to July 1, 2021, Rome, Italy (Virtual Conference), volume 193 of LIPIcs, pages 28:1–28:18. Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 2021.
- [Rad03] Jaikumar Radhakrishnan. Entropy and counting. Computational mathematics, modelling and algorithms, 146, 2003.
- [WWW98] Peter R. Wurman, William E. Walsh, and Michael P. Wellman. Flexible double auctions for electronic commerce: theory and implementation. Decis. Support Syst., 24(1):17–27, 1998.
- [ZZKP10] Dengji Zhao, Dongmo Zhang, Md Khan, and Laurent Perrussel. Maximal matching for double auction. In Jiuyong Li, editor, AI 2010: Advances in Artificial Intelligence - 23rd Australasian Joint Conference, Adelaide, Australia, December 7-10, 2010. Proceedings, volume 6464 of Lecture Notes in Computer Science, pages 516–525. Springer, 2010.