> ## 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.

# Validate Portfolio

> Dry-run validation for a new portfolio definition (same body as /track).

Returns every validation error and warning without persisting anything.
Use this client-side before calling /track to fix all issues in one pass.



## OpenAPI

````yaml POST /v1/portfolio/validate
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/validate:
    post:
      tags:
        - v1
        - Portfolio Tracker
      summary: Validate Portfolio
      description: >-
        Dry-run validation for a new portfolio definition (same body as /track).


        Returns every validation error and warning without persisting anything.

        Use this client-side before calling /track to fix all issues in one
        pass.
      operationId: validate_portfolio_v1_portfolio_validate_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackPortfolioRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PortfolioValidateResponse'
        '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:
    TrackPortfolioRequest:
      properties:
        portfolio:
          items:
            $ref: '#/components/schemas/PortfolioHolding'
          type: array
          title: Portfolio
          description: List of portfolio holdings with dates and weights
        base_currency:
          type: string
          title: Base Currency
          description: Base currency for portfolio
          default: USD
          example: USD
        initial_value:
          type: number
          title: Initial Value
          description: Initial portfolio value in base currency
          default: 10000
          example: 10000
        benchmark:
          type: string
          title: Benchmark
          description: Benchmark for comparison
          default: ACWI.OQ
          example: ACWI.OQ
        include_transaction_costs:
          type: boolean
          title: Include Transaction Costs
          description: Apply market-specific transaction costs during rebalancing
          default: false
          example: false
        transaction_cost_config:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Transaction Cost Config
          description: >-
            Custom transaction cost rates by market. Format: {'market_name':
            {'buy': rate, 'sell': rate}}.
          example:
            Singapore:
              buy: 0.14
              sell: 0.14
      type: object
      required:
        - portfolio
      title: TrackPortfolioRequest
      description: Request model for creating a tracked portfolio.
    PortfolioValidateResponse:
      properties:
        valid:
          type: boolean
          title: Valid
          description: True when the portfolio would pass track/update validation
        error_count:
          type: integer
          title: Error Count
        warning_count:
          type: integer
          title: Warning Count
        errors:
          items:
            $ref: '#/components/schemas/ValidationIssueResponse'
          type: array
          title: Errors
        warnings:
          items:
            $ref: '#/components/schemas/ValidationIssueResponse'
          type: array
          title: Warnings
        normalized:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Normalized
          description: Portfolio definition after weight renormalization (only when valid)
      type: object
      required:
        - valid
        - error_count
        - warning_count
        - errors
        - warnings
      title: PortfolioValidateResponse
    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
    ValidationIssueResponse:
      properties:
        code:
          type: string
          title: Code
          description: Machine-readable issue code
        message:
          type: string
          title: Message
          description: Human-readable description
        field:
          anyOf:
            - type: string
            - type: 'null'
          title: Field
          description: JSON-path-style field hint
      type: object
      required:
        - code
        - message
      title: ValidationIssueResponse
    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

````