mirror of
https://github.com/TauricResearch/TradingAgents.git
synced 2026-09-27 23:12:39 +03:00
release: 0.5.0
- point-in-time integrity across every dated path, and a vendor failure reported as a vendor failure - SEC EDGAR fundamentals served as filed - backtesting over a ticker and date grid, and the caller's portfolio as run input - current model lineups across every provider
This commit is contained in:
@@ -6,6 +6,72 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
Breaking changes within the 0.x line are called out explicitly.
|
||||
|
||||
## [0.5.0] — 2026-09-18
|
||||
|
||||
Point-in-time integrity across every dated path, decisions that are recorded as
|
||||
they were made, backtesting over a grid of tickers and dates, the caller's
|
||||
portfolio as run input, and SEC EDGAR fundamentals served as filed.
|
||||
|
||||
### Highlights
|
||||
|
||||
- **Fundamentals as filed.** SEC EDGAR serves US company statements as they stood on the run's date: a period that has ended but has not been filed is not served, and a figure restated later still reads as first reported. Keyless, opt-in via the vendor chain.
|
||||
- **Backtesting.** `run_backtest` runs the pipeline over a ticker and date grid into its own decision log, and `summarize` scores the settled cells; `tradingagents backtest` does the same from the CLI.
|
||||
- **Portfolio context.** `propagate(..., portfolio=...)` and `--portfolio` let the trader, risk and portfolio agents size against real holdings. A run without one is never treated as a flat book.
|
||||
- **Decisions are recorded as made.** An unreadable decision is flagged for review everywhere instead of becoming a tradeable Hold, and a rating argued against is no longer read as the call.
|
||||
|
||||
### Point-in-time and honest attribution
|
||||
|
||||
- Dated tools take the run's date from graph state, so an omitted or later date cannot reach a vendor. (#1331, #1319, #1118)
|
||||
- Insider filings and prediction-market odds are bounded by the run date; insider rows state that a trade becomes public when its Form 4 is filed.
|
||||
- A feed that never observed a window reports it as unavailable rather than as an absence, across news, Reddit and StockTwits.
|
||||
- The resolved company identity says when it describes today rather than the run date.
|
||||
- The verification snapshot quotes the prices the vendor reported, never a gap-filled value.
|
||||
- A vendor failure is a vendor failure: yfinance raises instead of returning its errors as text, an outage is not reported as a company with no data, and a chain where every vendor is unavailable says so instead of ending the run.
|
||||
- The macro vintage pin is clamped to the vendor's own clock, so a run dated today cannot ask for a vintage it does not have.
|
||||
- A historical run is not served a present-day company profile by either fundamentals vendor. (#1300)
|
||||
|
||||
### Decisions and evaluation
|
||||
|
||||
- The labelled rating decides, whatever separates it, and prose naming several ratings is reviewed rather than guessed.
|
||||
- Decision prompts state the shape of their answer, so a provider without structured output still returns a readable decision.
|
||||
- A report that was not produced says so, instead of appearing as an empty section.
|
||||
- Backtest scoring reads the direction each rating claimed: a Sell that fell is a hit, and Hold reports no hit rate.
|
||||
- The outcome window is configurable (`holding_period_days`), and reflection states the window it judges.
|
||||
- A settled decision is not logged twice, and a failed reflection no longer stops the next run. (#645)
|
||||
- The trader states entry and stop levels as prices, so a percentage no longer fails the whole proposal. (#1288)
|
||||
|
||||
### CLI
|
||||
|
||||
- `tradingagents backtest`, with `--run-id` to continue an interrupted sweep. (#1234)
|
||||
- The previous run's selections come back as prompt defaults. (#1236, #920)
|
||||
- A run with no readable rating says so; the live view no longer scrolls; messages that read like Python values are shown. (#649, #784)
|
||||
- The state log keeps non-ASCII readable. (#1081)
|
||||
|
||||
### Data sources
|
||||
|
||||
- SEC EDGAR fundamentals vendor (US filers, keyless).
|
||||
- Hong Kong and Shanghai tickers resolve to the symbols Yahoo serves. (#1342, #957, #1260)
|
||||
- Reddit is fetched as one combined request per run. (#1286)
|
||||
- One OHLCV cache file per symbol. (#1330)
|
||||
|
||||
### Models
|
||||
|
||||
- Current lineups for every provider: GPT-6 Astra and the GPT-5.6 family, Gemini 3.8 Flash, Claude Opus 5 and Fable 5.1, Grok 4.6, DeepSeek Flash, Qwen 3.8, GLM-5.3, MiniMax M3, Kimi K3 and the current Mistral snapshots.
|
||||
- Every provider accepts a model ID the picker does not list.
|
||||
- GLM traffic goes to the platform its key belongs to, and Ollama structured output no longer sends a tool_choice it rejects. (#1062)
|
||||
|
||||
### Changed
|
||||
|
||||
- The memory log records `REVIEW` for a decision with no readable rating, where it previously recorded `Hold`.
|
||||
- Optional fields the model did not provide are named as such rather than omitted.
|
||||
- Removed dependencies nothing imports: backtrader, redis, setuptools, langchain-experimental, parsel, tqdm. (#1353, #1070)
|
||||
|
||||
### Contributors
|
||||
|
||||
Thanks to everyone who reported these or sent a fix:
|
||||
|
||||
[@akashkpfreelancer](https://github.com/akashkpfreelancer), [@angziii](https://github.com/angziii), [@anupamme](https://github.com/anupamme), [@AyushKar2005](https://github.com/AyushKar2005), [@bulkypanda](https://github.com/bulkypanda), [@CadeYu](https://github.com/CadeYu), [@chiang21fcb](https://github.com/chiang21fcb), [@dajiaohuang](https://github.com/dajiaohuang), [@dewrama](https://github.com/dewrama), [@DogInfantry](https://github.com/DogInfantry), [@emitov](https://github.com/emitov), [@farukerdem34](https://github.com/farukerdem34), [@flydragon2018](https://github.com/flydragon2018), [@fusshell](https://github.com/fusshell), [@Ganesh1729-ui](https://github.com/Ganesh1729-ui), [@gyx09212214-prog](https://github.com/gyx09212214-prog), [@hamzabudeir](https://github.com/hamzabudeir), [@ihsieh31](https://github.com/ihsieh31), [@jaylew20250206](https://github.com/jaylew20250206), [@kaushik-yadav](https://github.com/kaushik-yadav), [@kbnnf](https://github.com/kbnnf), [@kevinkda](https://github.com/kevinkda), [@LudwigJMarx](https://github.com/LudwigJMarx), [@lx7720](https://github.com/lx7720), [@malandrindev](https://github.com/malandrindev), [@mhd325ic-hash](https://github.com/mhd325ic-hash), [@minhdn90](https://github.com/minhdn90), [@miznan](https://github.com/miznan), [@mmssix](https://github.com/mmssix), [@mrbob-git](https://github.com/mrbob-git), [@newnewself](https://github.com/newnewself), [@prithvirajrh](https://github.com/prithvirajrh), [@PyriteResearch](https://github.com/PyriteResearch), [@Rajatendu1](https://github.com/Rajatendu1), [@Recnelis0](https://github.com/Recnelis0), [@Rodvask](https://github.com/Rodvask), [@samhoooo](https://github.com/samhoooo), [@sheiun-xu](https://github.com/sheiun-xu), [@shivsin25](https://github.com/shivsin25), [@SmileShaun](https://github.com/SmileShaun), [@SonnyRajagopalan](https://github.com/SonnyRajagopalan), [@taro0915](https://github.com/taro0915), [@wupengbo125](https://github.com/wupengbo125), [@wxggzz](https://github.com/wxggzz), [@Yixiang-Wu](https://github.com/Yixiang-Wu), [@ZahirBodrike](https://github.com/ZahirBodrike), [@ZHUYAWEI](https://github.com/ZHUYAWEI), [@zkwang616](https://github.com/zkwang616).
|
||||
|
||||
## [0.4.0] — 2026-08-31
|
||||
|
||||
Look-ahead and point-in-time fixes across the data and memory layers, clearer
|
||||
|
||||
Reference in New Issue
Block a user