Skip to content
All research
InvestingStack / ResearchMethodology

From TradingAgents analysis to a reviewable investment decision

What investor context changes in the research workflow, what the connector records, and how to test it without confusing a mandate check with an order block.

From analysis to a reviewable decision. Research, policy and holdings documents converge into a record for review. TradingAgents and Investboard.
In this article 9 sections

The short read

  1. The connector supplies policy and position context, then posts the completed analysis. Context delivery, model reasoning and the server’s check need separate tests.
  2. Our offline checks confirm context and record-handling behavior at pinned versions. They do not establish that a model follows the rules or that a live mandate verdict is correct.
  3. A reviewable record needs the original proposal, the rules and portfolio snapshot that applied, and an explicit account of missing information.

A research report can make a persuasive case for a company while leaving a proposed purchase unsuitable for the investor. An existing holding may already approach a concentration limit. The instrument may be excluded. The portfolio valuation needed to check either assumption may be missing.

The open-source TradingAgents–Investboard connector offers a concrete way to examine that handoff. It connects locally run TradingAgents research with policy and position information from Investboard, which I founded, and sends the completed analysis back for storage and a mandate check.

The research question is narrow: what changes when the same framework receives an investor’s mandate and existing position—and its output is checked and recorded? This follows our comparison of investor-context tools, moving from ecosystem roles to one inspectable implementation.

What the connector changes

The connector extends the framework’s instrument context with two blocks: the investor’s policy document and the available position information. Its graph override retrieves them once at the beginning of a run; the framework passes the resulting context through its agent state. Supplying instructions this way establishes what the agents receive. It does not establish how faithfully they follow them. Connector context implementation, upstream graph at v0.4.0.

After the framework finishes, the connector serializes the analysis and posts it to Investboard. A successful response is attached to the returned state; a failed post leaves a local outbox entry for replay. These are distinct from the model’s recommendation. A completed analysis can exist even when storage has failed. Connector graph implementation.

  1. 01Investor context

    Which policy and measured position reach the agents?

    Policy document · position date · valuation coverage

  2. 02Research & proposal

    How does the framework consider the unchanged proposed addition?

    Analysts · research debate · trader · risk review

  3. 03Mandate check

    What does the service report about the submitted proposal?

    Server verdict or explicit reason a check was skipped

  4. 04Review record

    Can a reader reconstruct the inputs, reasoning and outcome?

    Analysis payload · storage response · provenance

Documented responsibilities in the pinned connector. Offline checks cover context delivery and record handling; model reasoning and live server checks remain untested here.

The record is a basis for an investment decision. It should not be mistaken for evidence that the investor approved the recommendation or that a broker executed it.

The version boundary matters

The connector’s documented test target is TradingAgents v0.4.0. On 11 October 2026, upstream documents v0.6.0. We therefore installed the connector at commit 01f7a0c with upstream v0.4.0 at commit c95f83df, rather than treating the latest framework as interchangeable. The complete hashes and resolved dependency versions are in the reproduction packet. Connector’s framework requirement, upstream v0.6.0 release.

Upstream also documents native portfolio-aware runs. The comparison proposed here concerns the pinned connector workflow, not a claim that TradingAgents needs this connector to accept holdings. Testing v0.6.0 compatibility, or comparing its native portfolio context with the connector, would require a separate version-controlled exercise. Current TradingAgents documentation.

Four fictional investors, one proposed addition

Every scenario proposes adding EUR 2,000 of SAP.DE from existing cash. The ticker is an identifier; all investor figures are fictional. In the fully valued cases, the household is worth EUR 100,000, including cash. Moving EUR 2,000 from cash into the position leaves that denominator unchanged. We hold fees, taxes, FX and prices constant.

The rule covers the direct instrument holding across the household, including cash in total value. It does not claim to measure additional issuer exposure through funds. Each profile sets a 9% limit and explicitly states whether this instrument is excluded.

Fictional profile

Concentration limit

Starting information
EUR 8,000 held; EUR 100,000 household value; 9% limit
Original proposal after the change
EUR 10,000 / EUR 100,000 = 10%
Expected interpretation
Conflicts with the stated limit.

