TradingUpdated

Price to fees across DeFi: what the market pays per dollar of protocol fees

Circulating market cap divided by annualized fees, for every protocol that earns real fees and has a listed token. The number to read is not the ratio but the column beside it: the same multiple can be ordinary in one category and low in another, so each row is compared to the median of its own category rather than to the market.

TL;DR. As of , Securitize posts the lowest P/F ratio at 0.297x (latest value) across 61 ranked protocols. Source: OpenChainBench, https://openchainbench.com/benchmarks/protocol-pf-ratio.

Read this carefully

A screen, not a verdict, and not advice. P/F = circulating market cap (CoinGecko) / annualized fees (DeFiLlama, trailing 30d x 365/30) summed across every fee adapter that accrues to the token. Fees include the share paid to liquidity providers. A low multiple can mean the market expects fees to fall, that the fees were incentivised, or that the token has no claim on them. Read it with the float, the category median and the monthly fee trend, then do your own work.

Price to fees is the on-chain cousin of a price to sales multiple: market cap on top, a year of fees at the bottom. Published on its own it invites a false comparison, because the multiple a category trades at is itself a fact about the category. The category medians published beside the board span more than an order of magnitude, so the same multiple is high in one column of the market and low in another. Every row here therefore carries its own category median next to it, and the ratio of the two is what says whether a protocol is priced low against the protocols it actually competes with. Float sits beside both, because a multiple on a token with most of its supply unvested is a multiple on a market cap that does not yet exist.

Methodology

