Skip to main content

Implied probability

Market prices represent implied probability. A YES token trading at 45¢ implies roughly a 45% chance the outcome occurs. YES + NO prices should sum to approximately $1.00 (plus the overround fee).

The AMM venue

Most markets today trade through an automated market maker (AMM) — a pool of YES and NO tokens that sets prices based on supply and demand.
PropertyBehavior
PricingLS-LMSR cost function; trades priced by ΔC\Delta C
LegacyConstant-product (CPMM) pools are being phased out
Swap fee0.3% retained in the pool (LP profit)
SlippageLarger trades move the price more
When you place a prediction:
  1. USDC is minted into YES + NO tokens (fees skimmed).
  2. You swap away the side you do not want.
  3. The AMM price updates for the next trader.

LS-LMSR in depth

ezpz.fi prices AMM trades with LS-LMSRliquidity-sensitive Logarithmic Market Scoring Rule (Othman, Sandholm, Pennock, Reeves, EC 2010). It is a cost-function market maker: the pool tracks how many outcome tokens it has sold and charges USDC equal to the change in a convex cost function C(q)C(q). Compared to a static LMSR (fixed liquidity parameter bb), LS-LMSR lets depth grow with open interest. More tokens outstanding → larger effective liquidity → smaller price impact per dollar traded. The trade-off is that vig (house edge) is embedded in the pricing rule rather than added as a separate fee on top.

State

Each pool tracks binary quantities (in micro-token units): q=(qyes, qno)q = (q_{\text{yes}},\ q_{\text{no}}) These are the net YES and NO tokens sold by the pool since inception, including the maker’s seed quantities. There is no reserve-ratio formula like xy=kx \cdot y = k.

Liquidity parameter

Liquidity scales with total outstanding quantity T=qyes+qnoT = q_{\text{yes}} + q_{\text{no}}: b(q)=α(qyes+qno)=αTb(q) = \alpha \,(q_{\text{yes}} + q_{\text{no}}) = \alpha T where α>0\alpha > 0 is fixed at pool creation. When α\alpha is larger, the pool is deeper (more vig, less slippage). At uniform prices the total overround is approximately: pyes+pno=1+2αln2p_{\text{yes}} + p_{\text{no}} = 1 + 2\alpha \ln 2 So a target vig of vv cents implies: αv2ln2\alpha \approx \frac{v}{2 \ln 2} (e.g. v=0.05α0.036v = 0.05 \Rightarrow \alpha \approx 0.036 for a ~5¢ overround at even odds).

Cost function

The pool’s cost function is the LS-LMSR log-sum-exp form: C(q)=b(q)ln ⁣(eqyes/b(q)+eqno/b(q))C(q) = b(q)\,\ln\!\left(e^{q_{\text{yes}}/b(q)} + e^{q_{\text{no}}/b(q)}\right) Numerically stable equivalent (used on-chain): let m=max(qyes,qno)m = \max(q_{\text{yes}}, q_{\text{no}}), d=mmin(qyes,qno)d = m - \min(q_{\text{yes}}, q_{\text{no}}), and b=αTb = \alpha T. Then: C(q)=m+bln ⁣(1+ed/b)C(q) = m + b\,\ln\!\left(1 + e^{-d/b}\right) Only the difference d/bd/b is exponentiated, which keeps fixed-point math safe at large TT.

Trade pricing algorithm

Trades are not priced at a displayed marginal quote. The economic rule is always the cost-function difference. Buy Δ\Delta tokens of side ii (e.g. YES): cost=C(qi+Δ, q¬i)C(qyes,qno)\text{cost} = C(q_i + \Delta,\ q_{\neg i}) - C(q_{\text{yes}}, q_{\text{no}}) Sell Δ\Delta tokens of side ii: payout=C(qyes,qno)C(qiΔ, q¬i)\text{payout} = C(q_{\text{yes}}, q_{\text{no}}) - C(q_i - \Delta,\ q_{\neg i}) On-chain, USDC amounts are rounded in the pool’s favor (buys rounded up, sells rounded down). Because CC is convex, ΔC\Delta C per token rises as you trade more in one direction — that is AMM slippage.

Marginal prices (display only)

