Skip to content
Liquidity Lens

Headroom, LP opportunity discovery

API docs

Part of Poolscope. Ranks the pairs where added liquidity would net the most after the arbitrage benchmark, then sizes the capital per range preset on the production router: routed, direct and arbitrage fees kept apart, with the minimum-viable, most capital-efficient and highest-net capital.

Base URL https://llens.abanchev.com/api/v1. Authentication, deadlines, metering and errors are on Getting started. See the Headroom live demo.

Example values are illustrative. Token addresses are real Base contracts; amounts are raw integer units as decimal strings.

GET/api/v1/ext/market/lp-opportunities

Ranked LP opportunities

Pairs ranked by the projected incremental net LP income per day of a full-range capital scenario, with the routed, direct and arbitrage volume, each fee component, the competitors' F/LVR, the target pool and confidence. Pairs below a minimum of daily fees are left out.

Cost
100 CU
Headers
Send your key in x-api-key.
QueryRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
tokennoOnly pairs containing this token.
dexnoTarget DEX: its pool on the pair, else a new pool on it.
feeBpsnoOne standard fee tier of that DEX (needs dex).
capitalUsdnoScenario capital in USD (100,000 by default).
lpSharenoLP share override (0–1]; else the documented share.
horizonDaysno1 to 90 days (30 by default).
windowHoursnoHistory window, 24 to 336 hours (168 by default).
offsetnoPaging offset.
limitnoAt most 20.

The ranking does not route: the target keeps its own routed and direct fees, diluted by the added liquidity. Use the capital curve for the router.

curl -s "https://llens.abanchev.com/api/v1/ext/market/lp-opportunities?chainId=8453&capitalUsd=100000&horizonDays=30&windowHours=72" \
  -H "x-api-key: $LL_API_KEY"