Fictional profile

Excluded instrument

Starting information
EUR 1,000 held; complete valuation; SAP.DE excluded
Original proposal after the change
The addition remains excluded, regardless of its small size
Expected interpretation
Identify the exclusion; a lower weight does not resolve it.

Fictional profile

Missing context

Starting information
Instrument held, but valued position and household value unavailable
Original proposal after the change
Post-change weight cannot be calculated
Expected interpretation
Request the missing values before claiming concentration compliance.

Fictional profile

Within the stated rules

Starting information
EUR 3,000 held; complete valuation; no exclusion
Original proposal after the change
EUR 5,000 / EUR 100,000 = 5%
Expected interpretation
Fits these fixture rules; says nothing about investment merit.

These are author-written expectations, not model outputs or observed Investboard verdicts. They make the arithmetic and missing-information criteria inspectable before results are collected. A model may suggest a different amount, but the rubric still checks whether it assessed the original EUR 2,000 addition correctly.

A fair comparison of three context arms

Run each profile in three arms, with three repetitions per cell: 36 planned model runs. Randomize their order and preserve failures alongside successful outputs.

Arm

No investor context

Context supplied
Common instrument identity and proposal only
What the comparison can examine
Whether the model qualifies investor fit or invents unseen holdings and rules.

Arm

Context in the prompt

Context supplied
The fixture’s policy and position text manually supplied through instrument context
What the comparison can examine
Rule recognition and missing-information handling when the information is present.

Arm

Context through the connector

Context supplied
The same fixture responses delivered through the connector’s context override
What the comparison can examine
Delivery through the integration, with exactly the same context bytes as the prompt arm.

The prompt arm must put the same text in the same agent-context location. Pasting a shorter policy into a final chat message would change wording, framing and reach as well as delivery. Our offline checks confirm byte-for-byte equality between the two context-bearing arms for all four profiles.

The no-context arm cannot be expected to discover an undisclosed exclusion or limit. Mark that criterion not applicable. Its useful test is whether it acknowledges that investor-specific suitability is undetermined. Also, the connector’s --vendor default option changes market-data routing while retaining investor context; it is not a no-context control. Connector data documentation.

Keep the framework commit, market responses, instrument identity, analyst selection, debate rounds, language and model settings fixed. Use exact model identifiers, record supported sampling and reasoning settings, and begin each run with independent empty memory and checkpoints. A low temperature is not a promise of identical output. Pinned configuration.

Freeze and hash every external market response, including reads outside the core vendor registry. The model stage should refuse an unrecorded data request rather than quietly fetch a new input. Before starting it, the exact models, settings, response archive and full-graph runner still need to be finalized; none was substituted silently for this article.

Evaluate three things separately: recognition of the stated rule and denominator; acknowledgment of specific missing facts; and completeness of the resulting record. Save supporting excerpts for each criterion. Remove arm labels before review, retain all runs and disclose the evaluator’s ownership relationship. Four chosen profiles do not justify an overall accuracy or performance claim.

What we actually observed offline

The existing connector suite completed with 172 tests passed in our Python 3.12.12 environment. Our additional harness executed 13 checks, producing twelve context cells without invoking a model. The downloadable output includes the exact contexts, their hashes and a payload built from clearly labelled canned agent state.

Boundary exercised

Context delivery

Observed behavior
Prompt and connector text matched for each fictional profile. The actual connector override read both mock endpoints and closed the client.
What it does not establish
That a model noticed or obeyed the policy.

Boundary exercised

Missing position values

Observed behavior
The renderer explicitly described an unvalued holding and unmeasured household weight. It did not substitute a zero household weight.
What it does not establish
That a model subsequently requested the missing information.

Boundary exercised

Refused context reads

Observed behavior
An explicit no_policy response continued with an absence note. An unrelated 404 or out-of-scope refusal raised an error.
What it does not establish
Live account permissions or production availability.

Boundary exercised

Record transport

Observed behavior
The client sent a canned payload with the run ID as its idempotency key. An outbox entry replayed and was removed after mock acknowledgment.
What it does not establish
Real storage, server deduplication or a correct mandate verdict.

Boundary exercised

