When you say “a simple set of conditional and unconditional markets”, what do you have in mind?
Unconditional: “Will China invade Taiwan by 2030?”; Conditional: “If China experiences a recession any time before 2030, will China invade Taiwan by 2030?”
Your language makes me think you are referring to 1, and I agree that this will plausibly be of limited value.
Isn’t estimating P(Y) from P(Xi) most of the value of LVPMs?!
I think the logP(→X|θ)−logP(→X|ϕ) part of my scoring counts as an AMM liquidity provision?
Yes, that’s correct; if the market creator is willing to issue these payouts, then they are playing the role of AMM.
The question is how to add third-party liquidity provision to this system, i.e. where users can inject and remove liquidity from the market to increase payouts for traders (ideally while being compensated for their efforts).
Hm, this sounds like a task that would be relatively isolated from the rest of your codebase, and therefore something I could do independently without learning much of Manifold Market’s code?
That’s the idea. You can see some example code for our Uniswap-style AMM here, but honestly, any well-designed api would be fine. What I’d like is: 1. A typescript interface that defines the current state of a LVPM at any given point, 2. Betting function: Given a bet on some variable and the current market state, return the new market state and user position, 3. Resolution function: given the current market state, the final outcome of the market, and a list of user positions, return a list of all the user payouts.
Unconditional: “Will China invade Taiwan by 2030?”; Conditional: “If China experiences a recession any time before 2030, will China invade Taiwan by 2030?”
...
Isn’t estimating P(Y) from P(Xi) most of the value of LVPMs?!
Kind of. The point is to estimate P(Y). However, the value is not supposed to come from automatically estimating P(Y), but rather from providing an objective way of scoring manual predictions about P(Y) when we don’t have an objective definition of Y.
I agree that if the goal was to automatically predict P(Y) from P(Xi), structures of conditional prediction markets seems better. See also the “Latent variable markets vs combinatorial markets” section of my post; there are some cases where e.g.P(Y|Xi) is more interesting.
So basically, yes, the value of LVPMs comes from estimating P(Y), but the way we estimate P(Y) is by having people make predictions on P(Y). All the elaborate P(Xi|Y) has the primary purpose of providing a way to objectively score predictions on Y, and a secondary purpose of providing information/common knowledge about the domain of applicability of the Y concept.
Yes, that’s correct; if the market creator is willing to issue these payouts, then they are playing the role of AMM.
One thing I guess I should note is that the market maker only has to pay the first person. To clarify how this works, suppose the market maker creates a market with initial state θ0, and a first trader then updates this state to θ1, and a second trader then updates the state to θ2. Assuming for simplicity that the initial distribution P(→X|θ0) is uniform over →X, when the market resolves to a specific →x, we can then read the payoffs here:
The second trader gets a payout of logP(→x|θ2)−logP(→x|θ1).
The first traders gets a payout of logP(→x|θ1)−logP(→x|θ0).
The market maker paid −logP(→x|θ0) for making the market, which we can think of them as getting a payout of logP(→x|θ0) to make the signs of the expressions all aligned.
If we add all of these payouts up, we get (logP(→x|θ2)−logP(→x|θ1))+(logP(→x|θ1)−logP(→x|θ0))+(logP(→x|θ0))=logP(→x|θ2), which in general is a nonpositive number[1], and so the market will never give a greater payout than what is put in. Essentially what happens is that each trader pays off the next trader, guaranteeing that it all adds up. (This won’t require the individual traders to pay any huge amount of money, because they are always paying relative to logP(X|θ), which accounts for most of the pool.)
The question is how to add third-party liquidity provision to this system, i.e. where users can inject and remove liquidity from the market to increase payouts for traders (ideally while being compensated for their efforts).
I think if people add some additional liquidity, one can just find a new scale factor on the logP(→x|θ)−logP(→x|ϕ) payoffs that continues to make everything add up?
That’s the idea. You can see some example code for our Uniswap-style AMM here, but honestly, any well-designed api would be fine. What I’d like is: 1. A typescript interface that defines the current state of a LVPM at any given point, 2. Betting function: Given a bet on some variable and the current market state, return the new market state and user position, 3. Resolution function: given the current market state, the final outcome of the market, and a list of user positions, return a list of all the user payouts.
Thanks! I’ll take a look.
I’m thinking I should maybe implement LVPMs based on latent class analysis rather than item response theory because it is easier to design an interface for and get an intuition for (since LCA literally just enumerates the set of possible outcomes).
though presumably often logP(→x|θ2)≈0 rather than just logP(→x|θ2)<0, because as the close date nears, \vec x is going to be better and better known, and so the probaility is going to move towards 1
Unconditional: “Will China invade Taiwan by 2030?”; Conditional: “If China experiences a recession any time before 2030, will China invade Taiwan by 2030?”
Isn’t estimating P(Y) from P(Xi) most of the value of LVPMs?!
Yes, that’s correct; if the market creator is willing to issue these payouts, then they are playing the role of AMM.
The question is how to add third-party liquidity provision to this system, i.e. where users can inject and remove liquidity from the market to increase payouts for traders (ideally while being compensated for their efforts).
That’s the idea. You can see some example code for our Uniswap-style AMM here, but honestly, any well-designed api would be fine. What I’d like is: 1. A typescript interface that defines the current state of a LVPM at any given point, 2. Betting function: Given a bet on some variable and the current market state, return the new market state and user position, 3. Resolution function: given the current market state, the final outcome of the market, and a list of user positions, return a list of all the user payouts.
Kind of. The point is to estimate P(Y). However, the value is not supposed to come from automatically estimating P(Y), but rather from providing an objective way of scoring manual predictions about P(Y) when we don’t have an objective definition of Y.
I agree that if the goal was to automatically predict P(Y) from P(Xi), structures of conditional prediction markets seems better. See also the “Latent variable markets vs combinatorial markets” section of my post; there are some cases where e.g.P(Y|Xi) is more interesting.
So basically, yes, the value of LVPMs comes from estimating P(Y), but the way we estimate P(Y) is by having people make predictions on P(Y). All the elaborate P(Xi|Y) has the primary purpose of providing a way to objectively score predictions on Y, and a secondary purpose of providing information/common knowledge about the domain of applicability of the Y concept.
One thing I guess I should note is that the market maker only has to pay the first person. To clarify how this works, suppose the market maker creates a market with initial state θ0, and a first trader then updates this state to θ1, and a second trader then updates the state to θ2. Assuming for simplicity that the initial distribution P(→X|θ0) is uniform over →X, when the market resolves to a specific →x, we can then read the payoffs here:
The second trader gets a payout of logP(→x|θ2)−logP(→x|θ1).
The first traders gets a payout of logP(→x|θ1)−logP(→x|θ0).
The market maker paid −logP(→x|θ0) for making the market, which we can think of them as getting a payout of logP(→x|θ0) to make the signs of the expressions all aligned.
If we add all of these payouts up, we get (logP(→x|θ2)−logP(→x|θ1))+(logP(→x|θ1)−logP(→x|θ0))+(logP(→x|θ0))=logP(→x|θ2), which in general is a nonpositive number[1], and so the market will never give a greater payout than what is put in. Essentially what happens is that each trader pays off the next trader, guaranteeing that it all adds up. (This won’t require the individual traders to pay any huge amount of money, because they are always paying relative to logP(X|θ), which accounts for most of the pool.)
I think if people add some additional liquidity, one can just find a new scale factor on the logP(→x|θ)−logP(→x|ϕ) payoffs that continues to make everything add up?
Thanks! I’ll take a look.
I’m thinking I should maybe implement LVPMs based on latent class analysis rather than item response theory because it is easier to design an interface for and get an intuition for (since LCA literally just enumerates the set of possible outcomes).
though presumably often logP(→x|θ2)≈0 rather than just logP(→x|θ2)<0, because as the close date nears, \vec x is going to be better and better known, and so the probaility is going to move towards 1
I unfortunately have to go to sleep now but I will respond to this tomorrow.