You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a run completes, the generated report (complete_report.md and per-section markdowns) contains only the ticker and a generation timestamp. There is no record of:
What date range each analyst actually queried for stock data (OHLCV)
How many articles the news/sentiment analysts retrieved, and from what date range
Which technical indicators were computed and over what lookback period
What fundamental data (quarterly/annual, which periods) was used
This makes it impossible to audit or reproduce a decision. Two runs for the same ticker + date can silently use different data windows (since the LLM agents decide the start_date/end_date parameters dynamically), yet the reports look identical in structure.
Why it matters
Reproducibility: Without knowing the exact data window, you cannot reproduce the analysis
Trust: A "Hold" recommendation means very different things if based on 30 days vs 1 year of price history
Debugging: When a decision looks wrong, the first question is "what data did it see?" — currently unanswerable from the report alone
Problem
When a run completes, the generated report (
complete_report.mdand per-section markdowns) contains only the ticker and a generation timestamp. There is no record of:This makes it impossible to audit or reproduce a decision. Two runs for the same ticker + date can silently use different data windows (since the LLM agents decide the
start_date/end_dateparameters dynamically), yet the reports look identical in structure.Why it matters
Proposed solution
Add a "Data Sources" section to each analyst report (and the consolidated report) that records:
Implementation options
@toolfunction during a run and attach them to the stateOption 1 (tool-call logging) is the most reliable since it does not depend on the LLM accurately self-reporting.
Current behavior
reporting.pywritesfinal_state["market_report"]etc. as raw text with no metadata. Thecomplete_report.mdheader is just:No data provenance information is preserved.