The protocol-valuation harness joins three DeFiLlama reads and one from CoinGecko, hourly. /overview/fees gives one row per fee adapter with its trailing 30d, prior 30d and 1y totals; /protocols gives the child protocols, some carrying a CoinGecko id; /config gives the 849 parent protocols, 451 of them with one. The third read is what makes the board possible: a fee adapter is per product (GMX V1 Perps, GMX V2 Perps, GMX Solana) and the token belongs to the parent, which has no row in /protocols at all. Resolving only through the adapter's own row finds 90 tokens; adding the parent table finds 259. Adapters that resolve to the same token are summed rather than ranked apart, because one market cap divided by the fees of one product would price the token several times over. CoinGecko /coins/markets supplies market cap, fully diluted valuation, circulating and total supply, and the 30-day price change. The same /overview/fees read with dataType=dailyRevenue gives revenue per adapter, /protocols gives TVL per row, and CoinGecko /market_chart gives 91 days of daily market cap and price per token, whose ratio is the circulating supply each day. Gauges are protocol_pf_ratio, protocol_pf_fdv_ratio, protocol_float_pct, protocol_fees_30d_usd, protocol_fee_growth_30d_pct, protocol_price_change_30d_pct, protocol_category_pf_median, protocol_pf_vs_category_ratio, protocol_diverging, protocol_revenue_30d_usd, protocol_ps_ratio, protocol_tvl_usd, protocol_supply_change_30d_pct and protocol_supply_change_90d_pct.

  • Board membership. A token whose fee adapter is knowably incomplete (protocol_fees_incomplete = 1: the adapter reports $0 over 30 days after a year of fees, so the ratio would be built on a fraction of the protocol) is metered but not listed; on 2026-09-25 that is Drift, Bluefin and DoubleZero. The peer median of each category is a live gauge (protocol_category_pf_median), read on the vs-category tab, never a number typed here.
  • P/F = circulating market cap / annualized fees, where annualized fees are the trailing 30 day sum x 365/30. Same cut as benches 234 and 265, so the three valuation boards stay comparable.
  • Fees are the total DeFiLlama reports for the protocols behind the token, summed across every adapter: Uniswap V2, V3 and V4 are one row, GMX's five products are one row. Ranking them apart would divide one market cap by a fraction of its own revenue. Total, not revenue: most of a DEX's fees go to liquidity providers and most of a staking protocol's to stakers, so this is what users paid, not what the token earns.
  • The token is resolved through DeFiLlama's own links, not by name matching: the adapter's defillamaId joins to /protocols, and when that row carries no CoinGecko id the parent protocol from /config does.
  • Category: the one carrying most of the token's fees, not the one its first-listed adapter sits in. Drift files a small spot product under Dexs and earns most of its fees on perps, so taking the first would compare it to liquid staking protocols and drag their median with it.
  • Peer comparison: each row carries the median P/F of its category, and protocol_pf_vs_category_ratio is the row divided by that median. A category needs at least 5 tokens before a median is published; a row in a smaller category shows its ratio with no comparison rather than a comparison against one or two protocols.
  • Market cap floor: 5 million USD of circulating market cap. Below it the ratio is not a valuation: a token worth a few hundred thousand dollars against millions of annual fees prints a multiple near zero and would lead an ascending board as the cheapest token in DeFi, when it is an abandoned or unlisted one. Fifteen of the top twenty rows sat under 10 million before this floor (2026-09-25).
  • Float floor: a token with less than 10 percent of supply circulating is not ranked. Its market cap is a fraction of what the token will be, so the ratio reads near zero and would lead an ascending board.
  • Fee floor: 100,000 USD of trailing 30 day fees, applied to the token after its adapters are summed rather than to each adapter. A token whose products only clear the floor together belongs on the board, and a multi-product token must not lose its smaller products out of its own denominator.
  • The board shows the largest fee earners; a row whose category has fewer than 5 tokens carries its ratio with no peer comparison. The harness publishes every row that clears the floors, so the cut is editorial and the full set is queryable.
  • A protocol whose fee history is shorter than the windows is not ranked: when every fee its adapters ever reported falls inside the trailing 30 days (protocol_fees_window_short = 1), x 365/30 would overstate the run rate, so the row is metered with protocol_fees_incomplete = 1 and leaves the board and the median until a full window exists.
  • Fees and revenue are two views of one business, so they move together. When one grows half again as much as the other over the same month, what changed is what is being counted: protocol_fee_basis_shift marks the row and its fee trend is withheld for a month afterwards, because the seam sits in the prior window that long. DefiLlama rewrote the Convex adapter on 2026-08-18 without backfilling, printing 92 percent on a business that grew 15.
  • The month-over-month trend needs a full prior month: it publishes only when the year total reaches past both windows, so a 40-day-old adapter is ranked with no trend rather than with growth measured against ten days.
  • A token with a fee adapter reporting nothing over 30 days after real fees over the year has a published total short of its revenue, and is excluded from the board, from its category median and from the screen. DeFiLlama's Drift Trade adapter is in that state: it reports $0 after $11.1M over the year, so only Drift's $1.2M staking product reaches the token. protocol_fees_incomplete and protocol_silent_adapter_fees_1y_usd publish the flag and the size of the gap.
  • protocol_diverging is 1 when three things hold at once: fees grew month over month, the token fell over 30 days, and the P/F sits below the category median. The third clause is what stops it naming every protocol having a bad month.
  • The /capital hub screens the same rows harder, four clauses instead of three: fee growth above 20% (the cohort median was +21% on 2026-09-29, so at or under it a row grew no faster than the median protocol), a token move beyond 10% (20 of the 67 ranked tokens moved less inside 30 days), the P/F on the right side of the category median, and at least 5 ranked protocols in the category, since a median over 2 compares the token with one other. Every clause is checkable from that page's columns.
  • Revenue 30d (protocol_revenue_30d_usd): the share of fees the protocol keeps, per each adapter's own definition on DeFiLlama (/overview/fees with dataType=dailyRevenue), summed over the adapters the fees come from. Absent when no adapter behind the token publishes a revenue series: that is unknown, not zero. Published as 0 when the adapters have one and report none.
  • protocol_revenue_incomplete is 1 when the revenue total is knowably short: the fee total itself is short, a revenue adapter reports nothing over 30 days after real revenue over the year, or a product earning fees this month has no revenue series while its siblings do (protocol_revenue_missing_adapters counts them). Revenue is published with the flag; the P/S built on it is not, because a multiple on a fraction of the revenue reads higher than it is.
  • P/S (protocol_ps_ratio) = circulating market cap / annualized revenue, revenue being the trailing 30 day sum x 365/30. The same multiple as P/F on what the token's protocol keeps rather than on what its users paid. Absent when revenue is missing, zero or knowably short, so no row reads as infinitely priced, as free, or as pricier than it is.
  • TVL (protocol_tvl_usd): DeFiLlama /protocols tvl summed over every row that resolves to the token by the same rule as the fee adapters, its own CoinGecko id first, else its parent's, so Aave V2, V3 and Horizon count once each under AAVE. Absent when no row carries a TVL: a launchpad or a perp DEX settling on its own chain has nothing locked, and that is not a zero.
  • Supply 30d and 90d (protocol_supply_change_30d_pct, protocol_supply_change_90d_pct): circulating supply now against 30 and 90 days ago, in percent. Source: CoinGecko /market_chart, 91 days of daily market cap and price per token; their ratio is the circulating supply CoinGecko held that day. Absent while the series is shorter than the window. One CoinGecko call per token per UTC day, cached in memory.
  • Supply change is realized dilution, not an unlock schedule. A positive figure is supply that reached the float over the window (unlocks, emissions), a negative one a burn. A cliff next month is invisible here until it lands, and a token that unlocked last week shows it in the 30 day column before the 90 day one catches up.
  • Cadence: hourly. DeFiLlama's fee series is daily and CoinGecko's free tier is rate limited, so a faster poll would spend requests re-reading numbers that have not moved. p50, p90, p99 and the mean read the same gauge and are equal by construction.
  • The cohort is rebuilt from upstream every poll and the per-protocol series are reset with it, so a token that is delisted or drops below a floor loses its row rather than carrying a stale valuation forward.

