概要
Vibe-Trading は、LLM 駆動の個人向けトレーディングエージェントで、マルチエージェントオーケストレーションとブローカーコネクタを統合し、バックテスト、リアルタイム相場、リスク管理をサポートしています。コマンドライン、REST API、MCP、Web インターフェースを提供し、1 つのコマンドでトレーディング戦略をデプロイできます。
README プレビュー
\n English | 中文 | 日本語 | 한국어 | العربية\n\n\n\n \n\n\nVibe-Trading: Your Personal Trading Agent\n\n\n One Command to Empower Your Agent with Comprehensive Trading Capabilities\n\n\n\n \n\n\n\n \n \n \n \n \n \n \n \n \n\n\n\n Website · \n Docs · \n News · \n Features · \n Shadow Account · \n Demo · \n Quick Start · \n Examples · \n API / MCP · \n Roadmap · \n Contributing\n\n\n\n \n\n\n---\n\n## 📰 News\n\n- **2026-06-03** 🧹 **Community triage + trace correlation**: Tool-call trace entries now carry the originating `call_id`, so a `tool_result` can be matched back to its `tool_call` when replaying a run trace — arg previews stay truncated to keep trace files small ([#168](https://github.com/HKUDS/Vibe-Trading/pull/168), thanks @zwrong). Source comments no longer point at an internal-only docs path that external contributors couldn't find ([#166](https://github.com/HKUDS/Vibe-Trading/issues/166), thanks @jaleelpersonal). Also clarified that the `langchain-community` resolver warning on install is a harmless leftover-package notice, not a failure ([#167](https://github.com/HKUDS/Vibe-Trading/issues/167)), and scoped Gemini 2.5/3.0 `thoughtSignature` round-tripping for function calls as a `help wanted` task with a full fix plan ([#170](https://github.com/HKUDS/Vibe-Trading/issues/170), thanks @jliu6789).\n- **2026-06-02** 🔌 **Six new broker connectors (Tiger / Longbridge / Alpaca / OKX / Binance / Futu)**: The connector-first trading layer gains a direct-SDK transport alongside IBKR (local) and Robinhood (MCP). Each connector exposes read-only account / positions / orders / quote / history **plus paper-account order placement** — test your strategies across these broker paper accounts. Five of them (Tiger, Alpaca, OKX, Binance, Futu) also support **bounded, mandate-ga
FAQ (5)
トラブル対応vibe-tradingでDeepSeek v4 pro APIキーを使用すると、なぜ401エラーが返されるのですか?
401エラーは、LLMプロバイダーが正しく設定されていないことを意味します。.env(できれば~/.vibe-trading/.env)に以下が含まれていることを確認してください:
LANGCHAIN_PROVIDER=deepseek
LANGCHAIN_MODEL_NAME=deepseek-v4-pro
DEEPSEEK_API_KEY=sk-your-deepseek-official-api-key
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
TIMEOUT_SECONDS=2400
重要:
- LANGCHAIN_PROVIDERはdeepseekでなければなりません。openrouterではありません。
- OpenRouterとDeepSeekのキーを混在させないでください。
- Vibe-tradingはまず~/.vibe-trading/.envを読み込みます。そのファイルが存在する場合は、agent/.envではなくそちらを更新してください。
トラブル対応Vibe-Trading CLIのswarmが「429 billing_not_active」エラーで失敗する理由は?
swarmワーカーは、Codexや単一タスク実行で使用されるものとは別の独自のLLMプロバイダー設定を使用します。CLI swarmコマンドはワークフローを開始しますが、環境変数(例:agent/.envまたはシェル内のLANGCHAIN_PROVIDER、LANGCHAIN_MODEL_NAME、DEEPSEEK_API_KEY)を介して設定されたプロバイダーアカウントがアクティブでない、または課金設定がないため、内部ワーカーが失敗します。解決するには、agent/.envファイルを確認し、正しいAPIキーが設定されていること、プロバイダーアカウントがアクティブで課金が有効であることを確認してください。その後、swarmコマンドを再実行してください。
トラブル対応alpha-bench の symlink テストで発生する "AttributeError: 'object' object has no attribute 'meta'" を修正する方法
agent/tests/test_mcp_alpha_zoo_contract.py の _BenchRegistry テストスタブを更新し、返されるレジストリエントリに _validate_bench_data_requirements() が要求するようになった meta 属性が含まれるようにしてください。むき出しの object() の戻り値を SimpleNamespace(meta=None) に置き換えてください(必要に応じて types から SimpleNamespace をインポートしてください)。バリデーターは meta=None を必須カラムなしとして扱うため、テストはシンボリックリンクのアサーションへ進むことができます。本番コードの except 句を広げて AttributeError を捕捉するようにしてはいけません。それは実際のレジストリ契約のバグを隠してしまう可能性があるからです。
トラブル対応max_drawdownが初期キャッシュからの最初のバーの損失を無視したり、0.0と報告したりするオプションのバックテストを修正するにはどうすればよいですか?
PR fix(options): seed the max-drawdown peak with initial cash を含むリリースにアップグレードしてください。agent/backtest/engines/options_portfolio.py を手動でパッチする場合は、_calc_options_metrics 内の実測エクイティに基づくピークを:
peak = equity_vals.cummax()
有効な初期資金からシードされたピークに置き換えます:
import numpy as np
if initial_cash is not None and np.isfinite(initial_cash) and initial_cash > 0:
peak = equity_vals.cummax().clip(lower=float(initial_cash))
else:
peak = equity_vals.cummax() # preserve previous fallback/warning
これは agent/backtest/metrics.py と一致します。そこでは initial_cash は、最初に記録されたバーの前における口座の最初のハイウォーターマークです。修正後、エクイティが [95, 90, 99] で initial_cash=100 の場合は max_drawdown=-0.10 が報告され、単一の観測値 [90] の場合は 0.0 ではなく -0.10 が報告されます。最初のバーでの損失、単一バーでの損失、一貫して上昇するエクイティカーブ、および無効な初期資金に対する回帰テストを追加してください。
トラブル対応BTC-USDT-PERPの無期限シンボルをバックテストする際に、なぜすべての注文がzero_size(trade_count: 0)として拒否されるのですか?
根本原因: backtest/engines/_market_hooks.py の _detect_market() には -PERP サフィックスに対応する正規表現がないため、BTC-USDT-PERP のようなシンボルは _MARKET_PATTERNS をすり抜けて a_share のデフォルトにフォールスルーします。その結果、バックテストは CryptoEngine ではなく中国A株の100株単位のボードロット丸めを適用し、計算されたポジションサイズがすべてゼロに切り捨てられます。データは正常に読み込まれるにもかかわらず、unfilled_plan_rejections_by_symbol: {"BTC-USDT-PERP": {"zero_size": N}} となり、エクイティカーブが平坦になるのはこのためです。修正方法: _MARKET_PATTERNS の crypto セクションに次のエントリを追加します: (re.compile(r"^[A-Z0-9]+-USDT-PERP$", re.I), "crypto")。即時の回避策 — runner.main() を呼び出す前にメモリ上でモンキーパッチを適用します: import re; from backtest.engines import _market_hooks; _market_hooks._MARKET_PATTERNS.insert(0, (re.compile(r"^[A-Z0-9]+-USDT-PERP$", re.I), "crypto"))。パッチを適用すると、同じ設定が CryptoEngine にルーティングされ、レバレッジ/証拠金/ファンディングの設定が有効になり、注文のサイズ計算と約定が正常に行われます。同じ根本原因は OKX 形式の無期限(perp)シンボル(source: "okx")にも影響します。