Output parsing

Observed behavior
Unrecognized decision text became REVIEW; unstructured text with a recognizable rating could retain that rating through the upstream heuristic.
What it does not establish
That all ambiguous recommendations become REVIEW.

The final parser distinction matters. A structured field being absent does not necessarily make the serialized rating unreadable. Review the original output and parsing path alongside the resulting record. These observations concern software boundaries, not investment outcomes. Executed observations, unit-test summary.

What must survive in the decision record

The payload includes the instrument and analysis date, model names and debate settings, final decision, analyst reports, research and risk debate, and a trader proposal when readable. It does not include dedicated fields for the exact policy version, full position snapshot, original numeric proposal amount or fixture hashes. Those facts might appear in narrative output, but their presence is not guaranteed by the serializer. Pinned payload implementation.

For the experiment, preserve those inputs in a separate provenance record. A later reviewer should be able to reconstruct the original EUR 2,000 proposal, the applicable rule, the valuation date and coverage, the calculation, unresolved questions and any proposed alternative. Archive the full prompts and outputs as well as the serialized payload; clipping or parsing can remove detail.

Apply the same local serializer to every arm. Then test authenticated storage separately in a dedicated fictional account: inspect the returned ID, retrieve the stored record, and retain the actual server check or explicit skip reason. Automatic posting in one arm is an integration feature; it cannot be counted as proof of better model reasoning.

A historical date needs qualification

The connector’s historical filtering has material exceptions. Company profiles and trailing ratios can be current, with the renderer labelling them accordingly. Insider transactions use a window ending at the run’s current date, rather than the historical analysis date. A date printed on an analysis therefore does not make every input historical. Historical-data documentation, vendor implementation.

Our mock check reproduced the current-value labels, exclusion of a later metric period and an insider window ending on the mocked current day. Freezing such responses makes a context comparison consistent, but cannot make later information available in the past. Preserve both the data’s date and its availability date. This experiment evaluates handling of investor rules, not a historical trading strategy.

A mandate verdict records a check

A server verdict can tell the reader what a check reported about the submitted proposal. An absent or skipped check needs its own explanation. Neither should be silently converted into investor approval.

Blocking an order requires enforcement in the execution path: the broker or a mandatory intermediary must reject disallowed actions. The connector documents no order placement, and this study exercises no broker path. Its record should be read as evidence for review, not an enforced trading permission. Connector documentation, Investboard’s assistant boundaries.

Reproduce the checks and extend the study

Download the reproduction packet for the four fictional profiles, protocol, executable offline harness, observed results, dependency pins and file hashes. The packet README explains which parts are runnable and which prerequisites remain for the model stage.

The practical result so far is a testable boundary: we can inspect the context supplied and the record submitted without treating either as proof of rule-following. The next evidence belongs to the models and the authenticated service. Publish those per-run outputs when collected, including refusals, incomplete records and skipped checks; assess them against the expectations fixed before the run.

Sources were checked on 11 October 2026. The local checks used connector commit 01f7a0c05c1b2f885829abd569e5c0af1da1a0d4 and TradingAgents v0.4.0 commit c95f83dfafa748801ab2be4855e6fcffc93804e4. No v0.6.0 compatibility, connected-account behavior, independent review or investment performance is claimed. AI assisted drafting, source review, the test harness and cover artwork; David Bartas is the author and responsible editor.

Cite this research

David Bartas (2026). From TradingAgents analysis to a reviewable investment decision. InvestingStack. https://investingstack.ai/research/tradingagents-investboard-reviewable-decision

Published: Oct 11, 2026

Evidence and downloads

Public sources last checked Oct 11, 2026. Capabilities can change after that date.

InvestingStack publishes research for information only. Nothing on this page is investment advice. Disclosures · Methodology

TradingAgents / Investboard / investor context / mandates / reproducibility

Continue reading

Consulting

Agentic systems, designed around your strategy.

Most agent frameworks are built for a demo. A session works through your strategy and current setup and maps it to an architecture: agent roles, data, models, guardrails and an implementation plan you can execute.

Not investment advice. Consulting clients get no placement or ranking influence on this site. Disclosures