• AI agents
  • Trading
  • Open source

I tested Vibe-Trading, the open-source AI trading agent with 37,000 GitHub stars

An open-source agent with 90+ finance skills that analyses stocks, codes and runs its own backtests and convenes a four-agent investment committee, for 11 cents to $2.80 a run. It's an interesting tool, though some features are still limited and its backtests have small timing problems.

David Arias, CFA7 min read

Vibe-Trading, an open-source trading agent tested on DeepSeek and Claude: your question, one agent with 110+ tools, stock analysis, backtest and a committee of bull, bear, risk and PM, a grounding gate, a report. One run of all 3 features: 11 cents to $2.80. DeepSeek: 3 of 4 backtests a day late
Left: backtests coded by the agent, scored fill by fill: DeepSeek 3 of 4 with every fill one day late, Claude 0 of 4. Right: cost of one run of all 3 features: DeepSeek V4.1 Flash about $0.40, Claude Haiku 5.5 about $0.11, Claude Sonnet 5.5 about $2.80
Backtests checked fill by fill, and the cost of one full run per model.

Vibe-Trading is HKUDS's open-source trading agent, starred by 37,436 people on GitHub. You ask a finance question in plain words, and one agent with more than 110 tools fetches the data, writes the code, runs the backtest and calls in a team when the job needs one. Its three main features were tested on four models between 28 October and 1 November 2026: a stock analysis of NVIDIA, a backtest of Larry Connors' RSI(2) pullback on SPY, and the investment committee, where four agents argue their way to a rating.

It's fast and cheap. A full NVIDIA report took 80 seconds and 2 cents on Claude Haiku 5.5, and one run of all three features cost about 11 cents on Haiku, 40 cents on DeepSeek V4.1 Flash and $2.80 on Claude Sonnet 5.5. Backtests need a second look, though. In 3 of 4 DeepSeek codings the strategy shifted its own signal by a day, on top of the day the engine already adds, so every trade filled a day late and the SPY pullback reported 51.6% instead of 39.8%. None of the 4 Claude codings did that.

Watch the test: the install, the three features live, and the scoreboard.

Vibe-Trading on DeepSeek Flash, DeepSeek Pro, Claude Haiku and Claude Sonnet.

Get the next research article by email

One short email when something new is published: the test, the numbers and the code. No spam.

Prefer X? Follow @Davidariasfin

What Vibe-Trading is

HKUDS is Chao Huang's Data Intelligence Lab at the University of Hong Kong, also behind LightRAG, nanobot and CLI-Anything. Its finance paper, AI-Trader, ran six language models live and found that general intelligence doesn't reliably turn into trading ability. Vibe-Trading ships fast: version 0.1.18 landed on 21 October, and about 185 people have contributed.

It does a lot: 90 finance skills, 30 team presets, 29 data sources, 11 backtest engines, a web app, a terminal app, 14 chat channels and an MCP server. Some corners are unfinished. Its Shadow Account backtest was broken for about three months this year, and a request for JPMorgan's earnings got routed to the derivatives desk. So this test sticks to the three main features.

How a request moves through it

How Vibe-Trading works, from the question to the audit ledger.

It starts with a plan: one agent runs a ReAct loop, loading skills and tools only when it needs them. When a job calls for a team, it starts a preset one, and each worker pulls data through loaders that fall back between 29 sources.

For a backtest, the model writes the strategy as Python, and one of 11 engines runs it under that market's rules, with Monte Carlo, bootstrap and walk-forward checks. Then comes the grounding gate: every figure in the answer must match a tool result, or it's cut. Last, delivery: a report, Pine Script or MetaTrader 5 code, or a trade if you allow one, checked against your caps and a kill switch and logged in a hash-chained ledger.

What gets tested

First, a stock analysis. One agent researches NVIDIA from scratch, pulling prices, indicators, news, the options chain and fundamentals and searching the web, then gives a rating, an entry, a stop and a target for the next 1 to 3 months. Each model is scored on time, cost and how many of its figures the grounding gate cut.

Second, a strategy and its backtest. Larry Connors' RSI(2) pullback goes in as three plain rules, and the agent turns them into Python, runs them on SPY since 2015 and reports return, Sharpe and drawdown. Every fill is then checked against a pandas rebuild of the rule.

