bundle widget

Since this example is an on-chain market, our choice of numeraire is restricted to a native cryptocurrency (BTC). This restriction of the numeraire makes it challenging to replicate the payoffs of conventional instruments, which are traded in markets that use USD as the numeraire. To observe how the numeraire restriction limits our ability to construct payoffs, use the y-axis toggle switch to convert the "Payoff Amount" scale between BTC and USD. Note that the y-axis toggle only converts the payoff denomination, which should not be confused with the market numeraire. The numeraire remains BTC and cannot be changed. Notice that component payoffs of complete bundles are balanced when measured in BTC, but lopsided when measured in USD (the bars on the right-hand side of the bar chart are taller than the bars on the left). The lopsidedness of payoffs measured in USD is a consequence of using BTC as the numeraire. One way to overcome this is to take the synthetic-USD (i.e. the "stable portfolio") created in this BTC-numeraire market, and use it to create a second market with synthetic-USD as the numeraire. Another option is to utilize a USD asset from a third-party issuer; we excluded that option here because for a wholly on-chain "stablecoin" all four essential market mechanisms must be on-chain. The leverage of these synthetic positions is based on the combinatorial market structure, that is, combinations of binary options. Each binary option in the portfolio is a derivatives contract on a specific outcome, i.e. a particular future spot price. Thus, these portfolios specify contracts at multiple price levels, similar to a strategy described before as "Stabilizing Forwards".[n] There is an important difference between these synthetic positions and conventional leverage instruments like futures and (American or European-style) options. While binary options have bounded payoffs and bounded losses (or fixed-returns and fixed-losses), conventional leverage instruments have unbounded payoffs and/or unbounded losses. The long version of this document will contain further discussion of conventional leverage mechanisms, including equity margin, future margin, and forex. But in brief, the unbounded payoffs and losses of conventional derivatives are supported by a hierarchical arrangement of credit and liability, with a central counterparty at the top, member brokers in the middle, and customers at the bottom. The central counterparty is liable if a member broker defaults; and member brokers are held liable if their customers default (i.e. if a customer cannot cover a margin call). Additionally, to reduce the risk of defaults, the exchange sets lock limits that restrict the trading of less liquid contracts to within a permitted price range, which is adjusted daily when the market re-opens. Without such limits to restrict price volatility, hierarchies of credit and liability experience brittle failure modes triggered when market liquidity momentarily vanishes, leaving stop-loss orders unexecuted due to massive slippage. In contrast, a market structure based on binary options does not have such systemic risks because payoffs and losses are bounded. In the chart above, users can select several types of bundles and visualize the component payoffs. However, users cannot change the bundle quantities, nor enter limit prices to bid on bundles, as they would in a user interface for an order book. Thus, the chart above is a visualization of portfolio payoffs, and not a visualization of an order book interface where users trade portfolios with bundle bids. A combinatorial order book for trading portfolios as bundles is presented in the next example. 1.3 Related work The combinatorial market described in this document is not novel. As presented here, the market mechanism is most similar to three predecessors: (1) “combined-value trading” by Bossaerts et. al, who describe their mechanism as an “intermittent call market with a single electronic open book” wherein investors “submit orders for packages of securities and the system matches trades and computes prices by optimally combining portfolio orders”;[n] (2) Lange & Economides, who describe a "Pari-mutuel Derivative Call Auction" (PDCA) as a “game conducted as a call auction” with a “parimutuel microstructure with notional claims, limit orders, and ‘claim bundling’ across states”;[n] and (3) Peters et. al. who, building on Lange & Economides, call their mechanism a “convex parimutuel call auction mechanism” (CPCAM).[n] All three mechanisms are combinatorial in nature. To emphasize this, we use the generic term “combinatorial auction” in this document. All three mechanisms are also based on call auctions, otherwise known as batch auctions. The term “call auction” (or call market) describes a double auction with batch order processing and uniform-price clearing. We use the term “batch auction” instead, following Budish et. al. who call their (non-combinatorial) mechanism “frequent batch auctions”, which they describe as "uniform price double auctions conducted, e.g., every tenth of a second." Since the mechanism we describe is, like the three predecessors, both a combinatorial auction and a batch auction, we thus use the term “batch combinatorial auction”. We find “batch combinatorial auction” preferable as it is easily contrasted with the standard “continuous double auction”, and in combination with “combinatorial order book”, the primary features are emphasized. Also relevant is a fourth predecessor, Yoopick by Goel et. al., who describe it as a "combinatorial sports prediction market that implements a flexible betting language, and in turn facilitates fine-grained probabilistic estimation of outcomes."[n] Yoopick defines a market structure where the outcome space is the point spread between the final scores of two teams in a sports game, such as an NFL football game. In comparison, recall our example market for a Super Bowl game, where we structured the outcome space into two mutually exclusive outcomes: either the Chiefs win, or the Packers win. A market structure over the point spread has more than two outcomes, for example: [.., -3, -2, -1, 0, +1, +2, +3, ...], where the set of positive numbers +x is assigned to represent the Packers winning by x points, and the range is bounded on both sides at some arbitrary cutoff. To bet on a tie, participants buy binary options on "0"; to bet on the Packers winning by three or more, participants buy the bundle of binary options [+3, +4, +5, ...]; and so on. With this market structure, bettors can purchase bundles that replicate the payoffs of conventional sportsbook bets, such as money line bets and point spread bets; or they can purchase custom bundles with exotic payoffs. While Yoopick defines a combinatorial market structure on the final point spread of a sports game, we define a combinatorial market structure on the future spot price of a digital currency (i.e. the BTC/USD spot price on the expiration date). Thus, the market structure that Yoopick defines for betting on sports is very similar to the market structure that we define for trading digital currency derivatives. But the respective mechanisms have a fundamental difference: while Yoopick uses a combinatorial market maker (LMSR) to accept bets, we use a combinatorial auctioneer to match orders. That is, Yoopick uses a cominatorial market maker in a quote-driven mechanism that is only capable of accepting market orders because it does not have an order book. Whereas we (like our first three predecessors) use a combinatorial auctioneer in an order-driven mechanism that is capable of matching limit orders on a combinatorial order book. To put it another way, Yoopick uses LMSR to accept combinatorial market orders at discriminatory clearing prices determined by serial processing in continuous-time. In contrast, we use an LP algorithm to match combinatorial limit orders at uniform clearing prices calculated by batch processing in discrete-time. Recall that we identified four essential market mechanisms: an issuer, a clearinghouse, an auctioneer, and a market maker. The difference between Yoopick, which only utilizes a combinatorial market maker, and the first three predecessors, which all utilize a combinatorial auctioneer, highlights the distinction between auctioneers and market makers. In the context of an order-driven market, the auctioneer processes limit orders and market orders as they arrive at the order book; while market makers generate limit orders and send them to the order book. The next two examples focus on these two essential market mechanisms, respectively. 2 Combinatorial Auctioneers In the next example, we experiment with using a combinatorial auctioneer to match limit orders to buy bundles, or combinatorial bids. While a conventional bid in a double auction imposes a price constraint on a single item or dimension, a combinatorial bid (or bundle bid) imposes a price constraint on multiple items or dimensions. A combinatorial auctioneer sums, or integrates, the set of state prices under the constraints imposed by bid limit prices and component quantities, and matches bids when limit prices cross. In our example market, each state price is the price of a binary option. The combinatorial auctioneer ensures that the sum of the state prices is never less than 1.0, so there is never a combination of binary options that can be purchased for a guaranteed profit. In other words, the odds are always coherent, because the combinatorial auctioneer ensures that the market is always arbitrage-free. Or to put it another way, since binary options are derivatives, the combinatorial auctioneer enforces the law of one price in the market’s valuation of the underlying security. In our case, the underlying security is a digital currency (BTC). Note that combinatorial auctions are a special case of the more general class of combinatorial exchange mechanisms. In a combinatorial exchange, there are multiple buyers and multiple sellers. In a combinatorial auction, there is only a single seller. Our example combinatorial market is a combinatorial auction, where the auctioneer also acts as the single seller, and the items sold are derivative contracts. Thus, when two traders enter into a contract, with one taking the short position and the other taking the matching long position, they are both "buying" distinct contracts from the auctioneer, who holds the funds or collateral until payout when the contract expires. This aspect of our combinatorial auction, where short positions are opened by "buying", is discussed further in section 2.4 with a comparison to conventional markets where short positions are opened by selling. 2.1 Batch Combinatorial Auctions vs Continuous Double Auctions The standard method of trading derivatives uses multiple double auctions. Each derivative trades on an independent order book, even if the derivatives are related in value. For example, options for the same security (i.e. options in the same option chain) are logically related; premiums for different strike prices are correlated. But since a double auction is only capable of bilateral matching of bids and asks for a single item, each strike price in the chain is traded on a separate order book. That is, different strike prices are traded in parallel on disconnected order books, as if their values were unrelated. Thus, the standard method of using double auctions is a mechanism in which related items are traded in different places, fragmenting liquidity and segregating prices. Fragmented liquidity increases transaction costs and segregated prices create arbitrage opportunities, resulting in reduced market efficiency. In contrast, a combinatorial auction is capable of multilateral matching between multiple limit orders for multiple items in a combinatorial order book. To put it another way, a combinatorial auction aggregates limit orders for related items into a unified liquidity pool. Thus, a combinatorial auction enables related items to trade in the same place, aggregating liquidity and integrating prices. Aggregated liquidity reduces transaction costs and integrated prices eliminate arbitrage opportunities, resulting in improved market efficiency. Double auctions are distinguished as either continuous auctions, or batch auctions. Batch auctions, also known as call auctions or discrete-time auctions, process orders in batch in discrete-time. In contrast, continuous auctions process orders serially in continuous-time. Serial order processing in continuous-time inherently uses a discriminatory pricing rule (also called pay-as-bid pricing), meaning that different trades transact at different clearing prices. Batch auctions are generally defined by the use of a uniform pricing rule (also called single-price clearing), meaning that all trades executed in the same batch transact at the same clearing price. Call auctions, batch auctions, discrete-time auctions, (also "uniform price auctions" and "clearing price auctions"), are all terms used to describe auctions that use a uniform pricing rule, or uniform-price clearing. In this document, we use the term "batch auction" because it emphasizes that orders are processed in batches; and we use "uniform-price clearing" because it emphasizes that trades executed in a batch all transact at the same clearing price. Combinatorial auctions generally match orders in batch, though they may or may not use uniform-price clearing (for example, combinatorial auctions that maximize the auctioneer's revenue do not use uniform-price clearing). The combinatorial auction that we present matches orders in batch and uses uniform-price clearing. To make the batch processing feature explicit and emphasize the distinction from a continuous double auction, we use the term batch combinatorial auction. Serial order matching or processing is a procedure that matches incoming orders according to time priority. Time priority and discriminatory price clearing are inherent to serial processing in continuous time, creating perverse incentives for an investment arms race for tiny speed improvements. Such speed improvements result in a market that is more efficient in time space but less efficient in volume space. That is, the market price may be updated sooner, but counterintuitively, more volume is transacted at stale prices. In contrast, frequent batch auctions with uniform-price clearing prioritize volume-efficiency over time-efficiency.[n] With batch processing in discrete time, clearing prices may not be updated instantly, but more volume is transacted at correct (i.e. not stale) prices. The improved volume-efficiency of batch processing results in increased welfare for the average trader. Additionally, since market makers are temporal intermediaries, processing all transactions simultaneously in batch auctions reduces intermediation by market makers. Put another way, in continuous-time markets liquidity is "necessarily fragmented temporally".[n] And in markets with multiple double auctions, liquidity is fragmented spatially, or in different places (i.e. on different order books). Hence, with multiple continuous double auctions, liquidity is fragmented both spatially and temporally, or in different places and different times. Thus, batch combinatorial auctions provide two distinct benefits over continuous double auctions. First, the combinatorial matching brings traders of related items together to the same place; related items trade on the same combinatorial order book rather than on separate order books. Second, the batch processing brings traders together at the same time; different traders transact simultaneously at the same uniform clearing price, rather than at different prices determined by trivially tiny differences in their arrival times. In short, batch combinatorial auctions aggregate liquidity by bringing traders together at the same place and time. 2.2 Batch processing and mechanical arbitrage To be clear, when we say that a combinatorial auction is arbitrage-free because it integrates prices, we mean arbitrage-free in a local sense. That is, the integration of prices removes "statistical arbitrage" opportunities between related items on the same combinatorial order book. On conventional order books, these "StatArb" opportunities arise because disconnected double auctions do not integrate prices. Advanced traders watch for these opportunities to arise, using strategies such as pairs trading or portfolio cointegration. Such StatArb strategies can take advantage of short-term mispricings that occur between different items on the same exchange, in other words local arbitrage opportunities. StatArb is distinct from arbitrage of a different type, which takes advantage of different prices for the same item on different exchanges. This type is arbitrage in a global sense. Exploiting these global opportunities does not require any form of statistical valuation, just a difference in price for the same item, hence the term "mechanical arbitrage". With continuous-time order processing, these mechanical arbitrage opportunities are exploited by the fastest traders, so the term "latency arbitrage" is also used. While combinatorial order matching eliminates local statistical arbitrage opportunities, there may of course still be global arbitrage opportunities between the local combinatorial market and some external market. This is where batch processing comes in: batch processing with uniform-price clearing eliminates mechanical arbitrage opportunities. To be clear, if only the local market utilizes batch processing with uniform-price clearing, and the external market utilizes conventional serial processing and discriminatory pricing, then there will still be arbitrage opportunities in the external market. That is, the fastest traders can still profit by propagating prices from the local market outward to the external market. But arbitrage opportunities in the other direction, from the external market into the local market, are eliminated. To understand why mechanical arbitrage opportunities from external markets into the local market are eliminated, consider how mechanical arbitrage works in a continuous-time market. With the discriminatory pricing inherent to continuous-time serial order processing, the fastest trader arrives first and gets the best price by "sniping" stale limit orders before slower traders can cancel them. But with batch processing and uniform-price clearing, the orders of fast and slow traders alike are processed simultaneously; a stale limit order does not get sniped by the fastest trader. Furthermore, when a stale limit order left over from a previous batch period is matched in the new batch period, it does not get matched at the stale limit price, but at the new uniform clearing price. Since in each batch period multiple traders arrive with new bids, the uniform clearing price is updated every period to reflect the most recent prices on external markets. But mechanical arbitrage is eliminated because all orders transact simultaneously at the uniform clearing price, not at stale limit prices. All traders transacting in the batch period get the same fair price, regardless of whether they used a limit order or a market order. In the context of decentralized exchanges and order matching on a blockchain, the terms "call auction" or "batch execution" are sometimes used to describe an order matching mechanism that uses discriminatory pricing.[n] This usage creates confusion because call auctions or discrete-time batch auctions are generally understood to use uniform-price clearing. As noted by Parsons, "Indeed Madhavan distinguishes continuous and discrete-time auctions precisely by the fact that continuous auctions use discriminatory-pricing and discrete-time auctions use uniform-pricing."[n] Whether orders are processed serially in continuous-time or executed in batch in discrete-time, discriminatory ("you get what you asked for") pricing is inherently problematic. O'Hara (speaking about a model in Rock [1991], "The Specialist's Order Book") explains the "adverse selection problem facing traders who submit limit orders":[n] The problem is that as orders execute, market participants update their beliefs on the asset's true value. Following a large sell order, the market maker lowers his expectation of the asset's value to reflect the risk that large orders are more likely the result of information-based trading. This can cause his quoted price for a large sale to fall below that of orders on the book, thereby allowing the limit orders rather than the market maker to clear the trade. Since the limit orders then transact at a price above the asset's new expected value, the limit order trader has an expected loss on the trade. Indeed, given this adverse selection problem, the optimal strategy for a limit order trader is not to trade at all, and the book would simply not exist. (O'Hara, 1995, p.193) At the root of this problem is the "free option" property of limit orders matched with pay-as-bid, discriminatory pricing. In an analysis by Beiner & Schwartz, a trader who posts a limit order can be viewed as an option writer who receives a payoff that differs depending on whether an informational event occurs or a liquidity event occurs (i.e. whether a news announcement causes a price change, or the market impact of a market order causes a momentary dip). Posting a limit order is equivalent to writing a "free option" for anyone to take, and "the payoff the investor receives from a liquidity event is the compensation (s)he obtains from a 'free' option to other participants." Beiner & Schwartz conclude that in continuous-time auctions, limit orders have fixed or bounded payoffs ("payoff of a binary option"); whereas in discrete-time call auctions, limit orders have unbounded payoffs ("payoff of a standard option"). Thus, "introducing a call auction implicitly introduces a new financial asset for investors."[n] Consider a trader, Alice, who posts a limit order to buy, and take two example events. One is a liquidity event: a large market sell order temporarily pushes the price below the mid-price. The other is an informational event: a large seller, Bob, dumps a market sell order right as bad news is announced, so the price falls and does not bounce back. In a continuous-time market, how does Alice fare under each event? In the case of the liquidity event, she wins a fixed payoff: the difference between her limit price and the mid-price. In the bad news case, she loses, and she receives no compensation from Bob when he takes her option for free and exercises it. In other words, Bob snipes her limit order, and she loses to him the the difference between her limit price and the new lower price. How does Alice fare in a discrete-time batch market? In the liquidity event, she wins the difference between the uniform clearing price and the mid-price. So her payoff is not fixed by her limit price; instead, it varies with the uniform clearing price. In the bad news event, she loses, but not as severely as in the continuous-time market because she only pays the uniform clearing price, not her limit price. Thus, she receives compensation from Bob in the form of a premium equal to difference between her limit price and the uniform clearing price. So, in a continuous-time auction, limit orders are free options available on a first-come-first-serve basis, exercisable at the limit price. In contrast, limit orders in a discrete-time batch auction are not free options; rather, they are orders which specify a reserve price. That is, a limit order in a batch auction is an order to transact at any price better than the reserve price. Even if a buyer is careless in specifying their reserve price, they will still only pay the fair, uniform clearing price. On top of being an unfair mechanism for average traders (who aren't informed and don't demand microsecond immediacy), the discriminatory pricing implicit in continuous-time auctions also makes it difficult for market makers to provide liquidity. In modern HFT parlance, discriminatory pricing enables fast traders to "snipe" limit orders, whether those limit orders are posted by market makers or average traders. In floor trader parlance, those with a speed advantage can "pick off" dealer quotes: This highlights what has commonly been termed the "free option" property of limit orders. Because the limit order trader precommits to buying or selling at a particular price, he or she has in effect written an option at the specified strike price. As market prices change, this option can move in or out of the money, exposing the writer to the risk of the option being exercised at his expense. Stoll [1990] gives an example of this occurring in the Intermarket Trading System. With ITS, a dealer in Cincinnati can post quotes in an NYSE-listed stock that will automatically execute. If a floor trader in New York sees a large block in the stock or learns of any other event that might lower the price on the NYSE, he can send a sell order to Cincinnati and "pick off" the dealer before he has a chance to change his quote. (O'Hara, 1995, p.197) With discriminatory pricing in continuous-time, the speed at which one can post and and cancel orders is critical. As a result, in order to provide liquidity without suffering adverse selection to the point of bankruptcy, market makers must be as fast as the fastest traders. The costs paid to stay fast are "arbitrage rents", which "harm liquidity provision and induce a never-ending socially-wasteful arms race for speed".[n] These harmful arbitrage rents are inherent to the continuous-time discriminatory-pricing market design. In the context of order matching on a blockchain, whether serial or "batch", the use of a discriminatory pricing mechanism merely swaps the HFT arms race with a block mining race. Since discriminatory pricing enables the miner of a block to snipe any limit order in that block, anyone who posts a limit order is writing a free option for miners. Liquidity providers, rather than competing on price by posting limit orders at narrower spreads, can instead invest in block mining speed for an advantage in sniping. As explained by Budish et. al., "arbitrage rents lead to a classic prisoner's dilemma". In the case of a proof-of-work blockchain, investing in a faster hash rate is the dominant strategy. Even for consensus mechanisms other than proof-of-work (i.e. any blockchain or distributed ledger), discriminatory pricing is still problematic because snipers can still collect arbitrage rents. If the profit from market making is less than the cost paid in arbitrage rents, which is the case when order flow is insufficient or prices are too volatile (losses from sniping are greater when prices are more volatile), then the optimal strategy is to not post limit orders at all. Batch processing with uniform-price clearing is a "market design response" that eliminates mechanical arbitrage rents, and thus escapes the prisoner's dilemma. Limit orders can be posted without fear of being sniped, since they transact at the uniform clearing price. And market makers must compete on price rather than speed, resulting in narrower spreads, more efficient markets, and improved trader welfare.[n] 2.3 Matching bundle bids with a combinatorial auctioneer An order matching algorithm can be seen as a process for solving a system of linear equations. In the case of a continuous double auction, the system has two equations: the best bid and the best ask. The bid and the ask impose constraints (limit price and limit quantity) on two free variables: the clearing price and volume. A clearing price and volume that satisfies the constraints of the bid and the ask is a solution to the linear system. If a solution can be found, then the bid price and the ask price cross, and a trade is matched at the clearing price. While a double auction matches offers for a single item, a combinatorial auction matches offers for multiple items. Therefore, a combinatorial auction has multiple clearing prices, one for each item. Since the items traded in our combinatorial market are binary options on specific outcomes or states, the clearing prices are called state clearing prices, or state prices. Each combinatorial bid is an equation in a linear system, and each bid imposes constraints on the state clearing prices. Thus, to match bids in a combinatorial auction, we must find a solution to the linear system using a linear programming (LP) algorithm, or in more modern terminology, a linear optimization algorithm.[n] As an aside, the word "programming" in "linear programming" is incidental for historical reasons. In the field of operations research, where it originated, "programming" was used in the sense of planning and decision-making, rather than "computer programming". In our case, we can think of the combinatorial auctioneer as a decision-maker who uses linear optimization to decide which bids to fill (the "winner determination problem" or matching problem). Taking this view further, in using an LP algorithm for combinatorial bid matching, the auctioneer solves a dual optimization problem of resource allocation (which bids get filled) and resource valuation (at which state clearing prices). There are several types of solutions to an optimization problem, including: feasible solutions, which are valid under the given constraints but not necessarily optimal; optimal solutions, which are not necessarily unique; and unique optimal solutions. We want unique optimal solutions or, to speak specifically about combinatorial auctions rather than optimization problems in general, unique state clearing prices because otherwise the winner determination decision is arbitrary rather than fair.[n] The LP method we use below will calculate unique state clearing prices if it is given enough bids and the bids are of the right kind (i.e. linearly independent). If it is not given enough bids, then the solution to the system will be underdetermined, and the state clearing prices will not be unique. There are linear optimization methods that ensure a combinatorial auction will calculate unique state clearing prices regardless of the given bids, but they are more complex formulations than the relatively simple LP method we use here.[n] For now, it is instructive to use the relatively simple LP method and better understand the problem we are facing. 2.4 Visualizing a combinatorial order book Our primary challenge in the example below is visualizing limit orders and state clearing prices in a combinatorial order book. The approach we take is to display an order book for each state. We use an example market of four states, so we display four order books. The difference between our four order books and conventional order books is that conventional order books are displays of (two-sided) double auctions, whereas our four order books display four items trading in bundles through a single (four-sided) combinatorial auction. To better understand our approach to visualizing a combinatorial order book, first consider a conventional order book for a double auction. The “double” in double auction describes an order book with two sides, bids to buy on one side and asks to sell on the other side. When the best bid has a higher price than the best ask, the two orders are matched and a trade is executed. But which order is the bid and which is the ask is relative to how the order book is displayed. For example, when looking at a BTC/USD order book, a bid is a limit order to buy BTC, and an ask is a limit order to sell BTC. But if the currency pair is flipped to USD/BTC, then a bid is a limit order to sell BTC (buy USD), and an ask is a limit order to buy BTC (sell USD). The order book itself does not actually change. The display using USD/BTC just appears upside-down relative to the conventional BTC/USD. A combinatorial order book can be understood in the same way. Recall that the items in our market are binary options on future outcomes or states. Returning to the Super Bowl example, there are two possible outcomes and two respective binary options: (1) the Green Bay Packers win, and (2) the Kansas City Chiefs win. A bet that the Packers will win is equivalent to a bet that the Chiefs will lose, and vice versa. Therefore, a bid on the Packers is equivalent to an ask on the Chiefs, and vice versa. Likewise, in a market with three possible outcomes, a bid on the first outcome is equivalent to an ask on the second and third outcomes, a bid on the second is equivalent to an ask on the first and third, and a bid on the third is equivalent to an ask on the first and second. For larger outcome spaces, the relationship continues to hold: a bid on one outcome corresponds to asks on the other outcomes, and vice versa. We call such corresponding asks phantom asks. The concept of phantom orders has been used before to aggregate liquidity by augmenting conventional order books. Combinatorial bid matching, however, aggregates liquidity inherently with an LP algorithm, so augmenting a combinatorial order book with phantom orders would be redundant. In the chart below, the input to the combinatorial auctioneer (i.e. the LP algorithm) is strictly bids; corresponding phantom asks are only used to help visualize the order book. In the chart below, bids are plotted as green dots. A bid on a single atomic security (e.g. [0, 1, 0, 0]) appears as a green dot on only one order book, and the corresponding phantom asks appear as orange dots on the other order books. Bids on mixed bundles (e.g. [0.2, 0.3, 0, 0.5]) appear as green dots on multiple order books. Visualizing bids on mixed bundles is difficult because a combinatorial bid’s limit price is a constraint on the whole bundle rather than on individual components, so its not obvious how we should plot them. In the case of an atomic bundle, the bid specifies only one component, so we can use the bid’s limit price to plot the single green dot. But for phantom asks, and components in mixed bundles, it is not clear what prices we should use to plot each component. For bids on atomic bundles, we plot the bids at the limit price, and we plot the corresponding phantom asks at the complementary price. For example, the three atomic bids [1,0,0,0], [0,1,0,0], and [0,0,1,0], each with a limit price of 0.19, are complementary to a fourth bid on [0,0,0,1] with a limit price of 0.43 (1 - 0.19*3). So the atomic bids at 0.19 have phantom asks at 0.43. For bids on mixed bundles, we use the limit price to plot each component, and we use the state clearing prices to plot the corresponding phantom asks The LP method we use will only calculate unique state clearing prices if it is given a sufficient set of bids. So to get initial unique state clearing prices, we generate a set of atomic bids (i.e. linearly independent bids) at equal prices. Since there are four states, we generate four atomic bids, all with the same limit price of ¼ = 0.25. To fill in the order book some more, we generate additional sets of atomic bids at equally spaced price levels, resulting in a staircase formation at decreasing price levels (0.25, 0.22, 0.19, …). This generated set of bids represents limit orders placed by a market maker, and is listed under “Market Maker bids” in the chart below. Also in the chart below is a section for “Trader-entered bids”. Included are three example bids: one bid on an atomic bundle ([1,0,0,0]) and two bids on mixed bundles ([0.4, 0.3, 0.2, 0.1] and [0.1, 0.2, 0.3, 0.4]). The two mixed bundles are complementary to each other, and correspond to the "Short Bundle" and the "Long Bundle" from the previous example, except here we have simplified them down to four dimensions rather than fifteen (the fifteen dimensions in the previous example are the discrete prices between ~$5 and ~$20). All three bundles are normalized, meaning that their components sum to 1.0 (0.4 + 0.3 + 0.2 + 0.1 = 1.0). Normalization makes the limit price of a mixed bundle comparable to the limit price of an atomic bundle. For example, when the limit price of the atomic Trader-entered bid is raised above the initial state price of 0.25, then the Trader-entered bid should match the Market Maker’s bids and get partially filled. And likewise for a mixed bundle; a Trader-entered mixed bundle should also get filled when the limit price is raised above 0.25. Bundles with unnormalized components, however, also have unnormalized limit prices, and so aren’t easily compared. To be clear, a bundle’s components specify quantities, not prices. For example, a bid for 50 units of the bundle [0.4, 0.3, 0.2, 0.1] is a bid for 0.4*50=20 units of the first component, 0.3*50=15 units of the second component, and so on. Keep in mind that the limit price of the bid is a limit price on the entire bundle, not a limit price on individual components. Try adjusting the price and quantities of the Trader-entered bids, to see how the system reacts. Notice which bids are filled in full or partially, and how the state clearing prices change in response. Be aware that this example chart is very preliminary; the order books won’t be plotted correctly when too many variations of bundles, prices, and quantities are entered. Ideally, what we want to see is the green bid lines crossing the orange ask lines for bids that are either fully or partially filled. For bids that are fully filled, the green dot should appear below the orange line. For bids that are partially filled, the green dot should appear above the orange line by a vertical distance equal to the remaining unfilled quantity. Details on the LP calculations can be seen in the javascript console.

LP widget

AMM widget