Skip to content

Strategy Builder

The Strategy Builder (/strategies) lets users assemble custom multi-analyst strategies. It replaces the old /agents page. Backend routes live in backend/api/routes/strategies.py.

Concept

A strategy is a saved configuration of which analysts run and how their contributions are weighted, plus optional bindings to the scanner and alert systems. Users build one on a 5-stage canvas with active/disabled drag zones and preset starting points.

  • The 9 pipeline analysts can each be toggled on/off with an enabled flag and a weight (the canvas allows up to 10 analyst slots, leaving room for expansion).
  • Weights across enabled analysts must sum to 100; disabled analysts get weight 0.
  • Presets provide sensible starting weightings; AI-generated weight recommendations are available via POST /strategies/generate-config.

The selectable analysts map directly to the pipeline registry (see Architecture): technical, fundamental, sentiment, news, sector, insider, earnings_revisions, valuation_comparables, market_context.

Debate config is not yet wired at runtime

A strategy payload may include a debate.* section, but that configuration is not currently consumed by the analysis pipeline — debate behavior is governed by the pipeline's own confidence gating, not by per-strategy debate settings. Treat debate.* as forward-looking until it is wired through. See Signal Aggregation for how confidence actually drives the debate today.

Backend routes

Method & path Purpose
POST /strategies/generate-config AI-generated analyst weighting recommendation
POST /strategies/ Create a strategy
GET /strategies/ List strategies
GET /strategies/{id} Fetch one
PUT /strategies/{id} Update
DELETE /strategies/{id} Delete
POST /strategies/{id}/set-default Mark as the default strategy
POST /strategies/{id}/set-scanner Bind to a scanner config
POST /strategies/{id}/toggle-alerts Enable/disable alert binding
POST /strategies/{id}/duplicate Clone a strategy
GET /strategies/{id}/stats Strategy performance stats
POST /strategies/{id}/wire-to-track Wire the strategy to a fund track

Adaptive analyst weights

Strategy weights are the starting contribution of each analyst. At runtime the pipeline can further adjust each analyst's influence based on historical accuracy — see backend/services/agent_performance.py and weight_service.py, which maintain a leaderboard and feed SignalAggregator.update_weights() (refreshed by the job-worker WeightUpdateWorkflow). See Signal Aggregation for details.