{
  "tool": "pancakeswap_range_plan",
  "pair": {
    "token": {
      "address": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82",
      "symbol": "Cake",
      "decimals": 18
    },
    "quote": {
      "address": "0x55d398326f99059ff775485246999027b3197955",
      "symbol": "USDT",
      "decimals": 18
    }
  },
  "pool": "0x7f51c8aaa6b0599abd16674e2b17fec7a9f674a1",
  "fee_pct": 0.25,
  "tier_chosen_because": "0.25% — the tier standing the most capital within 2% of the price",
  "price_now": 2.1900546,
  "capital_considered_usd": 1000,
  "measured_window": {
    "from_block": 122210563,
    "to_block": 122218462,
    "blocks": 7900,
    "minutes": 59.3,
    "swaps": 89,
    "fees_the_pool_paid_usd": 93.805949,
    "fees_paid_to_liquidity_usd": 63.788045,
    "fees_kept_by_the_protocol_usd": 30.017904,
    "paid_to_liquidity_pct": 68,
    "protocol_fee_pct": {
      "token0": 32,
      "token1": 32
    },
    "note": "One sample of live chain. Not annualised here and not to be annualised from here: what a range did over one window is not what it does over a year."
  },
  "ranges": [
    {
      "width_pct": 0.25,
      "full_range": false,
      "price_range": {
        "low": 2.1845931,
        "high": 2.1955297,
        "unit": "USDT per Cake"
      },
      "swaps_in_range": 36,
      "swaps_total": 89,
      "share_of_window_in_range_pct": 7.4,
      "times_it_crossed_the_edge": 1,
      "fees_usd_in_window": 0.83255,
      "assumed_rebalance_cost_usd": 0.49969,
      "net_after_rebalancing_usd_in_window": 0.33286
    },
    {
      "width_pct": 0.5,
      "full_range": false,
      "price_range": {
        "low": 2.1791588,
        "high": 2.2010049,
        "unit": "USDT per Cake"
      },
      "swaps_in_range": 72,
      "swaps_total": 89,
      "share_of_window_in_range_pct": 28,
      "times_it_crossed_the_edge": 1,
      "fees_usd_in_window": 0.862257,
      "assumed_rebalance_cost_usd": 0.49969,
      "net_after_rebalancing_usd_in_window": 0.362567
    },
    {
      "width_pct": 1,
      "full_range": false,
      "price_range": {
        "low": 2.1683709,
        "high": 2.2119551,
        "unit": "USDT per Cake"
      },
      "swaps_in_range": 89,
      "swaps_total": 89,
      "share_of_window_in_range_pct": 100,
      "times_it_crossed_the_edge": 0,
      "fees_usd_in_window": 0.585019,
      "assumed_rebalance_cost_usd": 0.49969,
      "net_after_rebalancing_usd_in_window": 0.585019
    },
    {
      "width_pct": 2,
      "full_range": false,
      "price_range": {
        "low": 2.1471123,
        "high": 2.2338557,
        "unit": "USDT per Cake"
      },
      "swaps_in_range": 89,
      "swaps_total": 89,
      "share_of_window_in_range_pct": 100,
      "times_it_crossed_the_edge": 0,
      "fees_usd_in_window": 0.296029,
      "assumed_rebalance_cost_usd": 0.49969,
      "net_after_rebalancing_usd_in_window": 0.296029
    },
    {
      "width_pct": 5,
      "full_range": false,
      "price_range": {
        "low": 2.0857663,
        "high": 2.2995573,
        "unit": "USDT per Cake"
      },
      "swaps_in_range": 89,
      "swaps_total": 89,
      "share_of_window_in_range_pct": 100,
      "times_it_crossed_the_edge": 0,
      "fees_usd_in_window": 0.121355,
      "assumed_rebalance_cost_usd": 0.49969,
      "net_after_rebalancing_usd_in_window": 0.121355
    },
    {
      "width_pct": 10,
      "full_range": false,
      "price_range": {
        "low": 1.9909587,
        "high": 2.40906,
        "unit": "USDT per Cake"
      },
      "swaps_in_range": 89,
      "swaps_total": 89,
      "share_of_window_in_range_pct": 100,
      "times_it_crossed_the_edge": 0,
      "fees_usd_in_window": 0.062903,
      "assumed_rebalance_cost_usd": 0.49969,
      "net_after_rebalancing_usd_in_window": 0.062903
    },
    {
      "width_pct": null,
      "full_range": true,
      "price_range": null,
      "swaps_in_range": 89,
      "swaps_total": 89,
      "share_of_window_in_range_pct": 100,
      "times_it_crossed_the_edge": 0,
      "fees_usd_in_window": 0.00293,
      "assumed_rebalance_cost_usd": 0.49969,
      "net_after_rebalancing_usd_in_window": 0.00293
    }
  ],
  "best_earning_range_in_this_window": "±0.5%",
  "best_range_after_paying_to_put_it_back": "±1%",
  "rebalance_cost_usd_assumed": 0.49969,
  "narrowest_range_that_held_the_whole_window": "±1%",
  "times_better_than_full_range": 294.3,
  "caveats": [
    "Replayed against the 89 swaps that actually happened in this window, using the liquidity the pool reported as active at each one. It is not a simulation of a market; it is arithmetic over trades that occurred.",
    "The pool keeps 32% of every fee for the protocol before it credits the liquidity; every figure above is the liquidity's 68%, read from the pool itself (slot0.feeProtocol), not the whole fee the trader paid.",
    "Putting a range back costs gas, so every crossing is charged at $0.4997 — 700,000 gas priced at 1 gwei, well above the current floor, because a position sized on a quiet chain is stranded by a busy hour. Both sides of that subtraction are the same window, so it is a comparison rather than a rate. It can go negative, and when it does the range collected more than it was worth.",
    "The window is 59.3 minutes of chain and travels with every figure above, because a fee figure without the period it was earned over is the number this project exists to stop people quoting.",
    "The position is placed around the price as it stands now, then walked back through the window. A position opened at the start of the window would have sat slightly differently.",
    "Impermanent loss is not in any of this, and it is worst exactly where the fees are best: the narrow range that captured the most is also the one that ends furthest from what it started as.",
    "The position is centred on the price as it stands now, so a narrow range can show as arrived-in rather than left — the crossing count runs in both directions for that reason, and \"held\" means in range for the whole window rather than never seen leaving.",
    "A range that held through an hour is not a range that holds. The crossing count is what happened, not what will.",
    "89 swaps carried this comparison."
  ]
}