Commit Graph
413 Commits
Author SHA1 Message Date
Yijia-Xiao 0c602846ba feat(cli): run an analysis without questions from flags (#1127, #1133)
- --ticker, --date and --analysts answer their steps, checked as the prompts check them; --save/--no-save and --show/--no-show answer the questions after the run
- with no terminal, the run stops before it starts and names every flag or TRADINGAGENTS_* variable still needed; a missing API key and an announcement no longer wait for input
- README shows an unattended run
2026-09-24 20:42:51 +00:00
Yijia-Xiao a1b3b5bab8 feat(reports): record the analysis date and what produced a run (#752)
- TradingAgentsGraph.run_settings(): version, provider, models, analysts, debate rounds, language and vendors; no endpoints, keys or paths
- complete_report.md opens with the analysis date and those settings; the saved state log carries them as run_settings
2026-09-24 19:38:41 +00:00
Yijia-Xiao d91d1f4cb4 build: keep the package version in tradingagents.__version__
- pyproject reads the version from tradingagents/__init__.py, so a source checkout, an editable install and a wheel report the same one
- the SEC EDGAR User-Agent names tradingagents.__version__
2026-09-24 19:38:41 +00:00
Yijia-Xiao 45391d0962 feat(docker): keep results in a host folder when TRADINGAGENTS_DATA_DIR is set (#865)
- both compose services mount ${TRADINGAGENTS_DATA_DIR:-tradingagents_data}; unset keeps the named volume
- README and .env.example show the setting
2026-09-24 19:38:41 +00:00
Yijia-Xiao cf960d6382 refactor: one name per decision in the state and its log
- the Research Manager's plan and the Portfolio Manager's decision live only in investment_plan and final_trade_decision; the debate states no longer copy them as judge_decision
- the saved state log writes the Trader's plan as trader_investment_plan, its state key
- the report tree, the final display and the live CLI read the decisions from those fields
2026-09-24 19:38:41 +00:00
Yijia-Xiao 1d20780095 chore: remove code nothing reads
- router.VENDOR_LIST, and the state's sender field with the Trader's partial that only set it
2026-09-24 19:38:41 +00:00
Yijia-Xiao 3f6ad5dc12 docs: say which agent writes each state field, and what the debate limits count
- state field descriptions name the Research Manager, the News and Fundamentals Analysts and the Portfolio Manager; comments that only repeat them are gone
- the debate-limit comments count turns per max_debate_rounds and max_risk_discuss_rounds
- date_window's docstring covers all the point-in-time rules it holds
2026-09-24 19:38:41 +00:00
Yijia-Xiao 674f1087d1 refactor: name the data layer's date argument as_of_date
- vendor functions and date_window take as_of_date, the date data is served as of; the model-facing tool arguments are unchanged
- build_instrument_context and resolve_instrument_context take trade_date, which is what they receive
2026-09-24 19:38:41 +00:00
Yijia-Xiao 5ac5786d0d docs: call it the memory log throughout
- docstrings, comments, messages and the README section use "memory log", matching TradingMemoryLog and memory_log_path
- the write, read and settle paths are named for what they do, not by design phase
2026-09-24 19:38:41 +00:00
Yijia-Xiao c50420fc5c refactor: gather the memory log, settlement and reflection in tradingagents/memory
- memory/log.py holds TradingMemoryLog, still imported from tradingagents.memory
- graph/settlement.py and graph/reflection.py move to memory/; Reflector leaves tradingagents.graph's exports
2026-09-24 19:38:41 +00:00
Yijia-Xiao b690dc7988 fix(rating): read a free-text rating from the decision's own rating line (#1383)
- the first line opening with a rating label is the call, not a rating the text quotes later ("Consensus rating: Buy")
- "rating" must start a word, so "Operating margin: Sell-side" is not a label
2026-09-24 18:45:44 +00:00
Yijia-Xiao a94a411b0e fix(agents): carry the Portfolio Manager's rating through the run (#1383)
- the typed rating is the state's final_rating; propagate returns it, and the memory log tag, the state log and the CLI review check read it
- the decision text is parsed only when the Portfolio Manager answered in free text
- TradingAgentsGraph.process_signal is removed
2026-09-24 18:45:44 +00:00
Yijia-Xiao 05878c96a8 test(net): pin that get_scrubbed keeps the vendor key out of errors (#1398)
- the message and args are masked; no request, response or chained original travels with the error; a passthrough status is returned
2026-09-24 18:45:44 +00:00
Yijia-Xiao f9d6495dca fix(fred): state the dates a macro change spans (#1397)
- the change line reads "Change from <first> to <last>" instead of "Change over window", so a partial-year move no longer reads as year on year
2026-09-24 18:45:44 +00:00
Yijia-Xiao f4269bf193 test: keep the CLI's saved selections out of the user's home (#1395)
- every test saves and reads CLI selections under its own tmp_path
2026-09-24 18:45:44 +00:00
Yijia-Xiao 47ac1f2d1e feat(config): benchmark Taiwan, Korea, Singapore and the main European exchanges (#1392)
- .TW, .TWO, .KS, .KQ, .SI, .DE, .PA, .AS, .SW and .MI tickers are measured against their regional index instead of SPY
2026-09-24 18:45:44 +00:00
Yijia-Xiao 51066935b8 refactor: name the decision log module tradingagents/memory.py
- TradingMemoryLog imports from tradingagents.memory, matching the class, the memory_log_path key and graph.memory_log
2026-09-24 18:45:44 +00:00
Yijia-Xiao 73e0aa0fa6 chore: start 0.5.2 development (0.5.2.dev0) 2026-09-24 18:45:44 +00:00
Chaoqi 6ac7c6f017 fix(dataflows): report a Yahoo rate limit as a rate limit (#1387) 2026-09-24 11:45:39 -07:00
olivergpt ecd3404213 fix(llm): treat deepseek-flash as a thinking model (#1389) 2026-09-24 11:45:29 -07:00
Yijia Xiao 35543d0248 TradingAgents v0.5.1 release v0.5.1 2026-09-24 00:49:14 -07:00
Yijia-Xiao 90be56b9b2 chore: add issue templates 2026-09-24 07:47:51 +00:00
Yijia-Xiao 25c751346e docs: move the changelog link below the latest news 2026-09-24 07:47:51 +00:00
Yijia Xiao 6caf0db866 Merge pull request #1402 from TauricResearch/v0.5.1
TradingAgents v0.5.1 release
2026-09-24 00:32:19 -07:00
Yijia-Xiao f692949f14 docs: TradingAgents v0.5.1 release 2026-09-24 07:20:06 +00:00
Yijia Xiao f58a585390 Merge pull request #1401 from TauricResearch/v0.5.1
Release 0.5.1
2026-09-23 22:26:39 -07:00
Yijia-Xiao e1a5f20480 release: 0.5.1 2026-09-24 05:04:30 +00:00
Yijia-Xiao bbd4d0413a fix(yahoo): report an unreachable Yahoo on insider transactions as unavailable
- the outage raised for an empty insider table reaches the router as a vendor error, not as a symbol with no data
2026-09-24 05:00:36 +00:00
Yijia-Xiao b176c9374b fix(yahoo): clean OHLCV frames on their own copy
- dropping undated rows copies the frame before prices are coerced, so no chained-assignment write
2026-09-24 05:00:36 +00:00
Yijia-Xiao 4187716842 fix(stocktwits): decode HTML entities in message bodies
- bodies reach the prompt and the screen as plain text (S&P, wasn't) rather than escaped (S&amp;P, wasn&#39;t)
2026-09-24 05:00:36 +00:00
Yijia-Xiao 24c38602e5 docs: document Jev post screening (#1376) 2026-09-24 05:00:36 +00:00
Yijia-Xiao c924f84114 feat(sentiment): screen social posts with TypeSafe's Jev (#1376)
- with TYPESAFE_API_KEY set, each StockTwits and Reddit post is asked whether it is about the company and its stance on the stock
- posts clearly about something else are dropped before the per-source cut, and each block opens with a stance count
- any failed request leaves the source's posts unscreened and says so; without a key nothing changes
2026-09-24 05:00:36 +00:00
Yijia-Xiao f281feb483 feat(models): add GPT-6 Sol and Luna and Claude Opus 5.5
- gpt-6-sol and gpt-6-luna are the new default deep and quick models
- claude-opus-5-5 replaces claude-opus-5 in the picker; opus-5 and gpt-5.4-mini stay known as legacy IDs
2026-09-24 05:00:36 +00:00
Yijia-Xiao 8efb702871 style: normalise blank lines between definitions
- two between top-level definitions, one between methods, none doubled inside a body
2026-09-24 05:00:36 +00:00
Yijia-Xiao 91c4319147 test: keep tests off the network
- conftest refuses socket connections outside tests marked integration
- the one test that probed Yahoo for real now stubs the reachability check
2026-09-24 05:00:36 +00:00
Yijia-Xiao 1e9ad314d8 ci: run the py3.12 tests in a non-UTC time zone
- a test that only passes in UTC now fails in CI
2026-09-24 05:00:36 +00:00
Yijia-Xiao 825e6321ae docs: drop comments that narrate the next line
- about seventy '# Create/Initialize/Add ...' lines across graph, cli and dataflows, and the file-path headers; comments that give a reason stay
2026-09-24 05:00:36 +00:00
Yijia-Xiao 4a30cb1c0a refactor(cli): split the interactive choices and the run loop out of cli/main.py
- selections.py asks what to run; run.py builds the graph, streams it to the live view and saves the report
- main.py keeps the Typer app and its two commands
2026-09-24 05:00:36 +00:00
Yijia-Xiao 56bd98f690 refactor(cli): move the live view to cli/display.py and the prompts to cli/prompts.py
- display.py holds the message buffer, layout, status tables and report panels, the analyst wall-time tracker (CLI-only, from graph/analyst_execution) and the one Console
- utils.py is renamed prompts.py, which is what it holds; its analyst list is ANALYST_CHOICES, apart from display's ANALYST_ORDER
- get_initial_analyst_node, a one-line helper with one caller, is inlined
- the wall-time tracker tests sit with the other display tests, and tests import cli.prompts as prompts
2026-09-24 05:00:36 +00:00
Yijia-Xiao 969861e8be refactor(graph): settle past decisions in graph/settlement.py
- resolve_benchmark, fetch_returns and settle_pending are module functions; the graph's settle_pending runs them under its config
- create_run_state settles through settle_pending, so the CLI path also settles under the graph's config
2026-09-24 05:00:36 +00:00
Yijia-Xiao c9695673bf refactor(llm_clients): build the client keyword arguments in llm_clients
- build_llm_kwargs(config) replaces the graph's _get_provider_kwargs, with the retry and token coercion beside it
2026-09-24 05:00:36 +00:00
Yijia-Xiao e7354d8af4 refactor: move the decision log to tradingagents/decision_log.py
- it is the run's persistent record, used by the graph, backtest and CLI, not an agent utility; agents/utils is gone
2026-09-24 05:00:36 +00:00
Yijia-Xiao dcbff5ea42 feat(backtest): summarize a backtest result, or a decision log by its path
- callers no longer construct TradingMemoryLog to score a run; README and CLI pass the result
2026-09-24 05:00:36 +00:00
Yijia-Xiao 852ffead43 refactor(agents): organise the agents package by what each module holds
- tools.py: the analysts' data tools, previously seven modules under utils
- context.py (was agent_utils, without its tool re-exports), state.py, rating.py and structured.py sit beside schemas.py
- every role package has an __init__
2026-09-24 04:37:40 +00:00
Yijia-Xiao 6097b582d9 refactor(dataflows): group the vendors under dataflows/vendors
- vendors/yahoo: ohlcv (loader and cache), market (prices, indicators), fundamentals (profile, statements, insider), news, snapshot
- vendors/alpha_vantage is a package; sec_edgar, fred, polymarket, reddit and stocktwits sit beside it
- the one-method StockstatsUtils class is a function; the duplicate Yahoo host constant is gone
- tests are named after the modules they cover: test_ohlcv_date_column, test_yahoo_snapshot, and the ohlcv and snapshot aliases
2026-09-24 04:37:40 +00:00
Yijia-Xiao c42a2f2c61 refactor(dataflows): name the shared modules by what they hold
- interface -> router; symbol_utils -> symbols, which also takes safe_ticker_component
- utils is split: get_current_date to date_window, the HTTP helpers to net
- dataflows imports are absolute; the NoMarketDataError re-export from symbols is gone
2026-09-24 04:31:05 +00:00
Yijia-Xiao a58aa613fc fix: name no date after the run in what a historical run reads
- coverage and withholding notices named where a vendor's coverage starts or today's date
- the instrument context named today's date in every analyst prompt
2026-09-24 04:31:05 +00:00
Yijia-Xiao f142e79660 refactor(dataflows): build the three yfinance statements with one helper
- balance sheet, cash flow and income statement share _statement; output unchanged
2026-09-24 04:31:05 +00:00
Yijia-Xiao 9b14233a24 chore: remove code nothing uses
- is_yahoo_safe, has_checkpoint, get_wall_times, the graph's curr_state and the project_dir config key
- the CLI's final_report and current_agent state, its duplicate get_analysis_date and the save_report_to_disk wrapper
- the dotenv import guard (a hard dependency) and a warning filter for langgraph-checkpoint 4.0.3
2026-09-24 04:31:05 +00:00
Yijia-Xiao 41fc25ac0d refactor(graph): wire each analyst from one declaration of its tools
- an analyst's TOOLS tuple is both what it is offered and what its tool node runs
- one routing function replaces four copies of should_continue_<analyst>
- the sentiment analyst has no tools, so the unreachable social tool node is gone
2026-09-24 04:31:05 +00:00