Skip to main content

Yield Mechanisms

Yield in the Rarity protocol comes from multiple independent sources that participants can stack together—but you can't just add percentages and call it a day. A liquidity provider earning "4% from stablecoins + 10% from trading fees" isn't actually earning 14%, because those rates apply to different capital bases, different behaviors, and different risk profiles.

The real question is: how many dollars did you earn, from which sources, and why? Answer that honestly, and you can build incentives that naturally push capital toward the behaviors that make markets healthier—tight spreads, resting limit orders, fast recenters around truth.

This page explains how the protocol distributes yield using pots (dollar piles collected per source) and merit (units of contribution that earn you shares of those pots). No hand-waving about APYs. Just clear accounting, behavior-weighted rules, and worked examples that show exactly who earns what and why.

Key Mental Model

Yield isn't about promising rates—it's about collecting dollars from productive activities and distributing them proportionally to useful behavior. The protocol doesn't pay "2.25% to LPs." It pays XX from the stable pot to participants who provided tight liquidity near the true price, and YY from the fee pot to liquidity that was actually in range when swaps happened.

Your "APY" is just the ratio of what you earned to what you risked. It varies by behavior, timing, and market conditions—as it should.


The problem: you can't add apples and oranges

Traditional DeFi yield explanations make a seductive mistake: they quote "APYs" for different activities and let you assume they add up.

The pitch: "Earn 2% base yield on stablecoins + 10% from LP trading fees + 3% from mint surplus = 15% APY total!"

The reality: Those numbers come from different denominators:

  • 2% on stablecoins means 2% on the USDC side of your LP position (maybe 50% of your capital)
  • 10% from trading fees is computed on your entire position value but only earned when you're in range
  • 3% from mint surplus is paid to all LPs pro-rata by TVL, regardless of whether they were useful

If your pool is 50% stables and you're in range 40% of the time, the real math is:

Stable yield=0.50×0.02=1.0%Fee yield=0.40×0.10=4.0%Surplus yield=0.03=3.0%Actual total=8.0%, not 15%\begin{aligned} \text{Stable yield} &= 0.50 \times 0.02 = 1.0\% \\ \text{Fee yield} &= 0.40 \times 0.10 = 4.0\% \\ \text{Surplus yield} &= 0.03 = 3.0\% \\ \text{Actual total} &= 8.0\%\text{, not }15\% \end{aligned}

And that assumes the fee estimate holds—if volume drops 80%, your "10%" becomes 2% and your total collapses to 6%.

The deeper problem: Even if you get the math right, paying yield pro-rata by TVL creates no incentive to be useful. A tight ±100 bps LP that's always near fair value earns the same stablecoin yield as a wide ±500 bps LP that's never active. A limit order 1% away from spot earns the same as one 10% away. Neither position management nor market quality affects payouts.

The solution: Stop paying "rates." Start paying dollars from pots, distributed by merit earned through useful behavior.


How it works: pots and merit

The protocol collects dollars from real economic activities and distributes them to participants who contribute to protocol health. Two concepts make this work:

Pots: where dollars come from

A pot is the pile of dollars collected for one collection during one epoch (typically 7–30 days) from one source.

For each collection, each epoch:

  • Stable pot (SstableS_{\text{stable}}): Net yield earned by djinUSD attached to this collection (LP stable-side + limit orders using djinUSD), after protocol take.

    Example: $10M djinUSD × 3.5% net annual × 30 days = $28,767 this month.

  • Fee pot (SfeesS_{\text{fees}}): Swap fees accrued in the CL AMM pool this epoch.

    Example: $150M volume × 0.30% fee = $450,000 this month.

  • Surplus pot (SsurplusS_{\text{surplus}}): Premiums from minting mechanisms (release curves, Dutch auctions, bonded minting) earmarked for LPs.

    Example: 10,000 tokens minted at 103% of fair value, 50% LP share = $30,000 this month.

Key insight: Each pot is a fixed number of dollars. No double-counting. At epoch end, every dollar in every pot goes to exactly one participant (or the protocol fee). The sum of all payouts from a pot equals that pot—basic accounting.

Merit: how you earn your share

Merit is the unit of contribution. You accumulate merit whenever you do something useful—place tight limit orders, provide concentrated LP ranges, recenter quickly after mark-to-truth auctions. At epoch end, your share of each pot is proportional to your share of merit.

Formula (simple version):

Your payout from pot X=X×Your meritTotal merit from all participants + protocol merit\text{Your payout from pot } X = X \times \frac{\text{Your merit}}{\text{Total merit from all participants + protocol merit}}

If the stable pot is $30,000, you earned 5% of total user merit, and the protocol earned merit equal to 15% of user merit, then:

  • Total merit: 1,000 user merit + 150 protocol merit = 1,150 merit
  • Your share: 50 merit / 1,150 total = 4.35%
  • Your payout: 30,000×0.0435=30,000 × 0.0435 = 1,304

Protocol merits: The protocol participates in pot distributions as a merit holder, earning merit for infrastructure work—development, mark-to-truth auctions, security monitoring, basket management. Instead of pre-skimming a percentage, protocol merit is minted alongside user merit, and all dollars are distributed proportionally. This keeps accounting uniform: every pot operates on the same principle of merit-based distribution. See Fees & Yield Routing for complete protocol merit mechanics.

Why merit works: It turns yield into a price signal for useful behavior. Want more participants providing tight liquidity? Weight merit by range width. Want orders closer to spot? Weight merit by distance. Want fast recenters? Boost merit for those who move quickly after auctions. The protocol can tune incentives by adjusting merit formulas—no need to change rate promises or smart contract logic.


How merit is generated

There are three ways to generate merit, each with different trade-offs between expressivity, gas costs, and on-chain transparency.

How it works: An indexer watches the chain and computes merit from deterministic rules: every block, it checks LP ranges, limit order distances, timestamps, scarcity metrics. At epoch end, it publishes a Merkle root of per-address payouts plus a full CSV breakdown. Users claim their payouts by providing Merkle proofs. Anyone can recompute the CSV from chain data to verify correctness.

