- Catalyze liquidity across all markets
- Encourage liquidity throughout a market’s entire lifecycle
- Motivate passive, balanced quoting tight to a market’s midpoint
- Encourage trading activity
- Discourage blatantly exploitative behaviors
The minimum reward payout is $1; amounts below this will not be paid.
Find Markets to Quote
Browse markets and their reward settings before choosing where to provide liquidity. Search narrows the collection. Inspect each returned market’s configuration before assuming that rewards are currently available.- TypeScript
- Python
- API
Call
listRewardMarkets() using an existing PublicClient named client.
If needed, create a public client.
The method is also available on SecureClient.RewardMarket includes the market and event identifiers, token prices, spread,
volume, competitiveness, and reward configurations. Decimal values remain
strings. rewardsConfig can be empty. Do not infer an active reward solely from
a market appearing in the collection.Use tagSlugs for category selection, or marketId and
eventIds for known markets and events. minVolume24hr, maxVolume24hr,
minSpread, maxSpread, minPrice, and maxPrice narrow numeric ranges.
Minimum bounds are exclusive, maximum bounds inclusive, and zero disables a
bound. A supplied orderBy defaults to ascending order unless you set
sortDirection.Read Daily Earnings
Read daily totals for the authenticated account to reconcile liquidity rewards. Choose whether to include sponsored rewards in the total.- TypeScript
- Python
- API
Call
fetchTotalEarningsForUserForDay() on a SecureClient.earnings is the total decimal string for the row’s reward asset. With
sponsored: true, the total includes native and sponsored rewards.
nativeEarnings and sponsoredEarnings expose the optional decimal-string
breakdown. An absent breakdown remains undefined. A returned zero is "0".
Omitting sponsored, or setting it to false, requests native rewards only.Crypto TWAP Rewards
To support liquidity through this transition, Polymarket is adding $1M in liquidity rewards across impacted markets through the month of August. This allocation applies only to crypto 5-minute, 15-minute, and 4-hour markets that settle on TWAP.This program has ended. The August allocation is no longer active.
The pools below are configured reward caps. Actual payouts depend on eligible
quoting and the scoring methodology on this page.
5-Minute Markets — $550k
15-Minute Markets — $350k
4-Hour Markets — $100k
Methodology
Liquidity providers are rewarded based on a formula that rewards participation in markets, boosts two-sided depth (single-sided orders still score), and tighter spread vs the size-cutoff-adjusted midpoint. Each market configures a max spread and min size cutoff within which orders are considered. The average of rewards earned is determined by the relative share of each participant’s Qn in market m.Variables
Equations
1. Order Scoring Function
Quadratic scoring rule for an order based on position between the adjusted midpoint and the minimum qualifying spread:2. First Market Side Score
3. Second Market Side Score
4. Minimum Score
Boosts two-sided liquidity by taking the minimum of Qne and Qno, while still rewarding single-sided liquidity at a reduced rate (divided by c). If midpoint is in range [0.10, 0.90] — single-sided liquidity can score: If midpoint is in range [0, 0.10) or (0.90, 1.0] — liquidity must be double-sided to score:5. Normalized Score
Qmin of a market maker divided by the sum of all Qmin across market makers in a given sample:6. Epoch Score
Sum of all Qnormal for a trader across all samples in an epoch. An epoch is one UTC day; the order book is sampled once per minute at a random offset, so an epoch contains up to 1,440 samples:7. Final Score
Normalizes Qepoch by dividing by the sum of all market makers’ Qepoch in a given epoch. This value is multiplied by the rewards available for the market to get a trader’s reward:Worked Example
Assume an adjusted market midpoint of 0.50 and a max spread config of 3 cents for both m and m’.Step 2 - First Side Score
A trader has the following open orders:- 100Q bid on m @ 0.49 (spread = 1 cent)
- 200Q bid on m @ 0.48 (spread = 2 cents)
- 100Q ask on m’ @ 0.51 (spread = 1 cent)
Step 3 - Second Side Score
The same trader also has:- 100Q bid on m @ 0.485 (spread = 1.5 cents)
- 100Q bid on m’ @ 0.48 (spread = 2 cents)
- 200Q ask on m’ @ 0.505 (spread = 0.5 cents)
Steps 4-7
- Take the minimum of Qne and Qno (with single-sided adjustment if midpoint is in [0.10, 0.90])
- Normalize against all other market makers in the sample
- Sum across all 1,440 samples in the epoch (one UTC day)
- Normalize again to get final reward share