> ## Documentation Index
> Fetch the complete documentation index at: https://docs.exponent.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallet tranche positions and PnL

> Retrieve a wallet’s tranche position value, cost basis, PnL, and rewards.

export const ApiResponse = ({children, errors = {}}) => {
  const [status, setStatus] = useState("200");
  const statuses = ["200", ...Object.keys(errors)];
  return <section className="api-response" aria-label="Response">
      <div className="api-response-header not-prose">
        <h2>Response</h2>
        <div className="api-response-format">
          {statuses.length > 1 ? <select aria-label="Response status" value={status} onChange={event => setStatus(event.target.value)}>
              {statuses.map(code => <option key={code} value={code}>{code}</option>)}
            </select> : <span>200</span>}
          <span className="api-response-mime">application/json</span>
        </div>
      </div>
      <div hidden={status !== "200"}>{children}</div>
      {status !== "200" && <div aria-live="polite">
          {Object.entries(errors[status]).map(([name, value]) => <ResponseField key={name} name={name} type={value === null ? "null" : Array.isArray(value) ? "array" : typeof value}>
              {name === "error" ? "Error message describing why the request failed." : "Additional error details."}
            </ResponseField>)}
        </div>}
    </section>;
};

## Path parameters

<ParamField path="address" type="string" required>
  Solana account address.
</ParamField>

## Query parameters

<ParamField query="walletAddress" type="string" required>
  User wallet address.
</ParamField>

<ParamField query="currentPrice" type="number">
  Current LP price override.
</ParamField>

<ParamField query="tokenDecimals" type="number">
  Token decimal precision override.
</ParamField>

<ParamField query="currentSyExchangeRate" type="number">
  Current SY exchange-rate override.
</ParamField>

<ParamField query="trancheSide" type="string">
  `senior` or `junior`. Default: `junior`.
</ParamField>

<ParamField query="currentNetValue" type="number">
  Current net-value override.
</ParamField>

<RequestExample dropdown>
  ```bash cURL theme={null}
  curl 'https://api.exponent.finance/tranching-markets/CAdFPvNX3gHZobun6g1W6jesGyQ9fhdsGJZBXTbWjNww/user-position/stats?walletAddress=HRt73vbP87cUmzJJAH5tWyCuwyN9Syws2RxqND9pTMs4'
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.exponent.finance/tranching-markets/CAdFPvNX3gHZobun6g1W6jesGyQ9fhdsGJZBXTbWjNww/user-position/stats?walletAddress=HRt73vbP87cUmzJJAH5tWyCuwyN9Syws2RxqND9pTMs4", timeout=30)
  response.raise_for_status()
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.exponent.finance/tranching-markets/CAdFPvNX3gHZobun6g1W6jesGyQ9fhdsGJZBXTbWjNww/user-position/stats?walletAddress=HRt73vbP87cUmzJJAH5tWyCuwyN9Syws2RxqND9pTMs4");
  if (!response.ok) {
    throw new Error(`Request failed: ${response.status}`);
  }
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ApiResponse errors={{"400": {"error": "<message>"}, "500": {"error": "<message>"}}}>
  <ResponseField name="address" type="string">
    Tranching market account address.
  </ResponseField>

  <ResponseField name="walletAddress" type="string">
    Wallet whose position is being evaluated.
  </ResponseField>

  <ResponseField name="trancheSide" type="'senior' | 'junior'">
    Position side: `senior` or `junior`.
  </ResponseField>

  <ResponseField name="netValue" type="number">
    Current LP balance multiplied by LP price, or the supplied positive `currentNetValue` override.
  </ResponseField>

  <ResponseField name="pnl" type="number">
    Net value minus remaining cost basis, plus realized P\&L and claimed and unclaimed rewards.
  </ResponseField>

  <ResponseField name="premium" type="number">
    Junior premium earned or senior premium paid, according to the selected tranche.
  </ResponseField>

  <ResponseField name="averageCostBasis" type="number">
    Remaining cost basis divided by current LP balance; zero when the balance is zero.
  </ResponseField>

  <ResponseField name="totalCostBasis" type="number">
    Cost basis remaining in the position’s base-asset denomination.
  </ResponseField>

  <ResponseField name="displayNetValue" type="number">
    `netValue` divided by the effective SY exchange rate.
  </ResponseField>

  <ResponseField name="displayPnl" type="number">
    `pnl` divided by the effective SY exchange rate.
  </ResponseField>

  <ResponseField name="displayPremium" type="number">
    `premium` divided by the effective SY exchange rate.
  </ResponseField>

  <ResponseField name="displayAverageCostBasis" type="number">
    SY-denominated remaining cost basis divided by LP balance.
  </ResponseField>

  <ResponseField name="quoteNetValue" type="number">
    Alias of `netValue`.
  </ResponseField>

  <ResponseField name="quotePnl" type="number">
    Alias of `pnl`.
  </ResponseField>

  <ResponseField name="quotePremium" type="number">
    Alias of `premium`.
  </ResponseField>

  <ResponseField name="quoteAverageCostBasis" type="number">
    Alias of `averageCostBasis`.
  </ResponseField>

  <ResponseField name="quoteTotalSpent" type="number">
    Alias of `totalCostBasis`.
  </ResponseField>

  <ResponseField name="totalSpent" type="number">
    Alias of `totalCostBasis`.
  </ResponseField>

  <ResponseField name="totalSpentBase" type="number">
    Alias of `totalCostBasis`.
  </ResponseField>

  <ResponseField name="totalSpentSy" type="number">
    Remaining position cost basis denominated in SY tokens.
  </ResponseField>

  <ResponseField name="totalDepositedBase" type="number">
    Cumulative deposited amount in base-asset tokens.
  </ResponseField>

  <ResponseField name="totalDepositedSy" type="number">
    Cumulative deposited amount in SY tokens.
  </ResponseField>

  <ResponseField name="realizedPnl" type="number">
    Cumulative profit or loss realized through redemptions.
  </ResponseField>

  <ResponseField name="claimedRewards" type="number">
    Claimed reward value included in the position’s P\&L.
  </ResponseField>

  <ResponseField name="unclaimedRewards" type="number">
    Unclaimed reward value included in the position’s P\&L.
  </ResponseField>

  <ResponseField name="balance" type="number">
    Current LP balance converted from raw units to LP-token units.
  </ResponseField>
</ApiResponse>

<ResponseExample>
  ```json 200 theme={null}
  {
    "address": "CAdFPvNX3gHZobun6g1W6jesGyQ9fhdsGJZBXTbWjNww",
    "walletAddress": "HRt73vbP87cUmzJJAH5tWyCuwyN9Syws2RxqND9pTMs4",
    "trancheSide": "junior",
    "netValue": 0,
    "pnl": -3,
    "premium": 0,
    "averageCostBasis": 0,
    "totalCostBasis": 1e-13,
    "displayNetValue": 0,
    "displayPnl": -3,
    "displayPremium": 0,
    "displayAverageCostBasis": 0,
    "quoteNetValue": 0,
    "quotePnl": -3,
    "quotePremium": 0,
    "quoteAverageCostBasis": 0,
    "quoteTotalSpent": 1e-13,
    "totalSpent": 1e-13,
    "totalSpentBase": 1e-13,
    "totalSpentSy": 0,
    "totalDepositedBase": 1999981,
    "totalDepositedSy": 1872992,
    "realizedPnl": -2.9999999999999,
    "claimedRewards": 0,
    "unclaimedRewards": 0,
    "balance": 0
  }
  ```

  ```json 400 theme={null}
  {
    "error": "<message>"
  }
  ```

  ```json 500 theme={null}
  {
    "error": "<message>"
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.