The marginal price of side ii is the partial derivative: pi=Cqip_i = \frac{\partial C}{\partial q_i} For binary LS-LMSR, the gradient includes an extra α\alpha term because bb depends on qq. In scale-free coordinates u=qmax/Tu = q_{\max}/T and w=ed/bw = e^{-d/b}: pmax=u+g+(1u)1w1+w,pmin=u+gu1w1+wp_{\max} = u + g + (1-u)\frac{1-w}{1+w}, \qquad p_{\min} = u + g - u\frac{1-w}{1+w} where g=αln(1+w)g = \alpha \ln(1+w). Properties: pyes+pno=1+v(q)1p_{\text{yes}} + p_{\text{no}} = 1 + v(q) \geq 1 The excess v(q)0v(q) \geq 0 is embedded vig — it accrues to pool NAV, not a separate skim. At heavy skew the favorite’s raw marginal price can exceed $1; charts clamp display to (0,1)(0,1) but trades still use ΔC\Delta C.

Implied fair probability

When a maker seeds at “60¢ YES”, that means the vig-free softmax probability, not the vig-inclusive marginal: σyes=eqyes/beqyes/b+eqno/b=11+e(qyesqno)/b\sigma_{\text{yes}} = \frac{e^{q_{\text{yes}}/b}}{e^{q_{\text{yes}}/b} + e^{q_{\text{no}}/b}} = \frac{1}{1 + e^{-(q_{\text{yes}} - q_{\text{no}})/b}} This σ\sigma is what “60% odds” means in the authoring UI. Raw marginals pip_i sit at or above σi\sigma_i — the spread is the rule’s built-in margin.

Seeding at chosen odds

At pool creation the maker supplies seed USDC SS and declared probability pp^* (in basis points). The program derives initial (qyes,qno)(q_{\text{yes}}, q_{\text{no}}) so that:
  1. σyesp\sigma_{\text{yes}} \approx p^* (within one price tick), and
  2. Worst-case loss is bounded by the seed.
Let P=max(p,1p)P = \max(p^*, 1-p^*), logit L=ln ⁣(P/(1P))L = \ln\!\big(P/(1-P)\big), and ρ=(1P)/P\rho = (1-P)/P. Define: K=L+ln(1+ρ),T=SαKK = L + \ln(1+\rho), \qquad T = \frac{S}{\alpha K} Then assign total quantity TT across sides with skew αTL=qmaxqmin\alpha T L = q_{\max} - q_{\min}, putting qmaxq_{\max} on YES when p12p^* \geq \tfrac{1}{2}. The worst-case loss at the seed state is: WCL(q0)=C(q0)min(qyes,0,qno,0)=αTln ⁣11PS\text{WCL}(q_0) = C(q_0) - \min(q_{\text{yes},0}, q_{\text{no},0}) = \alpha T \ln\!\frac{1}{1-P} \leq S That is why seed USDC is the maker’s collateral against subsidy — the pool cannot lose more than the seed in the adversarial orthant bound.

Why depth grows with volume

Static LMSR keeps bb fixed, so a popular market eventually becomes too shallow — each marginal trade moves prices sharply. LS-LMSR ties b=αTb = \alpha T to open interest. As players buy YES or NO: T=qyes+qnobT = q_{\text{yes}} + q_{\text{no}} \uparrow \quad \Rightarrow \quad b \uparrow A larger bb flattens the cost curve locally, so the same $ stake moves prices less after the market has absorbed more flow. Depth is endogenous to activity, not a fixed constant set only at launch.
QuantityEffect on depth
More trading / higher TTLarger bb → less slippage per $
Higher α\alpha at creationDeeper at every TT, but more vig (2αln22\alpha\ln 2 at even odds)
Maker seed SSCaps worst-case subsidy; does not cap how large TT can grow

What you see in the UI

DisplayMath objectNotes
Current priceClamped marginal pip_i or implied σ\sigmaOrientation: buying YES raises YES price
Trade previewExact ΔC\Delta C for your stakeIncludes slippage + embedded vig
Fees rowPlatform/maker fees on mint pathSeparate from LS-LMSR vig in CC
See Architecture for on-chain program layout and Venues for AMM vs CLOB.

Liquidity

Makers seed initial liquidity when publishing a market. The pool holds balanced YES/NO reserves. LP providers earn swap fees from every trade regardless of who wins the market.
If you remove liquidity after a market resolves, tokens on the losing side are worthless. The UI warns before LP exit on resolved markets.

Price display

On market and event pages you see:
  • Current price — best available AMM price for each side
  • Trade preview — stake, fees, shares received, and potential payout before you confirm
  • Charts — price history where available (sports and crypto events)

CLOB pricing (future)

Order-book markets will show bid/ask spreads and depth instead of AMM curves. CLOB trading is not available to players yet. See Venues.