Skip to content

Liquidity Rewards

Any participant who posts resting limit orders on Openfish automatically enters the liquidity reward program. Scores are computed continuously and rewards are settled once per day at midnight UTC.

The program is designed to:

  • Build deep liquidity across every active market.
  • Favour tight, two-sided quotes clustered near the midpoint.
  • Compensate steady participation throughout a market’s life.
  • Deter wash trading and manipulative order patterns.

Minimum payout: $1. Amounts below this threshold are not distributed.


Openfish snapshots the orderbook once per minute and evaluates every maker’s resting orders. Those per-minute scores accumulate over a 24-hour epoch (1440 snapshots total), then each maker’s share of the daily reward pool is proportional to their accumulated score.

Two configuration values, published per market through the CLOB API, govern eligibility:

ParameterDescription
min_incentive_sizeMinimum order size eligible for rewards
max_incentive_spreadMaximum distance from midpoint eligible for rewards (in cents)

Orders smaller than min_incentive_size or wider than max_incentive_spread receive a score of zero.


Each qualifying resting order is scored with a quadratic curve that gives disproportionate weight to tighter spreads:

S(v, s) = ((v - s) / v)^2

Where:

  • v = max_incentive_spread (maximum qualifying spread in cents)
  • s = distance of your order from the size-cutoff-adjusted midpoint (in cents)

An order right at the midpoint scores 1.0. An order at the maximum spread scores 0.0.

At each snapshot, the system calculates two aggregate side scores:

Q_one = sum of S(v, spread_i) * size_i for all orders on the first side
Q_two = sum of S(v, spread_i) * size_i for all orders on the second side

A bid on the YES book and an ask on the NO book contribute to the same side, because they represent the same economic position.

The program heavily favours participants who quote both sides. The combined score takes the minimum of the two sides, with a penalty divisor c (currently 3.0) applied when only one side is present:

When midpoint is between 0.10 and 0.90:

Q_min = max(min(Q_one, Q_two), max(Q_one / c, Q_two / c))

Single-sided orders can still score, but at one-third the rate.

When midpoint is below 0.10 or above 0.90:

Q_min = min(Q_one, Q_two)

Only two-sided liquidity scores in extreme-probability markets.

  1. Per-sample normalisation: Your Q_min divided by the sum of all makers’ Q_min in that sample.
  2. Epoch aggregation: Sum your normalised scores across all 1440 samples.
  3. Final share: Your epoch total divided by all makers’ epoch totals, multiplied by the market’s daily reward pool.

Assume a market with adjusted midpoint 0.50 and max_incentive_spread of 3 cents.

Your resting orders (first side):

OrderSpreadSize
Bid on YES @ 0.491 cent100
Bid on YES @ 0.482 cents200
Ask on NO @ 0.511 cent100
Q_one = ((3-1)/3)^2 * 100 + ((3-2)/3)^2 * 200 + ((3-1)/3)^2 * 100
= 0.444 * 100 + 0.111 * 200 + 0.444 * 100
= 44.4 + 22.2 + 44.4
= 111.0

Your resting orders (second side):

OrderSpreadSize
Ask on YES @ 0.522 cents150
Bid on NO @ 0.491 cent150
Q_two = ((3-2)/3)^2 * 150 + ((3-1)/3)^2 * 150
= 0.111 * 150 + 0.444 * 150
= 16.7 + 66.7
= 83.4

Since the midpoint is 0.50 (between 0.10 and 0.90):

Q_min = max(min(111.0, 83.4), max(111.0/3, 83.4/3))
= max(83.4, 37.0)
= 83.4

Your score for this sample is 83.4, normalised against all other makers.


EndpointAuthDescription
GET /rewards/markets/currentPublicCurrent reward pools per active market
GET /rewards/markets/{condition_id}PublicTop traders and reward estimates for a specific market
GET /rewards/userL2Per-market reward breakdown for the authenticated user
GET /rewards/user/totalL2Aggregated lifetime earnings
GET /rewards/user/percentagesL2Your share of total platform volume
GET /rewards/rawL2Raw per-trade reward data (up to 500 recent trades)

  1. Quote both sides — Two-sided liquidity scores up to 3x higher than single-sided.
  2. Stay tight — The quadratic scoring function heavily favours orders near the midpoint.
  3. Keep size up — Scores scale linearly with order size.
  4. Stay on the book — Scores are sampled every minute. Gaps reduce your epoch total.
  5. Watch extremes — In markets where the midpoint is below 0.10 or above 0.90, only two-sided liquidity earns rewards.

  • Maker Rebates — Volume-based USDC rebates paid daily.
  • Trading — Order entry and quoting best practices.