Example response
{
  "chainId": "8453",
  "from": "2026-10-15T19:00:00.000Z",
  "to": "2026-10-22T19:00:00.000Z",
  "windowHours": 168,
  "total": 3,
  "belowFeeFloor": 14,
  "minPairFeesUsdPerDay": 50,
  "offset": 0,
  "nextOffset": null,
  "pairs": [
    {
      "tokenA": "0x4200000000000000000000000000000000000006",
      "tokenB": "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf",
      "symbolA": "WETH",
      "symbolB": "cbBTC",
      "routedVolumeUsd": 22400000,
      "directVolumeUsd": 4100000,
      "arbVolumeUsd": 12700000,
      "unclassifiedVolumeUsd": 1200000,
      "pairFeesUsdPerDay": 102578,
      "pools": 2,
      "pricedPools": 2,
      "bestCompetitor": {
        "pool": "0x8c7080564b5a792a33ef2fd473fba6364d5495e5",
        "dex": "solidly-v3",
        "ratio": 0.559632,
        "feeBps": 5,
        "volumeUsd": 7742.51
      },
      "medianCompetitorRatio": 0.559632,
      "target": {
        "kind": "pool",
        "pool": "0x70acdf2ad0bf2402c957154f944c19ef4e1cbae1",
        "dex": "uniswap-v3",
        "ratio": 1.56403,
        "band": "uncovered",
        "lpNetRatio": 1.30284,
        "coverage": "does-not-cover",
        "depthUsd": 1385500000,
        "feeTierBps": 30
      },
      "assumedFeeBps": 30,
      "screening": {
        "capitalUsd": 100000,
        "rangePreset": "full",
        "lpShare": {
          "share": 0.833,
          "source": "Uniswap protocol-fee expansion (Base, 2026): 1/4 of the 0.01%/0.05% tiers, 1/6 of 0.3%/1%",
          "given": false
        },
        "feesUsdPerDay": {
          "routed": 4.77646,
          "direct": 2.09698,
          "unclassified": 0.582495,
          "arb": 4.19427
        },
        "lvrUsdPerDay": 7.44918,
        "ratioGross": 1.56396,
        "ratioLpNet": 1.30278,
        "netUsdPerDay": 2.25544,
        "netUsdPerDayPer1k": 0.0225544,
        "horizonDays": 30,
        "netUsdHorizon": 67.6633,
        "coverage": "covers",
        "arbRate": {
          "perUnitLPerHour": 0.000170473,
          "tierBps": 30,
          "match": "same-tier",
          "pools": 1
        }
      },
      "pairDepthUsd": 1385510000,
      "confidence": "medium",
      "flags": [
        "few-competitors"
      ]
    },
    {
      "tokenA": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "tokenB": "0x940181a94a35a4569e4529a3cdfb74e38fd98631",
      "symbolA": "USDC",
      "symbolB": "AERO",
      "routedVolumeUsd": 3100000,
      "directVolumeUsd": 600000,
      "arbVolumeUsd": 1400000,
      "unclassifiedVolumeUsd": 200000,
      "pairFeesUsdPerDay": 15386.6,
      "pools": 1,
      "pricedPools": 1,
      "bestCompetitor": null,
      "medianCompetitorRatio": null,
      "target": {
        "kind": "pool",
        "pool": "0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d",
        "dex": "aerodrome-slipstream",
        "ratio": 1.2219,
        "band": "uncovered",
        "lpNetRatio": 1.1608,
        "coverage": "does-not-cover",
        "depthUsd": 207824000,
        "feeTierBps": 30
      },
      "assumedFeeBps": 30,
      "screening": {
        "capitalUsd": 100000,
        "rangePreset": "full",
        "lpShare": {
          "share": 0.95,
          "source": "fee-earning (unstaked) LPs; staked LPs earn emissions and their fees go to voters",
          "given": false
        },
        "feesUsdPerDay": {
          "routed": 3.73008,
          "direct": 1.6376,
          "unclassified": 0.454888,
          "arb": 3.27677
        },
        "lvrUsdPerDay": 7.44918,
        "ratioGross": 1.22152,
        "ratioLpNet": 1.16045,
        "netUsdPerDay": 1.1952,
        "netUsdPerDayPer1k": 0.011952,
        "horizonDays": 30,
        "netUsdHorizon": 35.8559,
        "coverage": "covers",
        "arbRate": {
          "perUnitLPerHour": 0.000133182,
          "tierBps": 30,
          "match": "same-tier",
          "pools": 1
        }
      },
      "pairDepthUsd": 207824000,
      "confidence": "low",
      "flags": [
        "few-competitors"
      ]
    },
    {
      "tokenA": "0x4200000000000000000000000000000000000006",
      "tokenB": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "symbolA": "WETH",
      "symbolB": "USDC",
      "routedVolumeUsd": 41200000,
      "directVolumeUsd": 9800000,
      "arbVolumeUsd": 30100000,
      "unclassifiedVolumeUsd": 3400000,
      "pairFeesUsdPerDay": 256444,
      "pools": 2,
      "pricedPools": 2,
      "bestCompetitor": {
        "pool": "0x551a0e3d267bea87048f08cc94cc6035ad99221b",
        "dex": "solidly-v3",
        "ratio": 0.559632,
        "feeBps": 5,
        "volumeUsd": 15485
      },
      "medianCompetitorRatio": 0.559632,
      "target": {
        "kind": "pool",
        "pool": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
        "dex": "uniswap-v3",
        "ratio": 0.977519,
        "band": "uncovered",
        "lpNetRatio": 0.814274,
        "coverage": "does-not-cover",
        "depthUsd": 3463740000,
        "feeTierBps": 30
      },
      "assumedFeeBps": 30,
      "screening": {
        "capitalUsd": 100000,
        "rangePreset": "full",
        "lpShare": {
          "share": 0.833,
          "source": "Uniswap protocol-fee expansion (Base, 2026): 1/4 of the 0.01%/0.05% tiers, 1/6 of 0.3%/1%",
          "given": false
        },
        "feesUsdPerDay": {
          "routed": 2.98542,
          "direct": 1.31067,
          "unclassified": 0.364075,
          "arb": 2.62142
        },
        "lvrUsdPerDay": 7.44918,
        "ratioGross": 0.977501,
        "ratioLpNet": 0.814259,
        "netUsdPerDay": -1.38362,
        "netUsdPerDayPer1k": -0.0138362,
        "horizonDays": 30,
        "netUsdHorizon": -41.5086,
        "coverage": "does-not-cover",
        "arbRate": {
          "perUnitLPerHour": 0.000106546,
          "tierBps": 30,
          "match": "same-tier",
          "pools": 1
        }
      },
      "pairDepthUsd": 3463770000,
      "confidence": "medium",
      "flags": [
        "few-competitors"
      ]
    }
  ],
  "method": "capital scenario: routed (router), direct (diluted) and arbitrage (tier rate) fees over LVR in range; see the method field of a live answer"
}
POST/api/v1/ext/market/lp-opportunity-curve