Results: 61 protocols ranked by P/F ratio (latest value)

Price to fees across DeFi: what the market pays per dollar of protocol fees: P/F ratio per protocol (latest value).
№ProtocolsP/Fvs categoryMarket capFees 30dP/SRevenue 30dTVLSupply 30dSuccess
1SecuritizeRWA0.297x0.160x$39.51M$10.95M1.259x$2.58M—21.5%100.00% (n=1440)
2SanctumLiquid Staking0.314x0.148x$31.29M$8.20M8.85x$290.6K$1.48B-20.1%100.00% (n=1440)
3LidoLiquid Staking0.322x0.152x$217.08M$55.39M6.28x$2.84M$17.32B0%100.00% (n=1440)
4DolomiteLending0.469x0.147x$9.72M$1.70M2.34x$341.0K$130.49M0.72%100.00% (n=1440)
5MeteoraDexs0.515x0.141x$144.28M$23.03M4.22x$2.81M$214.94M1.26%100.00% (n=1440)
6CentrifugeRWA0.651x0.352x$26.09M$3.30M7.42x$289.1K—0%100.00% (n=1440)
7StonkFunLaunchpad0.656x0.219x$29.66M$3.72M0.915x$2.67M—-2.39%100.00% (n=1440)
8PonsLaunchpad0.710x0.237x$75.79M$8.77M4.74x$1.31M—-0.83%100.00% (n=1440)
9Graphite ProtocolLaunchpad0.735x0.246x$9.60M$1.07M0.735x$1.07M—0.044%100.00% (n=1440)
10BenqiLiquid Staking0.792x0.373x$10.77M$1.12M6.89x$128.5K$255.14M-0.087%100.00% (n=1440)
11PumpDexs0.816x0.224x$1.31B$132.43M2.25x$47.99M$250.15M-1.01%100.00% (n=1440)
12OrcaDexs0.939x0.258x$68.24M$5.97M7.23x$776.1K$260.18M0.0076%100.00% (n=1440)
13Maple FinanceLending0.951x0.298x$113.15M$9.78M6.22x$1.50M$2.15B0%100.00% (n=1440)
14ChainflipDexs0.968x0.266x$35.75M$3.03M5.33x$551.0K$14.51M-1.76%100.00% (n=1440)
15NAVI ProtocolLending1.196x0.375x$6.36M$437.3K3.79x$138.1K$130.14M0.00000%100.00% (n=1440)
16ReRWA1.278x0.691x$34.88M$2.24M1458.8x$1,965.27$485.50M0.014%100.00% (n=1440)
17GMXDerivatives1.376x0.252x$75.44M$4.51M1.733x$3.58M$208.93M2.57%100.00% (n=1440)
18stake.linkLiquid Staking1.382x0.651x$7.55M$449.2K8.35x$74.4K$66.82M-0.55%100.00% (n=1440)
19StaderLiquid Staking1.464x0.690x$6.56M$368.3K24.7x$21.8K$139.60M4.81%100.00% (n=1440)
20USD AIRWA1.557x0.841x$51.54M$2.72M15.6x$272.1K$157.27M0%100.00% (n=1440)
21Rhea FinanceDexs1.567x0.430x$13.04M$684.2K6.47x$165.7K$193.98M0.38%100.00% (n=1440)
22CoWSwapDEX Aggregator1.643x—$50.15M$2.51M2.68x$1.54M—0%100.00% (n=1440)
23Ekubo ProtocolDexs1.768x0.485x$6.87M$319.3K8.21x$68.7K$21.99M0%100.00% (n=1440)
24Lista DAOLiquid Staking1.971x0.619x$28.38M$1.18M5.10x$457.1K$1.47B0%100.00% (n=1440)
25Frax FinanceRWA2.14x1.159x$19.40M$743.6K38.3x$41.6K$234.06M-0.053%100.00% (n=1440)
26RaydiumDexs2.27x0.623x$355.10M$12.87M14.2x$2.05M$809.35M0.0067%100.00% (n=1440)
27ether.fiLiquid Staking2.78x1.310x$482.07M$14.25M10.1x$3.92M$4.18B3.44%100.00% (n=1440)
28VenusLending2.79x0.875x$38.04M$1.12M11.7x$267.8K$953.97M0.23%100.00% (n=1440)
29EulerLending2.84x0.890x$18.57M$538.0K564.8x$2,701.91$238.90M0.017%100.00% (n=1440)
30KyberSwapDEX Aggregator2.98x—$19.69M$542.7K2.98x$542.7K$1.07M-0.0039%100.00% (n=1440)
31KaminoLending3.04x0.953x$167.72M$4.54M23.2x$594.6K$1.19B3.98%100.00% (n=1440)
32AaveLending3.09x0.968x$1.52B$40.62M23.3x$5.37M$14.88B0.068%100.00% (n=1440)
33UniswapDexs3.22x0.885x$2.89B$73.76M29.3x$8.11M$3.09B0.057%100.00% (n=1440)
34MorphoLending3.29x1.032x$1.22B$30.49M—$0$10.20B0.69%100.00% (n=1440)
35CetusDexs3.32x0.912x$15.52M$384.2K16.6x$76.8K$21.73M0.90%100.00% (n=1440)
36JupiterDerivatives3.34x0.611x$800.50M$19.71M10.5x$6.26M$1.91B0.096%100.00% (n=1440)
37Gains NetworkDerivatives3.47x0.634x$7.55M$179.1K4.77x$130.3K$6.15M0.69%100.00% (n=1440)
38MoonwellLending3.48x1.091x$6.15M$145.4K18.4x$27.4K$13.40M-0.00000%100.00% (n=1440)
39FluidLending3.63x1.138x$147.12M$3.33M16.8x$721.8K$940.35M0%100.00% (n=1440)
40THORChain DEXDexs3.64x1.000x$164.51M$3.71M12.6x$1.07M$52.73M0.18%100.00% (n=1440)
41KinetiqLiquid Staking3.65x1.719x$70.60M$1.59M25.7x$226.0K$718.80M3.12%100.00% (n=1440)
42Curve FinanceDexs4.02x1.103x$314.50M$6.43M9.80x$2.64M$1.20B0.77%100.00% (n=1440)
43edgeXDerivatives4.16x0.760x$97.13M$1.92M—$1.39M$58.24M0%100.00% (n=1440)
44PancakeSwapDexs4.20x1.153x$536.97M$10.51M12.3x$3.60M$1.98B8.27%100.00% (n=1440)
45Rocket PoolLiquid Staking4.84x2.28x$26.60M$451.8K—$0$849.20M0.37%100.00% (n=1440)
46SushiDexs4.85x1.332x$42.16M$714.3K11.4x$302.7K$81.46M0.0016%100.00% (n=1440)
47BONK.funLaunchpad5.25x1.754x$197.39M$3.09M9.85x$1.65M$5.56M0.0025%100.00% (n=1440)
48Compound FinanceLending5.35x1.679x$177.65M$2.73M35.4x$412.9K$1.13B0%100.00% (n=1440)
49ApeX ProtocolDerivatives5.47x1.000x$20.65M$310.4K10.9x$155.2K$28.41M1.81%100.00% (n=1440)
50Convex FinanceYield6.06x0.654x$133.22M$1.81M18.3x$598.6K$435.49M0%100.00% (n=1440)
51LighterDerivatives8.78x1.606x$701.66M$6.57M10.6x$5.43M$786.30M-0.00018%100.00% (n=1440)
52DefinitiveDEX Aggregator9.57x—$19.33M$166.0K9.57x$166.0K—1.02%100.00% (n=1440)
53World Liberty FinancialLending11.2x3.52x$1.46B$10.70M11.2x$10.70M—0.0065%100.00% (n=1440)
54HyperliquidDerivatives13.6x2.49x$14.97B$90.51M17.7x$69.33M$7.50B6.88%100.00% (n=1440)
55Ondo FinanceRWA14.8x7.98x$1.42B$7.92M—$0—0%100.00% (n=1440)
56SUNDexs15.8x4.35x$282.77M$1.47M128.2x$181.2K$539.27M-0.16%100.00% (n=1440)
57o1.exchangeLaunchpad23.4x7.81x$79.33M$279.1K37.6x$173.3K—0%100.00% (n=1440)
58AsterDerivatives25.5x4.66x$1.28B$4.13M——$747.52M-5.23%100.00% (n=1440)
59capLending30.8x9.65x$169.80M$453.8K142206.0x$98.14$145.98M0.0089%100.00% (n=1440)
60PendleYield32.9x3.56x$236.52M$590.0K33.3x$583.6K$1.04B0.15%100.00% (n=1440)
61JustLendLending41.3x13.0x$1.14B$2.27M364.7x$257.2K$6.03B-2.08%100.00% (n=1440)

