Liquidity Rewards

Turbine incentivizes users to provide liquidity by placing resting limit orders on prediction markets. The system periodically snapshots the orderbook, scores each qualifying order based on proximity to the midpoint and size, then distributes a configurable daily reward pool pro-rata to liquidity providers.

How It Works

Each eligible market has a daily reward pool denominated in USDC. Every ~60 seconds, the system takes a snapshot of the orderbook and scores every qualifying resting order. At midnight UTC, the daily pool is distributed pro-rata based on accumulated scores.

The closer your order is to the midpoint and the larger it is, the more you earn.

Scoring Formula

Every snapshot tick (~60 seconds with random jitter):

  1. For each market with a non-zero reward pool:
  2. For each outcome (YES and NO independently):
    • Compute the midpoint: (best_bid + best_ask) / 2
    • Compute the spread: best_ask - best_bid
    • If the spread exceeds 20% or the book is one-sided, skip — no rewards are given for that outcome in this snapshot
  3. For each resting limit order on that outcome:
    • Compute the distance from the midpoint: |order_price - midpoint|
    • Compute the proximity weight:
      • 1.0 if distance ≤ 1% (full weight)
      • 0.0 if distance ≥ 10% (no reward)
      • Linear decay between 1% and 10%
    • Compute the score: remaining_size × proximity_weight
Proximity Weight
1.0 |████████████
    |            ╲
    |             ╲
    |              ╲
    |               ╲
0.0 |________________╲___________
    0%    1%         10%
         Q_min       Q_max
              Distance from Midpoint

Orders within 1% of the midpoint receive full weight. Orders between 1-10% receive linearly decreasing weight. Orders more than 10% away from the midpoint receive no rewards.

Example

Consider a YES orderbook with:

  • Best bid: 45¢, Best ask: 55¢
  • Midpoint: 50¢
  • Spread: 10% (within the 20% max)

A resting buy order at 49¢:

  • Distance from midpoint = 1% → full weight (1.0)
  • 5 shares remaining → score = 5.0

A resting buy order at 44¢:

  • Distance from midpoint = 6% → partial weight (0.444)
  • 10 shares remaining → score = 4.44

Daily Distribution

At midnight UTC each day:

  1. For each market with a reward pool, all snapshot scores from the previous day are aggregated per trader
  2. Each trader's reward = (trader_score / total_score) × daily_reward_pool
  3. A minimum payout of $1 applies — traders earning less than this are skipped
  4. Payouts are recorded and can be viewed in the Rewards tab of your account

Example Distribution

Market has a $10/day reward pool:

TraderScore ShareReward
Alice50%$5.00
Bob30%$3.00
Carol20%$2.00

Exclusions

  • Market maker: The platform's market maker address for each market is excluded from earning rewards
  • One-sided books: If an outcome only has orders on one side, no rewards are given for that outcome
  • Wide spreads: If the spread exceeds 20%, no rewards are given for that outcome

Tips for Maximizing Rewards

  1. Place orders close to the midpoint — Orders within 1% of the midpoint receive full weight
  2. Use larger order sizes — Score scales linearly with remaining size
  3. Keep orders in the book continuously — Snapshots happen every ~60 seconds with jitter, so orders must be resting at snapshot time to count
  4. Provide liquidity on both sides — Having both bids and asks keeps the spread tight, keeping the outcome eligible for rewards
  5. Target markets with high reward pools — Markets with larger daily pools offer more earning potential

Viewing Your Rewards

Navigate to your Account page and select the Rewards tab to see:

  • Total Earned: Your lifetime rewards across all markets
  • Today's Activity: Your current day's accrued scores (in-progress, not yet distributed)
  • Reward History: A table of past daily payouts with date, amount, and payment status