A generalization of our binary CPMM mechanism to a variable number of outcomes.
Note: CPMM stands for Constant Product Market Maker
See also Set of markets
The mechanism
State
- A fixed set of outcomes
- E.g. { Biden, Trump, DeSantis }
- A pool which maps outcomes to a positive number of shares
-
E.g. {
- Biden: 50 shares
- Trump: 75 shares
- DeSantis: 100 shares
}
Invariants
-
1 share of each outcome together is exchangeable for M$1
-
The product of the shares in the pool remains constant across operations
- This constant is called k
-
The probability of an outcome can be calculated as follows:
getProb(pool, outcome) {
const basis = pool[outcome]
const ratioSum = sumBy(Object.values(pool), (value) => basis / value)
return 1 / ratioSum
}
- Output prob ranges from 0 to 1, inclusive
- Note that the more shares the less likely the outcome
Operations
- Buy outcome with M$ amount
- Split each M$ into one share of each outcome, and add to the pool
- (This increases k, the product of the shares of in the pool…)
- Remove shares from the outcome you are buying until k is as it was
- Sell shares of outcome
- Add your shares of an outcome into the pool
- Remove equal shares in every outcome simultaneously until k is as it was
- Redeem those shares for M$
- Short sell an outcome for M$ amount
- Split each M$ into one share of each outcome, and add to the pool
- Remove shares equally in every outcome except the one you are short selling until k is as it was.
Resources