Skip to content

Releases: BijectiveLabs/trading-research-agents

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 04:02

See CHANGELOG.md for v0.10.0.

0.9.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:52

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.0

A 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

Choose a tag to compare

@github-actions github-actions released this 18 Oct 04:41

See CHANGELOG.md for v0.8.0.

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 05:25

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 in glama.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.1

The full list of changes is in CHANGELOG.md.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 16:52

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 live on any ccxt venue. The canary tier sends through the same client and VenueHand as 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 paper and tra live read 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.json for the server's listing on Glama.

Breaking

  • Removed trading_research_agents.trading.venues.bybit (the direct Bybit REST adapter) and trading_research_agents.trading.feeds.bybit (the Bybit websocket feed), with the websockets dependency. Bybit runs through ccxt like every venue; a plugin registered under the entry points still takes precedence for its name.
  • Client ids for tra live orders are now tra<run><seq>, letters and digits only.
  • tra venues --setup no longer prints a [live] table.
  • The [shadow] extra now installs ccxt.

Upgrade

uv tool upgrade trading-research-agents
tra --version      # 0.7.0

The full list of changes is in CHANGELOG.md.

v0.6.8

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:45

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:
    { "mcpServers": { "trading-research-agents": { "command": "uvx", "args": ["--with", "mcp>=2,<3", "trading-research-agents", "mcp", "serve"] } } }
    The package installs its command as trading-research-agents next to tra, which is what uvx runs. 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.Market from 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+1 for 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.8

New 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

Choose a tag to compare

@github-actions github-actions released this 15 Oct 19:07

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. master and the release on PyPI are the stable line; develop is 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.7

New 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

Choose a tag to compare

@github-actions github-actions released this 14 Oct 18:14

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.6

New 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

Choose a tag to compare

@github-actions github-actions released this 13 Oct 16:59

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 groq and --agent google no longer ask for --model: they use the models
    that have run live cycles here (openai/gpt-oss-120b, gemini-flash-latest), as anthropic
    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

Choose a tag to compare

@uranusice uranusice released this 13 Oct 15:15

Changed

  • In tra run the technical analyst chooses the setup from the measured regime and the higher
    timeframes, with its own desk prompt. [agents].mechanism is 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 in tra backtest and tra agent session keeps 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_reversion needs 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 --agent writes 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.