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
enabledflag and aweight(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.