Capital curve per range

For one pool and range preset (full; narrow, medium and wide on concentrated pools): per capital point the routed fees from the production router, the direct and arbitrage fees, LVR while in range, gross and LP-net F/LVR with price, routing and demand uncertainty, and the minimum-viable, most capital-efficient and highest-net capital.

Cost
50 CU
Headers
Send your key in x-api-key.
BodyRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
poolyesPool to add capital to.
rangePresetnofull (default), narrow, medium or wide.
capitalUsdno1 to 8 capital points (a 10K–5M ladder by default).
lpSharenoLP share override (0–1].
horizonDaysno1 to 90 days (30 by default).
windowHoursnoHistory window, 24 to 336 hours (168 by default).
taskIdnoRead the curve of a queued request.

Without taskId the call queues a router run (one at a time and 20 a day per organization) and answers with its taskId; call again with it for the curve.

curl -s -X POST "https://llens.abanchev.com/api/v1/ext/market/lp-opportunity-curve" \
  -H "x-api-key: $LL_API_KEY" \
  -H "content-type: application/json" \
  -d '{"chainId":"8453","pool":"0x6c561b446416e1a00e8e93e221854d6ea4171372","rangePreset":"medium","capitalUsd":["10000","50000","100000","250000","1000000","2500000"],"windowHours":72}'
