Payouts & fees
Exactly how a winning position is priced.
PolyFrog is parimutuel. There is no order book and no automated market maker: the losing side’s money is divided among the winning side, in proportion to weight.
The formula
profit = losingPool × yourWeight / totalWinningWeight
fee = profit × feeBps / 10000 // 2% by default
payout = yourStake + profit - feeYou always get your own stake back on top of your share. The fee is charged only on the profit leg — never on returned capital. If you win nothing, you pay nothing.
A worked example
Alice stakes 1 ETH on YES at open (weight 2). Bob stakes 1 ETH on YES halfway through (weight 1.5). Carol stakes 7 ETH on NO. The auction graduates.
| Stake | Weight | Profit | Fee | Payout | |
|---|---|---|---|---|---|
| Alice | 1.0 | 2.0 | 4.000 | 0.080 | 4.920 |
| Bob | 1.0 | 1.5 | 3.000 | 0.060 | 3.940 |
| Carol | 7.0 | — | — | — | 0 |
Same stake, different timing: Alice takes a third more than Bob. Together they divide exactly Carol’s 7 ETH.
Solvency
The contract can never owe more than it holds. Winners receive their own pool back plus a share of the losing pool, and those shares are computed with floor division — so their sum is at most the losing pool, never more. Rounding dust stays in the contract.
This is verified by a fuzz test that throws random stakes and timings at a market, settles it, claims everything, and asserts that total paid plus fees never exceeds total staked.
When a market voids
If one side is empty at settlement, or the auction turns out to be unfinalisable, the market voids and everyone withdraws exactly what they put in. No fee is taken on a void.
Fees
| Default fee | 2% of profit |
|---|---|
| Hard cap | 5%, enforced in the contract |
| On returned stake | none, ever |
| On a void | none |
| $FROG holders | waived above the threshold |