Skip to content
CCToolsPost
Academy
Article · Beginner

How APR is Calculated on a Canton DEX

Where the percent comes from, why the same pool can show different numbers on different sites, and how to verify.

CCTools
Curated by the CCTools team·Published May 20, 2026

Open /markets/defi and you'll see an APR next to most pools. Some are high, some are close to zero, and some show no figure at all because the data needed to compute them is missing. What's actually being measured, and how reliable is it?

APR (annual percentage rate) is a simple annualized rate; APY (annual percentage yield) also counts compounding, earnings that go on to earn in turn. This article works in APR, and so does the pools table on /markets/defi; where that page shows lending rates, they are each lending venue's own APY, for supply and for borrowing.

In a pool that adds each fee to its reserves, as constant-product pools in the style of Uniswap v2 do, fees compound on their own while the LP stays in; in a pool that holds fees apart for the LP to collect, as Uniswap v3 does, they compound only if the LP reinvests them. APR leaves that compounding out.

The APRs CCTools computes from each protocol's public data count one thing: trading fees. Every swap pays a fee, and the pool's rules decide how much of it goes to the liquidity providers (LPs). APR takes the fees earned over a period, annualizes them and divides by the size of the pool. This article shows the math, explains why the same pool can show different numbers on different sites, and gives quick checks for whether a displayed APR matches the pool's recent trading.

01The APR Formula

Simple formula: APR = (fees_over_period * annualization_factor) / TVL * 100

Pick a window (24h, 7d, 30d), annualize it (multiply by 365 / days), divide by pool size (TVL, the total value locked in the pool), get a percent.

Worked example with hypothetical numbers: a pool holding $355,000 pays its LPs $1,164 in fees over 30 days. APR = ($1,164 * 12.17) / $355,000 * 100 = 3.99%, where 12.17 is 365 / 30.

Different windows give different numbers. The same pool over 7d might show 7.5% if that week had a volume spike, or 1.5% if that week was unusually quiet. On /markets/defi, the window depends on the data each venue publishes. On 15 Oct 2026, Tradecraft APRs were computed from the last 14 days of volume (or from Tradecraft's own 24-hour figure where a pool had no 14-day volume reading), Send Pool Party APRs from the fees Send reports for the last 30 days, and a pool whose venue published no volume or fee history showed no APR. Other sites may annualize a different window, such as the last 24 hours. Always check the window before comparing across sites.

02LP Fees vs Total Fees

A 0.30% pool fee doesn't necessarily mean LPs see 0.30% of volume. Many AMM designs split the fee between LPs and the protocol or operator. The split varies by design.

Some protocols publish the split. Tradecraft lists an LP fee and an operator fee for each pool. On 15 Oct 2026, every Tradecraft pool had a base fee of 0.3% of the swap, of which 0.2% went to the LPs and 0.1% to the operator, and trades at or below a size cap that Tradecraft adjusts over time (US$1,000 that day) paid a reduced fee. CCTools computes Tradecraft APRs from the LP fee alone. Send Pool Party's public data reports each pool's fees as one total, with no split, and CCTools annualizes that total: if part of it goes to the operator, the APR shown for a Pool Party pool is an upper bound for what LPs receive.

A pool that quotes 'fee 0.30%, APR 8%' from total fees would deliver 4% to LPs if the operator takes half. When reading a pool's APR, look for the protocol's published fee split. If none is published, treat an APR computed from total fees as an upper bound for LPs.

03Why Window Choice Matters

Imagine a pool with $100k TVL. One day this month, somebody dumped $1M of volume through it. That day produced $3k in fees. The other 29 days produced $50/day.

24h APR (last day): about 18% on a quiet day ($50 * 365 / $100,000) or 1,095% on the spike day ($3,000 * 365 / $100,000). Wildly variable.

7d APR: about 172% if the spike is in the window ($3,300 * 365 / 7 / $100,000), about 18% if it isn't. Variable but smoother.

30d APR: averages everything. About 54% in this case ($4,450 * 365 / 30 / $100,000). Smoothest, but the one spike day still lifts it far above the 18% the quiet days alone would give.

A short window reacts quickly to recent activity. A long window smooths out single days, but an unusual day stays in the figure until the window moves past it. A 24h figure on a small pool can swing widely from one day to the next.

04How to Verify an APR Yourself

If you want to sanity-check a published APR, three quick checks:

Volume / TVL. Recent daily volume / TVL * the LPs' fee rate * 365 is roughly the APR at the pool's recent pace. If that is far below the displayed APR, the displayed figure reflects a busier period or a fee larger than the LPs' share.

Fee rate * turnover. Work backward: APR is about LP fee rate * annual volume / TVL. If LPs receive the full 0.30% fee and you see 8% APR, implied turnover is 8% / 0.30% = 26.7x TVL a year: about 7.3% of TVL traded per day, or about 51% per week. Compare that with the volume the pool actually shows.

Compare across windows. If the 24h and 7d APRs are close, recent trading has been steady. If they differ widely, the last day was unusual for that pool, and a 24h figure reflects that one day only.

For a Canton pool specifically, /markets/defi shows each pool's TVL, trading volume and fee APR side by side. A Tradecraft APR there is 14-day volume * the LPs' fee rate * 365 / 14 / TVL * 100, where the LPs' fee rate is the LP fee Tradecraft publishes, not the full swap fee in the Fee column. That figure counts every trade at the base LP fee. Tradecraft's documentation says LPs earn a share of every swap fee paid in their pool, and trades at or below its size cap pay a reduced fee, so for a pool whose volume is mostly small trades the figure can be above what the LPs received. Send Pool Party APRs come from 30-day fees, so the check is only approximate there.

05What Makes an APR Decay

APR is a function of (1) volume, (2) TVL, (3) fee rate. Volume and TVL move on their own:

TVL grows. More TVL with the same volume = lower APR, because the same fees are shared across more liquidity.

Volume falls. If the source of a pool's volume goes offline, the pool's fee income falls at once, while a trailing APR keeps showing the busier days until its window moves past them. A pool whose volume comes from a single trading bot or a single arbitrage route can lose almost all of its fee income this way.

The fee rate is part of the pool's configuration, so it changes when the venue changes it. Some venues also charge a reduced fee on small trades: Tradecraft does so for trades at or below a size cap that it updates automatically as conditions change, so the average fee per trade on its pools can move with the mix of trade sizes.

Launch periods are a special case: right after a launch or an incentive event, both TVL and volume can be unusual, so an APR measured over that period describes that period, not the weeks that follow.

Further reading