Model or dataset
HKUDS/Vibe-Trading avatar
HKUDS/Vibe-Trading

Vibe-Trading: An Agent Framework for Market Data, Backtesting, and Trade Reports

Vibe-Trading is a research framework that coordinates agents for market data collection, analysis, strategy testing, and trading reports.

33,497 stars5,466 forksPythonMIT

At a glance

What is it?
Vibe-Trading is a Python research framework from HKUDS that coordinates agents for market data collection, strategy testing, and trading reports. It emphasizes readable backtests and a kill-switch safety mechanism, but its rapid release cycle and complex agent behavior demand careful verification.
Who is it for?
Adopt Vibe-Trading if you are a researcher or quant developer who wants a single Python framework to coordinate data collection, strategy testing, and report generation, and you value a built-in kill switch for halting live trading. Do not use it if you need a battle-tested production trading system with a stable API, because the project is explicitly research-oriented and its rapid release cycle (three versions in a month) introduces breaking changes and new bugs.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Vibe-Trading Solves and Who It Is For

Vibe-Trading is a research framework, not a plug-and-play trading bot. It coordinates multiple agents to handle market data collection, analysis, strategy testing, and trading reports. The intended user is a quantitative researcher or developer who wants to automate the pipeline from raw market data to a readable backtest report, without stitching together separate libraries for data fetching, indicator calculation, and performance measurement. The README positions it as a personal trading agent, but the recent release notes reveal a more specific focus: making backtests legible and safe. For example, v0.1.14 is described as 'a backtest you can read,' indicating that the framework puts effort into explaining what happened during a simulation. This is for someone who trusts a report only if they can see the reasoning behind it.

How the Agent Architecture Works

The framework coordinates agents that each handle a stage: data collection, analysis, strategy testing, and report generation. The README does not expose the full internal data flow, but the release notes show concrete mechanisms. One is the 'sweep' in the kill-switch: when a halt is triggered, a cancel-and-flatten sweep attempts to close all positions. The sweep has a 'fired-once latch' that prevents duplicate execution, and it now persists the latch next to the HALT sentinel so that a restart does not replay the sweep. Another mechanism is the separation of data window from evaluation window via `warmup_bars` or `evaluation_start_date`. This addresses a real bug: a long-lookback strategy that needed 200 days of moving-average data would move the start date back a year, and then the evaluation would grade that extra year, silently reporting eleven years instead of ten. The fix ensures warm-up bars only prime indicators. These details show an architecture that is aware of subtle statefulness, which is both a strength and a source of complexity.

Getting Started: Installation and Configuration

The README gives a quick start section, though the exact commands are not fully reproduced here. However, the release notes mention a specific command: `vibe-trading connector setup`. This drives a generic onboarding flow for built-in connectors, with secrets stored per connection in the OS keyring. The framework is installable via PyPI under the package name `vibe-trading-ai`, as referenced in the README badge. Configuration appears to be market-specific, with environment variables like `MARKET_DATA_ORDER_*` controlling the data-source fallback order, which can be reordered in Settings. For a typical setup, you would install the package, run `vibe-trading connector setup` to configure your data providers, and then define a strategy. The README mentions examples and an API server, but the truncated text does not provide those commands. You will need to consult the documentation at vibetrading.wiki for the full quick start, as the repository material is incomplete on this point.

The Kill Switch: A Safety Feature with Real Failure Modes

The kill switch is a standout feature, but its history shows how hard it is to get right. In v0.1.13, the cancel-and-flatten sweep counted any broker response as success, even when the MCP adapter returned an error envelope. That meant a dropped connection produced a compliant-looking audit trail while the resting order stayed live. The fix made error envelopes fail closed. In v0.1.14, another bug appeared: the sweep marked itself fired even when the broker read failed, so the cancel-and-flatten action was silently skipped. The fix now latches only after a broker write has been attempted, and claims each halt episode exclusively to prevent two runners from duplicating a close. Additionally, the fired-once latch was in-memory only, so a restart could replay the whole sweep, flipping a long book net short. The latch is now persisted. These are not theoretical concerns; they are documented bugs that could cause real losses. If you rely on the kill switch, you must test it in your own environment, including simulated restarts and broker failures.

Symbol Resolution and Data Source Fallbacks

A separate class of bugs involves symbol resolution. The release notes describe a case where asking for `ETH-USDT` returned `AETHUSDT-USD`, which is Aave Ethereum USDT, a different asset. The cause was that symbol search never covered exchange pairs, and Yahoo's nearest string won. The fix now resolves exact pairs against venue catalogs, which are public and need no broker account. This is a critical detail for anyone doing cross-market work. The framework also supports per-market data-source priority, configurable via `MARKET_DATA_ORDER_*` variables, and the order is hot-applied and persisted. This is useful when one provider is down or has poor coverage. However, the fallback logic is only as good as the catalogs it uses, and the bug shows that trusting a provider's 'nearest match' can be dangerous. You should verify that your trading pairs resolve to the exact asset you intend, especially if you trade less common pairs.

The Quantlib Module: A Finance-Math Layer

Version 0.1.13 introduced a `quantlib` module with a substantial set of finance functions: Heston (1993) stochastic-volatility pricing, Hierarchical Risk Parity, Gaussian and Archimedean copulas, microstructure estimators (VPIN, Roll, Amihud, Kyle), and finite-difference barrier Greeks. The release notes claim 306 tested functions across 23 modules. This is a meaningful addition because it gives researchers a built-in toolkit for advanced analysis without pulling in external libraries. The name 'quantlib' invites comparison to the C++ QuantLib, but this is a fresh Python implementation, not a binding. The module's breadth suggests a focus on institutional research, as the release title says. However, this is a new module, and its robustness is unproven in production. You should treat it as a research convenience, not a substitute for a dedicated financial library, especially for pricing derivatives where edge cases matter.

Maintenance Cost and Release Velocity

The project is actively maintained, with the last push on 2026-08-20 and three releases in a month: v0.1.12, v0.1.13, and v0.1.14. This velocity is a double-edged sword. On one hand, bugs are fixed quickly, as seen in the cross-market backtest crash that was fixed within days. On the other hand, each release introduces new features and new bugs. The release notes are candid about failures: a kill switch that skipped its action, a symbol that resolved to the wrong coin, backtests that crashed, and a backtest that quietly graded an extra year. This transparency is valuable, but it also signals that the framework is not stable. The license is MIT, which is permissive and allows commercial use, but the project is from HKUDS, a university lab, and the research nature means you should not expect long-term support. You will need to track releases and test upgrades carefully, especially if you rely on the kill switch or symbol resolution.

Alternatives and When to Choose Something Else

The most direct alternative is a general-purpose Python backtesting library like backtrader or vectorbt, which focus on strategy simulation without the agent coordination layer. The key difference is that Vibe-Trading adds a multi-agent pipeline for data collection and report generation, whereas backtrader is a single-purpose backtesting engine. If you already have a data pipeline and only need to test strategies, a simpler library will have fewer moving parts and a more stable API. Another alternative is QuantLib (the C++ library), which offers a proven, comprehensive finance-math toolkit. Vibe-Trading's `quantlib` module covers some of the same ground, but it is new and less battle-tested. For live trading, you would typically use a broker-specific API or a platform like MetaTrader 5, which v0.1.12 mentions as a provider. If your priority is production reliability, you are better off with a mature solution. Vibe-Trading is for exploration and research, where a bug in the evaluation window is an inconvenience, not a financial disaster.

Editorial conclusion

Adopt Vibe-Trading if you are a researcher or quant developer who wants a single Python framework to coordinate data collection, strategy testing, and report generation, and you value a built-in kill switch for halting live trading. Do not use it if you need a battle-tested production trading system with a stable API, because the project is explicitly research-oriented and its rapid release cycle (three versions in a month) introduces breaking changes and new bugs. Before adopting, verify that your target data providers and broker connectors are supported, check the latest release notes for known issues like the cross-market backtest crash fixed in v0.1.14, and test the kill-switch behavior in a simulated halt to ensure it latches correctly. Also confirm that your Python environment meets the dependency requirements, especially if you are on Intel Macs, which v0.1.14 claims to support.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes