# One wallet's LP record

`GET https://api.getchord.xyz/v1/lp/wallet/{address}`

Source: https://getchord.xyz/docs/api-reference/operations/lpwallet/

Everything the wallet board knows about one wallet, whether it is ranked or not: win rate, fees, profit, expected value per position, average invested / age / monthly profit and the 7-day / 30-day / all-time windows (`summary`); one row per UTC day on which a position ended, with the profit and the fees that landed on it (`history`; an open position counts its fees on the day it was last touched); the pools it provided to (`pools`, up to 60, by number of positions).

The figures use the board's row rules, so a wallet opened from `/lp/leaderboard` shows the same numbers: `unscored` says how many ledger positions were left out and why (each under the first reason that fits), and `ledger` counts every position, scored or not. `operator: true` = 500 or more scored positions, an account the board does not rank. `truncated: true` = the wallet holds more than 20,000 positions and the figures cover the newest 20,000.

**Use it for**: a wallet page, "is this LP worth following", a PnL calendar.

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `address` | path | yes | string | Not a 0x address is `400 BAD_WALLET`. |
| `chain` | query | yes | `5042` · `4663` · `143` | Chain id: `5042` Arc · `4663` Robinhood Chain · `143` Monad. |
| `unit` | query | no | `usd` · `native` (default `usd`) | `native` = every money field of the answer in the chain's own coin (ETH on Robinhood Chain, MON on Monad; Arc's coin is USDC), each deposit, withdrawal and fee converted at the coin's price of its own hour, and live values at the price now. The fields keep their `…Usd` names; `unit` and `unitSymbol` in the answer say what they carry. The row rules (the $20 floor, the 20x bound) stay in dollars, so both units score the same positions. `503 UNIT_NOT_READY` while a chain's ledger is being rebuilt with these figures; another value is `400 BAD_UNIT`. |

## Response 200

Example (captured from the live API):

```json
{
  "chain": 5042,
  "wallet": "0x5db28691cbfc2ceeca1d919f0749b64013c25432",
  "summary": {
    "positions": 2,
    "open": 0,
    "closed": 2,
    "wins": 1,
    "winRatePct": 50,
    "pools": 1,
    "feesUsd": 1473.5195824012221,
    "profitUsd": 898.4072651256388,
    "evUsd": 449.2036325628194,
    "avgAgeHours": 85.54625,
    "avgInvestedUsd": 2485.7135485602826,
    "avgMonthlyProfitUsd": 1220.1586855458952,
    "windows": {
      "d7": {
        "positions": 0,
        "profitUsd": 0,
        "feesUsd": 0
      },
      "d30": {
        "positions": 2,
        "profitUsd": 898.4072651256388,
        "feesUsd": 1473.5195824012221
      },
      "all": {
        "positions": 2,
        "profitUsd": 898.4072651256388,
        "feesUsd": 1473.5195824012221
      }
    },
    "firstTs": 1789922677,
    "lastTs": 1790521219
  },
  "history": [
    {
      "day": "2026-09-22",
      "profitUsd": 1767.3683024312918,
      "feesUsd": 556.5679612124811,
      "positions": 1
    },
    {
      "day": "2026-09-27",
      "profitUsd": -868.961037305653,
      "feesUsd": 916.9516211887411,
      "positions": 1
    }
  ],
  "pools": [
    {
      "pool": "0xf53f02d9041d00bbd92235b4c902b9f350c554a8ed2dc64fa0a4585aac413f09",
      "token": "0x8faae5592b9acc27a79fca745c6b872adf514a5d",
      "anchor": "0x3600000000000000000000000000000000000000",
      "positions": 2,
      "open": 0,
      "inUsd": 4971.427097120565,
      "profitUsd": 898.4072651256388,
      "feesUsd": 1473.5195824012221,
      "symbol": "MURMUR",
      "anchorSymbol": "USDC",
      "logo": "https://cdn.dexscreener.com/cms/images/QUq-IqT1GLQNkxMx?width=800&height=800&quality=95&format=auto"
    }
  ],
  "ledger": {
    "positions": 2,
    "open": 0,
    "closed": 2
  },
  "unscored": {
    "small": 0,
    "jit": 0,
    "unreconciled": 0,
    "partial": 0,
    "unlistedPool": 0,
    "cluster": 0
  },
  "minIn": 20,
  "truncated": false,
  "operator": false,
  "updatedAt": 1791831176348
}
```

- **400**: Invalid parameters — `error` names the check that failed (`INVALID_PARAMS`, `BAD_ADDRESS`, `BAD_LIMIT`, `BAD_HOURS`, …).