Third, the investment committee, Vibe-Trading's preset team of four, on NVIDIA. Bull and bear argue in parallel, a risk officer reads both, and a portfolio manager rules. Scored on time, cost and whether a rating comes out.

Each feature gets one prompt, the same on every model, plus a live run in the terminal app on 1 November.

Install, step by step

README's local install, typed in a VS Code terminal.

Docker is the safer route, because this agent writes code and runs it:

git clone https://github.com/HKUDS/Vibe-Trading.git
cd Vibe-Trading
cp agent/.env.example agent/.env   # your provider and key
docker compose up --build          # web app on localhost:8899

A local install needs Python 3.11 or newer, and the lock file pins the versions the project tests:

python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements-lock.txt
pip install -e .
vibe-trading                        # the terminal app

Three warnings before a first run:

  • The agent can get a shell, and every backtest runs code the model wrote. Its shell switch in .env covers the web app and the API; the terminal app always keeps its shell. These tests removed it and checked every strategy file before it ran.
  • On Windows, turn on long paths.
  • With Claude, set ANTHROPIC_MAX_TOKENS. Its default of 4,096 cost Haiku its first committee.

Four models, same prompts

ModelParametersFeatures tested
DeepSeek V4.1 Flash552B, 8B to 16B activeall 3, plus the live runs
DeepSeek V4 Pro 08131.6T, 49B activebacktest
Claude Haiku 5.5all 3
Claude Sonnet 5.5all 3

All on Vibe-Trading 0.1.18, with costs at list prices.

Feature 1: one agent on NVIDIA

Prompt: "Analyze NVDA for the next 1 to 3 months and give me a rating, an entry, a stop and a target."

Live on DeepSeek V4.1 Flash, 1 November, at 2.5x: each tool call pops up as a chip.

Live on Flash, four minutes later: Buy, entry 200 to 206, target 238.

ModelRatingTimeCostFigures cut
DeepSeek V4.1 FlashBuy4.5 min15¢1
Claude Haiku 5.5Overweight80 s2¢16
Claude Sonnet 5.5Overweight2 min 15 s63¢1
End of Claude Haiku's NVIDIA answer: a note that 16 figures could not be matched to tool results, next to a close of 243.3699951 USD from Yahoo
Grounding gate on Haiku's answer: 16 figures it couldn't trace to a tool result.

Haiku's report read well, but 16 of its figures came out as "(omitted※)". Sonnet lost one, because it wrote numbers exactly as the tools returned them, revenue as 96221000000.

Feature 2: a strategy and its backtest

Larry Connors and Cesar Alvarez's RSI(2) pullback, from Short Term Trading Strategies That Work, buys short dips in SPY while the market is rising. Prompt: backtest it on SPY since 2015, with three rules and 2 basis points per trade.

Three rules on SPY's daily closes.

Plenty worked. Plain words became tested code in minutes, and Flash added a buy-and-hold control on its own.

Live run on DeepSeek V4.1 Flash, 1 November: skill, strategy file, backtest, results.
SPY, 2015 to 30 Oct 2026RSI(2)Buy and hold
Total return38.27%343.97%
Sharpe0.480.81
Max drawdown-12.98%-33.72%
Trades, average hold103, 3.3 days1

Capital sat in the market 11% of the time on average, which explains most of the gap. A Monte Carlo permutation test it ran unasked gave p = 0.76 on Sharpe: "not statistically distinguishable from randomly reordering the same trades."

What limited it was timing. Vibe-Trading's engine already delays every signal one bar, so a signal set on the close of day t fills at the open of t+1. Its strategy skill never says so. Asked to trade "at the next open", some models shift the signal themselves to avoid look-ahead, and every trade lands a day late. Flash's Donchian strategy on GLD did it in one line:

sig = pd.Series(state, index=df.index).shift(1)
Same rule with one extra shift: every fill a day late.

Every run's fills were compared with a pandas replication of the rule:

RuleModelFills on timeReportedIntended
RSI(2), SPYDeepSeek V4.1 Flash0 of 20651.6%39.8%
RSI(2), SPYDeepSeek V4 Pro0 of 20651.6%39.8%
RSI(2), gridDeepSeek V4.1 Flash206 of 20638.3%39.8%
RSI(2), SPYClaude Haiku 5.5206 of 20638.3%39.8%
RSI(2), 2 runsClaude Sonnet 5.5206 of 20638.3%39.8%
Donchian, GLDDeepSeek V4.1 Flash0 of 14036.2%52.5%

Lagged fills push results either way (about 30% added to the pullback's return, a third of the breakout's gone), so the report alone can't reveal the lag. With identical fills, the small gap between 38.3% and 39.8% comes from execution pricing.

Pull request #2137 adds three lines to the strategy skill, starting with "Set each bar's signal from data up to that bar's close, and do not shift it yourself." With the patch, Flash filled 206 of 206 on RSI(2) and 140 of 140 on Donchian, exactly 52.5%. It's open, waiting for review. A backtest cost under 10 cents on Flash, about 23 on Pro, 3 on Haiku and 55 to 70 on Sonnet.

Feature 3: the investment committee

Prompt: "Run the investment committee on NVDA, US market, and close with a rating, entry, stop and target."

Live committee on DeepSeek V4.1 Flash, 1 November, at 2x.

Live on Flash it took 17 minutes, and ruled Buy with moderate conviction, in stages from 204.64, with a hard stop on a weekly close under 189.50.

Committee ratings on NVIDIA: DeepSeek Flash Buy, entry 217.94, stop 203.69, target 250; Claude Haiku Hold, never reached the screen; Claude Sonnet Hold plus hedge, a 1.5% starter with a collar, stop 189.8, target 221.5
Ratings from the scored committee runs.

DeepSeek V4.1 Flash said Buy in about 10 minutes for 20 cents. Claude Haiku 5.5 never got a rating out. On its first try, thinking ate all 4,096 tokens, so the bear and the risk officer each handed over one cut-off sentence. With a 16,000 cap, its portfolio manager wrote Hold without calling a tool, so the worker contract marked the task incomplete and the run closed with no rating.

Claude Sonnet 5.5 took 7.5 minutes, 64 tool calls and about $1.50, with no figure cut. Hold, hedged: a 1.5% starter as a collar, long the 190 put and short the 230 call. Its ruling: "the bull is right on the business and the bear is right on timing."

Compare it in Glassbench

Glassbench: every run in one table, a new Vibe-Trading run, a run page.

Glassbench is an open-source workbench for AI trading agents, built for this series. It runs Vibe-Trading, TradingAgents and AI Hedge Fund on the same ticker, date and model, and keeps every result in one table.

Scoreboard

Scoreboard: DeepSeek Flash Buy 4.5 min 15 cents, backtest 3 of 4 a day late, committee Buy 10 min 20 cents, about 40 cents for all 3; Claude Haiku Overweight 80 s 2 cents 16 blanks, on time 2 of 2, no rating 6 cents, about 11 cents; Claude Sonnet Overweight 2:15 63 cents 1 blank, on time 2 of 2, Hold plus hedge 7.5 min $1.50, about $2.80
All three features on three models. DeepSeek V4 Pro ran the backtest only.

As a research desk it's quick, and the committee's arguments are worth reading. Haiku gives the cheapest full run, Sonnet the most careful committee. Before trusting a backtest's return, check that each fill lands on the bar the rule describes.

Limits

  • Mostly one run per model and feature, and results vary: the live Flash backtest on 1 November traded on the right day.
  • Shell tools were off and every strategy file was checked before it ran, which isn't how the terminal app ships.
  • Prices and levels date from late October 2026.

Sources: Vibe-Trading 0.1.18, its README and strategy-generate skill; run reports and fill checks, 28 October to 1 November 2026; pull request #2137; GitHub API, 2 November. Model sizes from DeepSeek. Not investment advice.

David Arias, CFA

Written by David Arias, CFA

CFA charterholder and licensed portfolio manager working on emerging markets private debt, derivatives and quantitative finance. Builds open-source AI tools for finance, like Glassbench, and publishes the code behind every model on this site.

See more from me