Pros:

  • Gas efficient: No continuous merit minting; just one claim per user per epoch
  • Flexible math: Can use complex kernels (distance weights, scarcity boosts, half-life decays)
  • Easy upgrades: Change merit formulas off-chain without contract migrations

Cons:

  • Verification burden: Requires community to audit indexer or use ZK proofs (though deterministic rules make this tractable)
  • Trust assumptions: If the indexer is compromised, payouts could be wrong (mitigated by fraud proofs with challenge periods)

When to use: You want rich, nuanced incentives with low gas costs and are willing to invest in verification infrastructure (Merkle trees + fraud proofs or ZK-SNARKs).

Option B: On-chain streaming merit (blockchain-native)

How it works: Contracts mint merit tokens every block based on current state. LP positions stream merit proportional to stable-side notional × width weight × range-center weight. Limit orders stream merit proportional to resting notional × distance weight × scarcity weight. Merit accumulates in user balances. At epoch end, the protocol reads merit balances and pays out accordingly.

Pros:

  • Fully on-chain: No off-chain indexer or trust assumptions
  • Composable: Merit tokens can integrate with other protocols (voting, staking, etc.)
  • Real-time visibility: Users see merit accruing live

Cons:

  • Gas overhead: Every position update (place order, move range, cancel) requires a merit-state update
  • Simpler weights: Complex calculations (smoothed scarcity, half-life decays) become expensive
  • State bloat: More storage updates per block

When to use: You prioritize decentralization and composability over gas efficiency, or you expect infrequent position updates.

Option C: Two-token maturation (tempMerit → Merit)

How it works: Hybrid approach—stream tempMerit on-chain every block, but require it to mature into Merit over time via an exchange rate. Example: earn 5 tempMerit per hour while your limit order rests; after 40 hours you've earned 200 tempMerit, which converts to 5 Merit. If you cancel or move your order before maturing, you forfeit unmatured tempMerit.

Pros:

  • Anti-gaming: Penalizes position-flipping and last-second sniping
  • Time-stickiness: Rewards "stay put" behavior without complex off-chain logic
  • Blockchain-native: Still mostly on-chain, just adds a maturation gate

Cons:

  • UX complexity: Users need a progress bar showing maturation status
  • Extra accounting: Two token types to track and exchange
  • Gas: Still more than off-chain (though less than raw streaming)

When to use: You observe gaming where participants move positions frequently to farm yield without actually providing useful liquidity—maturation makes that uneconomical.

Recommendation: Start with Option A (off-chain with Merkle claims) for expressivity and low gas. Add Option C (maturation) in V2 if gaming becomes an issue. Option B is elegant but gas-prohibitive for high-activity collections.


Merit formulas: who earns what and why

These formulas determine how fast you accumulate merit based on your behavior. They're designed to be simple enough to audit but expressive enough to incentivize the right things.

Limit orders: proximity and scarcity

What's happening: The closer you rest to the current price and the scarcer your side of the book is, the faster you earn merit.

LO Merit=epochQ(t)wdist(d(t))wscarcity(t)wsticky(t)dt\text{LO Merit} = \int_{\text{epoch}} Q(t) \cdot w_{\text{dist}}(d(t)) \cdot w_{\text{scarcity}}(t) \cdot w_{\text{sticky}}(t) \, dt

Components:

  • Q(t)Q(t): Your resting notional at time tt (USDC for buy orders, token value for sell orders)
  • d(t)d(t): Distance from current mid price (e.g., 1.2% below spot)
  • wdist(d)w_{\text{dist}}(d): Distance weight
    • 1.0 at ≤1% from mid
    • Linear decay to 0.0 at 5% from mid
    • Example: order at 2.5% away gets w=0.5w = 0.5
  • wscarcity(t)w_{\text{scarcity}}(t): Scarcity boost
    • 1.5× when your side (bid or ask) is thin relative to the other side
    • 1.0× when balanced
    • Measured by median depth ratio over 1-hour windows to prevent manipulation
  • wsticky(t)w_{\text{sticky}}(t): Stickiness ramp
    • 0.25× for first 2 hours after placement (prevents flip-flop farming)
    • Ramps linearly to 1.0× at 24 hours
    • Stays at 1.0× thereafter

Example: Alice places a $100k buy order 1.2% below spot when the buy side is thin. After 24 hours:

  • Base: $100k
  • Distance weight: 11.2/5=0.761 - 1.2/5 = 0.76
  • Scarcity boost: 1.51.5
  • Stickiness: 1.01.0 (been there 24h)
  • Merit rate: $100k × 0.76 × 1.5 × 1.0 = 114k merit per day

If Bob places a $100k order 6% away (beyond 5%), his distance weight is 0.0 and he earns zero merit—even though he committed $100k.

LP positions: width and centering

What's happening: The more stable-side capital you commit in tighter, better-centered ranges, the more merit you stream.

LP Merit (stable pot)=epochDstable(t)wwidth(W(t))wcenter(Δ(t))dt\text{LP Merit (stable pot)} = \int_{\text{epoch}} D^{\text{stable}}(t) \cdot w_{\text{width}}(W(t)) \cdot w_{\text{center}}(\Delta(t)) \, dt

Components:

  • Dstable(t)D^{\text{stable}}(t): Your djinUSD notional in the LP position at time tt
  • W(t)W(t): Your range width in basis points (e.g., ±100 bps = 200 bps width)
  • wwidth(W)=clamp ⁣((WrefW)0.5,0.8,1.5)w_{\text{width}}(W) = \text{clamp}\!\left(\left(\frac{W_{\text{ref}}}{W}\right)^{0.5}, 0.8, 1.5\right)
    • Wref=200W_{\text{ref}} = 200 bps (target width ±1%)
    • Tight ±100 bps (200 bps width) → w=(200/200)0.5=1.0w = (200/200)^{0.5} = 1.0
    • Medium ±250 bps (500 bps width) → w=(200/500)0.5=0.63w = (200/500)^{0.5} = 0.63
    • Wide ±500 bps (1000 bps width) → w=(200/1000)0.5=0.45w = (200/1000)^{0.5} = 0.45
  • wcenter(Δ)w_{\text{center}}(\Delta): Small boost (1.0–1.1×) if your range mid is within ±50 bps of current price or mark-to-truth anchor

