{"openapi":"3.1.0","info":{"title":"My ETF Portfolio Research API","version":"1.0.0"},"paths":{"/waitlist/signup":{"post":{"summary":"Waitlist Signup","description":"Public endpoint: store a waitlist signup.\n\nNo API key required. Rate-limited by client IP. Honeypot field silently\nsucceeds without storing. Duplicate emails are idempotent (ON CONFLICT DO\nNOTHING). Always returns {\"status\": \"ok\"} — never reveals if an email\nalready existed.","operationId":"waitlist_signup_waitlist_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistSignupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/universe-kpis":{"get":{"summary":"Health Universe Kpis","description":"Phase 1C: universe data-quality KPIs for ops / release gates.\n\nAuth-free health surface (same as /health) so monitors can scrape without\na research API key. Does not expose client data — aggregate counts only.","operationId":"health_universe_kpis_health_universe_kpis_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/instruments":{"get":{"summary":"List Instruments","operationId":"list_instruments_instruments_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InstrumentResponse"},"title":"Response List Instruments Instruments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/snapshot-yields":{"get":{"summary":"Get Snapshot Yields","operationId":"get_snapshot_yields_snapshot_yields_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tax-options":{"get":{"summary":"Get Tax Options","operationId":"get_tax_options_tax_options_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tax Options Tax Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/optimize-6040":{"post":{"summary":"Optimize Allocator","operationId":"optimize_allocator_portfolio_optimize_6040_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllocatorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllocatorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/allocator/optimize":{"post":{"summary":"Optimize Allocator","operationId":"optimize_allocator_allocator_optimize_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllocatorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllocatorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/optimize":{"post":{"summary":"Optimize Allocator","operationId":"optimize_allocator_portfolio_optimize_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllocatorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllocatorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fred/curve":{"get":{"summary":"Fred Curve","operationId":"fred_curve_fred_curve_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/model/assumptions":{"get":{"summary":"Model Assumptions","description":"Return live CAPM inputs (RF, ERP, Treasury curve) for transparency.","operationId":"model_assumptions_model_assumptions_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/yield-comparison":{"get":{"summary":"Yield Comparison","operationId":"yield_comparison_yield_comparison_get","parameters":[{"name":"federal","in":"query","required":false,"schema":{"type":"number","default":0.37,"title":"Federal"}},{"name":"niit","in":"query","required":false,"schema":{"type":"number","default":0.038,"title":"Niit"}},{"name":"state","in":"query","required":false,"schema":{"type":"number","default":0.0399,"title":"State"}},{"name":"muni_instate","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Muni Instate"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/instruments-6040":{"get":{"summary":"List 6040 Instruments","operationId":"list_6040_instruments_portfolio_instruments_6040_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EquityInstrumentResponse"},"title":"Response List 6040 Instruments Portfolio Instruments 6040 Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/greeks":{"post":{"summary":"Portfolio Greeks","operationId":"portfolio_greeks_portfolio_greeks_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioGreeksRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioGreeks"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/allocator/sensitivity":{"post":{"summary":"Allocator Sensitivity","operationId":"allocator_sensitivity_allocator_sensitivity_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllocatorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Allocator Sensitivity Allocator Sensitivity Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stress":{"post":{"summary":"Run Stress","operationId":"run_stress_stress_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StressRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/household/optimize":{"post":{"summary":"Household Optimize","operationId":"household_optimize_household_optimize_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HouseholdAllocatorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HouseholdAllocatorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-discovery":{"get":{"summary":"List Etf Discovery","operationId":"list_etf_discovery_portfolio_etf_discovery_get","parameters":[{"name":"min_liquidity_score","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Min Liquidity Score"}},{"name":"theme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Etf Discovery Portfolio Etf Discovery Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-review-queue":{"get":{"summary":"List Review Queue","description":"Liquid ETFs the classifier couldn't confidently theme, for manual review.","operationId":"list_review_queue_portfolio_etf_review_queue_get","parameters":[{"name":"min_liquidity_score","in":"query","required":false,"schema":{"type":"number","default":0.45,"title":"Min Liquidity Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":250,"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Review Queue Portfolio Etf Review Queue Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-master":{"get":{"summary":"List Etf Master","operationId":"list_etf_master_portfolio_etf_master_get","parameters":[{"name":"theme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme"}},{"name":"account_fit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Fit"}},{"name":"review_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Status"}},{"name":"universe_role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Universe Role"}},{"name":"max_expense_ratio","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Expense Ratio"}},{"name":"min_liquidity_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Liquidity Score"}},{"name":"min_avg_dollar_volume","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Avg Dollar Volume"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":250,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Etf Master Portfolio Etf Master Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-provider-health":{"get":{"summary":"Etf Provider Health","operationId":"etf_provider_health_portfolio_etf_provider_health_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Etf Provider Health Portfolio Etf Provider Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-factor-scorecard/{ticker}":{"get":{"summary":"Etf Factor Scorecard","operationId":"etf_factor_scorecard_portfolio_etf_factor_scorecard__ticker__get","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string","title":"Ticker"}},{"name":"lookback_years","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Lookback Years"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EtfFactorScorecardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-universe-summary":{"get":{"summary":"Etf Universe Summary","operationId":"etf_universe_summary_portfolio_etf_universe_summary_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Etf Universe Summary Portfolio Etf Universe Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-eligibility":{"get":{"summary":"List Etf Eligibility","operationId":"list_etf_eligibility_portfolio_etf_eligibility_get","parameters":[{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"eligible","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Eligible"}},{"name":"theme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme"}},{"name":"account_fit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Fit"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":250,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Etf Eligibility Portfolio Etf Eligibility Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-eligibility-models":{"get":{"summary":"List Etf Eligibility Models","operationId":"list_etf_eligibility_models_portfolio_etf_eligibility_models_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Etf Eligibility Models Portfolio Etf Eligibility Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/validate-6040":{"get":{"summary":"Validate 6040","operationId":"validate_6040_portfolio_validate_6040_get","parameters":[{"name":"capital","in":"query","required":false,"schema":{"type":"number","default":100000.0,"title":"Capital"}},{"name":"risk_tolerance","in":"query","required":false,"schema":{"type":"string","default":"MODERATE","title":"Risk Tolerance"}},{"name":"covariance_mode","in":"query","required":false,"schema":{"type":"string","default":"heuristic","title":"Covariance Mode"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Validate 6040 Portfolio Validate 6040 Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/orchestrate":{"get":{"summary":"Orchestrate Portfolio","operationId":"orchestrate_portfolio_portfolio_orchestrate_get","parameters":[{"name":"account_type","in":"query","required":false,"schema":{"type":"string","default":"taxable","title":"Account Type"}},{"name":"objective","in":"query","required":false,"schema":{"type":"string","default":"research","title":"Objective"}},{"name":"limit_per_model","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit Per Model"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Orchestrate Portfolio Portfolio Orchestrate Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/orchestrate/optimize":{"post":{"summary":"Optimize Orchestrated","operationId":"optimize_orchestrated_portfolio_orchestrate_optimize_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioOrchestrateOptimizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Optimize Orchestrated Portfolio Orchestrate Optimize Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/etf-discovery-themes":{"get":{"summary":"List Etf Discovery Themes","operationId":"list_etf_discovery_themes_portfolio_etf_discovery_themes_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Etf Discovery Themes Portfolio Etf Discovery Themes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/search":{"post":{"summary":"Semantic Search","description":"Search ETFs by natural-language query.\n\nUses fastembed nomic-embed-text-v1.5 embeddings + pgvector cosine similarity\nto find ETFs whose provider_description semantically matches the query.\nResults are re-ranked by a blend of semantic similarity and liquidity.","operationId":"semantic_search_portfolio_search_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemanticSearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemanticSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/social-search":{"get":{"summary":"Social Search","description":"Search social media for ETF-related discussions.","operationId":"social_search_portfolio_social_search_get","parameters":[{"name":"topic","in":"query","required":true,"schema":{"type":"string","title":"Topic"}},{"name":"sources","in":"query","required":false,"schema":{"type":"string","default":"reddit,youtube","title":"Sources"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Social Search Portfolio Social Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portfolio/orchestrate/feedback":{"post":{"summary":"Submit Optimizer Feedback","operationId":"submit_optimizer_feedback_portfolio_orchestrate_feedback_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizerFeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Submit Optimizer Feedback Portfolio Orchestrate Feedback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Optimizer Feedback Route","operationId":"list_optimizer_feedback_route_portfolio_orchestrate_feedback_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizerFeedbackListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/parse":{"post":{"tags":["parse"],"summary":"Parse Utterance Endpoint","operationId":"parse_utterance_endpoint_api_parse_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/parse/dismiss":{"post":{"tags":["parse"],"summary":"Dismiss Chip Endpoint","description":"Log a chip dismissal (telemetry, C4).","operationId":"dismiss_chip_endpoint_api_parse_dismiss_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DismissRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Dismiss Chip Endpoint Api Parse Dismiss Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/parse/override":{"post":{"tags":["parse"],"summary":"Override Field Endpoint","description":"Log a field override (telemetry, C4).","operationId":"override_field_endpoint_api_parse_override_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Override Field Endpoint Api Parse Override Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AllocatorOverrideItem":{"properties":{"field":{"type":"string","title":"Field"},"requested":{"title":"Requested"},"effective":{"title":"Effective"},"source":{"type":"string","title":"Source"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["field","source"],"title":"AllocatorOverrideItem"},"AllocatorRequest":{"properties":{"tax_year":{"type":"integer","title":"Tax Year","default":2026},"policy_id":{"type":"string","title":"Policy Id","default":"taxable_low_tax"},"account_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Hash"},"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"group_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Label"},"route_account_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route Account Hash"},"account_tax_type":{"type":"string","title":"Account Tax Type","default":"taxable"},"capital":{"type":"number","title":"Capital","default":100000.0},"risk_tolerance":{"type":"string","title":"Risk Tolerance","default":"MODERATE"},"creativity":{"type":"string","title":"Creativity","default":"balanced"},"equity_split":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Equity Split"},"federal":{"type":"number","title":"Federal","default":0.37},"niit":{"type":"number","title":"Niit","default":0.038},"state":{"type":"number","title":"State","default":0.0399},"state_ltcg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"State Ltcg"},"ltcg":{"type":"number","title":"Ltcg","default":0.2},"foreign_tax_credit_rate":{"type":"number","title":"Foreign Tax Credit Rate","default":0.0},"us_intl_ratio":{"type":"number","title":"Us Intl Ratio","default":0.7},"factor_tilts":{"type":"boolean","title":"Factor Tilts","default":true},"managed_futures_cap":{"type":"number","title":"Managed Futures Cap","default":0.15},"muni_cap":{"type":"number","title":"Muni Cap","default":0.4},"bond_duration_ceiling":{"type":"number","title":"Bond Duration Ceiling","default":5.0},"bond_style":{"type":"string","title":"Bond Style","default":"any"},"bond_treasury_only":{"type":"boolean","title":"Bond Treasury Only","default":false},"bond_duration_floor":{"type":"number","title":"Bond Duration Floor","default":0.0},"investment_horizon_years":{"type":"integer","title":"Investment Horizon Years","default":10},"auto_adjust_equity_for_horizon":{"type":"boolean","title":"Auto Adjust Equity For Horizon","default":false},"allow_emerging_markets":{"type":"boolean","title":"Allow Emerging Markets","default":false},"international_style":{"type":"string","title":"International Style","default":"any"},"max_growth_tilt":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Growth Tilt"},"covariance_mode":{"type":"string","title":"Covariance Mode","default":"cached"},"covariance_cache_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Covariance Cache Path"},"expected_return_mode":{"type":"string","title":"Expected Return Mode","default":"capm"},"cma_blend_weight":{"type":"number","title":"Cma Blend Weight","default":0.5},"sortino_mar":{"type":"number","title":"Sortino Mar","default":0.02},"tax_benefit_hurdle_bps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tax Benefit Hurdle Bps"},"tax_benefit_hurdle_er_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tax Benefit Hurdle Er Threshold"},"creative_equity_edge_min_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Creative Equity Edge Min Weight"},"creative_fixed_income_edge_min_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Creative Fixed Income Edge Min Weight"},"creative_alternative_edge_min_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Creative Alternative Edge Min Weight"},"selection_objective":{"type":"string","title":"Selection Objective","default":"utility"},"risk_adjusted_max_return_giveup":{"type":"number","title":"Risk Adjusted Max Return Giveup","default":0.0025},"risk_free_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Risk Free Rate"},"live_yields":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Live Yields"},"lambda_return":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lambda Return"},"lambda_risk":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lambda Risk"},"lambda_tax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lambda Tax"},"outside_account_trades":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Outside Account Trades"},"wash_sale_overrides":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Wash Sale Overrides"},"boxx_regulatory_haircut":{"type":"number","title":"Boxx Regulatory Haircut","default":0.0},"boxx_max_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Boxx Max Weight"},"portfolio_mode":{"type":"string","title":"Portfolio Mode","default":"research"},"confirm_complex_alts":{"type":"boolean","title":"Confirm Complex Alts","default":false},"allow_zero_intl":{"type":"boolean","title":"Allow Zero Intl","default":true},"min_intl_alloc":{"type":"number","title":"Min Intl Alloc","default":0.0},"allow_zero_sv":{"type":"boolean","title":"Allow Zero Sv","default":true},"min_sv_alloc":{"type":"number","title":"Min Sv Alloc","default":0.0},"max_bid_ask_spread":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Bid Ask Spread"},"min_aum":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Aum"},"min_avg_dollar_volume_30d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Avg Dollar Volume 30D"},"max_single_etf_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Single Etf Weight"},"max_core_etf_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Core Etf Weight"},"max_satellite_etf_weight":{"type":"number","title":"Max Satellite Etf Weight","default":0.05},"benchmark_weights":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Benchmark Weights"},"benchmark_tracking_penalty":{"type":"number","title":"Benchmark Tracking Penalty","default":0.0},"factor_model_enabled":{"type":"boolean","title":"Factor Model Enabled","default":false},"factor_lookback_weeks":{"type":"integer","title":"Factor Lookback Weeks","default":104},"black_litterman_enabled":{"type":"boolean","title":"Black Litterman Enabled","default":false},"black_litterman_view_confidence":{"type":"number","title":"Black Litterman View Confidence","default":0.5},"expected_return_shrinkage":{"type":"number","title":"Expected Return Shrinkage","default":0.5},"deduplicate_universe":{"type":"boolean","title":"Deduplicate Universe","default":true},"fund_family_policy":{"type":"string","enum":["none","consistent","prefer","only","avoid"],"title":"Fund Family Policy","default":"consistent"},"preferred_fund_families":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Preferred Fund Families"},"avoided_fund_families":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Avoided Fund Families"},"max_positions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Positions"},"min_position_weight":{"type":"number","title":"Min Position Weight","default":0.0},"excluded_symbols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Excluded Symbols"},"glide_path":{"type":"boolean","title":"Glide Path","default":false},"glide_path_min_equity":{"type":"number","title":"Glide Path Min Equity","default":0.2},"liquidity_floor":{"type":"number","title":"Liquidity Floor","default":0.0},"liability_schedule":{"additionalProperties":{"type":"number"},"type":"object","title":"Liability Schedule"},"muni_instate_fraction":{"type":"number","title":"Muni Instate Fraction","default":0.0},"use_fred":{"type":"boolean","title":"Use Fred","default":true},"current_positions":{"anyOf":[{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object"},{"type":"null"}],"title":"Current Positions","description":"Optional holdings for transition mode. Omit or empty for greenfield (cash/mandate-only target design). When non-empty, the API runs transition/TLH/order semantics for API consumers (e.g. rotation-core)."},"max_st_gain_budget":{"type":"number","title":"Max St Gain Budget","description":"Transition-only: max short-term gain dollars realizable without opt-in.","default":0.0}},"type":"object","title":"AllocatorRequest","description":"Tax-efficient portfolio design request (research API dual-mode).\n\n**Greenfield** (default): omit `current_positions` or pass empty — design a\ntarget implementation from cash/capital and mandate knobs only. No transition\nanalysis is required. This is the path the position-agnostic UI uses.\n\n**Transition**: pass non-empty `current_positions` (and optionally\n`max_st_gain_budget`, `wash_sale_overrides`, `outside_account_trades`) —\ntargets plus transition/TLH/order semantics apply. Used by API consumers\nsuch as rotation-core; not required by the main wizard."},"AllocatorResponse":{"properties":{"disclaimer":{"type":"string","title":"Disclaimer","default":"Decision support / ideas — not investment advice. Review assumptions, tax inputs, and suitability flags before acting."},"proposal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Id"},"equity_weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Equity Weights"},"bond_weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Bond Weights"},"alternative_weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Alternative Weights"},"combined_weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Combined Weights"},"equity_pct":{"type":"number","title":"Equity Pct"},"bond_pct":{"type":"number","title":"Bond Pct"},"alternative_pct":{"type":"number","title":"Alternative Pct","default":0.0},"portfolio_start":{"type":"string","title":"Portfolio Start","default":"greenfield"},"estimated_annual_tax_drag_pct":{"type":"number","title":"Estimated Annual Tax Drag Pct"},"naive_tax_drag_pct":{"type":"number","title":"Naive Tax Drag Pct"},"tax_savings_bps":{"type":"number","title":"Tax Savings Bps"},"estimated_pre_tax_return_pct":{"type":"number","title":"Estimated Pre Tax Return Pct","default":0.0},"estimated_after_tax_return_pct":{"type":"number","title":"Estimated After Tax Return Pct"},"estimated_portfolio_volatility_pct":{"type":"number","title":"Estimated Portfolio Volatility Pct"},"estimated_downside_deviation_pct":{"type":"number","title":"Estimated Downside Deviation Pct"},"estimated_sortino_ratio":{"type":"number","title":"Estimated Sortino Ratio"},"blended_expense_ratio":{"type":"number","title":"Blended Expense Ratio"},"weighted_dividend_yield":{"type":"number","title":"Weighted Dividend Yield"},"portfolio_after_tax_yield_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Portfolio After Tax Yield Pct"},"portfolio_pre_tax_yield_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Portfolio Pre Tax Yield Pct"},"annual_income_estimate_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Annual Income Estimate Usd"},"yield_tax_character":{"additionalProperties":{"type":"number"},"type":"object","title":"Yield Tax Character"},"income_stability_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Income Stability Score"},"income_stability_band":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Income Stability Band"},"income_stability_flags":{"items":{"type":"string"},"type":"array","title":"Income Stability Flags"},"bond_weighted_duration":{"type":"number","title":"Bond Weighted Duration"},"tlh_opportunities":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tlh Opportunities"},"stress_scenarios":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Stress Scenarios"},"honesty_flags":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Honesty Flags"},"proposed_orders":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Proposed Orders"},"efficient_frontier":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Efficient Frontier"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"},"base_after_tax_expected_return":{"type":"number","title":"Base After Tax Expected Return"},"one_time_tlh_tax_benefit_dollars":{"type":"number","title":"One Time Tlh Tax Benefit Dollars"},"one_time_tlh_tax_benefit_pct_of_portfolio":{"type":"number","title":"One Time Tlh Tax Benefit Pct Of Portfolio"},"after_tax_return_excluding_tlh":{"type":"number","title":"After Tax Return Excluding Tlh"},"after_tax_return_including_one_time_tlh":{"type":"number","title":"After Tax Return Including One Time Tlh"},"wash_sale_status":{"type":"string","title":"Wash Sale Status"},"blocked_tickers":{"items":{"type":"string"},"type":"array","title":"Blocked Tickers"},"restricted_until":{"additionalProperties":{"type":"string"},"type":"object","title":"Restricted Until"},"outside_account_data_present":{"type":"boolean","title":"Outside Account Data Present"},"scenario_results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Scenario Results"},"etf_explanations":{"additionalProperties":{"type":"string"},"type":"object","title":"Etf Explanations"},"allocation_explanations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Allocation Explanations"},"model_audit":{"additionalProperties":true,"type":"object","title":"Model Audit"},"benchmark_comparison":{"additionalProperties":true,"type":"object","title":"Benchmark Comparison"},"acceptance_test_results":{"additionalProperties":true,"type":"object","title":"Acceptance Test Results"},"data_quality":{"additionalProperties":true,"type":"object","title":"Data Quality"},"proposal_evidence":{"additionalProperties":true,"type":"object","title":"Proposal Evidence"},"tail_risk":{"additionalProperties":true,"type":"object","title":"Tail Risk"},"greeks":{"$ref":"#/components/schemas/PortfolioGreeks"},"transition_analysis":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Transition Analysis"},"effective_request":{"additionalProperties":true,"type":"object","title":"Effective Request"},"effective_assumptions":{"additionalProperties":true,"type":"object","title":"Effective Assumptions"},"override_log":{"items":{"$ref":"#/components/schemas/AllocatorOverrideItem"},"type":"array","title":"Override Log"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"model_version":{"additionalProperties":true,"type":"object","title":"Model Version"}},"type":"object","required":["equity_weights","bond_weights","combined_weights","equity_pct","bond_pct","estimated_annual_tax_drag_pct","naive_tax_drag_pct","tax_savings_bps","estimated_after_tax_return_pct","estimated_portfolio_volatility_pct","estimated_downside_deviation_pct","estimated_sortino_ratio","blended_expense_ratio","weighted_dividend_yield","bond_weighted_duration","tlh_opportunities","stress_scenarios","honesty_flags","efficient_frontier","notes","base_after_tax_expected_return","one_time_tlh_tax_benefit_dollars","one_time_tlh_tax_benefit_pct_of_portfolio","after_tax_return_excluding_tlh","after_tax_return_including_one_time_tlh","wash_sale_status","blocked_tickers","restricted_until","outside_account_data_present","scenario_results","etf_explanations","acceptance_test_results"],"title":"AllocatorResponse","description":"Optimizer idea / decision-support payload — not investment advice."},"DismissRequest":{"properties":{"utterance":{"type":"string","title":"Utterance"},"knob":{"type":"string","title":"Knob"},"value":{"title":"Value"},"source_span":{"type":"string","title":"Source Span"}},"type":"object","required":["utterance","knob","value","source_span"],"title":"DismissRequest","description":"Request to log a chip dismissal (telemetry, C4)."},"EquityInstrumentResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"name":{"type":"string","title":"Name"},"sec_type":{"type":"string","title":"Sec Type"},"asset_class":{"type":"string","title":"Asset Class"},"sub_class":{"type":"string","title":"Sub Class"},"expense_ratio":{"type":"number","title":"Expense Ratio"},"dividend_yield":{"type":"number","title":"Dividend Yield"},"qualified_pct":{"type":"number","title":"Qualified Pct"},"duration":{"type":"number","title":"Duration"},"tlh_partner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tlh Partner"},"default_cap":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Default Cap"},"foreign_tax_credit":{"type":"boolean","title":"Foreign Tax Credit"},"section_1256":{"type":"boolean","title":"Section 1256"},"min_hold_years":{"type":"number","title":"Min Hold Years"},"issuer":{"type":"string","title":"Issuer"},"ordinary_income_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ordinary Income Pct"},"treasury_income_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Treasury Income Pct"},"federal_tax_exempt_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Federal Tax Exempt Pct"},"state_tax_exempt_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"State Tax Exempt Pct"},"amt_exposure":{"type":"string","title":"Amt Exposure"},"k1_risk":{"type":"boolean","title":"K1 Risk"},"last_verified":{"type":"string","title":"Last Verified"},"source":{"type":"string","title":"Source"},"aum":{"type":"number","title":"Aum"},"bid_ask_spread":{"type":"number","title":"Bid Ask Spread"}},"type":"object","required":["symbol","name","sec_type","asset_class","sub_class","expense_ratio","dividend_yield","qualified_pct","duration","tlh_partner","default_cap","foreign_tax_credit","section_1256","min_hold_years","issuer","ordinary_income_pct","treasury_income_pct","federal_tax_exempt_pct","state_tax_exempt_pct","amt_exposure","k1_risk","last_verified","source","aum","bid_ask_spread"],"title":"EquityInstrumentResponse"},"EtfFactorScorecardResponse":{"properties":{"ticker":{"type":"string","title":"Ticker"},"status":{"type":"string","title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"source":{"type":"string","title":"Source"},"factor_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Factor Source"},"as_of_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of Date"},"lookback_years":{"type":"integer","title":"Lookback Years"},"observations":{"type":"integer","title":"Observations"},"alpha_annualized":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Alpha Annualized"},"r_squared":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"R Squared"},"volatility_annualized":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Volatility Annualized"},"max_drawdown":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Drawdown"},"factor_betas":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Factor Betas"},"factor_correlations":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Factor Correlations"},"correlations":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Correlations"}},"type":"object","required":["ticker","status","source","lookback_years","observations"],"title":"EtfFactorScorecardResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HouseholdAllocatorRequest":{"properties":{"wrappers":{"items":{"$ref":"#/components/schemas/HouseholdWrapper"},"type":"array","title":"Wrappers"},"tax_year":{"type":"integer","title":"Tax Year","default":2026},"policy_id":{"type":"string","title":"Policy Id","default":"taxable_low_tax"},"risk_tolerance":{"type":"string","title":"Risk Tolerance","default":"MODERATE"},"creativity":{"type":"string","title":"Creativity","default":"balanced"},"equity_split":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Equity Split"},"federal":{"type":"number","title":"Federal","default":0.37},"niit":{"type":"number","title":"Niit","default":0.038},"state":{"type":"number","title":"State","default":0.0399},"state_ltcg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"State Ltcg"},"ltcg":{"type":"number","title":"Ltcg","default":0.2},"foreign_tax_credit_rate":{"type":"number","title":"Foreign Tax Credit Rate","default":0.0},"us_intl_ratio":{"type":"number","title":"Us Intl Ratio","default":0.7},"factor_tilts":{"type":"boolean","title":"Factor Tilts","default":true},"managed_futures_cap":{"type":"number","title":"Managed Futures Cap","default":0.15},"muni_cap":{"type":"number","title":"Muni Cap","default":0.4},"bond_duration_ceiling":{"type":"number","title":"Bond Duration Ceiling","default":5.0},"bond_style":{"type":"string","title":"Bond Style","default":"any"},"bond_treasury_only":{"type":"boolean","title":"Bond Treasury Only","default":false},"bond_duration_floor":{"type":"number","title":"Bond Duration Floor","default":0.0},"investment_horizon_years":{"type":"integer","title":"Investment Horizon Years","default":10},"auto_adjust_equity_for_horizon":{"type":"boolean","title":"Auto Adjust Equity For Horizon","default":false},"allow_emerging_markets":{"type":"boolean","title":"Allow Emerging Markets","default":false},"international_style":{"type":"string","title":"International Style","default":"any"},"max_growth_tilt":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Growth Tilt"},"covariance_mode":{"type":"string","title":"Covariance Mode","default":"cached"},"covariance_cache_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Covariance Cache Path"},"expected_return_mode":{"type":"string","title":"Expected Return Mode","default":"capm"},"cma_blend_weight":{"type":"number","title":"Cma Blend Weight","default":0.5},"sortino_mar":{"type":"number","title":"Sortino Mar","default":0.02},"selection_objective":{"type":"string","title":"Selection Objective","default":"utility"},"risk_adjusted_max_return_giveup":{"type":"number","title":"Risk Adjusted Max Return Giveup","default":0.0025},"risk_free_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Risk Free Rate"},"lambda_return":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lambda Return"},"lambda_risk":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lambda Risk"},"lambda_tax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lambda Tax"},"portfolio_mode":{"type":"string","title":"Portfolio Mode","default":"research"},"allow_zero_intl":{"type":"boolean","title":"Allow Zero Intl","default":true},"min_intl_alloc":{"type":"number","title":"Min Intl Alloc","default":0.0},"allow_zero_sv":{"type":"boolean","title":"Allow Zero Sv","default":true},"min_sv_alloc":{"type":"number","title":"Min Sv Alloc","default":0.0},"max_bid_ask_spread":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Bid Ask Spread"},"min_aum":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Aum"},"min_avg_dollar_volume_30d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Avg Dollar Volume 30D"},"max_single_etf_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Single Etf Weight"},"max_core_etf_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Core Etf Weight"},"deduplicate_universe":{"type":"boolean","title":"Deduplicate Universe","default":true},"max_positions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Positions"},"min_position_weight":{"type":"number","title":"Min Position Weight","default":0.0},"excluded_symbols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Excluded Symbols"}},"type":"object","required":["wrappers"],"title":"HouseholdAllocatorRequest","description":"Request for multi-wrapper household asset location optimization.\n\nStage 1 runs the standard allocator on the household total to fix target\nweights. Stage 2 assigns assets to wrappers by after-tax priority."},"HouseholdAllocatorResponse":{"properties":{"household_weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Household Weights"},"per_wrapper":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Per Wrapper"},"location_benefit_bps":{"type":"number","title":"Location Benefit Bps"},"household_equity_pct":{"type":"number","title":"Household Equity Pct"},"household_bond_pct":{"type":"number","title":"Household Bond Pct"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["household_weights","per_wrapper","location_benefit_bps","household_equity_pct","household_bond_pct","notes"],"title":"HouseholdAllocatorResponse","description":"Response for household asset location optimization."},"HouseholdWrapper":{"properties":{"account_tax_treatment":{"type":"string","title":"Account Tax Treatment"},"capital":{"type":"number","title":"Capital"},"current_positions":{"anyOf":[{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object"},{"type":"null"}],"title":"Current Positions"}},"type":"object","required":["account_tax_treatment","capital"],"title":"HouseholdWrapper","description":"A single account wrapper in the household."},"InstrumentResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"sec_type":{"type":"string","title":"Sec Type"},"duration":{"type":"number","title":"Duration"},"is_true_liquidity":{"type":"boolean","title":"Is True Liquidity"},"default_cap":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Default Cap"},"instate_fraction":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Instate Fraction"},"maturity_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Maturity Year"}},"type":"object","required":["symbol","sec_type","duration","is_true_liquidity","default_cap","instate_fraction","maturity_year"],"title":"InstrumentResponse"},"KnobMapping":{"properties":{"knob":{"type":"string","title":"Knob"},"value":{"title":"Value"},"confidence":{"type":"number","title":"Confidence"},"source_span":{"type":"string","title":"Source Span"}},"type":"object","required":["knob","value","confidence","source_span"],"title":"KnobMapping","description":"A mapping from utterance to knob value."},"OptimizerFeedbackItem":{"properties":{"id":{"type":"string","title":"Id"},"proposal_id":{"type":"string","title":"Proposal Id"},"is_positive":{"type":"boolean","title":"Is Positive"},"feedback_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feedback Category"},"feedback_category_label":{"type":"string","title":"Feedback Category Label"},"feedback_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feedback Text"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"proposal_created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Created At"},"request_summary":{"additionalProperties":true,"type":"object","title":"Request Summary"},"portfolio_weights":{"items":{"$ref":"#/components/schemas/OptimizerFeedbackPortfolioWeight"},"type":"array","title":"Portfolio Weights"},"response_metrics":{"additionalProperties":true,"type":"object","title":"Response Metrics"},"acceptance_results":{"additionalProperties":true,"type":"object","title":"Acceptance Results"},"notes":{"items":{},"type":"array","title":"Notes"}},"type":"object","required":["id","proposal_id","is_positive","feedback_category_label","request_summary","portfolio_weights","response_metrics","acceptance_results","notes"],"title":"OptimizerFeedbackItem"},"OptimizerFeedbackListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OptimizerFeedbackItem"},"type":"array","title":"Items"},"summary":{"additionalProperties":true,"type":"object","title":"Summary"},"categories":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Categories"}},"type":"object","required":["items","summary","categories"],"title":"OptimizerFeedbackListResponse"},"OptimizerFeedbackPortfolioWeight":{"properties":{"symbol":{"type":"string","title":"Symbol"},"weight":{"type":"number","title":"Weight"},"weight_pct":{"type":"number","title":"Weight Pct"}},"type":"object","required":["symbol","weight","weight_pct"],"title":"OptimizerFeedbackPortfolioWeight"},"OptimizerFeedbackRequest":{"properties":{"proposal_id":{"type":"string","title":"Proposal Id","description":"UUID of the allocator proposal"},"is_positive":{"type":"boolean","title":"Is Positive","description":"True for positive feedback, False for negative feedback"},"feedback_category":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Feedback Category","description":"Stable feedback reason code, e.g. too_concentrated or tax_treatment"},"feedback_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feedback Text","description":"Optional text feedback"}},"type":"object","required":["proposal_id","is_positive"],"title":"OptimizerFeedbackRequest"},"OverrideRequest":{"properties":{"utterance":{"type":"string","title":"Utterance"},"knob":{"type":"string","title":"Knob"},"pre_filled_value":{"title":"Pre Filled Value"},"final_value":{"title":"Final Value"}},"type":"object","required":["utterance","knob","pre_filled_value","final_value"],"title":"OverrideRequest","description":"Request to log a field override (telemetry, C4)."},"ParseRequest":{"properties":{"utterance":{"type":"string","title":"Utterance"},"context":{"additionalProperties":true,"type":"object","title":"Context"}},"type":"object","required":["utterance"],"title":"ParseRequest","description":"Request for parsing natural language utterance."},"ParseResponse":{"properties":{"mappings":{"items":{"$ref":"#/components/schemas/KnobMapping"},"type":"array","title":"Mappings"},"unmatched_spans":{"items":{"type":"string"},"type":"array","title":"Unmatched Spans"}},"type":"object","required":["mappings","unmatched_spans"],"title":"ParseResponse","description":"Response from parsing natural language utterance."},"PortfolioGreeks":{"properties":{"risk_exposures":{"additionalProperties":true,"type":"object","title":"Risk Exposures"},"sleeve_breakdown":{"additionalProperties":{"type":"number"},"type":"object","title":"Sleeve Breakdown"},"concentration":{"additionalProperties":{"type":"number"},"type":"object","title":"Concentration"},"credit_quality":{"additionalProperties":{"type":"number"},"type":"object","title":"Credit Quality"},"distribution_risk":{"additionalProperties":{"type":"number"},"type":"object","title":"Distribution Risk"},"tax_metrics":{"additionalProperties":{"type":"number"},"type":"object","title":"Tax Metrics"},"cost_metrics":{"additionalProperties":{"type":"number"},"type":"object","title":"Cost Metrics"},"sensitivity":{"additionalProperties":true,"type":"object","title":"Sensitivity"},"assumptions":{"additionalProperties":true,"type":"object","title":"Assumptions"},"suitability_flags":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Suitability Flags"}},"type":"object","title":"PortfolioGreeks","description":"Risk-factor exposures, sensitivities, and CFP transparency metrics."},"PortfolioGreeksRequest":{"properties":{"weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Weights"},"federal":{"type":"number","title":"Federal","default":0.37},"niit":{"type":"number","title":"Niit","default":0.038},"state":{"type":"number","title":"State","default":0.0399},"muni_instate_fraction":{"type":"number","title":"Muni Instate Fraction","default":0.0},"params":{"additionalProperties":true,"type":"object","title":"Params"}},"type":"object","required":["weights"],"title":"PortfolioGreeksRequest"},"PortfolioOrchestrateOptimizeRequest":{"properties":{"account_type":{"type":"string","maxLength":40,"minLength":1,"title":"Account Type"},"objective":{"type":"string","maxLength":40,"minLength":1,"title":"Objective"},"capital":{"type":"number","maximum":10000000000.0,"exclusiveMinimum":0.0,"title":"Capital"},"risk_level":{"type":"string","maxLength":40,"title":"Risk Level","default":"moderate"},"cash_need":{"type":"number","maximum":10000000000.0,"minimum":0.0,"title":"Cash Need","default":0.0},"limit_per_model":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit Per Model","default":25},"federal":{"type":"number","maximum":0.6,"minimum":0.0,"title":"Federal","default":0.37},"niit":{"type":"number","maximum":0.1,"minimum":0.0,"title":"Niit","default":0.038},"state":{"type":"number","maximum":0.2,"minimum":0.0,"title":"State","default":0.0399},"ltcg":{"type":"number","maximum":0.5,"minimum":0.0,"title":"Ltcg","default":0.2},"live_yields":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Live Yields"}},"type":"object","required":["account_type","objective","capital"],"title":"PortfolioOrchestrateOptimizeRequest"},"SemanticSearchRequest":{"properties":{"query":{"type":"string","title":"Query","description":"Natural language search query"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","description":"Max results","default":20},"max_distance":{"type":"number","maximum":2.0,"minimum":0.0,"title":"Max Distance","description":"Max cosine distance","default":0.8},"min_dollar_volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Dollar Volume","description":"Liquidity floor (30d avg $ vol)"},"asset_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Class","description":"Filter: equity, fixed_income, etc."}},"type":"object","required":["query"],"title":"SemanticSearchRequest"},"SemanticSearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"results":{"items":{"$ref":"#/components/schemas/SemanticSearchResult"},"type":"array","title":"Results"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["query","results","total"],"title":"SemanticSearchResponse"},"SemanticSearchResult":{"properties":{"ticker":{"type":"string","title":"Ticker"},"fund_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fund Name"},"issuer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issuer"},"provider_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Description"},"provider_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Category"},"provider_asset_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Asset Class"},"provider_strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Strategy"},"semantic_similarity":{"type":"number","title":"Semantic Similarity"},"liquidity_score":{"type":"number","title":"Liquidity Score"},"blended_score":{"type":"number","title":"Blended Score"},"avg_dollar_volume_30d":{"type":"number","title":"Avg Dollar Volume 30D"},"implied_bid_ask_spread":{"type":"number","title":"Implied Bid Ask Spread"},"spread_quality":{"type":"string","title":"Spread Quality"},"expense_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expense Ratio"},"asset_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Class"},"sec_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sec Type"},"aum":{"type":"number","title":"Aum"}},"type":"object","required":["ticker","semantic_similarity","liquidity_score","blended_score","avg_dollar_volume_30d","implied_bid_ask_spread","spread_quality","aum"],"title":"SemanticSearchResult"},"StressRequest":{"properties":{"weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Weights"}},"type":"object","required":["weights"],"title":"StressRequest"},"StressResponse":{"properties":{"shocks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Shocks"}},"type":"object","required":["shocks"],"title":"StressResponse"},"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"},"WaitlistSignupRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"use_case":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Use Case"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"}},"type":"object","required":["email"],"title":"WaitlistSignupRequest"}}}}