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

# Future performance (template allocation)

> Expected future projection for a hypothetical portfolio defined by asset weights.



## OpenAPI

````yaml GET /insights/future-performance
openapi: 3.0.3
info:
  title: Wealthyhood Insights API
  version: 1.0.0
  description: >
    Template allocation insights for hypothetical portfolios defined by asset
    weights.


    All requests require a bearer token with the scopes advertised in the
    primary specification,

    and must include the `x-user-id` header so the platform can resolve the
    acting investor.


    **Allocation query parameters:** In addition to the documented query
    parameters, you pass one

    query parameter per asset you want to include in the hypothetical portfolio.
    The parameter **name**

    is the asset `assetCommonId` (any active id from the investment universe)
    and the **value** is the

    weight as a number; the weights across all asset parameters must sum to
    exactly **100**.


    Because the parameter **names are dynamic**, they are not listed in each
    operation's Query

    Parameters table — only the fixed parameters (`initial`, `monthly`) are.
    Example query string

    using two arbitrary asset ids:

    `?initial=10000&equities_uk=50&equities_eu=50` (add `&monthly=...` on the
    future performance

    endpoints when you want to override the default).
servers:
  - url: https://{host}
    variables:
      host:
        default: api.wealthyhood.com
        description: Wealthyhood API host name.
security:
  - bearerAuth: []
tags:
  - name: Insights
    description: Past and projected performance charts for template allocations.
paths:
  /insights/future-performance:
    get:
      tags:
        - Insights
      summary: Expected future performance for a template allocation
      description: >
        Returns projected performance bands (central, best, worse) by tenor for
        the given allocation.


        Optional `initial` and `monthly` default to platform defaults when
        omitted. Pass one query

        parameter per asset (`<assetCommonId>=<weight>`); the weights must sum
        to **100**.


        **Example query string:**
        `initial=10000&monthly=150&equities_uk=50&equities_eu=50`
      parameters:
        - $ref: '#/components/parameters/ExternalUserId'
        - name: initial
          in: query
          required: false
          description: Initial investment amount. Defaults apply when omitted.
          schema:
            type: string
            example: '10000'
        - name: monthly
          in: query
          required: false
          description: >-
            Monthly contribution amount (reserved for future use; defaults apply
            when omitted).
          schema:
            type: string
            example: '150'
      responses:
        '200':
          description: Future performance projections.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FuturePerformanceResponse'
              examples:
                sample:
                  summary: £10,000 initial, £150 monthly, 50/50 UK/EU equities
                  value:
                    futurePerformance:
                      1y:
                        - date: '2025-01-01T00:00:00.000Z'
                          value: 10000
                        - date: '2026-01-01T00:00:00.000Z'
                          value: 10650
                      10y:
                        - date: '2025-01-01T00:00:00.000Z'
                          value: 10000
                        - date: '2035-01-01T00:00:00.000Z'
                          value: 21800
                    futurePerformanceBest:
                      1y:
                        - date: '2025-01-01T00:00:00.000Z'
                          value: 10000
                        - date: '2026-01-01T00:00:00.000Z'
                          value: 11500
                      10y:
                        - date: '2025-01-01T00:00:00.000Z'
                          value: 10000
                        - date: '2035-01-01T00:00:00.000Z'
                          value: 28400
                    futurePerformanceWorse:
                      1y:
                        - date: '2025-01-01T00:00:00.000Z'
                          value: 10000
                        - date: '2026-01-01T00:00:00.000Z'
                          value: 9000
                      10y:
                        - date: '2025-01-01T00:00:00.000Z'
                          value: 10000
                        - date: '2035-01-01T00:00:00.000Z'
                          value: 15600
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |
            curl --request GET \
              --url 'https://api.wealthyhood.com/insights/future-performance?initial=10000&monthly=150&equities_uk=50&equities_eu=50' \
              --header 'Authorization: Bearer <token>' \
              --header 'x-user-id: <x-user-id>'
components:
  parameters:
    ExternalUserId:
      name: x-user-id
      in: header
      required: true
      description: MongoDB identifier of the user (B2B acting investor).
      schema:
        type: string
        pattern: ^[a-f0-9]{24}$
  schemas:
    FuturePerformanceResponse:
      type: object
      required:
        - futurePerformance
        - futurePerformanceBest
        - futurePerformanceWorse
      properties:
        futurePerformance:
          $ref: '#/components/schemas/PerformanceSeriesByTenor'
        futurePerformanceBest:
          $ref: '#/components/schemas/PerformanceSeriesByTenor'
        futurePerformanceWorse:
          $ref: '#/components/schemas/PerformanceSeriesByTenor'
      additionalProperties: false
    PerformanceSeriesByTenor:
      type: object
      description: >
        Map of performance tenor (e.g. `1m`, `6m`, `1y`, `5y`, `10y`) to arrays
        of portfolio value

        points over time. Tenor keys come from the statistics service; a
        response includes multiple

        tenors in practice. See the 200 example for the exact shape.
      additionalProperties:
        type: array
        items:
          type: object
          properties:
            date:
              type: string
              format: date-time
            value:
              type: number
          additionalProperties: false
    ApiErrorResponse:
      type: object
      properties:
        status:
          type: integer
        error:
          type: object
          properties:
            message:
              type: string
            description:
              type: string
              nullable: true
        responseId:
          type: string
          format: uuid
      additionalProperties: false
  responses:
    BadRequestError:
      description: Invalid query parameters or allocation weights.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
    UnauthorizedError:
      description: Missing or invalid bearer token, or user not found for partner.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
    ForbiddenError:
      description: Authenticated caller cannot access this resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Auth0-issued access token that includes the scopes listed for the route.

````