Search projects, hackathons, sponsors and tech

    ← All projects

    Realized

    Advertised LP APR can’t show a loss. Realized computes fees + IL so you see what you actually made.

    Demo

    About

    Every DEX and dashboard shows liquidity providers an APR made only of fees. Because it has no price term, that number is positive by construction. It can never display a loss, no matter what happened to the people in the pool. Realized adds the missing term. Give it a pool and an entry date and it returns what an LP actually took home (fees + impermanent loss) next to the advertised APR, with the gap named. On live Uniswap v3 and Aerodrome data, 34–62% of pools advertise a profit while LPs go backwards; the tighter the range, the worse the gap. It ships a live site, public API, npm package (@realized-lp/core), and MCP server so agents and dashboards can stop using a metric that is structurally incapable of showing losses. Every number is regenerable end-to-end from The Graph, gated by canaries (stable pairs must show ~0 IL or the run is refused).

    How it's made

    Data comes from The Graph’s historical poolDayData (fee totals in USD are indexer derived aggregates with no pure RPC path). IL is computed client side with the proper concentrated liquidity formula (not the old v2 constant product formula, which understated the defect). Core math lives in the installable package @realized-lp/core. The MCP server and HTTP API expose realized_return, position-level queries (pool + entry date + range), audit_pools, and explain_gap. A full corpus is rebuilt by scripts/build-corpus.js and gated by multiple canaries: stable/stable pairs must show near-zero IL, concentrated IL must converge to the v2 formula at the analytic rate, and price-collapse detection excludes dead tokens that activity/volume gates miss. The same instrument was run unchanged on Aerodrome Slipstream to show the defect is not Uniswap-specific. Frontend is a lightweight static page that recomputes IL in the browser from the live API.