CurtainMarketsDocs
curtain/docs/economicsLaunch app

Economics

Curtain is parimutuel: every stake goes into one pot per market, and the winning side splits it by stake. There is no market maker and no price you trade against. The odds on the board are simply the two pools.

The odds

QuantityFormula
Yes price shown on the boardyes_pool / (yes_pool + no_pool)
Payout per 1 USDC on Yes, if Yes wins(yes_pool + no_pool) x (1 - fee) / yes_pool

The board changes only when a batch is published, so the odds move in steps, never per bet.

Settlement math

From math.rs, at settlement with the winning side known:

pot   = yes_pool + no_pool
fee   = floor(pot x fee_bps / 10000)
ratio = (pot - fee) / winning_pool        stored as ratio_int + ratio_frac / 2^64, rounded down
payout(stake) = floor(stake x ratio)      computed inside Arcium for each winning position

Losing positions are paid zero into their purse. Rounding is always down, so the sum of all payouts never exceeds the pot after fee. The engine's tests fuzz this against the exact rational payout.

Worked example

A market closes with 41,600 USDC on Yes and 38,400 USDC on No, and the fee is 1%.

StepValue
Pot80,000 USDC
Fee at 1%800 USDC
Pot after fee79,200 USDC
Yes wins: ratio79,200 / 41,600 = 1.9038
A 2,500 USDC Yes stake receives4,759.61 USDC

Refunds

When a market is refunded (one side empty, a degraded or late print, or no print submitted within 7 days), every stake goes back in full and no fee is taken. Tickets in a final batch that never reached 5 bettors are refunded too, even when the market itself settles.

The fee

ParameterLaunch valueHard ceiling
Fee1% of the pot5% (MAX_FEE_BPS = 500)

Fees accrue in public (Config.fees_accrued) and are swept to the treasury account fixed when the program was initialized.

Next: Getting started