Methodology
Every number in the app, how it is calculated and where it comes from · data as of 13 Nov 2026, 09:29 UTCMetrics
| Metric | How it is calculated | Source |
|---|---|---|
| Rewards a day | USD value of rewards the campaign pays per day (Merkl dailyRewards). | Merkl |
| TVL | Value deposited in what the campaign rewards, as Merkl reports it. | Merkl |
| Reward APR | Annualised reward rate (Merkl apr). | Merkl |
| Reward cost per $1M | Rewards per day × 365 ÷ TVL × $1,000,000: what the campaign pays in a year for each $1M deposited. | Merkl |
| Native APR | What the position earns without rewards. Merkl’s nativeApr when it reports one; otherwise the base APY of the matched DefiLlama pool, used only when the match is certain. Values outside 0–10,000% are treated as unknown. | Merkl, DefiLlama |
| Share from rewards | Reward APR ÷ (reward APR + native APR). Shown only when native APR is known; otherwise “not matched”. | Derived |
| Reward-driven spend | Rewards a day on campaigns whose share from rewards is at least 90%. For these campaigns, rewards are at least 90% of the current yield. | Derived |
| Classified spend | Rewards a day on campaigns whose native APR is known, so their share from rewards can be worked out. Venue comparisons use classified spend only. | Derived |
| Venue | Merkl’s protocol: where the rewards are paid, not who funds them. A venue gets a page when it pays at least $10K a day, and is compared with others only when at least 80% of its spend is classified. | Merkl |
| Ending soon | Campaigns whose current reward period ends within 14 days. Many weekly periods are renewed. | Merkl |
| Fees per reward dollar | (7-day volume × fee tier × 52) ÷ (rewards per day × 365). Only for certain matches to trading pools with a fee tier and volume. | DefiLlama, Merkl |
| Stayed after 7 / 30 days | Deposits in the tracked market 7 (or 30) days after the end ÷ deposits on the last day rewards were paid. | Morpho, Aave, DefiLlama |
Rounding
Most pages round: money to at most three significant figures ($670K, $587M, $7.0B), percentages to whole numbers and days to whole days. This page and the campaign page’s APRs keep decimals. Exact values stay in the published data.
Matching campaigns to pools
Merkl and DefiLlama do not share identifiers, so each campaign is matched to a DefiLlama pool by chain, protocol and token: first by token address, then by underlying token, then by symbol. A match counts as certain only when exactly one pool fits and the match used an address or underlying token.
Today 19.6% of all campaigns are matched, and 29.1% of the 477 lending and liquidity campaigns, which are the only kinds that can be matched to a pool.
What stays after rewards end
Merkl stops updating a campaign’s TVL once it ends, so Vantra never uses Merkl numbers after an end. Instead, each live campaign is linked to the market, vault, reserve or pool it rewards, and that target’s deposits are read every day from its own source.
| Target | Source and unit |
|---|---|
| Morpho market, collateral or supply side | Morpho API: collateral or supply assets of the market, in tokens |
| Morpho vault | Morpho API: total assets of the vault, in tokens |
| Aave v3 reserve, supply side | Aave API: size of the reserve, in tokens |
| DefiLlama pool (certain matches only) | DefiLlama: total supply for lending pools (from /lendBorrow), pool TVL for other pools, in USD only. For lending pools DefiLlama’s headline TVL is supply minus borrows, so Vantra uses total supply. |
A campaign counts as ended when it has been missing from Merkl’s live list for two days in a row and Merkl confirms that its last reward period is over. Deposits on the last day rewards were paid are the base. Vantra then reads the target 7 and 30 days after the end, accepting a reading from the day before or after. If there is none, the result is marked missing, never filled in. Token amounts are used where the source gives them, so price moves do not look like deposits leaving.
Some endings are not counted: when the same campaign starts again within 30 days, when another campaign keeps rewarding the same market, and when the campaign was under half of its market’s value. Borrow campaigns, single-token “any market” campaigns, Aave v4 and pools without a certain match are not covered. A median is published once 5 endings have a 30-day result.
Today 70.6% of daily reward spend is on campaigns Vantra can track, and 67.5% on campaigns that can produce a result (a reading today and at least half of their market).
Deposits in the rewarded market or vault, not only the depositors who claimed rewards.
Updates and checks
Data is refreshed once a day. Before anything is published, the run checks that both sources answered, that the number of campaigns has not moved more than 40% since the day before, that values are finite and in range (the run is stopped if more than 5% of rows are invalid), that no more than 10% of campaigns have ended more than a day ago, and that at least 90% of yesterday's pools are still present. If a check fails, the previous day's data stays up and the date above does not change. If more than half of the retention sources cannot be read, the data is still published and those targets simply have no reading that day.
Known limitations
- Trend charts need daily history, which is being collected now.
- Retention measures the whole market or vault, not only the depositors who claimed rewards.
- Merkl and DefiLlama measure TVL differently, so the two can disagree for the same pool.
- Very small campaigns can show extreme APRs. Use the minimum TVL filter.
- Some campaigns have no protocol listed by Merkl; they appear as “Unlisted” and have no venue page.
Use
Research only, not investment advice. Vantra does not take deposits or handle funds.