Frequently asked

What does a P/F of 2 mean?

That the market values the token at two years of its current fee run rate. It is the same idea as a price to sales multiple, with annualized protocol fees in place of revenue. Low means the market pays little per dollar of fees; it does not mean the token is underpriced.

Why compare to a category median instead of the whole market?

Because the multiple a category trades at is itself a fact about the category, and it varies by more than an order of magnitude across the board. A single market-wide median would rank the categories and call it a ranking of protocols.

Why is there a market cap floor?

Because a multiple is a price divided by something, and a token worth a few hundred thousand dollars is not a price the market agreed on. Its ratio reads near zero and leads an ascending board, where it looks like the cheapest protocol in DeFi rather than an abandoned token. The floor is 5 million USD of circulating market cap, and a row under it publishes no series at all, the same as the float floor.

Why are tokens with a small float excluded?

Because their market cap is a fraction of what the token will be once supply vests, so the ratio reads near zero and takes the top of an ascending board. The FDV column is the honest view for those tokens, and the float floor is 10 percent of total supply.

Are Uniswap V2, V3 and V4 three rows?

No. They accrue to one token, so their fees are summed into one row. Ranking them apart would divide one market cap by a fraction of its own revenue three times.

Is a diverging row a buy signal?

No. It says fees grew while the token fell and the protocol trades at a lower multiple than its peers, which is a place to start work, not a conclusion. Fees can be incentivised, a token can have no claim on them, and a market can be right to re-rate a protocol down.

How is the token found for each protocol?

Through DeFiLlama's own links rather than by matching names. The fee adapter's defillamaId joins to the protocol catalogue, and where that row carries no CoinGecko id the parent protocol supplies it. A protocol with no listed token has no row here; most of the fee universe is in that state.

Source code github.com/ChainBench/OpenChainBench/tree/main/harnesses/protocol-valuation