> ## Documentation Index
> Fetch the complete documentation index at: https://docs.turtle.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Choosing a Reward Model

> Pick the stream type that fits your incentive goal, with plain examples for each.

The five reward models all run on the same Streams infrastructure: an indexer tracks the target token balance of every wallet, a reward updater computes accrued rewards about twice a day, and a Merkle root is committed on-chain so LPs can claim. What changes between models is how rewards accrue. Pick by your goal, not by the math.

## Quick chooser

| Your goal                                           | Model           |
| --------------------------------------------------- | --------------- |
| Predictable cost per unit of TVL                    | Fixed Rate      |
| Advertise a headline APR                            | Fixed APR       |
| Fixed spend per day regardless of TVL               | Daily Budget    |
| Manual or retroactive distribution                  | Airdrop         |
| Top up to a target yield, or double the vault yield | Yield Match     |
| Sticky liquidity over a defined period of time      | Deposit Vesting |

<Info>
  Every model can pay either a token or points, and every model tracks a target token whose balance measures each wallet TVL contribution. The reward source and the target token are independent of the model you pick. See [Before you start](/partner-products/streams/before-you-start) and the [glossary](/resources/glossary) for the terms used here.
</Info>

## Fixed Rate

You set a flat number of reward tokens per 1,000 USD of TVL per day. Each wallet earns in direct proportion to how much it holds, and your total emission rises and falls with the pool TVL. Cost per unit of TVL stays constant no matter how large the pool gets.

**Best for:** a predictable, fixed cost for each dollar of liquidity you attract.

**Example:** you pay 2 reward tokens per 1,000 USD per day. A wallet holding 50,000 USD of the target token earns 100 tokens a day. If the pool grows, your daily spend grows with it, but the rate each LP sees never changes.

Decision parameter: `tokensPerUSD`. See [Create a stream (API)](/sdk/streams/create-stream) for the exact format and base-units rules.

## Fixed APR

You set an annualized percentage rate, for example 10 percent APR. At each snapshot, Turtle converts that APR into a per-day token figure using current prices, so the headline rate holds even as the token price moves. This is the model to use when you want LPs to see a clean APR number.

**Best for:** advertising a headline APR in your marketing and on listings.

**Example:** you set 10 percent APR. A wallet holding 50,000 USD of TVL earns roughly 5,000 USD worth of reward tokens over a year, paid out continuously as the stream runs. The token amount per day shifts with price so the percentage stays at 10.

Decision parameter: `apr`. See [Create a stream (API)](/sdk/streams/create-stream) for the exact format.

## Daily Budget

You fix a daily token budget and it is split pro-rata across all participating LPs. The pool total stays flat, so per-user rewards fall as more TVL joins and rise if TVL leaves. Your spend is capped per day regardless of how much liquidity shows up.

**Best for:** a fixed daily spend where you want to cap total cost, not cost per LP.

**Example:** you budget 1,000 tokens a day. With 10 LPs holding equal amounts, each earns 100 tokens a day. If 10 more equal LPs join, the same 1,000 tokens now split 20 ways, so each earns 50.

<Note>
  The total emission is computed automatically from the daily budget times the duration, so you do not specify a total amount for this type.
</Note>

Decision parameter: `tokensPerDay`. See [Create a stream (API)](/sdk/streams/create-stream) for the exact format.

## Airdrop

A manual or retroactive distribution with no automatic reward computation. You decide the allocations yourself and upload them through a dedicated snapshot endpoint. Use it to reward past activity or to run a one-off distribution on your own terms.

**Best for:** setting allocations by hand, rewarding retroactively, or running a one-time payout.

**Example:** you decide to reward 500 early depositors with a fixed grant each, based on a snapshot you took last month. You upload that allocation list and LPs claim against it. There is no continuous accrual.

Allocations are uploaded through a dedicated snapshot endpoint rather than computed from a rate. See [Create a stream (API)](/sdk/streams/create-stream) and the [Streams API overview](/sdk/streams/overview) for how to submit them.

## Yield Match

A dynamic rate derived from the vault performance. It runs in one of two modes, set at creation and locked for the life of the stream.

<Tabs>
  <Tab title="Gap-fill mode">
    You set a `targetApy`, and the stream pays the difference between the vault native APY and your target. If the vault yields 7 percent and your target is 12 percent, the stream pays the 5 percent gap. If the vault already meets or exceeds the target, the stream pays nothing.

    **Best for:** guaranteeing depositors a minimum total yield without overpaying when the vault is already performing.
  </Tab>

  <Tab title="Mirror mode">
    You leave `targetApy` unset and optionally set an `apyOffset`. The stream mirrors the vault APY in reward tokens, shifted by the offset. With no offset, depositors earn roughly double: the native yield plus a matching reward rate on top.

    **Best for:** amplifying whatever the vault is already earning rather than guaranteeing a floor.
  </Tab>
</Tabs>

<Warning>
  The mode is set by whether you provide `targetApy`. Gap-fill uses a `targetApy`; Mirror leaves it unset. The mode is locked at creation and cannot be changed later, so decide before you create the stream.
</Warning>

Decision parameter: `targetApy` for Gap-fill mode, or leave it unset for Mirror mode (with an optional `apyOffset`). Other optional knobs are `targetApyTokenId`, `vaultApyLookbackDays` (default 30), and `dailyUSDRewardsCap`. See [Create a stream (API)](/sdk/streams/create-stream) for each.

## Deposit Vesting

Define a max reward budget, vesting period, and rate of distribution to reward LPs who hold a position over time. Eithdrawals will forfeit all rewards. Vesting can be defined using FIFO or LIFO to determine reward cliff dates across deposits.

**Best for:** incentivizing sticky liquidity over vesting period.

**Example:** You want to distribute 10% APR, but give a bonus 1% APR every month for 5 months to users who hold longer than 3 months. You launch 6 streams (one fixed 10%, and the other 5 Deposit Vesting streams increase the APR by 1% every month for 5 months).

## Boost your campaign

Boost plugins run between the base reward computation and the final Merkle tree, so you can layer them on top of any model. Six are live today:

* **Turtle User:** boost wallets registered as Turtle members.
* **X (Twitter):** boost wallets with a verified X account link.
* **Telegram:** boost wallets with a verified Telegram link.
* **Whitelist:** restrict eligibility to a defined set of wallets.
* **Blacklist:** exclude specific wallets.
* **Forwarder:** forward rewards earned by a vault address to that vault underlying LPs (for example a Euler Earn Vault).

Boosts are configured through the `adapters` array. See [Create a stream (API)](/sdk/streams/create-stream) for the full plugin list and parameters.
