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

# Update Portfolio

> Update a tracked portfolio's holdings/params, then recompute its analytics
in the background. Returns immediately (the holdings change + series clear are
cheap and synchronous; the engine rebuild runs off the request path).



## OpenAPI

````yaml POST /v1/portfolio/{portfolio_key}/update
openapi: 3.1.0
info:
  title: Parallax API
  description: >-
    Parallax by Chicago Global — AI-powered investment research and portfolio
    analytics. Multi-factor scoring, portfolio analysis and tracking, financial
    statements, analyst estimates, ETF analytics, valuation (DCF & multiples),
    macro and market telemetry, and AI-generated research reports.
  version: 1.1.0
servers:
  - url: https://api.chicago.global
security:
  - HTTPBearer: []
paths:
  /v1/portfolio/{portfolio_key}/update:
    post:
      tags:
        - v1
        - Portfolio Tracker
      summary: Update Portfolio
      description: >-
        Update a tracked portfolio's holdings/params, then recompute its
        analytics

        in the background. Returns immediately (the holdings change + series
        clear are

        cheap and synchronous; the engine rebuild runs off the request path).
      operationId: update_portfolio_v1_portfolio__portfolio_key__update_post
      parameters:
        - name: portfolio_key
          in: path
          required: true
          schema:
            type: string
            title: Portfolio Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePortfolioRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '404':
          description: Not found
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error
      security:
        - HTTPBearer: []
components:
  schemas:
    UpdatePortfolioRequest:
      properties:
        portfolio:
          anyOf:
            - items:
                $ref: '#/components/schemas/PortfolioHolding'
              type: array
            - type: 'null'
          title: Portfolio
          description: Optional new holdings to replace the existing portfolio definition.
        base_currency:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Currency
          description: Override base currency for this portfolio.
          example: USD
        benchmark:
          anyOf:
            - type: string
            - type: 'null'
          title: Benchmark
          description: Override benchmark for this portfolio.
          example: ACWI.OQ
        initial_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Initial Value
          description: Override initial portfolio value in base currency.
          example: 10000
        include_transaction_costs:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Include Transaction Costs
          description: Override transaction cost setting for this update.
        transaction_cost_config:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Transaction Cost Config
          description: Override transaction cost config for this update.
      type: object
      title: UpdatePortfolioRequest
      description: >-
        Request model for updating a tracked portfolio.


        All fields are optional — send only what you want to change. If
        `portfolio`

        is provided, holdings are fully replaced. Analytics are recomputed in
        the

        background up to the latest trading day; extending the series through a

        specific date without changing definition is /increment's job.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PortfolioHolding:
      properties:
        date:
          type: string
          title: Date
          description: Rebalance date in YYYY-MM-DD format
          example: '2024-01-01'
        symbol:
          type: string
          title: Symbol
          description: Stock symbol or RIC (e.g., AAPL or AAPL.O)
          example: AAPL
        weight:
          type: number
          title: Weight
          description: Portfolio weight (as decimal, e.g., 0.25 for 25%)
          example: 0.25
      additionalProperties: false
      type: object
      required:
        - date
        - symbol
        - weight
      title: PortfolioHolding
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````