Repository navigation
Releases: BijectiveLabs/trading-research-agents
Release list
v0.10.0
0.9.0
More venues run end to end, analysts that each read only their own data, and validators that work as a judged case.
Venues
Six exchanges have now been run end to end with real orders on their practice APIs: Bybit, OKX, Bitget, Binance, BingX and Gate. The four new ones went through the same script: an entry with its exits, the position read back, a second entry refused, a reduce-only close that leaves nothing resting, a post-only order cancelled at its timeout, a close by the venue's own exit (all but Binance, whose demo book was stale), and the kill path.
- Bitget's unified trading account works: a unified key is recognised and sent through Bitget's unified API, where leverage and margin mode are set and read back.
- Binance futures through
venue = "binance", with the stop and take profit placed right after the fill. - Gate and BingX (BingX's demo, VST, is reached with your account's own key).
- An order is refused when the venue's order book is stamped more than 30 seconds ago. Binance's demo served one 3.2 hours old.
- Fees are read as the venue charged them, a fill without a price is priced from its own fills, and closes carry their own client order id.
New page: Exchange accounts and keys, how to make a key on each venue for demo, testnet and live trading.
Agents
- Each analyst reads only its own data. The technical analyst no longer sees the other analysts' readings; code weighs every reading once, after all of them answered.
- Validators as a judged case. Pro and contra build the strongest case for and against a proposal without seeing each other's. Code checks every claim against the figures. Neutral judges the two checked cases, and its verdict is the one that counts. When only one side has a case, code decides without the extra call.
- The technical analyst sees its own last reading, so a change of direction comes with its reason.
- An answer that does not fit its schema is asked for again with the reason.
Data
Your own Parquet files are read through the same column map and audit as a CSV, for trade history and for series. New page: Your own data.
Upgrade
uv tool upgrade trading-research-agents
tra --version # 0.9.0A desk that declared all three validators now counts one verdict, the judge's, where it counted three; check [confluence].min_support if you set it above 1. The full list of changes is in CHANGELOG.md.
v0.8.0
v0.7.1
A small release: the MCP server gets a build that Glama runs, and the console gets a new header.
What's new
- A Glama build for the MCP server.
glama/Dockerfile, named inglama.json, installs the package with its[mcp]extra and serves the read-only tools over stdio as a non-root user. CI builds the image on every change and checks that it starts and lists its tools. - The console header is the TRA wordmark in block letters, which fits a 31-column terminal. A console whose code page has no block characters gets the ASCII wordmark instead.
Upgrade
uv tool upgrade trading-research-agents
tra --version # 0.7.1The full list of changes is in CHANGELOG.md.
v0.7.0
One way to a venue. tra live and the public trade feed now go through ccxt like venue mode does, so every exchange ccxt knows can run the canary tier and feed tra paper, and there is no per-exchange adapter left in the order path.
What's new
tra liveon any ccxt venue. The canary tier sends through the same client andVenueHandas venue mode. Before the first print it checks the clock, the account's position mode, OKX's account mode, Bybit's key permissions (read through ccxt), the market type and contract size, and any position the run was not told to adopt. Run end to end on the Bybit demo (ETHUSDT) and the OKX demo (BTCUSDT, one contract of 0.01 BTC): entry, reduce-only close, flat, fees as charged.- Safer sends. A size off the venue's step is refused instead of rounded into a different trade; a send lost in transit is looked up by its client id before anything is sent again; an order that has finished but does not yet say what it filled is asked again.
- Public trades through ccxt.
tra paperandtra liveread any venue ccxt streams, with no key. Contract trades are converted to the base, duplicates are passed on once, and out-of-order trades are counted, not passed on. glama.jsonfor the server's listing on Glama.
Breaking
- Removed
trading_research_agents.trading.venues.bybit(the direct Bybit REST adapter) andtrading_research_agents.trading.feeds.bybit(the Bybit websocket feed), with thewebsocketsdependency. Bybit runs through ccxt like every venue; a plugin registered under the entry points still takes precedence for its name. - Client ids for
tra liveorders are nowtra<run><seq>, letters and digits only. tra venues --setupno longer prints a[live]table.- The
[shadow]extra now installs ccxt.
Upgrade
uv tool upgrade trading-research-agents
tra --version # 0.7.0The full list of changes is in CHANGELOG.md.
v0.6.8
One market type for every venue, a setting for which markets a desk trades, and the MCP server in the official MCP Registry. What a desk sends today does not change: a test pins the perpetual order byte for byte.
What's new
- Use it from your own agent. The read-only MCP server is now in the MCP Registry as
io.github.BijectiveLabs/trading-research-agents, and any host can start it without an install:The package installs its command as{ "mcpServers": { "trading-research-agents": { "command": "uvx", "args": ["--with", "mcp>=2,<3", "trading-research-agents", "mcp", "serve"] } } }trading-research-agentsnext totra, which is whatuvxruns. The tools read; none sends an order. See The MCP server. - One market type. Every market on every venue is read once into
trading.market.Marketfrom ccxt's unified market structure, and the order path asks it what applies. Spot, tokenized stocks and prediction markets are built on this; Architecture describes the desk as one system through ccxt. - Which markets a desk trades is one setting:
[execution].markets,["linear perpetual"]by default and the one type built today. A type not built yet is refused, by name, when the config is read. - A new headline: autonomous trading agents with deterministic execution. The agents propose; the system decides.
Fixed
- Order records wrote some quantities in scientific notation (
1E+1for ten contracts of 0.001). They are plain decimals now; orders were never affected. - The MCP server reported an empty version; it reports the package version.
Upgrade
uv tool upgrade trading-research-agents
tra --version # 0.6.8New here? The quick start gets a desk running in the sandbox in a few minutes, and the full list of changes is in CHANGELOG.md.
v0.6.7
A release about saying clearly where the project stands and where it is going. Nothing changes in how a desk decides or trades.
What's new
- Where it is going. The README and the docs have a new section on direction. Linear perpetuals are what it trades today; spot, dated futures, inverse contracts and options are on the way, each with its own cost model, exit rules and tests before venue mode accepts it.
- Every ccxt venue is ready for its run. All of them go through the same order path and gates. Bybit and OKX have been run end to end so far; the venues table now marks the others as ready, and a report from a practice account moves a venue into that column. Reports are wanted for Bitget, BingX and Hyperliquid.
- Stable and experimental, spelled out.
masterand the release on PyPI are the stable line;developis where the next release is built, and a commit there is not a release. Install from PyPI to use it. - A new tagline: an autonomous trading system for crypto. The agents propose; tested rules decide.
- Docs fixes. Boundaries no longer says a decentralised venue cannot be executed (Hyperliquid runs through the same venue hand as any ccxt venue), and a refused market type now says it is not built yet rather than "only".
Upgrade
uv tool upgrade trading-research-agents
tra --version # 0.6.7New here? The quick start gets a desk running in the sandbox in a few minutes, and the full list of changes is in CHANGELOG.md.
v0.6.6
A small release about being easier to find and to read. Nothing changes in how a desk decides or trades.
What's new
- Docs that search engines and AI assistants can read. Every page has its own description, there is a sitemap, and each page has a plain Markdown copy. If you use an assistant, point it at https://docs.bijectivelabs.dev/llms-full.txt and it gets the whole manual as clean text.
- One home for the project. PyPI and GitHub now point to https://www.bijectivelabs.dev/open-source; the docs stay at https://docs.bijectivelabs.dev.
- Docs fixes. The venues page says what we have actually run (Bybit and OKX, end to end on their demo accounts), and the providers page names the three providers that work without naming a model: Groq, Google and Anthropic.
- Newer model SDKs. anthropic 1.13, openai 3.28, google-genai 2.29 and mcp 2.3.
Upgrade
uv tool upgrade trading-research-agents
tra --version # 0.6.6New here? The quick start gets a desk running in the sandbox in a few minutes, and the full list of changes is in CHANGELOG.md.
v0.6.5
Fixed
- The pass over the universe measured each instrument on data.toml's own candles (one-minute bars,
four hours) while the cycle decided on fifteen-minute bars, so the screener and the analyst could
read two different regimes for the same instrument in the same pass (ETH "trending up" to the
screener, "ranging" to the analyst). The pass now measures on the cycle's bars and window. - The console's tagline matches the README's.
Changed
tra init --agent groqand--agent googleno longer ask for--model: they use the models
that have run live cycles here (openai/gpt-oss-120b,gemini-flash-latest), asanthropic
already did. Other providers still ask for one.- The README and the quick start install every provider in one command
([ccxt,openai,anthropic,google,data]), say how to upgrade, and end with a table of what a new
desk does before anything is changed. Missing-extra messages suggest the same install. - The README's PyPI and Python badges refresh within half an hour of a release.
- The screenshots in the README and the docs are taken from the current console.
Added
- Issue forms for bugs, features and venues that ask for the version, the command and its output;
blank issues are off, and questions go to Discussions (SUPPORT.md). - Repository housekeeping: pull requests are labelled by what they touch, issues and pull requests
with no activity for 30 days are marked stale and closed 14 days later, Dependabot proposes
grouped updates monthly, at most two open at a time, and its patch and minor ones merge once CI passes, and CodeQL scans the
Python and the workflows.
The first release published from this repository since it opened to the public.
v0.6.4
Changed
- In
tra runthe technical analyst chooses the setup from the measured regime and the higher
timeframes, with its own desk prompt.[agents].mechanismis the operator's thesis, the setups
they favour when the market offers them, and no longer the only thing the analyst may trade. The
research core intra backtestandtra agent sessionkeeps its registered mechanism. - The market screener picks where a setup has the best chance given each instrument's regime, not
where one mechanism might work. range_reversionneeds a measured range, as the trend setups need a measured trend: it is now
refused in a mixed market with a measured trend strength. A regime that could not be measured
still refuses nothing. On the demo desks' record, fades in a mixed market were right 27% of the
time (n = 30), against 60% in a measured range (n = 37).tra init --agentwrites a mechanism that names no setup: "trade the setup the measured regime
supports: with a trend, inside a range, or flat".
First released on 13 October 2026 in Bijective's internal repository. When the project was opened to the public, it moved here with its full history: every commit since 12 September 2026, every tag and every contributor. The package on PyPI is unchanged.