Example: Carol provides $1M position (50/50), ±150 bps range:

  • Stable side: $500k djinUSD
  • Width: 300 bps → wwidth=(200/300)0.5=0.82w_{\text{width}} = (200/300)^{0.5} = 0.82
  • Centered within ±50 bps → wcenter=1.05w_{\text{center}} = 1.05
  • Merit rate: $500k × 0.82 × 1.05 = 430.5k merit per day

LP positions: fee eligibility (separate merit pool)

For fee pot distribution, use a different merit calculation that reflects actual in-range time:

LP Merit (fees)=epochLactive(t)wwidth(fees)(W(t))dt\text{LP Merit (fees)} = \int_{\text{epoch}} L^{\text{active}}(t) \cdot w_{\text{width}}^{\text{(fees)}}(W(t)) \, dt

Components:

  • Lactive(t)L^{\text{active}}(t): Your liquidity units when in range (zero when out of range)
  • wwidth(fees)w_{\text{width}}^{\text{(fees)}}: Stronger width weight to capture concentration advantage
    • ±50 bps (100 bps width): w=3.0w = 3.0
    • ±100 bps (200 bps width): w=1.5w = 1.5
    • ±250 bps (500 bps width): w=0.8w = 0.8

Why separate from stable merit? Because fee accrual already depends on being in range—the base CL AMM mechanics handle that. The width weight here captures that tighter ranges earn disproportionately more per dollar when active, which should translate to more fee-pot merit.

Recenter bounties: speed and accuracy

What's happening: After a mark-to-truth auction recenters the mark, participants who quickly move liquidity to the new price earn bonus merit from a special recenter pot.

Recenter Merit=notional movedeλhwwidth(W)\text{Recenter Merit} = \text{notional moved} \cdot e^{-\lambda h} \cdot w_{\text{width}}(W)

Components:

  • Notional moved: Dollar value of new LP position created or old position adjusted
  • hh: Hours elapsed since recenter signal
  • λ=ln23\lambda = \frac{\ln 2}{3} (3-hour half-life)
    • Move in 15 minutes → e0.25λ=0.944e^{-0.25 \lambda} = 0.94494% credit
    • Move in 3 hours → e3λ=0.5e^{-3\lambda} = 0.550% credit
    • Move in 6 hours → e6λ=0.25e^{-6\lambda} = 0.2525% credit
  • wwidth(W)w_{\text{width}}(W): Same width weight as stable merit (tighter is better)

Example: After a RECENTER event moves fair value from $5,000 to $4,850:

  • David moves $300k LP position to ±100 bps around $4,850 within 15 minutes
    • Time weight: e0.25×0.231=0.944e^{-0.25 \times 0.231} = 0.944
    • Width weight: 1.01.0 (tight)
    • Recenter merit: $300k × 0.944 × 1.0 = 283.2k
  • Eve moves $300k LP position to ±250 bps around $4,850 six hours later
    • Time weight: e6×0.231=0.25e^{-6 \times 0.231} = 0.25
    • Width weight: 0.630.63
    • Recenter merit: $300k × 0.25 × 0.63 = 47.25k

David earns 6× more recenter merit than Eve despite the same notional, because he moved faster and tighter.


How pots get split: dynamic allocation

Not every pot goes to every behavior. The protocol dynamically allocates each pot's dollars to the behaviors that contribute to that pot's source.

Stable pot allocation

The stable pot (SstableS_{\text{stable}}) is split into base and variable slices:

B=iDirbaseΔ365V=SstableB\begin{aligned} B &= \sum_i \overline{D}_i \cdot r_{\text{base}} \cdot \frac{\Delta}{365} \\ V &= S_{\text{stable}} - B \end{aligned}
  • Di\overline{D}_i: User ii's time-weighted djinUSD attached to the collection
  • rbaser_{\text{base}}: Small guaranteed annual rate (e.g., 0.5%)
  • Δ\Delta: Epoch length in days
  • BB: Base slice paid pro-rata to all attached djinUSD (prevents "zero while waiting")
  • VV: Variable slice paid according to merit

Base slice (BB): Distributed pro-rata. If you hold 100kdjinUSDattachedtothecollectionandtotalattachedis100k djinUSD attached to the collection and total attached is 10M, you get 1% of BB regardless of behavior.

Variable slice (VV): Split between LP and LO behaviors based on where capital is most needed:

VLP=λV,VLO=(1λ)VV_{\text{LP}} = \lambda \cdot V, \quad V_{\text{LO}} = (1-\lambda) \cdot V
  • λ\lambda: Auto-tuned share (e.g., 0.6 → 60% to LPs, 40% to LOs)
  • Increases when near-spot LP depth is thin or spreads are wide
  • Decreases when limit order book depth is insufficient

Each sub-slice pays out by merit:

PayoutLP=Your LP stable meritTotal LP stable merit×VLP\text{Payout}_{\text{LP}} = \frac{\text{Your LP stable merit}}{\text{Total LP stable merit}} \times V_{\text{LP}} PayoutLO=Your LO meritTotal LO merit×VLO\text{Payout}_{\text{LO}} = \frac{\text{Your LO merit}}{\text{Total LO merit}} \times V_{\text{LO}}

Fee pot allocation

Fees flow to LPs only, weighted by in-range time and width:

Fee payoutk=LPk fee meritTotal LP fee merit×Sfees\text{Fee payout}_k = \frac{\text{LP}_k\text{ fee merit}}{\text{Total LP fee merit}} \times S_{\text{fees}}

Surplus pot allocation

Mint surplus flows to LPs, but again by merit not raw TVL:

Surplus payoutk=LPk stable meritTotal LP stable merit×Ssurplus\text{Surplus payout}_k = \frac{\text{LP}_k\text{ stable merit}}{\text{Total LP stable merit}} \times S_{\text{surplus}}

Why use stable merit instead of fee merit? Surplus distribution should incentivize the same "useful stable-side liquidity" behaviors that make the pool healthy, not just "happened to be in range during this specific epoch."

Recenter bounty pot (event-driven)

Only distributed after mark-to-truth RECENTER or WIND-DOWN events:

Recenter payouti=Your recenter meritTotal recenter merit×Srecenter\text{Recenter payout}_i = \frac{\text{Your recenter merit}}{\text{Total recenter merit}} \times S_{\text{recenter}}

If no recenter happens this epoch, Srecenter=0S_{\text{recenter}} = 0 and nobody gets paid (but also nobody had to move).


Worked example: full accounting for one epoch

Let's walk through a real month with concrete numbers and show exactly who earns what.

Setup (30-day epoch)

Collection state:

  • Total pool TVL: $20M (50% stables, 50% RWA tokens)
  • djinUSD attached to collection: $10M (LP stable-side + limit orders)
  • Existing circulating supply: 4,000 tokens

Yield sources:

  • Stablecoin basket net annual yield (after protocol take): 3.5%
  • Swap fees this month: $40k (from $13.3M volume at 0.30% fee tier)
    • Assumes 8× annual volume/TVL ratio, typical for liquid RWA collectibles
  • Mint surplus this month: $30k (from release curve selling 1,000 tokens at 103% of fair value, 50% LP share)
  • Recenter bounty this month: $40k (one RECENTER event from mark-to-truth auction)

Compute the pots

Stable pot:

Sstable=$10M×3.5%×30365=$28,767S_{\text{stable}} = \$10M \times 3.5\% \times \frac{30}{365} = \$28,767

Split into base and variable:

B=$10M×0.5%×30365=$4,110V=$28,767$4,110=$24,657\begin{aligned} B &= \$10M \times 0.5\% \times \frac{30}{365} = \$4,110 \\ V &= \$28,767 - \$4,110 = \$24,657 \end{aligned}

Dynamic allocation: λ=0.55\lambda = 0.55 (55% to LP, 45% to LO) based on current depth metrics:

VLP=0.55×$24,657=$13,561VLO=0.45×$24,657=$11,096\begin{aligned} V_{\text{LP}} &= 0.55 \times \$24,657 = \$13,561 \\ V_{\text{LO}} &= 0.45 \times \$24,657 = \$11,096 \end{aligned}

Fee pot: SfeesS_{\text{fees}} = $40,000 (all to LPs)

Surplus pot: SsurplusS_{\text{surplus}} = $30,000 (all to LPs)

Recenter pot: SrecenterS_{\text{recenter}} = $40,000 (distributed by recenter merit)

Behavior state (aggregates)

Across all participants this month:

LP positions (stable-side analysis):

  • Tight ±100 bps: $6M djinUSD, width weight 1.0 → 6.0M merit units
  • Medium ±250 bps: $3M djinUSD, width weight 0.63 → 1.89M merit units
  • Wide ±500 bps: $1M djinUSD, width weight 0.45 → 0.45M merit units
  • Total LP stable merit: 8.34M units

LP positions (fee analysis):

  • Tight ±100 bps: 45% in-range time, $6M, weight 1.5 → 4.05M fee-merit
  • Medium ±250 bps: 65% in-range time, $3M, weight 0.8 → 1.56M fee-merit
  • Wide ±500 bps: 90% in-range time, $1M, weight 0.5 → 0.45M fee-merit
  • Total LP fee merit: 6.06M units

Limit orders:

  • Tight (≤1% from mid): $2M notional, scarcity 1.2×, dist weight 1.0 → 2.4M merit
  • Medium (2–3% from mid): $1M notional, scarcity 1.0×, dist weight 0.5 → 0.5M merit
  • Distant (>5% from mid): $1M notional, dist weight 0.0 → 0 merit
  • Total LO merit: 2.9M units

Recenter responses:

  • Fast tight movers: $8M notional moved in <1h, weight 0.9 → 7.2M recenter merit
  • Slow movers: $4M notional moved in 6–12h, weight 0.2 → 0.8M recenter merit
  • Total recenter merit: 8.0M units

Compute per-unit rates

Base stable payout: $4,110 / $10M = $0.000411 per dollar of attached djinUSD

Variable stable (LP slice): $13,561 / 8.34M = $0.001626 per LP stable merit unit

Variable stable (LO slice): $11,096 / 2.9M = $0.003826 per LO merit unit

Fee payout: $40,000 / 6.06M = $0.006600 per LP fee-merit unit

Surplus payout: $30,000 / 8.34M = $0.003597 per LP stable merit unit

Recenter payout: $40,000 / 8.0M = $0.005000 per recenter merit unit


Participant examples: who earns what and why

Tina — Tight LP (±100 bps), $500k position

What she did: Provided $500k LP position (50% stables, 50% RWA) in a tight ±100 bps range. In range 45% of the time. Moved quickly after the recenter event (30 minutes, adjusted $300k of her position).

Stable-side base:

  • $250k djinUSD × $0.000411 = $103

Stable-side variable (LP merit):

  • $250k djinUSD × 1.0 width weight × 30 days = 250k merit units
  • 250k × $0.001626 = $407

Fees:

  • Tight ±100 bps, 45% in-range
  • 250k × 0.45 in-range × 1.5 width weight = 168.75k fee-merit units
  • 168.75k × $0.006600 = $1,114

Surplus:

  • 250k merit units (same as stable merit)
  • 250k × $0.003597 = $899

Recenter:

  • Moved $300k in 30 min → time weight ≈ 0.90, width weight 1.0
  • $300k × 0.90 × 1.0 = 270k recenter merit
  • 270k × $0.005000 = $1,350

