Welcome to the sixth edition of Above the Fold. This week we’re discussing Manifold’s market making mechanics (say that five times fast).

Editor’s note: this is a more-technical-than-usual deep dive. If you’re not interested in the details, feel free to skip to the bottom to get to our other updates!

AMMs for prediction markets

One of the biggest problems for prediction markets is making sure there’s an adequate amount of liquidity for traders. As a platform where users can create their own markets, this is a particularly big concern, since there are many smaller and thinly traded markets.

Traditional market mechanisms like order books are especially bad at facilitating liquidity in these situations, because third-party market makers have little incentive to learn about and post orders for smaller niche markets.

The pre-AMM era: parimutuel betting at the racetrack

The pre-AMM era: parimutuel betting at the racetrack

The solution is using an automated market maker (AMM). An AMM lets users buy and sell continuously from the platform, using a predefined pricing mechanism, and can be subsidized by the market creator or other participants in the market.

AMMs allow for the graceful provision of liquidity in an economically sound way which limits the market creator’s loss to the subsidy that they originally put in. One of our big design considerations is ensuring that our play-money environment model real-world dynamics as closely as possible. In particular, we want to make sure that we are not creating money in an unsustainable way by subsidizing markets, i.e. creating a money-pump.

A half-cheer for DPM

When we started Manifold, we created what we thought was a novel design for a new type of market maker based on parimutuel betting system. In a traditional parimutuel system, of the sort that you might find at the racetrack, people place their bet on horse A into a pool of money which is paid out to the bettors who selected the fastest horse after the race. The ratio of cash in the pool determines the odds that they get. This system is extremely simple and very powerful, but suffers from the limitation that you can’t “lock in” your odds a particular point in time, making it rational to wait until as long as you can before you place your bet.

Our idea was to modify this system to incorporate a price for your shares in the pool which changes dynamically over time. After doing a little bit of research, we discovered that this idea already had a whole academic literature and was called “Dynamic Parimutuel” (DPM). DPM can easily be adapted for prediction markets by viewing it as a mechanism for placing bets into a pool representing YES or NO outcomes. The implied probability of the market can then be read off as a function of the ratio of shares in the YES and NO pools.

DPM is a fantastic mechanism for bootstrapping liquidity: Since every bet that traders make ultimately gets paid out (minus fees), in some sense, it has perfect capital efficiency. Over these last couple of months on our platform, we’ve seen this play out beautifully, with small illiquid markets expanding into large, liquid ones.

DPM is almost the perfect mechanism, but it has one huge downside: You don’t know what your payout is going to be at the time you place your bet. Worse, that payout can be much lower than the odds that you should be getting at the time you place your bet. DPM’s implied probability is based off whatever the current payouts are for your predicted outcome. That probability will be exactly correct in expectation if future payouts follow a random walk. But one important feature of prediction markets—and one of the big reasons we care about them—is that they often converge to the true outcome, a probability of either 0 or 1. In that case, as Kevin Zielnicki has pointed out, it’s possible to be earning half or less or what you should be earning for your correct bet.

This fundamental problem with DPM lead us back to the drawing board to consider other AMMs that use fixed payouts instead.

Back to the drawing board

Hanson’s Log Market Scoring Rule Market Maker (LMSR) is probably the best known mechanism for prediction markets (and arguably the first AMM ever created). One big problem with LMSR is that it requires the setting of one free-parameter to determine how liquidity is provided. If we were only hosting a few markets, it might be reasonable to use this mechanism and select the parameter by hand, but as a platform for user-created markets which have vastly different liquidity needs, this approach is not viable.

There is a liquidity-sensitive variant of LMSR (LS-LMSR) which addresses this problem, but it is lacking in one key feature we care about: the ability of users to inject their own liquidity into the market.

Enter the constant function market maker (CFMM). CFMMs use a price curve with a constant invariant to determine the exchange rate of various assets. One of the simplest and most prominent examples of a CFMM is Uniswap. Uniswap is a smart contract on Ethereum based on a type of CFMM called a constant-product market maker (CPMM).

In a CPMM, the reserves of two assets X and Y are maintained such that their product is held constant (xy=k). When you go to purchase a unit of Y, you deposit some units of X and withdraw enough units of Y so that the invariant holds: (x+x_deposited)(y-y_withdrawn) = k. This very simple mechanism makes it easy for users to inject their own liquidity by adding their own X and Y to the reserves.

Untitled