Above the Fold: Market Mechanics
News from Manifold Markets: our new market maker, better free-response markets, links
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 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 units of X and Y to the reserves.
CPMMs turn out to be a very good fit for prediction markets. Instead of two different assets X and Y, you can imagine two pools of tokens representing YES and NO outcomes (yn = k). In a fixed-payout system, since 1 YES token + 1 NO token = $1, you can use the ratio of these tokens to give the market’s estimate of the probability of the event occurring.
One final improvement
One downside of CPMMs for prediction markets is that they’re not very capital-efficient in terms of subsidization. Suppose you want to subsidize a market with a starting probability of 33% with $100. In CPMM, you would first exchange your $100 for 100 YES tokens and 100 NO tokens. Then you would seed the reserve pool with 100 YES tokens and 50 NO tokens, because 50 / (100 + 50) = 1/3. (If you think this looks backwards, remember that in CPMM, the more you buy of a token the fewer tokens there are remaining.) The remaining 50 NO tokens would become a bet in your portfolio.
We were just about to switch over Manifold’s betting system to a CPMM, when Pepe, one of the top traders on our platform, suggested a clever way to improve capital efficiency and solve the subsidy problem. Instead of using a vanilla CPMM, you can parametrize the price equation in terms of the initial probability: k = y^p * n ^(1-p). This allows you to allocate all $100 of your initial subsidy into the reserve pool, which means more liquidity for traders and no awkward spillover bet in your portfolio.
With Pepe’s clever improvement, we’re happy to announce that our new betting system going forward for binary markets will be this CFMM. Unlike our old DPM system, this market maker will issue shares with fixed payouts and (in the near future) allow users to inject their liquidity into the market. A better trading experience for everyone!
Free Response is now awesomer
We’ve continued to improve free response prediction markets. Behold: charts graphing the top 5 answers, so you can see how answers trend over time!
In addition, we’ve just shipped a better feed for free response markets. Comments and bets are now nested under the relevant answer for greater clarity! No more trying to recall what answer #4 corresponds to 😛
As a fun project, Martin created an Ethereum testnet version of Manifold
If you’re not already in our Discord, here’s what you’re missing out on: