Skip to content

Agents

Every cents research call fans out to eight agents. Each one returns an AgentResult containing an evidence list, a single conviction delta (clamped to ±10 for individual agents, ±30 for the orchestrator’s aggregate), per-dimension scores, and a human-readable summary. The orchestrator aggregates them with confidence and age weighting.

The static report below is rendered by cents research --export html and embedded verbatim — same data, same dimension scores, same evidence rows.

  • Source: Financial Modeling Prep (/api/v3/ratios, /api/v3/key-metrics).
  • Evidence: P/E ratio, gross/operating/net margins, ROE, debt-to-equity, current ratio, analyst price-target spread.
  • Dimension scores: primarily valuation and quality; risk-adjacent metrics (debt, liquidity) feed risk.
  • Logic: compares each ratio to the thesis’s stated valuation (undervalued / fair / overvalued) and emits supporting, contradicting, or neutral evidence accordingly.
  • Source: Alpaca market data (price bars, daily aggregates).
  • Evidence: moving-average crossovers, momentum slope, 52-week range position, recent volume vs. trailing average.
  • Dimension scores: technical, with a small risk contribution when volatility is elevated.
  • Logic: classic trend-following heuristics anchored to the symbol’s own history; returns supporting evidence when the trend aligns with the thesis time horizon.
  • Source: FRED (Fed funds rate, 10y-2y spread, VIX, unemployment).
  • Evidence: rate regime, yield-curve shape, VIX percentile, employment trend.
  • Dimension scores: macro (and risk when stress signals fire).
  • Logic: evidence is contextual rather than directional — a steepening yield curve nudges conviction up for cyclicals, down for long-duration assets, framed by the thesis’s time horizon.
  • Source: NewsAPI headlines + Anthropic Claude for classification.
  • Evidence: recent headline volume and per-headline sentiment scores.
  • Dimension scores: sentiment.
  • Logic: Claude classifies each headline as positive / negative / neutral; the agent aggregates with a recency weighting. Falls back to a keyword heuristic if ANTHROPIC_API_KEY is missing, and to a no-op if NEWS_API_KEY is missing.
  • Source: FMP financials (multi-year ratios + segment data).
  • Evidence: margin stability over 3-5 years, ROIC trend, gross-margin durability.
  • Dimension scores: moat, secondary quality.
  • Logic: stable margins + rising ROIC = supporting moat evidence; compressing margins = contradicting. Avoids one-period snapshots.
  • Source: FMP insider-transaction endpoint.
  • Evidence: net insider buying/selling, cluster activity (multiple insiders trading in the same direction within a window).
  • Dimension scores: small contributions to quality and risk.
  • Logic: cluster buying is treated as a stronger supporting signal than isolated transactions; cluster selling registers as contradicting. Trades are deduplicated per-insider before scoring (collapsed on reportingName) so one insider filing five 10b5-1 sale slices doesn’t masquerade as cluster activity. When multiple rows collapse, the evidence text appends (across N filings, likely 10b5-1) so the scheduled-sale context is visible.
  • Source: Federal Register API (executive orders, rules, proposed rules) + Anthropic Claude for tagging against the EVENT_TAGS controlled vocabulary.
  • Evidence: recent policy events that match the thesis’s premise_tags — surfaces in the macro dimension with the event’s polarity (bullish/bearish/neutral) feeding the conviction delta.
  • Dimension scores: macro.
  • Logic: the agent has two responsibilities. (1) On refresh(), pull new Federal Register documents, LLM-tag them, persist, and fire PREMISE_INVALIDATION alerts against open theses whose premise_tags intersect. (2) On research(), return recent matching events as macro evidence for the thesis. When called against a symbol with no associated thesis (no-thesis research), untagged events are dropped from the result — they can’t intersect any premise by construction, so surfacing them only adds noise. They are still persisted and may match later. See Events & premise invalidation for the full picture.
  • Source: the seven agents above.
  • Output: a single AgentResult whose evidence is the union of every child agent’s evidence and whose conviction delta is the weighted sum.
  • Weighting:
    • Confidence weighting — each evidence item carries a confidence in [0, 1]; the agent’s average evidence confidence scales its conviction delta before aggregation.
    • Age decay — evidence weight decays linearly from 1.0 to 0.1 over a per-dimension TTL (technical/sentiment 7 days, macro/valuation/ risk 30 days, quality/moat 90 days). Old evidence is never fully discarded — it floors at 0.1 so historical context survives.
    • Clamping — every individual agent’s conviction delta is clamped to ±10 (MAX_CONVICTION_DELTA) so a single agent can’t dominate. The orchestrator’s own aggregated result has a higher cap of ±30 (MAX_AGGREGATE_CONVICTION_DELTA) so a strong-consensus signal isn’t quantized to ±10 by the per-agent clamp.
  • Synthesis summary: human-readable string of the form NVDA synthesis: fundamentals: +3.1 | technical: +1.8 | sentiment: +0.4 = +5.3 total (weighted).
  • Source: none — emits a uniform-random conviction_delta in [-30, +30] with no LLM calls and no evidence rows.
  • Stamp: every thesis opened by this orchestrator gets orchestrator_label = "random" (the LLM arm gets "llm").
  • Why it exists: the paired-neutral cohort is a control for regime beta; the random arm is the matched-cadence control for signal value. Run it on the same universe at the same cadence as the LLM arm and the cohort spread between the two arms isolates whatever signal the LLM orchestrator actually contributed. See Operating principles.
  • Invocation: cents factory run --orchestrator random --orchestrator-seed 42 (seed for reproducibility).

The five dimensions — valuation, quality, moat, technical, risk, plus secondary macro and sentiment — are independent axes. The orchestrator sums per-agent dimension contributions, so a high overall conviction delta with one badly negative dimension is a flag worth reading, not just a number to act on.

Not financial advice. Cents is an educational and research tool for tracking your own investment theses. Outputs are model-generated and may be inaccurate. You are solely responsible for your own investment decisions.