ToolAssay

Impermanent loss for a Uniswap v2 or v3 position

Impermanent loss for a Uniswap v2 or v3 position: LP value against simply holding, the fee income needed to break even, and whether fees cover the loss.

Answeringour last check, 2026-10-20
1 of 1checks answered this week
385 msmedian answer time
$0.01listed price per call
$0.01price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

GET https://saylorinnovations.com/api/defi/impermanent-loss

CategoryMarket data
Provider hostsaylorinnovations.com
Networkseip155:137, eip155:42161, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
Payment schemesexact
Self-reported calls, 30 days0 from 0 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-20 valid payment request 402$0.01 385 ms

Example input (from the provider)

{
  "method": "GET",
  "queryParams": {
    "days": "90",
    "deposit_usd": "1000",
    "fee_apr_percent": "30",
    "price_change_percent": "100"
  },
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET"
          ],
          "type": "string"
        },
        "queryParams": {
          "properties": {
            "days": {
              "description": "optional days in the pool, default 30",
              "type": "string"
            },
            "deposit_usd": {
              "description": "optional deposit value, default 1000",
              "type": "string"
            },
            "fee_apr_percent": {
              "description": "optional LP fee APR to offset the loss",
              "type": "string"
            },
            "price_change_percent": {
              "description": "price move of one asset vs the other, e.g. 100 for a doubling (or give initial_price and final_price)",
              "type": "string"
            }
          },
          "required": [
            "price_change_percent"
          ],
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "deposit_usd": {
              "description": "Deposit value used for the dollar figures",
              "type": "number"
            },
            "fees_cover_loss": {
              "description": "True when the assumed fees outweigh the impermanent loss",
              "type": "boolean"
            },
            "fees_earned_usd": {
              "description": "Fee income implied by fee_apr_percent over the number of days",
              "type": "number"
            },
            "hold_value_usd": {
              "description": "Value now if the two deposited assets had simply been held",
              "type": "number"
            },
            "impermanent_loss_percent": {
              "description": "LP value versus holding the same assets, in percent (negative is a loss)",
              "type": "number"
            },
            "loss_vs_hold_usd": {
              "description": "LP value minus hold value in USD (negative is a loss)",
              "type": "number"
            },
            "lp_value_usd": {
              "description": "Value now of the liquidity position, before fees",
              "type": "number"
            },
            "lp_value_with_fees_usd": {
              "description": "LP value plus the assumed fee income",
              "type": "number"
            },
            "net_vs_hold_usd": {
              "description": "LP value plus fees minus hold value in USD",
              "type": "number"
            },
            "note": {
              "description": "Plain-language caveat about how to read and use the result",
              "type": "string"
            },
            "pool_type": {
              "description": "AMM model used: constant product or concentrated liquidity",
              "type": "string"
            },
            "price_change_percent": {
              "description": "Relative price move of the pair over the period, in percent",
              "type": "number"
            },
            "price_ratio": {
              "description": "Final price divided by initial price of one asset against the other",
              "type": "number"
            },
            "range": {
              "description": "Concentrated liquidity inputs and whether the final price is inside the range",
              "type": [
                "object",
                "null"
              ]
            },
            "source": {
              "description": "Where the data or formula comes from",
              "type": "string"
            }
          },
          "required": [
            "impermanent_loss_percent",
            "lp_value_usd"
          ],
          "type": "object"
        },
        "type": {
          "const": "json",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON