v0.1.6 — Swarm presets packaging fix
🚀 v0.1.6 — Critical packaging fix + community-driven features
If you installed vibe-trading-ai==0.1.5 via pip install or uv tool install, vibe-trading --swarm-presets returned No presets available and run_swarm was unusable. This release fixes that — please upgrade.
pip install -U vibe-trading-ai
# or
uv tool install --reinstall vibe-trading-aiHighlights
🐛 Swarm presets packaging fix (#55)
Preset YAMLs were declared via [tool.setuptools.data-files] in pyproject.toml, which lands them under <install-prefix>/.data/data/config/swarm/ rather than at <site-packages>/config/swarm/ where the loader looked. Editable installs (pip install -e .) happened to work because the source-tree path resolved correctly, so the bug only surfaced in published wheels — every pip install vibe-trading-ai==0.1.5 was broken on this code path.
Resolution: 29 preset YAMLs moved into agent/src/swarm/presets/ so they ship as ordinary package-data. Loader now resolves via Path(__file__).parent / "presets" — identical under editable installs and built wheels. Pinned by a 6-test packaging regression suite so this can't silently regress again.
Bug reported by @qxj — screenshots made it a 5-minute root cause hunt.
📊 Benchmark comparison panel
Backtest output now ships a benchmark comparison panel (ticker / benchmark return / excess return / information ratio) with yfinance-backed resolution for SPY, CSI 300, and other major indices. Contributed by @MB-Ndhlovu (#48).
🛡️ /upload streaming + size limits
The /upload endpoint streams the request body in 1 MB chunks and aborts past MAX_UPLOAD_SIZE with partial-file cleanup. The 50 MB cap is now actually enforced under malicious / oversized clients. Pinned by 4 regression tests. Contributed by @genoshide (#53).
📈 Futu data loader (HK + A-share)
6th data source — Futu OpenAPI integration for Hong Kong and A-share equities, with broker-grade real-time quotes. Contributed by @hamza-mobeen (#47).
🔧 vnpy CtaTemplate export skill
72nd skill — vnpy-export generates ready-to-run CtaTemplate strategy code for the vnpy backtest framework. Contributed by @hamza-mobeen (#46).
0.1.6 maintenance
- Loader: AKShare loader correctly routes ETFs (
510300.SH) and forex (USDCNH) to the right endpoints with hardened registry fallback - Workspace: Relative
run_dirnormalized to active run dir — fixes empty/relative paths in tool calls (#43, @Mothilal-M) - Security: Path containment enforced in
safe_path+ sandboxing for journal / shadow account tools - Build:
MANIFEST.inships.env.example/ tests / Docker files in sdist - Frontend: Route-level lazy loading shrinks initial bundle 688 KB → 262 KB
- Docs: README usage examples (#45, @hamza-mobeen)
- SKILL manifest: synced to 22 MCP tools / 72 skills / 6 data sources / 29 swarm presets
Install / upgrade
| Channel | Command |
|---|---|
| PyPI | pip install -U vibe-trading-ai |
| uv tool | uv tool install --reinstall vibe-trading-ai |
| ClawHub (Claude Desktop / OpenClaw) | clawhub install vibe-trading |
| Docker | docker compose pull && docker compose up -d |
By the numbers
- 27 agent tools (22 exposed via MCP)
- 72 bundled skills (+ user-created via full CRUD)
- 6 data sources with auto-fallback: tushare, yfinance, okx, akshare, ccxt, futu (new)
- 29 swarm presets, 7 backtest engines + options portfolio
- 13 LLM providers
🙌 New contributors
Huge thanks to everyone who opened a PR in this cycle — all 4 are first-time contributions to Vibe-Trading:
- @hamza-mobeen — Futu data loader (#47), vnpy CtaTemplate export skill (#46), README usage examples (#45) — three first-time PRs in one cycle 👏
- @MB-Ndhlovu — backtest benchmark comparison panel (#48)
- @genoshide —
/uploadstreaming + size limits (#53) - @Mothilal-M —
_normalize_tool_run_dirworkspace fix (#43)
Issue reporters who kept the surface area honest: thanks to @qxj for the high-quality #55 reproduction and to @myrassel for the OAuth feature suggestion (#49) we are tracking for a future release.
Changelog
Full changes: v0.1.5...v0.1.6
Merged PRs since v0.1.5 (6)
- #53 fix: stream uploads while enforcing API size limit — @genoshide
- #48 feat(cli): add benchmark comparison to backtest output — @MB-Ndhlovu
- #47 feat: add Futu data loader for HK and A-share equities — @hamza-mobeen
- #46 feat: add vnpy export skill for CtaTemplate strategies — @hamza-mobeen
- #45 docs: add usage examples to README — @hamza-mobeen
- #43 feat(loop): add _normalize_tool_run_dir function and corresponding tests — @Mothilal-M