Skip to content

v0.1.11 — India equity, fundamental factors, IM channels + roll-up

Latest

Choose a tag to compare

@warren618 warren618 released this 10 Jul 17:11

🇮🇳 v0.1.11 — India equity, fundamental factors, IM channels + roll-up since 0.1.10

v0.1.11 is a roll-up of three weeks of work. The headlines: Indian equity (NSE/BSE) becomes a first-class backtesting market, a PIT-safe fundamental factor layer brings the Alpha Zoo to 460 alphas across 5 families, the IM channel runtime delivers research through 16 message adapters, and scheduled research runs end to end. Around them ship an optional QVeris premium data track, the completed api_server modularization, centralized env config with a CI gate, a Trading 212 read-only connector (11 brokers), a turnover-aware portfolio optimizer (5 optimizers), an analyze_image vision tool, and a long tail of contributor fixes.

This release is available on PyPI, ClawHub, and GitHub Releases.

pip install -U vibe-trading-ai
# or
uv tool install --reinstall vibe-trading-ai

Highlights

🇮🇳 Indian equity (NSE/BSE) as a first-class market

A dedicated IndiaEquityEngine (#305, thanks @muku314115) models the market as it actually trades: T+1 delivery, no overnight shorts (opt-in intraday), configurable circuit bands, 1-share lots, and a config-driven STT / stamp-duty / exchange / SEBI / GST cost stack. .NS/.BO symbols route through yahoo → yfinance → india_broker → local, where india_broker is an opt-in read-only Shoonya/Dhan bar bridge, and 255 alpha101/qlib158 factors are opted into the new equity_in universe. Backtest engines: 7 → 8; market-data sources: 19 free + QVeris = 20.

💎 Fundamental factor layer, Phase 1 — PIT-safe SEC fundamentals

SEC company facts now flow into dense daily fund:* factor panels the same way price data does — filed-date anchoring (you only see what was public that day), a first-filed restatement policy, true-quarter (start, end) frame selection with Q4 synthesis so YTD/annual frames can't contaminate TTM, and rolling TTM aggregation. On top: a get_fundamentals tool and 4 quality/value factors in a new fundamental zoo family. With the 4 canonical academic alphas from earlier in the cycle (#277, thanks @Robin1987China — Jegadeesh reversal, George–Hwang 52-week high, Amihud illiquidity, Harvey–Siddique co-skewness), the Alpha Zoo grows 452 → 460 across 5 families.

💬 IM channel runtime — research delivery over 16 adapters

The same agent session runtime now attaches to 16 built-in message adapters — WebSocket, Telegram, Slack, Discord, Matrix, WhatsApp, Signal, QQ/NapCat, WeChat/WeCom, Feishu, DingTalk, email, MS Teams, MoChat — dependency-gated with install hints, configurable via AgentConfig.channels, and controllable from REST (/channels/*), CLI (vibe-trading channels ...), and Web Settings, in all 5 UI locales. This release also fixes the first-image papercut: inbound media now lands under ~/.vibe-trading/uploads/<channel>/, inside the agent's allowed file roots (#465, thanks @fei-moss), and NapCat private messages trigger pairing codes (#463).

⏰ Scheduled research, end to end

A default-off background executor (VIBE_TRADING_ENABLE_SCHEDULER) fires due interval/cron jobs through the session runtime (#278, thanks @mvanhorn), on top of a crash-safe atomic job store, auth-gated /scheduled-runs routes (tests in #452, thanks @Robin1987China), a Reports library, and post-backtest attribution. Combined with the Research Autopilot Phase 3 loop closure (#267, thanks @Robin1987China) — scaffold_signal_enginelink_autopilot_backtest — hypothesis → signal-engine → backtest → schedule now runs without a human in the middle.

💰 Optional QVeris premium data track

The 19 free sources stay the default. An explicit-only paid mode (Settings → QVeris or vibe-trading data mode paid) unlocks 63+ providers behind 3 key-gated tools (qveris_search / qveris_inspect / qveris_execute) with preview-by-default and a session budget gate. QVeris never enters auto-fallback: no key, no cost, no surprise.

🧰 Platform & safety

  • api_server modularization completed — 1,103 → 371 lines (#424 closing #331, thanks @shadowinlife) after a cycle of route slices.
  • Centralized env config — one Pydantic EnvConfig schema + an AST CI gate that rejects raw os.getenv outside the config layer (#440, thanks @shadowinlife).
  • Trading 212 read-only connector (#321, thanks @mvanhorn) — 11 brokers. No runtime paper/live discriminator → place_order/cancel_order hard-refuse every order, paper included. Plus an opt-in PreTradeAdvisoryInterface that records advisory reviews without bypassing the mandate gate.
  • Security: loopback CSRF protection (#293), SSRF-guard hardening for CGNAT/mesh ranges (#389), Pillow/langchain CVE floor bumps (#390), tightened dev defaults.
  • Turnover-aware optimizer (#466, thanks @Robin1987China) — 5th optimizer: mean-variance utility with an L1 penalty on weight changes, so the portfolio trades only when improvement outweighs churn.
  • analyze_image vision tool (#464, thanks @fei-moss) — semantic chart/screenshot reads through the session model (vision-capable model required). Tools: 72 free-mode / 75 with QVeris.
  • Manifest count guards (#461, thanks @asahikiko) — packaged SKILL.md capability counts are now asserted against source in CI.

🙌 Contributor cycle

60 contributor-authored PRs merged since 0.1.10 (73 total). Full per-person credits live in the README Contributors section and the CHANGELOG — highlights: @shadowinlife (12 PRs incl. the api_server capstone), @Robin1987China (autopilot P3, academic alphas, shadow-account conditions, turnover optimizer), @muku314115 (India equity), @mvanhorn (scheduler, Trading 212), @fei-moss (vision tool + IM fixes), @sambazhu (value-investing toolkit), and many more.

Numbers at 0.1.11: 8 backtest engines · 460 alphas / 5 families · 86 skills · 30 swarm presets · 20 data sources · 72 free tools (75 paid) · 54 MCP tools · 11 broker connectors · 16 IM adapters · 5 optimizers.