Skip to main content
On VOIZ, LPs are the market. You are not picking Yes or No. You deposit collateral into the market’s OutcomeAmm so the community can trade through you. You hold a mix of outcome tokens (the book). Protocol / creator / referrer fees are cash out of the trade. The LP cut (default 0.8%) stays in the pool as extra complete sets. Your P&L is inventory marked at AMM (or 0/1) prices versus cost — not deposit × odds × win/lose. Worked numbers (100 collateral, 70/30, buy 40): LP calculator. Not financial advice. Size only what you can lose.

What you actually mint

credits (or seedWei on first LP) is one collateral number. The AMM pulls it, splits a complete set, keeps a slice of each slot as inventory, and mints ERC-20 pool shares to you.
Invalid is part of the complete set and sits in the AMM. It is not tradable and always prices at 0. On a skewed book, later LP binds on the heaviest reserve. Lighter slots send leftover outcome tokens back to the funder.

What you earn

Cost on add is max(amountsAdded) (addedFunds). Indexer remove proceeds are the named basket at 1e18 prices, or 0/1 if resolved. Send-back tokens are a share position, not this LP lot.
A book that resolves quickly can show almost no trading and a large inventory term. The halt at resolve protects remaining inventory from 0/1 arb.

Risks

Trading stops when the market resolves — otherwise LPs get arbitraged

After payouts are set, every named share is worth exactly 1 or 0 collateral. If swaps kept running:
  • Winner still priced below 1 — buy it from the AMM, redeem at 1.
  • Loser still priced above 0 — sell worthless shares into the AMM, take collateral out.
buy / sell therefore revert Resolved once Conditional Tokens has a payout denominator. Fee income from traders stops with them. Fee income for the protocol only exists between seed and resolve. A market that resolves quickly can pay almost no volume relative to the inventory you posted — but leaving the AMM open would be worse: the inventory itself would be picked off.

Inventory while the market is open

Across-outcome LP is how you market-make the whole book without picking Yes or No. It is not delta-neutral. As implied probability moves, you hold more of the outcome the market is dumping. You are the other side of every trader.

Even join vs live odds

Later addLiquidity joins current reserve proportions. It does not re-apply your original seed odds.

Idle Invalid

The complete-set mint always prints Invalid. It never trades. Unwinding a full set later means you need the named outcomes back (from removeFunding, from trading, or from leftover send-backs).

Operational

Approvals, factory version, and AMM clone all have to match. Tiny credits revert (mintAmount == 0 or dust). Contracts, oracles, and resolution can fail. This is not financial advice. Size only what you can lose.

How to exit

  1. client.user(owner).lpPositions({ market }) — find the pool-share lot.
  2. Open: market.removeFunding({ shares, owner }) — basket of every slot, then merge complete sets if you want collateral.
  3. Resolved: market.redeemLp({ shares, owner }) — burn shares, redeem the basket to collateral (same redeem fee).
  4. Send-back / leftover named tokens: market.redeem as share positions.
redeemLp only works after resolve. While open there is no 1:1 payout on a single outcome.

In the SDK

See Provide liquidity for the later-LP call shape.