Total this month: $103 + $407 + $1,114 + $899 + $1,350 = $3,873

APY calculation: $3,873 per month × 12 = $46,476 annual on $500k position = 9.3% APY

(Add RWA appreciation separately: if tokens appreciate 8% annually, add 0.5 × 8% = +4% → ≈13.3% total)


Wendy — Wide LP (±500 bps), $500k position

What she did: Provided $500k LP position in a wide ±500 bps range. In range 90% of the time (almost always active). Moved slowly after recenter (8 hours, adjusted $200k).

Stable-side base:

  • $250k × $0.000411 = $103

Stable-side variable:

  • $250k × 0.45 width weight = 112.5k merit units
  • 112.5k × $0.001626 = $183

Fees:

  • Wide ±500 bps, 90% in-range
  • 250k × 0.90 × 0.5 width weight = 112.5k fee-merit
  • 112.5k × $0.006600 = $742

Surplus:

  • 112.5k × $0.003597 = $405

Recenter:

  • Moved $200k in 8h → time weight ≈ 0.16, width weight 0.45
  • $200k × 0.16 × 0.45 = 14.4k recenter merit
  • 14.4k × $0.005000 = $72

Total this month: $103 + $183 + $742 + $405 + $72 = $1,505

APY calculation: $1,505 × 12 = $18,060 annual / $500k = 3.6% APY (+ RWA appreciation ≈ 7.6%)

Comparison to Tina: Wendy's wider range means she's in range more often (90% vs 45%), but her merit per dollar is much lower. Tina earns 2.6× more despite being out of range more often—because when Tina is in range, she's providing much tighter, more useful liquidity. The merit system rewards concentration.


Liam — Tight buy limit orders, $200k notional

What he did: Placed $200k in buy limit orders at 0.8% below mid, on the scarce bid side. Orders rested the full 30 days without filling. Did not participate in recenter (no orders moved).

Stable-side base:

  • $200k djinUSD × $0.000411 = $82

Stable-side variable (LO merit):

  • Distance: 0.8% → dist weight = 10.8/5=0.841 - 0.8/5 = 0.84
  • Scarcity: bid-side thin → scarcity weight = 1.3×
  • Time: rested full epoch → sticky weight = 1.0×
  • Merit: $200k × 0.84 × 1.3 × 1.0 = 218.4k merit units
  • Payout: 218.4k × $0.003826 = $835

