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

# Get complete stock context

> Get full stock context with all relationships for a specific symbol.

## Query Parameters

- **date**: Trade date in YYYY-MM-DD format (default: today)
- **include**: Comma-separated list of includes:
  - `levels`: IntradayLevel data (pivots, IB, CPR, value area)
  - `volume_profile`: VolumeProfileSession (prior + developing)
  - `patterns`: Active technical patterns
  - `news`: News event summary
  - `strategies`: Strategy match recommendations
  - `confluence_components`: Structured v4.5 component breakdown (8 components with weights, scores, notes)
  - `level_ladder`: Sorted level ladder with ATR distances and confluence zones

## Response

Complete StockResult with all available metrics and requested includes.

## Performance Target

<100ms for single stock without includes, <300ms with includes.



## OpenAPI

````yaml /api/openapi.json get /api/graph/v1/stocks/{symbol}
openapi: 3.1.0
info:
  title: Sequency Graph API
  description: >

    # Sequency Graph-Native Trading API


    Graph-native API for trading intelligence, built on FalkorDB.


    ## Features


    - **Screener**: Filter stocks using graph-native queries with relationship
    expansion

    - **Stock Detail**: Complete stock context with all relationships

    - **Confluence Scoring**: Setup quality assessment with weighted components

    - **Strategy Matching**: Find matching options strategies via graph
    traversal

    - **Market Context**: Current market-wide context for trading decisions


    ## Data Sources


    All data is sourced from the FalkorDB knowledge graph, populated by:

    - Pattern detector (Go) - Technical indicators, patterns

    - Graph sync service - Levels, volume profiles, news, day classification
  version: 1.0.0
servers: []
security: []
paths:
  /api/graph/v1/stocks/{symbol}:
    get:
      tags:
        - Stocks
      summary: Get complete stock context
      description: |-
        Get full stock context with all relationships for a specific symbol.

        ## Query Parameters

        - **date**: Trade date in YYYY-MM-DD format (default: today)
        - **include**: Comma-separated list of includes:
          - `levels`: IntradayLevel data (pivots, IB, CPR, value area)
          - `volume_profile`: VolumeProfileSession (prior + developing)
          - `patterns`: Active technical patterns
          - `news`: News event summary
          - `strategies`: Strategy match recommendations
          - `confluence_components`: Structured v4.5 component breakdown (8 components with weights, scores, notes)
          - `level_ladder`: Sorted level ladder with ATR distances and confluence zones

        ## Response

        Complete StockResult with all available metrics and requested includes.

        ## Performance Target

        <100ms for single stock without includes, <300ms with includes.
      operationId: get_stock_api_graph_v1_stocks__symbol__get
      parameters:
        - name: symbol
          in: path
          required: true
          schema:
            type: string
            title: Symbol
        - name: date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                pattern: ^\d{4}-\d{2}-\d{2}$
              - type: 'null'
            description: Trade date (YYYY-MM-DD), defaults to today
            title: Date
          description: Trade date (YYYY-MM-DD), defaults to today
        - name: include
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Comma-separated includes:
              levels,patterns,news,volume_profile,strategies,confluence_components,level_ladder,thematic_exposure
            title: Include
          description: >-
            Comma-separated includes:
            levels,patterns,news,volume_profile,strategies,confluence_components,level_ladder,thematic_exposure
      responses:
        '200':
          description: Stock details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StockResult'
        '404':
          description: Stock not found
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '504':
          description: Query timeout
components:
  schemas:
    StockResult:
      properties:
        symbol:
          type: string
          title: Symbol
          description: Stock ticker symbol
        company_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Company Name
          description: Company name (e.g. NVIDIA Corporation)
        company_description:
          anyOf:
            - type: string
            - type: 'null'
          title: Company Description
          description: Company description
        ceo:
          anyOf:
            - type: string
            - type: 'null'
          title: Ceo
          description: CEO name
        headquarters:
          anyOf:
            - type: string
            - type: 'null'
          title: Headquarters
          description: Headquarters location
        employees:
          anyOf:
            - type: integer
            - type: 'null'
          title: Employees
          description: Number of full-time employees
        ipo_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Ipo Date
          description: IPO date
        website:
          anyOf:
            - type: string
            - type: 'null'
          title: Website
          description: Company website URL
        logo_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Logo Url
          description: Company logo URL
        last_price:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Last Price
          description: >-
            Last price. Delayed (>= 15m old) for non-realtime_sip callers; the
            live scalar is suppressed to null when no delayed bar is available
            (see `source`).
        source:
          type: string
          title: Source
          description: >-
            Market-data feed source label (entitlement layer): 'realtime_sip' |
            'delayed' | 'byok'. Non-realtime_sip callers get 'delayed'.
          default: realtime_sip
        volume:
          type: integer
          minimum: 0
          title: Volume
        dollar_volume:
          type: number
          minimum: 0
          title: Dollar Volume
          description: >-
            DEPRECATED: Use adv20_usd (20-day avg) or dollar_volume_today.
            Currently stores 20-day average.
        dollar_volume_today:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Dollar Volume Today
          description: Today's dollar volume (last_price × volume)
        adv20_usd:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Adv20 Usd
          description: >-
            20-day average dollar volume (canonical name for what was
            misleadingly called dollar_volume)
        adv30_usd:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Adv30 Usd
          description: 30-day average dollar volume
        adv30_shares:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Adv30 Shares
          description: '30-day average daily share volume (for liquidity hard gate: >= 500k)'
        rel_volume:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Rel Volume
          description: 'Relative volume: yesterday''s volume / 20-day average daily volume'
        rel_vol_5d:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Rel Vol 5D
          description: 5-day average volume / 20-day average volume (volume trend)
        volume_trend:
          anyOf:
            - type: string
              enum:
                - increasing
                - decreasing
                - stable
            - type: 'null'
          title: Volume Trend
        technical:
          anyOf:
            - $ref: '#/components/schemas/Technical'
            - type: 'null'
        compression:
          anyOf:
            - $ref: '#/components/schemas/Compression'
            - type: 'null'
        options:
          anyOf:
            - $ref: '#/components/schemas/Options'
            - type: 'null'
        fundamental:
          anyOf:
            - $ref: '#/components/schemas/Fundamental'
            - type: 'null'
        day_context:
          anyOf:
            - $ref: '#/components/schemas/DayContext'
            - type: 'null'
        earnings:
          anyOf:
            - $ref: '#/components/schemas/Earnings'
            - type: 'null'
        range_3d:
          anyOf:
            - $ref: '#/components/schemas/Range3D'
            - type: 'null'
        analyst:
          anyOf:
            - $ref: '#/components/schemas/Analyst'
            - type: 'null'
        ownership:
          anyOf:
            - $ref: '#/components/schemas/Ownership'
            - type: 'null'
        levels:
          anyOf:
            - $ref: '#/components/schemas/Levels'
            - type: 'null'
        volume_profile:
          anyOf:
            - $ref: '#/components/schemas/VolumeProfile'
            - type: 'null'
        patterns:
          anyOf:
            - items:
                $ref: '#/components/schemas/app__models__stock__Pattern'
              type: array
            - type: 'null'
          title: Patterns
        news:
          anyOf:
            - $ref: '#/components/schemas/News'
            - type: 'null'
        price_events:
          anyOf:
            - items:
                $ref: '#/components/schemas/PriceEvent'
              type: array
            - type: 'null'
          title: Price Events
          description: >-
            Recent price events (gaps, breakouts, MA crossovers, volume events).
            Populated via include option.
        confluence_components:
          anyOf:
            - $ref: '#/components/schemas/ConfluenceComponentBreakdown'
            - type: 'null'
          description: >-
            Structured breakdown of 8 v4.5 confluence components with weights
            and notes. Populated via include option.
        level_ladder:
          anyOf:
            - $ref: '#/components/schemas/LevelLadder'
            - type: 'null'
          description: >-
            Sorted level ladder with ATR distances and confluence zones.
            Populated via include option.
        price:
          anyOf:
            - $ref: '#/components/schemas/SessionPriceData'
            - type: 'null'
          description: >-
            Session-specific price data with pre-market, regular, and
            after-hours OHLC
        confluence_score:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Confluence Score
          description: >-
            Confluence score v3 (0-100): weighted combination of volume,
            technical, day type, pattern, and proximity scores
        confluence_tier:
          anyOf:
            - type: string
            - type: 'null'
          title: Confluence Tier
          description: >-
            Tier derived from confluence_score: EXCELLENT (>=90), GOOD (>=80),
            MODERATE (>=70), WEAK (>=60), POOR (<60)
        bullish_confluence:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Bullish Confluence
          description: 'Canonical bullish confluence (0-100): v5 scoring'
        bearish_confluence:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Bearish Confluence
          description: 'Canonical bearish confluence (0-100): v5 scoring'
        bullish_tier:
          anyOf:
            - type: string
            - type: 'null'
          title: Bullish Tier
          description: >-
            Tier from bullish_confluence: EXCELLENT (>=85), GOOD (>=70),
            MODERATE (>=50), WEAK (>=25), POOR (<25)
        bearish_tier:
          anyOf:
            - type: string
            - type: 'null'
          title: Bearish Tier
          description: >-
            Tier from bearish_confluence: EXCELLENT (>=85), GOOD (>=70),
            MODERATE (>=50), WEAK (>=25), POOR (<25)
        net_confluence:
          anyOf:
            - type: number
              maximum: 100
              minimum: -100
            - type: 'null'
          title: Net Confluence
          description: >-
            Canonical net confluence (-100 to +100): bullish_confluence -
            bearish_confluence
        directional_bias:
          anyOf:
            - type: string
            - type: 'null'
          title: Directional Bias
          description: Canonical directional bias from net_confluence thresholds
        scoring_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Scoring Version
          description: Canonical confluence scoring version source (v5 preferred)
        conviction_max_v5:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Conviction Max V5
          description: max(bull, bear) — conviction regardless of direction (0-100)
        conflict_min_v5:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Conflict Min V5
          description: min(bull, bear) — disagreement signal (0-100)
        directional_bias_v5:
          anyOf:
            - type: string
            - type: 'null'
          title: Directional Bias V5
          description: BULL_DOMINANT / BEAR_DOMINANT / MIXED (10pt margin)
        is_overextended:
          type: boolean
          title: Is Overextended
          description: True if price is >2 ATR from SMA20 (exhaustion risk for bulls)
          default: false
        is_distribution:
          type: boolean
          title: Is Distribution
          description: True if elevated volume with declining trend (bearish signal)
          default: false
        nearest_level_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Nearest Level Type
          description: >-
            Classification of nearest level: 'support', 'resistance', or
            'neutral'
        cvd:
          anyOf:
            - type: number
            - type: 'null'
          title: Cvd
          description: >-
            Cumulative Volume Delta (raw shares, positive=buying,
            negative=selling)
        cvd_pct:
          anyOf:
            - type: number
            - type: 'null'
          title: Cvd Pct
          description: >-
            CVD as % of total session volume (normalized, cross-symbol
            comparable)
        cvd_divergence:
          anyOf:
            - type: string
            - type: 'null'
          title: Cvd Divergence
          description: 'CVD vs price divergence: bullish_div, bearish_div, none'
        cvd_trend:
          anyOf:
            - type: string
            - type: 'null'
          title: Cvd Trend
          description: 'CVD trend: accumulating, distributing, neutral'
        bullish_entry_score:
          anyOf:
            - type: number
            - type: 'null'
          title: Bullish Entry Score
          description: Bullish entry score 0-100 (intraday timing)
        bearish_entry_score:
          anyOf:
            - type: number
            - type: 'null'
          title: Bearish Entry Score
          description: Bearish entry score 0-100 (intraday timing)
        net_entry_score:
          anyOf:
            - type: number
            - type: 'null'
          title: Net Entry Score
          description: 'Net entry score (-100 to +100): bullish - bearish'
        entry_score_completeness:
          anyOf:
            - type: number
            - type: 'null'
          title: Entry Score Completeness
          description: Entry score completeness 0.0-1.0 (how many components available)
        entry_gates_passed:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Entry Gates Passed
          description: Whether all entry quality gates passed
        entry_failed_gates:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Entry Failed Gates
          description: List of failed entry quality gate names
        entry_gex_modifier:
          anyOf:
            - type: string
            - type: 'null'
          title: Entry Gex Modifier
          description: 'GEX regime modifier applied: long_gamma, short_gamma, or empty'
        gex_regime:
          anyOf:
            - type: string
            - type: 'null'
          title: Gex Regime
          description: 'Current GEX regime: long_gamma, short_gamma, or neutral'
        gex_gamma_flip:
          anyOf:
            - type: number
            - type: 'null'
          title: Gex Gamma Flip
          description: Strike price where dealer gamma flips sign
        momentum_trend_bull:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Momentum Trend Bull
          description: >-
            V4.2 momentum component bullish score (0-10). Positive momentum
            favors bulls.
        momentum_trend_bear:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Momentum Trend Bear
          description: >-
            V4.2 momentum component bearish score (0-10). Negative momentum
            favors bears.
        momentum_blend:
          anyOf:
            - type: number
            - type: 'null'
          title: Momentum Blend
          description: >-
            Blended multi-horizon return: 0.5*ret_60d + 0.3*ret_90d +
            0.2*ret_20d (percentage)
        momentum_slope_60d:
          anyOf:
            - type: number
            - type: 'null'
          title: Momentum Slope 60D
          description: >-
            Linear regression slope of log(close) over 60 days (annualized
            percentage)
        proximity_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Proximity Bull
        proximity_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Proximity Bear
        volatility_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Volatility Bull
        volatility_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Volatility Bear
        volume_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Volume Bull
        volume_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Volume Bear
        pattern_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Pattern Bull
        pattern_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Pattern Bear
        iv_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Iv Bull
        iv_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Iv Bear
        day_type_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Day Type Bull
        day_type_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Day Type Bear
        vix_regime_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Vix Regime Bull
        vix_regime_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Vix Regime Bear
        event_proximity_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Event Proximity Bull
        event_proximity_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Event Proximity Bear
        beta_gate_passed:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Beta Gate Passed
          description: >-
            True if stock passes beta risk gate (VIX-aware: max 1.5 in
            EXTREME_FEAR, 2.0 in ELEVATED)
        beta_gate_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Beta Gate Reason
          description: Explanation for beta gate result
        fundamental_gate_passed:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Fundamental Gate Passed
          description: True if stock passes fundamental quality gate (quality score >= 50)
        fundamental_quality_score:
          anyOf:
            - type: integer
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Fundamental Quality Score
          description: >-
            Fundamental quality score (0-100) based on P/E, ROE, and profit
            margin
        fundamental_grade:
          anyOf:
            - type: string
            - type: 'null'
          title: Fundamental Grade
          description: >-
            Fundamental health grade A-F based on growth, margins, leverage,
            earnings execution, and sentiment
        fundamental_health_score:
          anyOf:
            - type: integer
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Fundamental Health Score
          description: Fundamental health score (0-100) underlying the A-F grade
        earnings_sentiment_bias:
          anyOf:
            - type: string
            - type: 'null'
          title: Earnings Sentiment Bias
          description: >-
            Earnings sentiment from surprise %: POSITIVE (>10%), SLIGHT_POSITIVE
            (0-10%), SLIGHT_NEGATIVE (-10-0%), NEGATIVE (<-10%)
        all_quality_gates_passed:
          anyOf:
            - type: boolean
            - type: 'null'
          title: All Quality Gates Passed
          description: >-
            True if all quality gates (beta, fundamental, earnings sentiment)
            passed
        pricing_edge_bull:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Pricing Edge Bull
          description: Pricing edge bullish score from binomial pricer (0-10)
        pricing_edge_bear:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Pricing Edge Bear
          description: Pricing edge bearish score (0-10)
        greek_alignment_bull:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Greek Alignment Bull
          description: Greek alignment bullish score based on VIX regime (0-10)
        greek_alignment_bear:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Greek Alignment Bear
          description: Greek alignment bearish score (0-10)
        orb_structure_bull:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Orb Structure Bull
          description: ORB structure bullish score (trap/breakout patterns, 0-10)
        orb_structure_bear:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Orb Structure Bear
          description: ORB structure bearish score (0-10)
        orb_proximity_bull:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Orb Proximity Bull
          description: ORB proximity bullish score (0-10)
        orb_proximity_bear:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Orb Proximity Bear
          description: ORB proximity bearish score (0-10)
        v44_intraday_circuit_breaker_gate_passed:
          anyOf:
            - type: boolean
            - type: 'null'
          title: V44 Intraday Circuit Breaker Gate Passed
          description: True if intraday circuit breaker gate passed (no severe decline)
        intraday_return_pct:
          anyOf:
            - type: number
            - type: 'null'
          title: Intraday Return Pct
          description: 'Intraday return percentage: (last_price - pdc) / pdc * 100'
        intraday_return_bull:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Intraday Return Bull
          description: Intraday return bullish component score (0-10)
        intraday_return_bear:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Intraday Return Bear
          description: Intraday return bearish component score (0-10)
        extreme_rsi_warning:
          type: boolean
          title: Extreme Rsi Warning
          description: True when RSI < 15 or RSI > 85 (extreme territory)
          default: false
        confluence_computed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Confluence Computed At
          description: >-
            Timestamp when confluence scores were last computed (for staleness
            detection)
        score_warnings:
          items:
            type: string
          type: array
          title: Score Warnings
          description: >-
            Active score warnings. Open-set vocabulary — consumers MUST default
            to pass-through on unknown values. Current known values:
            intraday_decline_severe, extreme_rsi, circuit_breaker_active,
            score_stale, conviction_stale. See
            app/documentation/ontology/SCORING_REGISTRY.md § Scoring Version
            Precedence.
        pulse_bull:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Pulse Bull
          description: 'Pulse bullish score (0-100): real-time intraday conviction'
        pulse_bear:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Pulse Bear
          description: 'Pulse bearish score (0-100): real-time intraday conviction'
        pulse_net:
          anyOf:
            - type: number
              maximum: 100
              minimum: -100
            - type: 'null'
          title: Pulse Net
          description: 'Pulse net score (-100 to +100): pulse_bull - pulse_bear'
        pulse_bias:
          anyOf:
            - type: string
            - type: 'null'
          title: Pulse Bias
          description: >-
            Pulse directional bias:
            STRONG_LONG/MOD_LONG/NEUTRAL/MOD_SHORT/STRONG_SHORT
        pulse_computed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Pulse Computed At
          description: >-
            Timestamp when pulse scores were last computed (for staleness
            detection)
        entry_score_computed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Entry Score Computed At
          description: >-
            Timestamp when entry scores were last computed (for staleness
            detection)
        orb_directional_bias:
          anyOf:
            - type: string
            - type: 'null'
          title: Orb Directional Bias
          description: 'ORB directional bias: bullish|bearish|neutral'
        dark_pool_pct_1d:
          anyOf:
            - type: number
            - type: 'null'
          title: Dark Pool Pct 1D
          description: Session dark pool volume percentage (0-1)
        block_trade_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Block Trade Count
          description: Number of block trades detected today
        buy_sell_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Buy Sell Ratio
          description: Buy/sell volume ratio (Lee-Ready tick rule)
        net_buy_volume:
          anyOf:
            - type: integer
            - type: 'null'
          title: Net Buy Volume
          description: Net buy volume (buy - sell)
        dark_volume_1d:
          anyOf:
            - type: integer
            - type: 'null'
          title: Dark Volume 1D
          description: Total dark pool volume today
        lit_volume_1d:
          anyOf:
            - type: integer
            - type: 'null'
          title: Lit Volume 1D
          description: Total lit exchange volume today
        regime_v5:
          anyOf:
            - $ref: '#/components/schemas/RegimeV5'
            - type: 'null'
        confluence_v5:
          anyOf:
            - $ref: '#/components/schemas/ConfluenceV5'
            - type: 'null'
        momentum_health_v5:
          anyOf:
            - $ref: '#/components/schemas/MomentumHealthV5'
            - type: 'null'
        conviction_v5:
          anyOf:
            - $ref: '#/components/schemas/ConvictionV5'
            - type: 'null'
        conviction_v5_session_open:
          anyOf:
            - type: number
            - type: 'null'
          title: Conviction V5 Session Open
        conviction_v5_lookback:
          anyOf:
            - type: number
            - type: 'null'
          title: Conviction V5 Lookback
        conviction_v5_lookback_minutes:
          anyOf:
            - type: integer
            - type: 'null'
          title: Conviction V5 Lookback Minutes
        conviction_v5_velocity:
          anyOf:
            - type: number
            - type: 'null'
          title: Conviction V5 Velocity
        conviction_v5_stability:
          anyOf:
            - type: number
            - type: 'null'
          title: Conviction V5 Stability
        conviction_v5_direction_minutes:
          anyOf:
            - type: integer
            - type: 'null'
          title: Conviction V5 Direction Minutes
        conviction_v5_direction_flip:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Conviction V5 Direction Flip
        conviction_v5_delta_valid:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Conviction V5 Delta Valid
        pulse_v5:
          anyOf:
            - $ref: '#/components/schemas/PulseV5'
            - type: 'null'
        entry_v2:
          anyOf:
            - $ref: '#/components/schemas/EntryV2'
            - type: 'null'
        peer_divergence_v1:
          anyOf:
            - $ref: '#/components/schemas/PeerDivergenceV1'
            - type: 'null'
        thematic_exposures:
          anyOf:
            - items:
                $ref: '#/components/schemas/ThematicExposure'
              type: array
            - type: 'null'
          title: Thematic Exposures
          description: Structural theme exposures with direction, magnitude, and momentum
        updated_at:
          type: string
          format: date-time
          title: Updated At
        halted:
          type: boolean
          title: Halted
          default: false
        quote_timestamp:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Quote Timestamp
          description: 'Timestamp of latest quote data (SLA: < 5 seconds)'
        bar_1min_timestamp:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Bar 1Min Timestamp
          description: 'Timestamp of latest 1-minute bar (SLA: < 5 minutes)'
        bar_daily_timestamp:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Bar Daily Timestamp
          description: 'Timestamp of latest daily bar (SLA: < 4 hours during market)'
      type: object
      required:
        - symbol
        - volume
        - dollar_volume
        - updated_at
      title: StockResult
      description: |-
        Complete stock data with all available metrics.

        This is the primary response model for stock queries.
      example:
        adv20_usd: 8000000000
        adv30_usd: 7500000000
        dollar_volume: 8000000000
        dollar_volume_today: 8797500000
        last_price: 195.5
        rel_volume: 1.17
        symbol: AAPL
        technical:
          rsi_14: 55.2
          trend_stack_valid: true
        updated_at: '2025-12-20T15:30:00Z'
        volume: 45000000
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Technical:
      properties:
        rsi_14:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Rsi 14
        macd:
          anyOf:
            - type: number
            - type: 'null'
          title: Macd
        macd_signal:
          anyOf:
            - type: number
            - type: 'null'
          title: Macd Signal
        adx_14:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Adx 14
        atr_14:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Atr 14
        moving_averages:
          anyOf:
            - $ref: '#/components/schemas/MovingAverages'
            - type: 'null'
        bollinger:
          anyOf:
            - $ref: '#/components/schemas/Bollinger'
            - type: 'null'
        trend_stack_valid:
          type: boolean
          title: Trend Stack Valid
          description: True if EMA9 > EMA20 > SMA50 > SMA200
          default: false
        atr_1m_14:
          anyOf:
            - type: number
            - type: 'null'
          title: Atr 1M 14
        daily_atr:
          additionalProperties:
            anyOf:
              - type: number
              - type: 'null'
          type: object
          title: Daily Atr
          description: 'EOD-frozen daily ATR by period. Keys: ''14'', ''20''.'
        daily_atr_live:
          anyOf:
            - type: number
            - type: 'null'
          title: Daily Atr Live
        range_vs_atr_14:
          anyOf:
            - type: number
            - type: 'null'
          title: Range Vs Atr 14
      type: object
      title: Technical
      description: Technical indicator values.
    Compression:
      properties:
        is_nr7:
          type: boolean
          title: Is Nr7
          description: Narrowest range of last 7 days
          default: false
        is_inside_day:
          type: boolean
          title: Is Inside Day
          description: Today's range inside prior day
          default: false
        atr_compression_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Atr Compression Ratio
          description: 'Legacy: ATR(3) / ATR(14). Prefer range_vs_atr_14.'
        range_vs_atr_14:
          anyOf:
            - type: number
            - type: 'null'
          title: Range Vs Atr 14
          description: Today's range / daily ATR(14) — replaces atr_compression_ratio
        vcp_contraction_count:
          type: integer
          title: Vcp Contraction Count
          description: Number of contracting pivot ranges
          default: 0
      type: object
      title: Compression
      description: Volatility compression indicators.
    Options:
      properties:
        iv_percentile:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Iv Percentile
          description: IV percentile vs 52-week range. Requires options pipeline.
          x-data-status: pending
        chain_total_oi:
          anyOf:
            - type: integer
            - type: 'null'
          title: Chain Total Oi
          description: Total open interest across all strikes. Requires options pipeline.
          x-data-status: pending
        chain_volume_1d:
          anyOf:
            - type: integer
            - type: 'null'
          title: Chain Volume 1D
          description: Total options volume today. Requires options pipeline.
          x-data-status: pending
        put_call_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Put Call Ratio
          description: Put volume / Call volume. Requires options pipeline.
          x-data-status: pending
        unusual_activity:
          type: boolean
          title: Unusual Activity
          description: Flagged for unusual options activity
          default: false
        iv_rank:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Iv Rank
          description: 'IV rank: current IV vs 52-week high/low range (0-100)'
        iv_skew:
          anyOf:
            - type: number
            - type: 'null'
          title: Iv Skew
          description: 'IV skew: put IV premium over call IV'
        pricing_edge_bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Pricing Edge Bull
          description: Pricing edge bullish component score from binomial pricer (0-10)
        pricing_edge_bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Pricing Edge Bear
          description: Pricing edge bearish component score (0-10)
        theta_drag_15d:
          anyOf:
            - type: number
            - type: 'null'
          title: Theta Drag 15D
          description: 15-day theta drag as % of premium
        options_confluence_score:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Options Confluence Score
          description: >-
            Standalone options confluence score (0-100): IV rank + pricing edge
            + skew + flow + Greeks + liquidity + equity confluence
        best_options_strategy:
          anyOf:
            - type: string
            - type: 'null'
          title: Best Options Strategy
          description: >-
            Best options strategy recommendation (e.g., MomentumBreakout,
            VolatilityCompression)
        strategy_scores_json:
          anyOf:
            - type: string
            - type: 'null'
          title: Strategy Scores Json
          description: JSON-encoded per-strategy viability scores from graph
        refresh_timestamp:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Refresh Timestamp
          description: 'Timestamp of last options data refresh (for SLA validation: < 60s)'
      type: object
      title: Options
      description: |-
        Options-related data.

        Note: Data availability depends on options-collector pipeline status.
    Fundamental:
      properties:
        market_cap:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Market Cap
        sector:
          anyOf:
            - type: string
            - type: 'null'
          title: Sector
        exchange:
          anyOf:
            - type: string
            - type: 'null'
          title: Exchange
        pe_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Pe Ratio
          description: Trailing P/E ratio (TTM)
        forward_pe:
          anyOf:
            - type: number
            - type: 'null'
          title: Forward Pe
          description: Forward P/E ratio
        eps_ttm:
          anyOf:
            - type: number
            - type: 'null'
          title: Eps Ttm
          description: Earnings per share (TTM)
        price_to_book:
          anyOf:
            - type: number
            - type: 'null'
          title: Price To Book
          description: Price to book value ratio
        price_to_sales:
          anyOf:
            - type: number
            - type: 'null'
          title: Price To Sales
          description: Price to sales ratio
        enterprise_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Enterprise Value
          description: Enterprise value (USD)
        peg_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Peg Ratio
          description: 'PEG ratio: forward P/E / (earnings growth YoY × 100)'
        peg_warning:
          anyOf:
            - type: string
            - type: 'null'
          title: Peg Warning
          description: 'PEG warning flag: ''negative_base'' when prior-period EPS is negative'
        ev_ebitda:
          anyOf:
            - type: number
            - type: 'null'
          title: Ev Ebitda
          description: EV/EBITDA ratio
        ev_ebitda_warning:
          anyOf:
            - type: string
            - type: 'null'
          title: Ev Ebitda Warning
          description: 'EV/EBITDA warning: ''negative_ebitda'' or ''extremely_high'''
        cash_and_equivalents:
          anyOf:
            - type: number
            - type: 'null'
          title: Cash And Equivalents
          description: Cash and short-term investments (USD)
        total_debt:
          anyOf:
            - type: number
            - type: 'null'
          title: Total Debt
          description: Total debt (USD)
        book_value_per_share:
          anyOf:
            - type: number
            - type: 'null'
          title: Book Value Per Share
          description: Book value per share (USD)
        operating_cash_flow:
          anyOf:
            - type: number
            - type: 'null'
          title: Operating Cash Flow
          description: Operating cash flow TTM (USD)
        net_leverage:
          anyOf:
            - type: number
            - type: 'null'
          title: Net Leverage
          description: 'Net leverage: (total_debt - cash) / EBITDA'
        roe:
          anyOf:
            - type: number
            - type: 'null'
          title: Roe
          description: Return on equity (%)
        roa:
          anyOf:
            - type: number
            - type: 'null'
          title: Roa
          description: Return on assets (%)
        profit_margin:
          anyOf:
            - type: number
            - type: 'null'
          title: Profit Margin
          description: Net profit margin (%)
        gross_margin:
          anyOf:
            - type: number
            - type: 'null'
          title: Gross Margin
          description: Gross profit margin (%)
        operating_margin:
          anyOf:
            - type: number
            - type: 'null'
          title: Operating Margin
          description: Operating margin (%)
        net_margin:
          anyOf:
            - type: number
            - type: 'null'
          title: Net Margin
          description: Net profit margin (%) — from FMP ratios
        roic:
          anyOf:
            - type: number
            - type: 'null'
          title: Roic
          description: Return on invested capital (%)
        dividend_yield:
          anyOf:
            - type: number
            - type: 'null'
          title: Dividend Yield
          description: Dividend yield (%)
        payout_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Payout Ratio
          description: Dividend payout ratio (%)
        debt_to_equity:
          anyOf:
            - type: number
            - type: 'null'
          title: Debt To Equity
          description: Debt to equity ratio
        current_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Current Ratio
          description: Current ratio (liquidity)
        revenue_growth_yoy:
          anyOf:
            - type: number
            - type: 'null'
          title: Revenue Growth Yoy
          description: Revenue growth YoY (%)
        earnings_growth_yoy:
          anyOf:
            - type: number
            - type: 'null'
          title: Earnings Growth Yoy
          description: Earnings growth YoY (%)
        beta:
          anyOf:
            - type: number
            - type: 'null'
          title: Beta
          description: Beta vs market
        shares_outstanding:
          anyOf:
            - type: number
            - type: 'null'
          title: Shares Outstanding
          description: Total shares outstanding
        float_shares:
          anyOf:
            - type: number
            - type: 'null'
          title: Float Shares
          description: Float shares
        free_float_pct:
          anyOf:
            - type: number
            - type: 'null'
          title: Free Float Pct
          description: Free float percentage
      type: object
      title: Fundamental
      description: >-
        Fundamental data.


        Most fields are written by the Go graph writer from Yahoo Finance

        fundamentals collector. market_cap, sector, exchange are core
        identifiers.
    DayContext:
      properties:
        day_type:
          type: string
          enum:
            - trending
            - rotational
            - uncertain
          title: Day Type
        day_type_detail:
          anyOf:
            - type: string
              enum:
                - strong_trend
                - trending
                - mixed
                - rotational
                - strong_rotational
            - type: 'null'
          title: Day Type Detail
          description: 5-point scale day type classification for more granular analysis
        trend_score:
          type: number
          maximum: 1
          minimum: -1
          title: Trend Score
        rotation_score:
          type: number
          maximum: 1
          minimum: 0
          title: Rotation Score
        strategy_bias:
          anyOf:
            - type: string
            - type: 'null'
          title: Strategy Bias
        size_modifier:
          type: number
          maximum: 2
          minimum: 0.5
          title: Size Modifier
          default: 1
      type: object
      required:
        - day_type
        - trend_score
        - rotation_score
      title: DayContext
      description: Daily classification context.
    Earnings:
      properties:
        days_until:
          anyOf:
            - type: integer
            - type: 'null'
          title: Days Until
          description: Days until next earnings. Requires earnings pipeline.
          x-data-status: pending
        cleared:
          type: boolean
          title: Cleared
          description: True if >3 days past most recent earnings
          default: false
        surprise_pct:
          anyOf:
            - type: number
            - type: 'null'
          title: Surprise Pct
          description: 'Earnings surprise %: ((actual - estimate) / |estimate|) * 100'
        surprise_zscore:
          anyOf:
            - type: number
            - type: 'null'
          title: Surprise Zscore
          description: Z-score vs trailing 8-quarter surprise distribution
        consecutive_beats:
          type: integer
          title: Consecutive Beats
          description: Consecutive beats (positive) or misses (negative)
          default: 0
        beat_rate_8q:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Beat Rate 8Q
          description: Beat rate over trailing 8 quarters (0.0 to 1.0)
        surprise_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Surprise Category
          description: BLOWOUT_BEAT, SOLID_BEAT, INLINE, MISS, BLOWOUT_MISS
        normalized_surprise:
          anyOf:
            - type: string
            - type: 'null'
          title: Normalized Surprise
          description: EXCEPTIONAL_BEAT, STRONG_BEAT, MODEST_BEAT, INLINE, etc.
        revenue_eps_aligned:
          type: boolean
          title: Revenue Eps Aligned
          description: True if both EPS and revenue beat or both miss
          default: false
      type: object
      title: Earnings
      description: |-
        Earnings-related data including surprise metrics.

        Note: Data availability depends on earnings-sync pipeline status.
    Range3D:
      properties:
        high:
          type: number
          title: High
        low:
          type: number
          title: Low
        break_high:
          type: boolean
          title: Break High
          description: Broke 3-day high today
          default: false
        break_low:
          type: boolean
          title: Break Low
          description: Broke 3-day low today
          default: false
      type: object
      required:
        - high
        - low
      title: Range3D
      description: 3-day range breakout tracking.
    Analyst:
      properties:
        consensus:
          anyOf:
            - type: string
            - type: 'null'
          title: Consensus
          description: 'Consensus label: Buy, Hold, Sell, etc.'
        score:
          anyOf:
            - type: number
            - type: 'null'
          title: Score
          description: Weighted score 1-5 (strongSell=1..strongBuy=5)
        count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Count
          description: Total analyst ratings count
        strong_buy_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Strong Buy Count
          description: Strong Buy analyst count
        buy_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Buy Count
          description: Buy analyst count
        hold_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Hold Count
          description: Hold analyst count
        sell_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Sell Count
          description: Sell analyst count
        strong_sell_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Strong Sell Count
          description: Strong Sell analyst count
        target_mean:
          anyOf:
            - type: number
            - type: 'null'
          title: Target Mean
          description: Consensus target price
        target_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Target High
          description: Highest analyst target
        target_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Target Low
          description: Lowest analyst target
        target_upside:
          anyOf:
            - type: number
            - type: 'null'
          title: Target Upside
          description: '% upside to target from current price'
        est_eps_avg:
          anyOf:
            - type: number
            - type: 'null'
          title: Est Eps Avg
          description: Consensus EPS estimate (annual)
        est_eps_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Est Eps High
          description: Highest EPS estimate
        est_eps_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Est Eps Low
          description: Lowest EPS estimate
        est_revenue_avg:
          anyOf:
            - type: number
            - type: 'null'
          title: Est Revenue Avg
          description: Consensus revenue estimate (USD)
        num_analysts_eps:
          anyOf:
            - type: integer
            - type: 'null'
          title: Num Analysts Eps
          description: Number of analysts covering EPS
        est_fy2_eps_avg:
          anyOf:
            - type: number
            - type: 'null'
          title: Est Fy2 Eps Avg
          description: FY+2 consensus EPS estimate
        est_fy2_eps_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Est Fy2 Eps High
          description: FY+2 highest EPS estimate
        est_fy2_eps_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Est Fy2 Eps Low
          description: FY+2 lowest EPS estimate
        latest_grade_firm:
          anyOf:
            - type: string
            - type: 'null'
          title: Latest Grade Firm
          description: Most recent grading firm
        latest_grade_action:
          anyOf:
            - type: string
            - type: 'null'
          title: Latest Grade Action
          description: 'Action: maintain, upgrade, downgrade'
        latest_grade_to:
          anyOf:
            - type: string
            - type: 'null'
          title: Latest Grade To
          description: 'New grade: Overweight, Buy, etc.'
        latest_grade_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Latest Grade Date
          description: Date of grade change (YYYY-MM-DD)
      type: object
      title: Analyst
      description: Analyst consensus, estimates, and rating data from FMP (COR-68/69).
    Ownership:
      properties:
        insider_purchases:
          anyOf:
            - type: integer
            - type: 'null'
          title: Insider Purchases
          description: Total insider purchase transactions
        insider_sales:
          anyOf:
            - type: integer
            - type: 'null'
          title: Insider Sales
          description: Total insider sale transactions
        insider_acquired:
          anyOf:
            - type: number
            - type: 'null'
          title: Insider Acquired
          description: Total shares acquired by insiders
        insider_disposed:
          anyOf:
            - type: number
            - type: 'null'
          title: Insider Disposed
          description: Total shares disposed by insiders
        insider_sentiment:
          anyOf:
            - type: string
            - type: 'null'
          title: Insider Sentiment
          description: 'Derived: buying, selling, neutral'
      type: object
      title: Ownership
      description: Insider and institutional ownership data from FMP (COR-68/69).
    Levels:
      properties:
        pivot_pp:
          anyOf:
            - type: number
            - type: 'null'
          title: Pivot Pp
        pivot_r1:
          anyOf:
            - type: number
            - type: 'null'
          title: Pivot R1
        pivot_r2:
          anyOf:
            - type: number
            - type: 'null'
          title: Pivot R2
        pivot_r3:
          anyOf:
            - type: number
            - type: 'null'
          title: Pivot R3
        pivot_s1:
          anyOf:
            - type: number
            - type: 'null'
          title: Pivot S1
        pivot_s2:
          anyOf:
            - type: number
            - type: 'null'
          title: Pivot S2
        pivot_s3:
          anyOf:
            - type: number
            - type: 'null'
          title: Pivot S3
        cpr_tc:
          anyOf:
            - type: number
            - type: 'null'
          title: Cpr Tc
        cpr_bc:
          anyOf:
            - type: number
            - type: 'null'
          title: Cpr Bc
        ib_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Ib High
        ib_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Ib Low
        ib_range:
          anyOf:
            - type: number
            - type: 'null'
          title: Ib Range
          description: IB High - IB Low
        ib_1_5x_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Ib 1 5X High
          description: IB 1.5x extension high
        ib_2x_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Ib 2X High
          description: IB 2x extension high
        ib_1_5x_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Ib 1 5X Low
          description: IB 1.5x extension low
        ib_2x_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Ib 2X Low
          description: IB 2x extension low
        orb_5m_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Orb 5M High
          description: 5-minute ORB high (9:30-9:35 ET)
        orb_5m_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Orb 5M Low
          description: 5-minute ORB low (9:30-9:35 ET)
        orb_15m_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Orb 15M High
          description: 15-minute ORB high (9:30-9:45 ET)
        orb_15m_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Orb 15M Low
          description: 15-minute ORB low (9:30-9:45 ET)
        orb_30m_high:
          anyOf:
            - type: number
            - type: 'null'
          title: Orb 30M High
          description: 30-minute ORB high (9:30-10:00 ET)
        orb_30m_low:
          anyOf:
            - type: number
            - type: 'null'
          title: Orb 30M Low
          description: 30-minute ORB low (9:30-10:00 ET)
        orb_5m_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Orb 5M Status
          description: >-
            5m ORB status:
            inside|breakout_up|breakout_down|failed_breakout_up|failed_breakout_down
        orb_15m_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Orb 15M Status
          description: >-
            15m ORB status:
            inside|breakout_up|breakout_down|failed_breakout_up|failed_breakout_down
        orb_30m_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Orb 30M Status
          description: >-
            30m ORB status:
            inside|breakout_up|breakout_down|failed_breakout_up|failed_breakout_down
        orb_structure:
          anyOf:
            - type: string
            - type: 'null'
          title: Orb Structure
          description: >-
            Derived ORB structure:
            bull_trap|bear_trap|breakout_held_up|breakout_held_down|range_bound
        orb_directional_bias:
          anyOf:
            - type: string
            - type: 'null'
          title: Orb Directional Bias
          description: 'ORB directional bias: bullish|bearish|neutral'
        vah:
          anyOf:
            - type: number
            - type: 'null'
          title: Vah
          description: Value Area High
        val:
          anyOf:
            - type: number
            - type: 'null'
          title: Val
          description: Value Area Low
        poc:
          anyOf:
            - type: number
            - type: 'null'
          title: Poc
          description: Point of Control
        vwap:
          anyOf:
            - type: number
            - type: 'null'
          title: Vwap
          description: Volume Weighted Average Price
        vwap_plus_1sd:
          anyOf:
            - type: number
            - type: 'null'
          title: Vwap Plus 1Sd
          description: VWAP + 1 standard deviation
        vwap_plus_2sd:
          anyOf:
            - type: number
            - type: 'null'
          title: Vwap Plus 2Sd
          description: VWAP + 2 standard deviations
        vwap_minus_1sd:
          anyOf:
            - type: number
            - type: 'null'
          title: Vwap Minus 1Sd
          description: VWAP - 1 standard deviation
        vwap_minus_2sd:
          anyOf:
            - type: number
            - type: 'null'
          title: Vwap Minus 2Sd
          description: VWAP - 2 standard deviations
        price_vs_vwap_sd:
          anyOf:
            - type: number
            - type: 'null'
          title: Price Vs Vwap Sd
          description: >-
            Current price position relative to VWAP in SD units (-3 to +3
            typical)
        pdh:
          anyOf:
            - type: number
            - type: 'null'
          title: Pdh
          description: Prior Day High
        pdl:
          anyOf:
            - type: number
            - type: 'null'
          title: Pdl
          description: Prior Day Low
        pdc:
          anyOf:
            - type: number
            - type: 'null'
          title: Pdc
          description: Prior Day Close
        pwh:
          anyOf:
            - type: number
            - type: 'null'
          title: Pwh
          description: Prior Week High
        pwl:
          anyOf:
            - type: number
            - type: 'null'
          title: Pwl
          description: Prior Week Low
        onh:
          anyOf:
            - type: number
            - type: 'null'
          title: Onh
          description: Overnight/Pre-market High (4pm-9:30am)
        onl:
          anyOf:
            - type: number
            - type: 'null'
          title: Onl
          description: Overnight/Pre-market Low (4pm-9:30am)
        nearest_level:
          anyOf:
            - type: string
            - type: 'null'
          title: Nearest Level
          description: Name of the nearest significant level
        dist_to_nearest_atr:
          anyOf:
            - type: number
            - type: 'null'
          title: Dist To Nearest Atr
          description: Distance to nearest level in ATR units
      type: object
      title: Levels
      description: Key price levels from IntradayLevel vertex.
    VolumeProfile:
      properties:
        prior:
          anyOf:
            - $ref: '#/components/schemas/VolumeProfilePrior'
            - type: 'null'
        developing:
          anyOf:
            - $ref: '#/components/schemas/VolumeProfileDeveloping'
            - type: 'null'
      type: object
      title: VolumeProfile
      description: Volume profile data from VolumeProfileSession vertex.
    app__models__stock__Pattern:
      properties:
        type:
          type: string
          title: Type
          description: Pattern type (e.g., 'bull_flag', 'head_shoulders')
        confidence:
          type: number
          maximum: 1
          minimum: 0
          title: Confidence
        detected_at:
          type: string
          format: date-time
          title: Detected At
      type: object
      required:
        - type
        - confidence
        - detected_at
      title: Pattern
      description: Technical pattern from Pattern vertex.
    News:
      properties:
        count:
          type: integer
          minimum: 0
          title: Count
          default: 0
        avg_sentiment:
          anyOf:
            - type: number
              maximum: 1
              minimum: -1
            - type: 'null'
          title: Avg Sentiment
        high_impact_count:
          type: integer
          minimum: 0
          title: High Impact Count
          default: 0
        sentiment:
          anyOf:
            - $ref: '#/components/schemas/NewsSentiment'
            - type: 'null'
          description: Structured sentiment from FinBERT/Claude hybrid scoring
      type: object
      title: News
      description: News summary aggregated from news_sentiment table.
    PriceEvent:
      properties:
        event_id:
          type: string
          title: Event Id
          description: 'Unique ID: {symbol}_{type}_{YYYYMMDD_HHMMSS}_{hash6}'
        event_type:
          type: string
          title: Event Type
          description: Event type (gap_up, gap_down, breakout_52w_high, golden_cross, etc.)
        event_date:
          type: string
          format: date-time
          title: Event Date
          description: Bar timestamp when event was detected
        severity:
          type: string
          title: Severity
          description: 'Event severity: low, medium, high, critical'
        magnitude:
          anyOf:
            - type: number
            - type: 'null'
          title: Magnitude
          description: Percentage change or ratio for the event
        reference_price:
          anyOf:
            - type: number
            - type: 'null'
          title: Reference Price
          description: Prior price used for comparison
        trigger_price:
          anyOf:
            - type: number
            - type: 'null'
          title: Trigger Price
          description: Price that triggered the event
        level_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Level Name
          description: Level crossed (52w_high, ib_low, vwap, etc.)
        level_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Level Value
          description: Value of the level that was crossed
        rel_volume:
          anyOf:
            - type: number
            - type: 'null'
          title: Rel Volume
          description: Relative volume at time of event
        atr_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Atr Ratio
          description: Move size relative to ATR(14)
        details:
          anyOf:
            - type: string
            - type: 'null'
          title: Details
          description: Human-readable event description
      type: object
      required:
        - event_id
        - event_type
        - event_date
        - severity
      title: PriceEvent
      description: >-
        Price event detected by Go pattern-detector.


        Events include gaps, breakouts, MA crossovers, volume events, and
        pattern triggers.

        All 28 event types are edge-triggered (detect crosses, not just state).
    ConfluenceComponentBreakdown:
      properties:
        scoring_version:
          type: string
          title: Scoring Version
          default: v4.5
        components:
          items:
            $ref: '#/components/schemas/ComponentScoreDetail'
          type: array
          title: Components
          description: 8 confluence components ordered by weight (descending)
        total_bull:
          type: number
          maximum: 100
          minimum: 0
          title: Total Bull
          description: Sum of weighted bull contributions = bullish_confluence
        total_bear:
          type: number
          maximum: 100
          minimum: 0
          title: Total Bear
          description: Sum of weighted bear contributions = bearish_confluence
        net:
          type: number
          maximum: 100
          minimum: -100
          title: Net
          description: total_bull - total_bear = net_confluence
      type: object
      required:
        - components
        - total_bull
        - total_bear
        - net
      title: ConfluenceComponentBreakdown
      description: >-
        Structured breakdown of confluence score components (v4.5).


        Returned via `include=confluence_components` on the stock detail
        endpoint.

        Contains the 8 v4.5 weighted components with descriptive notes.
    LevelLadder:
      properties:
        current_price:
          type: number
          title: Current Price
          description: Current stock price for reference
        atr_14:
          anyOf:
            - type: number
            - type: 'null'
          title: Atr 14
          description: ATR(14) used for distance calculations
        levels:
          items:
            $ref: '#/components/schemas/LevelLadderEntry'
          type: array
          title: Levels
          description: All non-null levels sorted by price descending
        nearest_support:
          anyOf:
            - $ref: '#/components/schemas/LevelLadderEntry'
            - type: 'null'
          description: Nearest support level below current price
        nearest_resistance:
          anyOf:
            - $ref: '#/components/schemas/LevelLadderEntry'
            - type: 'null'
          description: Nearest resistance level above current price
      type: object
      required:
        - current_price
        - atr_14
        - levels
      title: LevelLadder
      description: >-
        Sorted level ladder with ATR distances and confluence zones.


        Returned via `include=level_ladder` on the stock detail endpoint.

        Levels sorted by price descending (resistance at top, support at
        bottom).
    SessionPriceData:
      properties:
        current:
          type: number
          title: Current
          description: Current/latest trade price
        change:
          anyOf:
            - type: number
            - type: 'null'
          title: Change
          description: Price change from the official previous close
        change_percent:
          anyOf:
            - type: number
            - type: 'null'
          title: Change Percent
          description: Percentage change from the official previous close
        previous_close:
          anyOf:
            - type: number
            - type: 'null'
          title: Previous Close
          description: Previous trading day's split-adjusted SIP daily-bar close
        market_status:
          type: string
          enum:
            - overnight
            - pre-market
            - open
            - after-hours
            - closed
          title: Market Status
          description: Current market session status
        official_close:
          anyOf:
            - type: number
            - type: 'null'
          title: Official Close
          description: Most recent completed session's split-adjusted SIP daily-bar close
        official_close_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Official Close Date
          description: Trading date associated with official_close
        close_source:
          anyOf:
            - type: string
              const: alpaca_sip_1day
            - type: 'null'
          title: Close Source
          description: >-
            Authority used for official close fields (split-adjusted); null
            means unavailable
        close_change:
          anyOf:
            - type: number
            - type: 'null'
          title: Close Change
          description: Day change of the most recent regular session close
        close_change_percent:
          anyOf:
            - type: number
            - type: 'null'
          title: Close Change Percent
          description: Day change percent of the most recent regular session close
        close_time:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Close Time
          description: Timestamp of the most recent regular session close
        overnight:
          anyOf:
            - $ref: '#/components/schemas/SessionOHLC'
            - type: 'null'
          description: Overnight session OHLC (8:00 PM prev day - 4:00 AM ET)
        pre_market:
          anyOf:
            - $ref: '#/components/schemas/SessionOHLC'
            - type: 'null'
          description: Pre-market session OHLC (4:00 AM - 9:30 AM ET)
        regular_session:
          anyOf:
            - $ref: '#/components/schemas/SessionOHLC'
            - type: 'null'
          description: Regular trading session OHLC (9:30 AM - 4:00 PM ET)
        after_hours:
          anyOf:
            - $ref: '#/components/schemas/SessionOHLC'
            - type: 'null'
          description: After-hours session OHLC (4:00 PM - 8:00 PM ET)
        has_extended_trades:
          type: boolean
          title: Has Extended Trades
          description: >-
            True if any trades occurred in the current extended session
            (pre-market or after-hours). False means current price is the stale
            close — UI should show 'No activity'.
          default: false
        bid:
          type: number
          title: Bid
          description: Current bid price
        ask:
          type: number
          title: Ask
          description: Current ask price
        bid_size:
          type: integer
          title: Bid Size
          description: Current bid size
        ask_size:
          type: integer
          title: Ask Size
          description: Current ask size
        last_update:
          type: string
          format: date-time
          title: Last Update
          description: Timestamp of last data update
      type: object
      required:
        - current
        - change
        - change_percent
        - previous_close
        - market_status
        - bid
        - ask
        - bid_size
        - ask_size
        - last_update
      title: SessionPriceData
      description: |-
        Complete session-specific price data.

        Contains current price, change metrics, and OHLC data for each
        market session (pre-market, regular hours, after-hours).
      example:
        ask: 195.52
        ask_size: 150
        bid: 195.48
        bid_size: 200
        change: 2.3
        change_percent: 1.19
        current: 195.5
        last_update: '2025-01-06T14:30:45Z'
        market_status: open
        pre_market:
          close: 194.6
          high: 194.8
          last: 194.65
          low: 193.25
          open: 193.5
        previous_close: 193.2
        regular_session:
          close: 195.48
          high: 196
          last: 195.5
          low: 194.5
          open: 194.7
    RegimeV5:
      properties:
        strong_trend:
          anyOf:
            - type: number
            - type: 'null'
          title: Strong Trend
        mild_trend:
          anyOf:
            - type: number
            - type: 'null'
          title: Mild Trend
        rotation:
          anyOf:
            - type: number
            - type: 'null'
          title: Rotation
        vol_expand:
          anyOf:
            - type: number
            - type: 'null'
          title: Vol Expand
        compressed:
          anyOf:
            - type: number
            - type: 'null'
          title: Compressed
        transitional:
          anyOf:
            - type: number
            - type: 'null'
          title: Transitional
        dominant:
          anyOf:
            - type: string
            - type: 'null'
          title: Dominant
        confidence:
          anyOf:
            - type: number
            - type: 'null'
          title: Confidence
        computed_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Computed At
      type: object
      title: RegimeV5
      description: V5 regime state vector (shadow mode).
    ConfluenceV5:
      properties:
        bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Bull
        bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Bear
        net:
          anyOf:
            - type: number
            - type: 'null'
          title: Net
        bias:
          anyOf:
            - type: string
            - type: 'null'
          title: Bias
        confidence:
          anyOf:
            - type: number
            - type: 'null'
          title: Confidence
        regime_applied:
          anyOf:
            - type: string
            - type: 'null'
          title: Regime Applied
      type: object
      title: ConfluenceV5
      description: V5 confluence scoring with regime-conditioned weights (shadow mode).
    MomentumHealthV5:
      properties:
        total:
          anyOf:
            - type: number
            - type: 'null'
          title: Total
        decay_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Decay Rate
        multi_tf:
          anyOf:
            - type: number
            - type: 'null'
          title: Multi Tf
        trend_quality:
          anyOf:
            - type: number
            - type: 'null'
          title: Trend Quality
        ma_slope:
          anyOf:
            - type: number
            - type: 'null'
          title: Ma Slope
        tier:
          anyOf:
            - type: string
            - type: 'null'
          title: Tier
        computed_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Computed At
      type: object
      title: MomentumHealthV5
      description: V5 momentum health 4-axis composite (shadow mode).
    ConvictionV5:
      properties:
        score:
          anyOf:
            - type: number
            - type: 'null'
          title: Score
          description: Conviction v5 (0-100)
        core:
          anyOf:
            - type: number
            - type: 'null'
          title: Core
          description: Core conviction (no options)
        confidence:
          anyOf:
            - type: number
            - type: 'null'
          title: Confidence
          description: Statistical confidence (0-100)
        direction:
          anyOf:
            - type: string
            - type: 'null'
          title: Direction
          description: BULLISH/BEARISH/NEUTRAL
        regime:
          anyOf:
            - type: string
            - type: 'null'
          title: Regime
          description: Regime at computation
        formula_variant:
          anyOf:
            - type: string
              enum:
                - core4
                - enriched5
                - enriched6
            - type: 'null'
          title: Formula Variant
          description: core4/enriched5/enriched6
        options_participation:
          anyOf:
            - type: string
              enum:
                - ACTIVE
                - STALE
                - INELIGIBLE
            - type: 'null'
          title: Options Participation
        options_weight:
          anyOf:
            - type: number
            - type: 'null'
          title: Options Weight
        weight_confluence:
          anyOf:
            - type: number
            - type: 'null'
          title: Weight Confluence
          description: Regime-conditioned confluence weight
        weight_pulse:
          anyOf:
            - type: number
            - type: 'null'
          title: Weight Pulse
          description: Regime-conditioned pulse weight
        weight_entry:
          anyOf:
            - type: number
            - type: 'null'
          title: Weight Entry
          description: Regime-conditioned entry weight
        weight_momentum:
          anyOf:
            - type: number
            - type: 'null'
          title: Weight Momentum
          description: Regime-conditioned momentum weight
        computed_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Computed At
          description: ISO timestamp of last computation
        norm_confluence:
          anyOf:
            - type: number
            - type: 'null'
          title: Norm Confluence
        norm_pulse:
          anyOf:
            - type: number
            - type: 'null'
          title: Norm Pulse
        norm_entry:
          anyOf:
            - type: number
            - type: 'null'
          title: Norm Entry
        norm_momentum:
          anyOf:
            - type: number
            - type: 'null'
          title: Norm Momentum
        norm_options:
          anyOf:
            - type: number
            - type: 'null'
          title: Norm Options
        confluence_net_at_source:
          anyOf:
            - type: number
            - type: 'null'
          title: Confluence Net At Source
        pulse_net_at_source:
          anyOf:
            - type: number
            - type: 'null'
          title: Pulse Net At Source
        entry_net_at_source:
          anyOf:
            - type: number
            - type: 'null'
          title: Entry Net At Source
        momentum_health_at_source:
          anyOf:
            - type: number
            - type: 'null'
          title: Momentum Health At Source
        options_score_at_source:
          anyOf:
            - type: number
            - type: 'null'
          title: Options Score At Source
        source_bar_ts:
          anyOf:
            - type: string
            - type: 'null'
          title: Source Bar Ts
          description: RFC3339 timestamp of the bar that produced this conviction
      type: object
      title: ConvictionV5
      description: Conviction meta-score (MSE real-time).
    PulseV5:
      properties:
        bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Bull
        bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Bear
        net:
          anyOf:
            - type: number
            - type: 'null'
          title: Net
        bias:
          anyOf:
            - type: string
            - type: 'null'
          title: Bias
        confidence:
          anyOf:
            - type: number
            - type: 'null'
          title: Confidence
      type: object
      title: PulseV5
      description: Pulse v5 real-time momentum.
    EntryV2:
      properties:
        bull:
          anyOf:
            - type: number
            - type: 'null'
          title: Bull
        bear:
          anyOf:
            - type: number
            - type: 'null'
          title: Bear
        net:
          anyOf:
            - type: number
            - type: 'null'
          title: Net
        completeness:
          anyOf:
            - type: number
            - type: 'null'
          title: Completeness
        confidence:
          anyOf:
            - type: number
            - type: 'null'
          title: Confidence
      type: object
      title: EntryV2
      description: Entry Score v2 execution timing.
    PeerDivergenceV1:
      properties:
        local:
          anyOf:
            - type: number
            - type: 'null'
          title: Local
        medium:
          anyOf:
            - type: number
            - type: 'null'
          title: Medium
        broad:
          anyOf:
            - type: number
            - type: 'null'
          title: Broad
        composite:
          anyOf:
            - type: number
            - type: 'null'
          title: Composite
        signal:
          anyOf:
            - type: string
            - type: 'null'
          title: Signal
        peers_local:
          anyOf:
            - type: integer
            - type: 'null'
          title: Peers Local
        peers_medium:
          anyOf:
            - type: integer
            - type: 'null'
          title: Peers Medium
        peers_broad:
          anyOf:
            - type: integer
            - type: 'null'
          title: Peers Broad
        weight_config:
          anyOf:
            - type: string
            - type: 'null'
          title: Weight Config
        updated_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Updated At
      type: object
      title: PeerDivergenceV1
      description: >-
        Peer divergence via graph diffusion (heat kernel on multi-layer
        adjacency).
    ThematicExposure:
      properties:
        theme_id:
          type: string
          title: Theme Id
          description: Theme identifier (e.g., 'ai_ml')
        theme_name:
          type: string
          title: Theme Name
          description: Human-readable theme name
        theme_type:
          type: string
          title: Theme Type
          description: '''opportunity'' or ''risk'''
        direction:
          type: string
          title: Direction
          description: '''positive'', ''negative'', or ''mixed'''
        magnitude_pctile:
          type: integer
          maximum: 100
          minimum: 0
          title: Magnitude Pctile
          description: Exposure percentile within industry
        momentum:
          anyOf:
            - type: number
              maximum: 1
              minimum: -1
            - type: 'null'
          title: Momentum
          description: Theme momentum score
      type: object
      required:
        - theme_id
        - theme_name
        - theme_type
        - direction
        - magnitude_pctile
      title: ThematicExposure
      description: A stock's exposure to a structural theme.
    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
    MovingAverages:
      properties:
        ema_9:
          anyOf:
            - type: number
            - type: 'null'
          title: Ema 9
        ema_20:
          anyOf:
            - type: number
            - type: 'null'
          title: Ema 20
        sma_50:
          anyOf:
            - type: number
            - type: 'null'
          title: Sma 50
        sma_200:
          anyOf:
            - type: number
            - type: 'null'
          title: Sma 200
      type: object
      title: MovingAverages
      description: Moving average values.
    Bollinger:
      properties:
        upper:
          anyOf:
            - type: number
            - type: 'null'
          title: Upper
        middle:
          anyOf:
            - type: number
            - type: 'null'
          title: Middle
        lower:
          anyOf:
            - type: number
            - type: 'null'
          title: Lower
        width_percentile:
          anyOf:
            - type: number
            - type: 'null'
          title: Width Percentile
          description: Percentile of current BB width vs 52-week range
      type: object
      title: Bollinger
      description: Bollinger band values.
    VolumeProfilePrior:
      properties:
        vah:
          anyOf:
            - type: number
            - type: 'null'
          title: Vah
        val:
          anyOf:
            - type: number
            - type: 'null'
          title: Val
        poc:
          anyOf:
            - type: number
            - type: 'null'
          title: Poc
        distribution:
          anyOf:
            - type: string
            - type: 'null'
          title: Distribution
          description: p-shaped, b-shaped, or d-shaped
      type: object
      title: VolumeProfilePrior
      description: Prior session volume profile.
    VolumeProfileDeveloping:
      properties:
        vah:
          anyOf:
            - type: number
            - type: 'null'
          title: Vah
        val:
          anyOf:
            - type: number
            - type: 'null'
          title: Val
        poc:
          anyOf:
            - type: number
            - type: 'null'
          title: Poc
      type: object
      title: VolumeProfileDeveloping
      description: Developing (current) session volume profile.
    NewsSentiment:
      properties:
        score:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Score
          description: >-
            Sentiment score 0-100 (0=strong bearish, 50=neutral, 100=strong
            bullish)
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            5-class label: strong_bullish, bullish, neutral, bearish,
            strong_bearish
        method:
          anyOf:
            - type: string
            - type: 'null'
          title: Method
          description: 'Scoring method: finbert, claude_refined, keyword'
        confidence:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Confidence
          description: Model confidence (0-1), higher for Claude/FinBERT
        context_summary:
          anyOf:
            - type: string
            - type: 'null'
          title: Context Summary
          description: Claude reasoning summary (when method=claude_refined)
      type: object
      title: NewsSentiment
      description: News sentiment scoring results (FinBERT/Claude hybrid).
    ComponentScoreDetail:
      properties:
        name:
          type: string
          title: Name
          description: 'Component key: proximity_to_level, volume_confirmation, etc.'
        label:
          type: string
          title: Label
          description: 'Human-readable label: Proximity to Level, etc.'
        weight:
          type: number
          maximum: 1
          minimum: 0
          title: Weight
          description: Component weight in v4.5 formula (sums to 1.0)
        bull:
          type: number
          maximum: 10
          minimum: 0
          title: Bull
          description: Bullish component score (0-10)
        bear:
          type: number
          maximum: 10
          minimum: 0
          title: Bear
          description: Bearish component score (0-10)
        weighted_bull:
          type: number
          title: Weighted Bull
          description: Weighted bullish contribution to total (bull * weight * 10)
        weighted_bear:
          type: number
          title: Weighted Bear
          description: Weighted bearish contribution to total (bear * weight * 10)
        note:
          anyOf:
            - type: string
            - type: 'null'
          title: Note
          description: Contextual note about this component
      type: object
      required:
        - name
        - label
        - weight
        - bull
        - bear
        - weighted_bull
        - weighted_bear
      title: ComponentScoreDetail
      description: >-
        Individual component in the confluence score breakdown.


        Used by the `include=confluence_components` response to give the
        frontend

        an iterable list of components with weights, scores, and contextual
        notes.
    LevelLadderEntry:
      properties:
        type:
          type: string
          title: Type
          description: 'Level type: pivot_pp, ib_high, vwap, sma_50, etc.'
        label:
          type: string
          title: Label
          description: 'Human-readable label: Pivot PP, IB High, VWAP, etc.'
        price:
          type: number
          title: Price
          description: Level price
        side:
          type: string
          enum:
            - support
            - resistance
            - neutral
          title: Side
          description: Whether this level is support, resistance, or at-price
        distance_atr:
          anyOf:
            - type: number
            - type: 'null'
          title: Distance Atr
          description: Distance from current price in ATR units (negative = below)
        distance_pct:
          anyOf:
            - type: number
            - type: 'null'
          title: Distance Pct
          description: Distance from current price as percentage
        freshness:
          type: string
          enum:
            - live
            - daily
            - structural
          title: Freshness
          description: 'Data freshness: live (~60s), daily (pivots, IB), structural (MAs)'
        confluence_count:
          type: integer
          title: Confluence Count
          description: Number of other levels within 0.25 ATR (confluence zone)
          default: 0
      type: object
      required:
        - type
        - label
        - price
        - side
        - freshness
      title: LevelLadderEntry
      description: Single entry in the sorted level ladder.
    SessionOHLC:
      properties:
        open:
          type: number
          title: Open
          description: First trade price when session opened
        high:
          type: number
          title: High
          description: Highest price during session
        low:
          type: number
          title: Low
          description: Lowest price during session
        last:
          type: number
          title: Last
          description: Last trade price in session
        close:
          type: number
          title: Close
          description: Latest 1-min bar close in session
        last_time:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Time
          description: Timestamp of the last bar in this session
      type: object
      required:
        - open
        - high
        - low
        - last
        - close
      title: SessionOHLC
      description: OHLC data for a single market session.
      example:
        close: 195.75
        high: 196.2
        last: 195.8
        last_time: '2025-01-06T16:00:00Z'
        low: 194.25
        open: 194.5

````