// the find
HKUDS/Vibe-Trading
"Vibe-Trading: Your Personal Trading Agent"
An LLM-orchestrated trading research and execution agent: you describe what you want in natural language, and it writes signal engines, runs backtests, and can relay orders to ten real brokers. Ships with 456 pre-built quant alphas across four well-known factor libraries (Qlib, 101 Formulaic, GTJA191, Fama-French derivatives) and a multi-agent swarm for investment-committee-style analysis. Aimed at quant researchers and systematic traders who want to iterate on strategy ideas without writing all the plumbing.
The Alpha Zoo is the genuinely useful piece — 456 factors with AST purity gates, lookahead guards, a strict OOS bench that adds a random control, and a one-line CLI to rank any zoo on your own universe. That is real infrastructure, not scaffolding. The multi-provider LLM layer is properly engineered: provider-specific quirks (Gemini thought signatures, DeepSeek stream stalls, Kimi User-Agent) live in explicit capability gates instead of a single shim that bleeds across providers. The data layer covers 18 sources with a normalized loader registry, an OHLC sanity check that drops malformed bars at the boundary, and an opt-in local cache with staleness guards — the mootdx native TCP loader for A-shares with no auth or IP rate limit is a thoughtful addition. Broker integrations include the right safety primitives: user-committed mandate, filesystem kill switch, audit ledger, and structural paper/live guards per broker rather than a runtime flag that could silently flip.
The 'vibe' in the name reflects a real risk: the Research Autopilot writes LLM-generated Python signal engines, validates them with AST pre-flight, and executes them against live broker connections. The pre-flight catches missing methods and circular imports, but it does not prevent a confidently wrong model from generating a factor with look-ahead bias that passes the interface check and loses real money. The changelog-as-README exposes how fast things are breaking and being fixed: OAuth tokens not persisting, DeepSeek runs hanging silently at 'Agent is working…', swarm workers ad-hoc scripting yfinance instead of the loader (leaking NaN into JSON), Gemini multi-turn tool calls failing because LangChain dropped a required field mid-stack. These are not edge cases — they hit in production. The LangChain coupling is the structural version of that problem: when your multi-turn tool calling breaks because an upstream framework drops a field in `_convert_input`, you own a regression you cannot prevent. Session and swarm state lives in JSONL files with flush+fsync added after a crash report; the hypothesis registry, memory, and run artifacts are all filesystem JSON — this works for a single user but will break badly with concurrent access or any meaningful scale.