{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/cabalspy-xyz/json-schema/cabalspy-xyz-position-schema.json",
  "title": "Position",
  "description": "Live position of a wallet in a token.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cabalspy-xyz-openapi.json#/components/schemas/Position",
  "type": "object",
  "properties": {
    "token_amount": {
      "type": "number",
      "description": "Tokens currently held."
    },
    "token_amount_peak": {
      "type": "number",
      "description": "Peak tokens held."
    },
    "supply_pct": {
      "type": "number",
      "description": "Percent of supply held."
    },
    "supply_pct_peak": {
      "type": "number",
      "description": "Peak percent of supply held."
    },
    "bag_pct": {
      "type": "number",
      "description": "Percent of peak holding still held."
    },
    "still_holding": {
      "type": "boolean",
      "description": "Whether the wallet still holds."
    },
    "unrealized_pnl_sol": {
      "type": [
        "number",
        "null"
      ],
      "description": "Unrealized PnL on the remaining bag (native). Solana only. Frozen to 0 once fully sold."
    },
    "unrealized_pnl_usd": {
      "type": [
        "number",
        "null"
      ],
      "description": "Unrealized PnL in USD. Solana only."
    },
    "unrealized_pnl_pct": {
      "type": [
        "number",
        "null"
      ],
      "description": "Unrealized PnL percentage. Solana only."
    },
    "remaining_sol": {
      "type": [
        "number",
        "null"
      ],
      "description": "Current value of the remaining bag (native). Solana only."
    },
    "remaining_usd": {
      "type": [
        "number",
        "null"
      ],
      "description": "Current value of the remaining bag in USD. Solana only."
    },
    "entry_market_cap": {
      "type": [
        "number",
        "null"
      ],
      "description": "Market cap in SOL when the wallet first bought, frozen. Solana only, null for older positions."
    },
    "entry_market_cap_usd": {
      "type": [
        "number",
        "null"
      ],
      "description": "Entry market cap in USD, frozen at buy time. Solana only, null for older positions."
    }
  },
  "additionalProperties": true
}