Example response
{
  "chainId": "8453",
  "pool": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
  "taskId": "5b0e2c71-9d4a-4c3e-8f21-6a7b8c9d0e1f",
  "status": "succeeded",
  "curve": {
    "rangePreset": "medium",
    "halfWidthBps": 1000,
    "pairClass": "medium",
    "sigmaHourlyBps": 49.4709,
    "timeInRange": 1,
    "lpShare": {
      "share": 0.833,
      "source": "Uniswap protocol-fee expansion (Base, 2026): 1/4 of the 0.01%/0.05% tiers, 1/6 of 0.3%/1%",
      "given": false
    },
    "horizonDays": 30,
    "windowHours": 72,
    "points": [
      {
        "capitalUsd": 10000,
        "addedLiquidity": 1127.67,
        "liquidityShare": 0.000032,
        "routedVolumeShare": 0.268703,
        "feesUsdPerDay": {
          "routed": 4.07809,
          "direct": 1.44173,
          "unclassified": 0.400482,
          "arb": 2.88356
        },
        "lvrUsdPerDay": 8.1941,
        "ratioGross": 1.07442,
        "ratioLpNet": 0.894988,
        "netUsdPerDay": -0.860475,
        "netUsdHorizon": -25.8142,
        "uncertainty": {
          "price": [
            0.586223,
            1.76841
          ],
          "routing": [
            0.84524,
            0.944737
          ],
          "demand": [
            0.594063,
            1.19591
          ]
        }
      },
      {
        "capitalUsd": 50000,
        "addedLiquidity": 5638.35,
        "liquidityShare": 0.000159,
        "routedVolumeShare": 0.569413,
        "feesUsdPerDay": {
          "routed": 43.2043,
          "direct": 7.20775,
          "unclassified": 2.00215,
          "arb": 14.4178
        },
        "lvrUsdPerDay": 40.9705,
        "ratioGross": 1.63122,
        "ratioLpNet": 1.35881,
        "netUsdPerDay": 14.7006,
        "netUsdHorizon": 441.018,
        "uncertainty": {
          "price": [
            0.890028,
            2.68488
          ],
          "routing": [
            1.2534,
            1.46422
          ],
          "demand": [
            0.825974,
            1.89165
          ]
        }
      },
      {
        "capitalUsd": 100000,
        "addedLiquidity": 11276.7,
        "liquidityShare": 0.000317,
        "routedVolumeShare": 0.64398,
        "feesUsdPerDay": {
          "routed": 97.7087,
          "direct": 14.4132,
          "unclassified": 4.00367,
          "arb": 28.8356
        },
        "lvrUsdPerDay": 81.941,
        "ratioGross": 1.76909,
        "ratioLpNet": 1.47365,
        "netUsdPerDay": 38.8117,
        "netUsdHorizon": 1164.35,
        "uncertainty": {
          "price": [
            0.965253,
            2.9118
          ],
          "routing": [
            1.35446,
            1.59285
          ],
          "demand": [
            0.883397,
            2.06391
          ]
        }
      },
      {
        "capitalUsd": 250000,
        "addedLiquidity": 28191.8,
        "liquidityShare": 0.000793,
        "routedVolumeShare": 0.646306,
        "feesUsdPerDay": {
          "routed": 245.037,
          "direct": 36.0159,
          "unclassified": 10.0044,
          "arb": 72.089
        },
        "lvrUsdPerDay": 204.852,
        "ratioGross": 1.77272,
        "ratioLpNet": 1.47668,
        "netUsdPerDay": 97.6487,
        "netUsdHorizon": 2929.46,
        "uncertainty": {
          "price": [
            0.967233,
            2.91778
          ],
          "routing": [
            1.35711,
            1.59625
          ],
          "demand": [
            0.884908,
            2.06845
          ]
        }
      },
      {
        "capitalUsd": 1000000,
        "addedLiquidity": 112767,
        "liquidityShare": 0.003166,
        "routedVolumeShare": 0.646306,
        "feesUsdPerDay": {
          "routed": 977.822,
          "direct": 143.722,
          "unclassified": 39.9227,
          "arb": 288.356
        },
        "lvrUsdPerDay": 819.41,
        "ratioGross": 1.76935,
        "ratioLpNet": 1.47387,
        "netUsdPerDay": 388.292,
        "netUsdHorizon": 11648.8,
        "uncertainty": {
          "price": [
            0.965392,
            2.91223
          ],
          "routing": [
            1.35458,
            1.59315
          ],
          "demand": [
            0.883503,
            2.06423
          ]
        }
      },
      {
        "capitalUsd": 2500000,
        "addedLiquidity": 281918,
        "liquidityShare": 0.007877,
        "routedVolumeShare": 0.646306,
        "feesUsdPerDay": {
          "routed": 2433,
          "direct": 357.606,
          "unclassified": 99.3349,
          "arb": 720.89
        },
        "lvrUsdPerDay": 2048.52,
        "ratioGross": 1.76265,
        "ratioLpNet": 1.46829,
        "netUsdPerDay": 959.299,
        "netUsdHorizon": 28779,
        "uncertainty": {
          "price": [
            0.961737,
            2.9012
          ],
          "routing": [
            1.34957,
            1.58701
          ],
          "demand": [
            0.880713,
            2.05586
          ]
        }
      }
    ],
    "minimumViable": {
      "capitalUsd": 19056.2,
      "atOrBelow": false
    },
    "maxCapitalEfficiency": {
      "fromCapitalUsd": 50000,
      "toCapitalUsd": 100000,
      "marginalNetPerUsdPerDay": 0.000482223
    },
    "maxTotalNet": {
      "capitalUsd": 2500000,
      "netUsdPerDay": 959.299
    },
    "matchMedian": {
      "capitalUsd": 10000
    },
    "beatBest": {
      "capitalUsd": 10000
    },
    "competitors": {
      "best": 0.559632,
      "median": 0.559632
    },
    "arbRate": {
      "perUnitLPerHour": 0.000106546,
      "tierBps": 30,
      "match": "same-tier",
      "pools": 1
    },
    "backtest": {
      "inSample": {
        "predictedShare": 0.22,
        "observedShare": 0.25,
        "error": -0.03
      },
      "outOfSample": null,
      "status": "in-sample-only"
    },
    "notes": [
      "routed fees are a lower bound: only aggregator flow we observe is routed; other contestable flow is unobserved",
      "time in range uses hourly closes; moves inside an hour are not seen"
    ],
    "flags": []
  },
  "error": null,
  "method": "the router's depth curve of the aggregator flow with the medium preset; see the method field of a live answer"
}
Liquidity LensPrices are informational and instantaneous. They are not investment advice or a guarantee of execution.