Skip to content

Instantly share code, notes, and snippets.

@cwhinfrey
Last active April 24, 2018 09:00
Show Gist options
  • Save cwhinfrey/f84a95a88747be593b114f4090d039ca to your computer and use it in GitHub Desktop.
Save cwhinfrey/f84a95a88747be593b114f4090d039ca to your computer and use it in GitHub Desktop.
Possible Futarchy Setups

I'd like to introduce two possible prediction market setups for implementing futarchy. First I will review 3 types of prediction markets. Then I will apply these to 2 different Futarchy models.

Introduction to Prediction Market Setups

If you already have a good understanding of categorical, scalar, and conditional prediction markets, feel free to skip this section.

Each prediction market has a question, a collateral token, and at least two outcome tokens covering the possible outcomes of the question. At any point one collateral token can be locked up in exchange for one of each outcome token and likewise, a complete set of outcome tokens can be exchanged back for a collateral token.

  1. Categorical markets - Categorical markets have a set of possible outcomes. When the market is resolved to one of those outcomes, that outcome token can be redeemed for a collateral token.

    Examples:

    • "Will the groundhog see his shadow?" Outcome tokens: YES, NO
    • "Who will win the election?" Outcome tokens: ALICE, BOB, CINDY
  2. Scalar markets - Scalar markets predict what a particular value will be by a target date. This is a numerical value that lies within a specified range. A scalar market has exactly two outcome tokens. One for the upper bound of the range and one for the lower bound. The market is "resolved" when the target date is hit, and the outcome of the value is realized. When the market resolves, the upper bound outcome token can be exchanged for (RESOLVED_VALUE - LOWER_BOUND) / (UPPER_BOUND - LOWER_BOUND) collateral tokens. Likewise, the lower bound token can be exchanged for (UPPER_BOUND - RESOLVED_VALUE) / (UPPER_BOUND - LOWER_BOUND) collateral tokens. The upper bound and lower bound outcome tokens are also referred to as long and short tokens respectively.

    Example:

    • "What will the price of gold per oz be at the beginning of 2019?" Upper bound: $2,000, Lower bound: $0
      • If the market resolves to $1,000 per oz, long tokens will be worth 0.5 collateral tokens and short tokens will be worth 0.5 collateral tokens.
      • If the market resolves to $1,500 per oz, long tokens will be worth 0.75 collateral tokens and short tokens will be worth 0.25 collateral tokens.
  3. Conditional Markets - Conditional markets consist of a base market, which is an existing categorical market. An example categorical market to use as a base market: “Will company A replace their CEO within the next six months?” Y/N. Conditional Markets use one of the outcome tokens from the base market as its collateral token (Y or N). They are called conditional markets because they make a prediction based on the condition that the chosen outcome token represents the correct outcome of the base market. You might have a conditional market: "What will company A's stock price be in six months?” which uses the NO token from the base market as it’s collateral token. This market can be thought of as predicting "What will company A's stock price be in six months given the CEO is not replaced?" since the conditional market’s outcome tokens only have value if the CEO is not replaced. Conditional markets can be either categorical or scalar markets.

    Example:

    • The base market is "Will company A replace their CEO within the next six months?". The conditional market is "What will company A's stock price be in six months?" and uses the NO token from the base market as its collateral token. This market can be thought of as predicting "What will company A's stock price be in six months given the CEO is not replaced?" because the conditional market’s outcome tokens only have value if the CEO is not replaced.

Futarchy Market Setups

For both setups I'll use an example DAO with a token called FTC. The decision being made is whether to accept or deny a proposal based on the predicted FTC price 6 months after the decision.

  1. Create a categorical market for "Will the proposal be accepted or denied?" with two outcome tokens ACCEPTED and DENIED. Then create two conditional scalar markets with ACCEPTED and DENIED as collateral tokens predicting the token price 6 months after the decision is made. These markets produce four more outcome tokens LONG_ACCEPTED, SHORT_ACCEPTED, LONG_DENIED, and SHORT_DENIED. The decision is made based on the price of LONG_ACCEPTED vs. LONG_DENIED. An outcome with a higher LONG token value indcates a higher FTC value if that outcome is chosen.

    Advantages:

    • The value being maximized or minimized does not need to be tied to a token's value (eg. voter satisfaction).

    Disadvantages:

    • It's hard to choose good upper and lower bounds.
    • If market resolves outside of the chosen range, no decision can be made.
  2. Create two categorical markets for "Will the proposal be accepted or denied?" with ETH and FTC as the collateral tokens. These markets produce four outcome tokens ACCEPTED_ETH, DENIED_ETH, ACCEPTED_FTC, and DENIED_FTC. The decision is made based on ACCEPTED_FTC/ACCEPTED_ETH vs DENIED_FTC/DENIED_ETH. ACCEPTED_FTC/ACCEPTED_ETH represents the predicted price of FTC in ETH if the proposal is accepted. DENIED_FTC/DENIED_ETH represents the predicted price of FTC in ETH if the proposal is denied.

    Advantages:

    • Simpler to implement
    • There is no need to define bounds for token price.
    • A decision can always be made.

    Disadvantages:

    • The value being maximized or minimized needs to be a token's price.

I would like to open up a discussion on the advantages and disadvantages of each of the approaches and any possible alternatives.

@koeppelmann
Copy link

cool - looks good to me!
A few more things to consider.

a) this one can be seen as both advantage and disadvantage:
in model 1) EVERYONE (with money) can go short on a bad proposal - in model 2) you need to have the token to go short. However - if system like "decentralized token lending" this difference might get removed.

b) an advantage of proposal 2)
It can make it more intuitive how to act as a user/ token holder if a bad proposal is made: you just sell your tokens under the condition the proposal is accepted. This action will drive the price down and will make it more unlikely that this will be accepted. As you user you know that you can either "exit" at a decent price (it need to be higher than the non-acceptance price) or the proposal will be rejected.

c) a (big) problem of proposal 2)
If there are multiple suggestions in parallel tokens will get locked up in those decision markets. E.g. I want to sell all my tokens if proposal 1 is accepted - I would not have any tokens left to react on proposal 2. Long term this can be solved with multidimensional markets (2^n outcomes for n decisions) but short/mid term this will not be possible on Ethereum given the gas constraints.
So with this approach it might be necessary to decide on proposals sequentially.

d) capital costs of proposal 1)
While only "money"/ collateral token is used and not token those tokens are locked up in the market for 6(!) months.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment