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

# Get asset performance

> Retrieves the performance of an asset in the portfolio, including the average cost, total invested, and unrealized gains (gains and losses).

export const RestEndpointSubjects = ({subjects = []}) => {
  const subjectToIconMap = {
    'client': 'browser',
    'user:individual': 'user',
    'user:business': 'briefcase'
  };
  if (subjects.length === 0) {
    return null;
  }
  return <>
      {subjects.map(subject => <a key={subject} href="/rest-apis/authentication#subjects" className="border-0 opacity-85 hover:opacity-100 transition-opacity">
          <Badge stroke size="lg" icon={subjectToIconMap[subject]} color="gray" className="mr-1">
            {subject}
          </Badge>
        </a>)}
    </>;
};

<RestEndpointSubjects subjects={["user:individual"]} />

<Tip>You can retrieve the performance of several assets in the portfolio by using the [Get Many Assets Performance](./get-portfolio-many-assets-performance) endpoint.</Tip>

<Note>All calculations are performed internally in USD. When a denomination asset other than USD is used, amounts are converted using current market exchange rates. This can lead to discrepancies in portfolio performance values, which tend to be minor for assets that remain relatively stable against USD.</Note>

## Denomination

The `denomination` query parameter allows you to denominate rates against another asset. If no value is set for this parameter, it defaults to `USD`.

For a more detailed explanation of the denomination concept, check the [Core Concepts](../concepts#denomination) page.

## Interval

The `interval` query parameter determines the time period for which performance data is calculated and returned. This allows you to analyze asset performance over different timeframes, from recent short-term activity to comprehensive long-term investment tracking. Each interval value corresponds to a specific historical period:

| Interval   | Description                   |
| :--------- | :---------------------------- |
| `one-hour` | Past hour of historical data  |
| `one-day`  | Past day of historical data   |
| `all-time` | All historical data available |


## OpenAPI

````yaml _media/specs/core-openapi.mintlify.json get /core/portfolio/assets/{asset}/performance
openapi: 3.1.0
info:
  version: 0.1.0
  title: Core API
  description: >-
    The Core API provides essential building blocks that empower businesses to
    embed financial services into their applications.
  contact:
    name: Uphold API Team
    email: developers@uphold.com
    url: https://developer.uphold.com
servers:
  - url: https://api.enterprise.sandbox.uphold.com
    description: Sandbox
  - url: https://api.enterprise.uphold.com
    description: Production
security:
  - OAuth2: []
tags:
  - name: Authentication
    description: Authentication.
  - name: Countries
    description: Countries.
  - name: Users
    description: Users.
  - name: KYC
    description: Individual User's KYC.
  - name: KYB
    description: Business User's KYB.
  - name: Capabilities
    description: User capabilities.
  - name: Terms of service
    description: User terms of service.
  - name: Files
    description: Files.
  - name: Assets
    description: Assets, networks and rails.
  - name: Accounts
    description: Accounts.
  - name: External accounts
    description: External accounts.
  - name: Transactions
    description: Transactions.
  - name: Portfolio
    description: Portfolio.
  - name: Statements
    description: Statements.
  - name: Metadata
    description: Metadata.
  - name: Webhooks
    description: Webhooks.
paths:
  /core/portfolio/assets/{asset}/performance:
    get:
      tags:
        - Portfolio
      summary: Get asset performance
      description: >-
        Retrieves the performance of an asset in the portfolio, including the
        average cost, total invested, and unrealized gains (gains and losses).
      operationId: core.get-portfolio-asset-performance
      parameters:
        - $ref: '#/components/parameters/asset-code'
        - $ref: '#/components/parameters/denomination'
        - $ref: '#/components/parameters/portfolio-performance-interval'
      responses:
        '200':
          $ref: '#/components/responses/get-portfolio-asset-performance-response'
        '404':
          $ref: >-
            #/components/responses/get-portfolio-asset-performance-not-found-response
        '409':
          $ref: >-
            #/components/responses/get-portfolio-asset-performance-conflict-response
      security:
        - OAuth2:
            - core.portfolio:read
components:
  parameters:
    asset-code:
      name: asset
      description: The asset code.
      in: path
      required: true
      schema:
        type: string
        minLength: 1
      examples:
        BTC Asset:
          value: BTC
    denomination:
      name: denomination
      description: >-
        Specifies the asset code to use as the denomination for value
        conversion. If not provided, USD is used by default.
      in: query
      required: false
      schema:
        type: string
        minLength: 1
        default: USD
      examples:
        BTC Asset:
          value: BTC
    portfolio-performance-interval:
      name: interval
      description: The interval for the portfolio performance.
      in: query
      required: false
      schema:
        type: string
        enum:
          - one-hour
          - one-day
          - all-time
        default: one-day
  responses:
    get-portfolio-asset-performance-response:
      description: Portfolio asset performance retrieved.
      content:
        application/json:
          schema:
            type: object
            properties:
              performance:
                $ref: '#/components/schemas/portfolio-performance'
            required:
              - performance
          examples:
            Portfolio Performance Retrieved:
              value:
                performance:
                  averagePricePaid: '105072.09875643805'
                  totalInvested: '33.0399214539619448225'
                  unrealizedGains: '0.6314908505483631995'
      headers:
        x-uphold-request-id:
          description: >-
            A unique identifier for the request that can be shared with Uphold
            for troubleshooting purposes.
          required: true
          schema:
            type: string
            format: uuid
          examples:
            Request ID:
              value: 9092ee4d-f0fb-42e9-8787-b668dbcec531
    get-portfolio-asset-performance-not-found-response:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            Asset Not Found:
              value:
                code: entity_not_found
                message: The asset cannot be found
                details:
                  entity: asset
            Denomination Asset Not Found:
              value:
                code: entity_not_found
                message: The denomination asset cannot be found
                details:
                  context: query
                  property: denomination
                  entity: asset
      headers:
        x-uphold-request-id:
          description: >-
            A unique identifier for the request that can be shared with Uphold
            for troubleshooting purposes.
          required: true
          schema:
            type: string
            format: uuid
          examples:
            Request ID:
              value: 9092ee4d-f0fb-42e9-8787-b668dbcec531
    get-portfolio-asset-performance-conflict-response:
      description: Business logic error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            Denomination Asset Not Supported:
              value:
                code: asset_not_supported
                message: The denomination asset is not supported
                details:
                  context: query
                  property: denomination
      headers:
        x-uphold-request-id:
          description: >-
            A unique identifier for the request that can be shared with Uphold
            for troubleshooting purposes.
          required: true
          schema:
            type: string
            format: uuid
          examples:
            Request ID:
              value: 9092ee4d-f0fb-42e9-8787-b668dbcec531
  schemas:
    portfolio-performance:
      type: object
      properties:
        averagePricePaid:
          type: string
          description: The average cost of the portfolio.
        totalInvested:
          type: string
          description: The total amount invested in the portfolio.
        unrealizedGains:
          type: string
          description: The unrealized gains or losses of the portfolio.
      required:
        - averagePricePaid
        - totalInvested
        - unrealizedGains
    error:
      description: The error information.
      type: object
      properties:
        code:
          description: >-
            A short string with a brief explanation about the error code
            reported.
          type: string
        message:
          description: A human-readable message providing more details about the error.
          type: string
        details:
          description: Additional information about the error reported.
          type: object
          additionalProperties: true
      required:
        - code
        - message
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0 authentication.
      flows:
        clientCredentials:
          tokenUrl: /core/oauth2/token
          scopes:
            core.users:act-on-behalf-of: Grants access to act on behalf of a user
            core.users:create: Grants access to create users
            core.users:read: Grants access to view users
            core.users:delete: Grants access to delete users
            core.users.metadata:read: Grants access to view user metadata
            core.users.metadata:write: Grants access to modify user metadata
            core.kyc:read: Grants access to view KYC processes
            core.kyc.profile:update: Grants access to update profile KYC process
            core.kyc.address:update: Grants access to update address KYC process
            core.kyc.email:update: Grants access to update email KYC process
            core.kyc.phone:update: Grants access to update phone KYC process
            core.kyc.identity:update: Grants access to update identity KYC process
            core.kyc.proof-of-address:update: Grants access to update proof-of-address KYC process
            core.kyc.customer-due-diligence:update: Grants access to update customer due diligence KYC process
            core.kyc.enhanced-due-diligence:update: Grants access to update enhanced due diligence KYC process
            core.kyc.crypto-risk-assessment:update: Grants access to update crypto risk assessment KYC process
            core.kyc.self-categorization-statement:update: Grants access to update self-categorization statement KYC process
            core.kyc.tax-details:update: Grants access to update tax details KYC process
            core.capabilities:read: Grants access to view user capabilities
            core.terms-of-service:read: Grants access to view terms of service
            core.terms-of-service:accept: Grants access to accept terms of service
            core.files:create: Grants access to create files
            core.files:read: Grants access to view files
            core.files.metadata:read: Grants access to view files metadata
            core.files.metadata:write: Grants access to modify files metadata
            core.accounts:create: Grants access to create accounts
            core.accounts:read: Grants access to view accounts
            core.accounts:update: Grants access to update accounts
            core.accounts:archive: Grants access to archive accounts
            core.accounts:deposit-method: >-
              Grants access to deposit method needed for depositing into
              accounts
            core.accounts:use-test-helpers: Grants access to test helpers of accounts
            core.accounts.metadata:read: Grants access to view accounts metadata
            core.accounts.metadata:write: Grants access to modify accounts metadata
            core.assets:use-test-helpers: Grants access to test helpers of assets
            core.external-accounts:create: Grants access to create external accounts
            core.external-accounts:read: Grants access to view external accounts
            core.external-accounts:update: Grants access to update external accounts
            core.external-accounts:delete: Grants access to delete external accounts
            core.external-accounts.metadata:read: Grants access to view external accounts metadata
            core.external-accounts.metadata:write: Grants access to modify external accounts metadata
            core.transactions:create: Grants access to commit quotes
            core.transactions:read: Grants access to view transactions
            core.transactions.metadata:read: Grants access to view transactions metadata
            core.transactions.metadata:write: Grants access to modify transactions metadata
            core.transactions.requests-for-information:read: Grants access to view transactions requests for information
            core.transactions.requests-for-information:update: Grants access to update transactions requests for information
            core.portfolio:read: >-
              Grants access to view portfolio overview, performance, and
              historical balance
            core.statements:read: Grants access to read statements
            core.webhooks:management-link: Grants access to create webhook management links

````