Fees: None (limit orders don't earn LP fees)

Surplus: None (only LPs)

Recenter: None (didn't move)

Total this month: $82 + $835 = $917

APY calculation: $917 × 12 = $11,004 annual / $200k = 5.5% APY

Why this matters: Liam earned 5.5% while waiting for his limit orders to fill. This is much better than idle USDC (0%) or basic stablecoin yield (0.5% base), and he took zero impermanent loss risk. If his orders eventually fill, he'll own RWA tokens at his target price and switch to earning collection appreciation.


Pam — Passive djinUSD, $200k

What she did: Held $200k djinUSD "attached" to the collection but in her wallet, not actively deployed in LP or limit orders. No participation in any activity.

Stable-side base:

  • $200k × $0.000411 = $82

Variable / fees / surplus / recenter: None (no merit earned)

Total this month: $82

APY calculation: $82 × 12 = $984 annual / $200k = 0.49% APY

Comparison to Liam: Liam earned 11× more than Pam with the same capital, simply by placing limit orders close to the market. Pam's yield is slightly below the 0.5% base rate because the base slice (BB) is paid pro-rata across all attached djinUSD, but she receives no share of the much larger variable slice (VV).


Derek — Distant limit orders, $200k at 8% below mid

What he did: Placed $200k in buy orders 8% below mid (well beyond the 5% merit threshold). Orders rested but earned zero merit.

Stable-side base:

  • $200k × $0.000411 = $82

Variable: Distance weight = 0 (beyond 5%) → $0

Total this month: $82 (same as Pam!)

APY: 0.49%

Key lesson: Distance matters. Derek committed the same capital as Liam but earned the same as passive Pam because his orders were too far from the action. The merit system doesn't reward "participation"—it rewards useful participation.


Sanity checks: does the math add up?

Let's verify that all dollars distributed equal the pots collected:

Stable pot:

  • Base slice distributed: $4,110 paid pro-rata across $10M → ✓ all distributed
  • Variable LP: 8.34M merit units × $0.001626 = $13,561 → ✓ matches VLPV_{\text{LP}}
  • Variable LO: 2.9M merit units × $0.003826 = $11,096 → ✓ matches VLOV_{\text{LO}}

Fee pot: 6.06M fee-merit × $0.006600 = $40,000 → ✓

Surplus pot: 8.34M merit × $0.003597 = $30,000 → ✓

Recenter pot: 8.0M recenter merit × $0.005000 = $40,000 → ✓

Total distributed: $4,110 + $13,561 + $11,096 + $40,000 + $30,000 + $40,000 = $138,767

Total collected: $28,767 (stable) + $40,000 (fees) + $30,000 (surplus) + $40,000 (recenter) = $138,767

Every dollar collected was distributed. No hand-waving, no mixed bases.


What about low-volume months?

The worked example above used $13.3M monthly volume generating $40k in fees. What happens if volume collapses 80% to $2.7M?

New fee pot: $2.7M × 0.30% = $8,000 (down from $40k)

All other pots unchanged:

  • Stable pot: Still $28,767 (comes from treasury/lending, not trading)
  • Surplus pot: Still $30,000 (from minting events)
  • Recenter pot: Still $40,000 (event-driven, happened this month)

Tina's new earnings:

  • Stable base + variable + surplus + recenter: $2,759 (unchanged)
  • Fees: 168.75k fee-merit × ($8k / 6.06M) = $223 (down from $1,114)
  • New total: $2,759 + $223 = $2,982/month7.2% APY (+ ~4% collection ≈ 11.2% total)

Key insight: Tina's yield dropped from 13.3% to 11.2%—a modest decline. The stablecoin pot provides a floor that's independent of trading volume. Even when fees collapse, active participants still earn meaningfully more than passive holders (who earn ~0.5%).

Compare to traditional AMMs: if volume drops 80%, LP APYs go from 10% to 2% with no floor. Here, Tina still earned 7.2% from non-fee sources (stable, surplus, recenter).


What about high-volume collections or additional fee sources?

The baseline example uses 8× annual volume/TVL (typical for liquid RWA collectibles). But some collections may trade more actively, or the protocol may add additional fee-generating activities.

Higher organic trading volume (15× annual)

If speculation, arbitrage, or frequent rebalancing doubles natural trading velocity:

Monthly volume: $25M (vs. $13.3M baseline) Monthly fees: $75k (vs. $40k)

Tina's revised earnings:

  • Non-fee sources: $2,759
  • Fees: 168.75k × ($75k / 6.06M) = $2,088
  • Total: $4,847/month → 11.6% APY (+ 4% collection ≈ 15.6% total)

Wendy's revised earnings:

  • Non-fee sources: $761
  • Fees: 112.5k × ($75k / 6.06M) = $1,392
  • Total: $2,153/month → 5.2% APY (+ 4% ≈ 9.2% total)

Additional fee sources beyond spot swaps

Future protocol features could add more yield:

  • Lending fees (5-15% APR on RWA collateral) — LPs receive share for backstopping liquidations
  • Derivatives funding rates (10-30 bps/day) — LPs earn as counterparties to perpetual positions
  • Cross-collection arbitrage fees (0.10-0.50%) — Higher fees for complex routing through multiple pools
  • Premium services (analytics, custodial storage, physical delivery) — Protocol fees shared with LPs

Example scenario: Collection adds lending with $5M borrowed against RWA at 10% APR:

  • Additional annual fees: $500k
  • LP share (70%): $350k/year = $29k/month
  • This would increase Tina's APY from 9.3% → 16.2% and Wendy's from 3.6% → 7.8%

Key insight: The merit-based framework allows the protocol to stack new yield sources as they're introduced, without changing payout mechanics. Each new fee source creates another pot, distributed by the same merit rules. Collections with more economic activity naturally reward participants more—creating positive feedback loops that attract liquidity to the most productive pools.


Why this works: aligning incentives with protocol health

The merit system creates a gradient of economic incentives that naturally pushes capital toward behaviors that make markets better.

Idle → Limit orders

Pam (idle): 0.49% APY Liam (tight limit orders): 5.5% APY

Improvement: 11× just by placing orders within 1% of mid. No additional risk, no IL, no active management.

Result: Rational capital flows from wallets into resting limit orders, deepening the order book and providing visible depth for large traders.

Limit orders → LP provision

Liam (limit orders): 5.5% APY Wendy (wide LP): 7.6% APY

Improvement: 38% by converting djinUSD into LP ranges. Takes on IL risk and RWA exposure, but earns from fees + surplus + better merit.

Result: Capital flows from passive limit orders into active liquidity provision when fee opportunities justify the additional risk.

Wide LP → Tight LP

Wendy (wide ±500 bps): 7.6% APY Tina (tight ±100 bps): 13.3% APY

Improvement: 75% by concentrating capital near the current price. More active management (higher out-of-range risk), but dramatically higher merit per dollar.

Result: LPs naturally tighten ranges to maximize yield, creating better price discovery and lower slippage for traders.

Slow recenter → Fast recenter

Wendy (8h to recenter): 72bountyTina(30mintorecenter):72 bounty **Tina (30min to recenter):** 1,350 bounty

Improvement: 19× by responding quickly to mark-to-truth signals.

Result: After price discovery events, liquidity rapidly migrates to the new fair value, minimizing the window where the pool is mispriced and preventing arbitrage bleeding.

The flywheel effect

Better behavior → tighter markets → more trading volume → larger fee pots → higher merit rewards → attracts more sophisticated participants → even better behavior.

Traditional AMMs can't create this flywheel because they pay pro-rata by TVL. Whether you provide tight, useful liquidity or wide, lazy liquidity, you earn the same per dollar. The protocol has no way to say "we need more of this kind of liquidity."

Merit-based yield breaks that constraint. The protocol can tune behavior by adjusting merit formulas—want tighter ranges? Steepen the width kernel. Want faster recenters? Increase the bounty pot. Want more limit orders on the scarce side? Boost the scarcity multiplier. No smart contract changes needed, just parameter updates to the merit calculation.


Dynamic tuning: λ\lambda and adaptive splits

One parameter deserves special attention: λ\lambda, the share of variable stable yield that goes to LPs vs. LOs.

Current month: λ=0.55\lambda = 0.55 (55% to LP, 45% to LO)

Next month: Suppose LP depth falls to 8MbutLOdepthrisesto8M but LO depth rises to 5M. The protocol observes:

  • Effective spread widened from 20 bps to 35 bps (need more near-spot LP depth)
  • Order book depth ratio improved from 0.4 to 0.8 (LO side less scarce)

Auto-tuner action: Increase λ\lambda to 0.70 (70% LP, 30% LO) to attract more LP capital.

Result: LP merit rates rise (more attractive), LO merit rates fall (less needed). Capital naturally flows from limit orders into LP positions. Spreads tighten. Once target depth is reached, λ\lambda normalizes.

Implementation: Simple PID controller:

λt+1=λt+Kp(spreadactualspreadtarget)+Kierrordt\lambda_{t+1} = \lambda_t + K_p \cdot (\text{spread}_{\text{actual}} - \text{spread}_{\text{target}}) + K_i \cdot \int \text{error} \, dt

Target: 15 bps effective spread, ±\pm1% depth > $8M. Publish target vs. actual metrics every epoch so participants can see what the protocol is optimizing for.


Recenter bounties: when the mark moves

Mark-to-truth auctions occasionally discover that the pool price is wrong—maybe 85 bps above fair value, maybe 120 bps below. The protocol updates the reference price and needs liquidity to migrate to the new fair value fast.

Problem: If migration is slow, the pool stays mispriced for hours or days. Arbitrageurs can extract value. Traders face bad fills. External integrations (lending, derivatives) see stale prices.

Solution: Pay a recenter bounty to participants who move liquidity to the new mark quickly and tightly.

Example scenario:

  • Mark-to-truth auction triggers, clearing price is $4,850 (current pool mark was $5,000)
  • Protocol updates mark to $4,850 and allocates $40,000 recenter bounty
  • Participants have 24 hours to respond; merit decays with half-life of 3 hours

Fast responders (within 1 hour):

  • Move $8M LP positions to ±100 bps around $4,850
  • Time weight: 0.85–0.94 (most of credit)
  • Width weight: 1.0 (tight)
  • Total recenter merit: 7.2M units
  • Share of bounty: 7.2M / 8.0M = 90% → $36,000

Slow responders (6–12 hours later):

  • Move $4M LP positions to ±300 bps around $4,850
  • Time weight: 0.15–0.25 (small credit)
  • Width weight: 0.58 (wider)
  • Total recenter merit: 0.8M units
  • Share of bounty: 0.8M / 8.0M = 10% → $4,000

Result: Within 1 hour of the RECENTER signal, 90% of liquidity has moved to the new mark. The window where the pool is exploitable is measured in minutes, not days. Participants who moved fast and tight captured most of the bounty; late movers got scraps.

Why it works: The exponential decay eλhe^{-\lambda h} creates a race. If you believe the mark-to-truth auction was correct, moving right now is much more profitable than moving later. This transforms "eventually someone will rebalance" into "everyone tries to rebalance in the first 30 minutes."


Anti-gaming protections

Merit-based yield creates strong incentives—which also creates strong incentives to game the system. Several defenses prevent manipulation:

1. Stickiness ramps (anti-flip-flop)

Positions earn reduced merit for the first 2–24 hours after placement. This prevents:

  • Order flapping: Cancel and replace limit orders every few minutes to stay exactly 1% from mid
  • Range hopping: Move LP ranges constantly to track price and maximize width weights
  • Sybil farming: Spam many small positions instead of one large one

Example attack: Alice tries to maximize LO merit by placing orders, waiting 1 block, canceling, and re-placing closer to the new mid every minute.

Defense: Stickiness weight wsticky(t)=0.25w_{\text{sticky}}(t) = 0.25 for first 2 hours. Alice earns 25% of potential merit until she stops moving for 2 hours. The gas costs of constant updates far exceed the 4× merit boost she'd get by staying put.

2. Time-weighting (anti-sandwich)

All merit formulas use integrals over time, not snapshots. You can't earn a full epoch's merit by jumping in for the last hour.

Example attack: Bob waits until day 29 of the 30-day epoch, deposits $10M in tight LP, then withdraws on day 30 before settlement.

Defense: Bob's merit is proportional to time committed. 10Mfor1day=10M for 1 day = 333k merit. If the average participant had 333kfor30days=333k for 30 days = 10M merit, Bob gets 1/30th the merit per dollar. His effective yield is 1/30th of what patient participants earned.

3. Scarcity smoothing (anti-spoofing)

Scarcity weights (wscarcityw_{\text{scarcity}}) are computed from median depth over 1-hour windows, not instantaneous snapshots.

Example attack: Carol places $5M ask-side limit order to make bid side appear scarce, then places $1M bid-side order to farm the 1.5× scarcity boost.

Defense: Carol would need to keep the $5M ask order resting for an hour to affect the median. If she cancels after a few minutes, the median doesn't change and she earns no boost. If she keeps it for an hour, she's actually providing real liquidity on the ask side (which is useful).

4. Merit caps (anti-whale)

Merit grows sub-linearly above a threshold to prevent one whale from capturing the entire pot.

Formula:

Effective Merit=Q+αmax(0,QQ)\text{Effective Merit} = Q^* + \alpha \cdot \max(0, Q - Q^*)

where QQ^* = $1M (threshold) and α=0.5\alpha = 0.5 (diminishing weight).

Example: Dave deposits $10M in tight LP positions.

  • First $1M: earns 1.0× merit = 1.0M merit units
  • Next $9M: earns 0.5× merit = 4.5M merit units
  • Total: 5.5M merit units instead of 10M

Dave still earns more than anyone else (he committed the most capital), but he can't monopolize 50% of the pot with 50% of TVL. Smaller participants earn disproportionately more per dollar, encouraging broader distribution.

5. Epoch finality (anti-fraud)

All merit calculations and payouts are published as a Merkle root + CSV at epoch end. Anyone can:

  • Download the CSV with all addresses, positions, timestamps, merit calculations
  • Re-run the merit formulas from on-chain data
  • Verify that their own payout matches the formula
  • Challenge incorrect payouts with fraud proofs

Why this matters: Even if the merit computation is off-chain (Option A), the rules are deterministic and auditable. A malicious indexer can't hide incorrect payouts—anyone running a full node can detect fraud and submit a challenge before claims are processed.


Collection performance: the independent layer

One yield source hasn't been mentioned yet because it's completely independent of merit and pots: collection appreciation.

If you hold RWA tokens (either directly or as 50% of an LP position), you benefit from the underlying assets appreciating in value. This has nothing to do with how you hold them—passive wallet, LP position, received from limit order fill—the tokens appreciate regardless.

Example: A luxury watch collection appreciates 8% per year due to brand scarcity and demand.

  • Tina (tight LP): Earns 36.7% from merit-based yield + 4% from RWA side appreciating (50% of position is RWA) = 40.7% total
  • Passive holder: Earns 0% from merit + 8% from full RWA exposure = 8% total

Key insight: Collection performance is the reason to hold RWA tokens; merit-based yield is the reason to provide liquidity or place limit orders instead of passively holding. They stack, but they're conceptually separate.

Risk caveat: Collections can also depreciate. If watches fall 10%, you lose 10% regardless of how much merit you earned. Yield mechanisms can't protect against fundamental asset devaluation—that's the core risk of RWA ownership.


Comparison to traditional DeFi yield

How does this stack up against other protocols?

Protocol TypeYield SourcesTypical APYCapital EfficiencyBehavior Incentives
Aave / CompoundLending rates2–5%High (single-sided)None (pro-rata by deposit)
Uniswap V3Trading fees5–30%High (CL ranges)Weak (in-range time only)
CurveFees + token emissions3–12%Medium (wide ranges)Weak (boosted by veCRV lock)
BalancerFees + BAL emissions5–20%Medium (multi-token)Medium (custom weights)
Tokenized TreasuriesRWA yield (T-bills, bonds)4–5%High (single-sided)None (hold to earn)
Rarity (passive holder)Collection appreciation only−5% to +15%N/ANone
Rarity (limit orders)Base stable + LO merit3–6%High (single-sided, no IL)Strong (distance, scarcity)
Rarity (wide LP)Stable + fees + surplus6–12%High (CL, but wide)Medium (in-range time)
Rarity (tight LP)Stable + fees + surplus + RC10–18%Highest (CL, tight, active)Very strong (width, center)

Key advantages:

  1. Stacking without mixing bases: Earn from multiple pots (stable, fees, surplus) but each pot pays dollars according to clear rules, not "APY addition"
  2. Behavior granularity: Not just "in range vs. out of range"—tight vs. wide, fast vs. slow, close vs. far
  3. Volume independence: Stablecoin pot provides a floor when fee pot shrinks
  4. No token emissions: All yield comes from productive activity (fees, RWA yield, mint premiums) or real appreciation, not inflationary tokens

Key risks:

  1. Complexity: Merit formulas and pot allocations require off-chain computation (or expensive on-chain math)
  2. Volatility: Fee pot can swing 80% month-to-month; total APY is highly variable
  3. RWA risk: Collection depreciation wipes out yield gains (luxury watches don't always go up)
  4. Gaming: Merit weights need constant tuning to prevent edge-case exploits

Implementation roadmap

V1: Basic pots and merit (launch target)

Scope:

  • Stable pot: Base + variable split, simple width kernel for LPs, distance kernel for LOs
  • Fee pot: Distributed by CL AMM in-range time (native Uniswap V4 mechanics)
  • Surplus pot: Distributed by LP stable merit (same as variable stable)
  • Off-chain merit compute: Indexer publishes Merkle root + CSV, claims via proofs
  • Static λ\lambda: Fixed 60/40 split (LP/LO) for variable stable slice

Goal: Prove the model works, collect 3–6 months of data, validate that behavior shifts toward tighter/closer positions.

V2: Dynamic allocation and recenter bounties

Scope:

  • Auto-tuned λ\lambda: PID controller adjusts LP/LO split based on spread and depth metrics
  • Recenter bounty pot: Event-driven payouts for fast re-positioning after mark-to-truth auctions
  • Scarcity weights: Real-time bid/ask depth ratio tracking with smoothing
  • Stickiness ramps: Penalize positions moved within last 2–24 hours

Goal: Optimize capital allocation dynamically, prove that recenter bounties accelerate liquidity migration.

V3: On-chain merit and maturation

Scope:

  • Hybrid merit: Stream tempMerit on-chain, require maturation to Merit over 24–48 hours
  • Composable merit: Merit tokens usable for governance, staking, cross-protocol integrations
  • Advanced kernels: Half-life decays, multi-dimensional weights (width + center + recency)
  • ZK proofs: Replace Merkle trees with ZK-SNARKs for cheaper verification

Goal: Reduce trust assumptions, enable composability, scale to 100+ collections with millions in TVL.


Why this matters

Most DeFi protocols treat yield as an afterthought. You provide liquidity, you earn fees—end of story. Maybe there's a governance token on top, maybe not. But there's no connection between how you provide liquidity and what you earn. Wide range, tight range, centered, off-center—doesn't matter. You get paid pro-rata by TVL.

This creates markets that are economically efficient (capital flows to where fees are highest) but microstructurally poor (spreads stay wide because nobody's incentivized to tighten them, liquidity drifts away from fair value because recentering costs gas).

Merit-based yield flips this. The protocol says: "Here's $500k we collected this month from fees, stablecoin yield, and mint surplus. We're going to pay it to participants who did the most to make markets healthy—tight ranges, close orders, fast recenters. Everyone else gets scraps."

Suddenly, rational actors don't just ask "where are fees highest?" They ask "where can I earn the most merit per dollar?" And the answer is: provide tight liquidity, keep it centered, move fast when prices shift. Which are exactly the behaviors that create better markets.

The result: Tighter spreads. Deeper order books. Faster convergence to fair value after auctions. Not because the protocol mandated it, but because economic incentives naturally aligned with market quality.

And by keeping the accounting honest—paying dollars from pots, not promising APYs—the protocol can never over-promise. If fees drop 80%, payouts drop 80%. If a new collection generates huge minting surplus, participants in that collection benefit directly. Transparent, accountable, and sustainable.


Core mechanisms

Integration points

Design rationale


Math Review Required

TODO: All calculations in the worked examples need comprehensive review and validation before V1 launch.

Specific items to verify:

  • Per-unit merit rates and payout calculations across all participant examples
  • Volume/TVL assumptions (currently 8× annual) align with actual RWA market data
  • Merit formula parameters (width weights, distance weights, scarcity multipliers) produce intended incentive gradients
  • Pot allocation logic (λ\lambda split between LP/LO) balances correctly
  • Edge cases: what happens with very low merit totals, zero-volume epochs, or missing pots
  • Sanity check: do payouts from each pot sum exactly to pot total across all participants
  • Cross-reference with actual treasury yields, Uniswap V4 fee structures, and comparable RWA protocols

This page was recently updated with realistic volume assumptions (replacing unrealistic crypto-native velocity with RWA-appropriate velocity). All downstream calculations should be audited by a second reviewer before implementation.