PolyFrog

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 - fee

You 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.

StakeWeightProfitFeePayout
Alice1.02.04.0000.0804.920
Bob1.01.53.0000.0603.940
Carol7.00

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 fee2% of profit
Hard cap5%, enforced in the contract
On returned stakenone, ever
On a voidnone
$FROG holderswaived above the threshold