docs(readme): add 2026-08-26 news entry across all six READMEs

This commit is contained in:
Haozhe Wu committed 2026-08-26 21:26:41 +08:00
1 parent 4e9ae994f8
commit 002373ef32
6 files changed
+12 -6

No files matched your search

+2 -1
View File
@@ -52,12 +52,13 @@
> ⚠️ **Security warning:** The X account `VibeTrading_HKU`, Virtuals project `101845`, and token contract `0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4` are not official Vibe-Trading assets. We have never launched or endorsed any token or memecoin. Do not buy, connect a wallet, or sign anything. [Details](SECURITY.md#official-channels--impersonation).
- **2026-08-26** ♻️ **A live Alpaca order that loses its broker response stops being a mystery, and gold backtests stop being frictionless**: the order gate now durably owns every Alpaca submission before the broker write, recovers the outcome by exact `client_order_id` only, attributes fills against the signed position delta, and HALTs on any contradiction — recovery never resubmits ([#1213](https://github.com/HKUDS/Vibe-Trading/pull/1213), [#1221](https://github.com/HKUDS/Vibe-Trading/pull/1221), [#1222](https://github.com/HKUDS/Vibe-Trading/pull/1222)). **Fixed:** metals used FX pip/lot conventions, making gold's spread ~1,460× too cheap and rounding positions under 1,000 oz to zero ([#1226](https://github.com/HKUDS/Vibe-Trading/pull/1226)); Futu HKD holdings were valued as USD, overstated by roughly the USD/HKD rate ([#1228](https://github.com/HKUDS/Vibe-Trading/pull/1228)); Shadow Account read PnL keys the runner never emits, so every successful backtest reported PnL = 0.00 ([#1217](https://github.com/HKUDS/Vibe-Trading/pull/1217)); streamed LLM calls never requested usage, under-reporting swarm output tokens ~18–36× ([#1225](https://github.com/HKUDS/Vibe-Trading/pull/1225)). **New:** opt-in read-only Binance USD-M account snapshots — two allowlisted signed reads, no order surface ([#1229](https://github.com/HKUDS/Vibe-Trading/pull/1229), toward [#1030](https://github.com/HKUDS/Vibe-Trading/issues/1030)); portfolio OAuth reconnects run in a bounded subprocess that cannot strand the web process or the callback port ([#1211](https://github.com/HKUDS/Vibe-Trading/pull/1211)). Thanks [@Elfsa-Miranda](https://github.com/Elfsa-Miranda), [@P1Piyush](https://github.com/P1Piyush), [@JaxonHu1024](https://github.com/JaxonHu1024), [@he-yufeng](https://github.com/he-yufeng), [@honginp](https://github.com/honginp), and [@goatyyc](https://github.com/goatyyc)!
- **2026-08-25** 🛡️ **Two live-gate fail-opens closed, and purged CV stops wiping the training set between test blocks**: Alpaca shorts booked as *positive* exposure (`qty` is a magnitude, direction lives in `side`), so selling more loosened `max_total_exposure_usd` instead of tightening it — quantity is now signed on both the TAP JSON and direct-SDK paths ([#1209](https://github.com/HKUDS/Vibe-Trading/pull/1209)); OKX/Futu reads flattened a rejected API call into "empty book, `status: ok`", letting the mandate gate evaluate limits against nothing — they now return the error envelope the gate fails closed on ([#1212](https://github.com/HKUDS/Vibe-Trading/pull/1212)). Both are Phase 0 of the audit roadmap in [#1207](https://github.com/HKUDS/Vibe-Trading/issues/1207). **Fixed:** combinatorial purged CV treated non-contiguous test blocks as one span, purging every training observation between them; segments now purge individually and an emptied fold raises ([#1204](https://github.com/HKUDS/Vibe-Trading/pull/1204)); the credit-risk functions refuse NaN/inf inputs instead of returning NaN scores or a "grey" verdict ([#1215](https://github.com/HKUDS/Vibe-Trading/pull/1215), closes [#1214](https://github.com/HKUDS/Vibe-Trading/issues/1214)). **New:** swarm workers retry with capped equal-jitter backoff ([#1210](https://github.com/HKUDS/Vibe-Trading/pull/1210), toward [#1208](https://github.com/HKUDS/Vibe-Trading/issues/1208)), and `vibe-trading --swarm-retry <run_id>` / `/swarm retry` reruns a failed run, keeping completed tasks with `--resume` ([#1194](https://github.com/HKUDS/Vibe-Trading/pull/1194)). Thanks [@he-yufeng](https://github.com/he-yufeng), [@santhreal](https://github.com/santhreal), [@Robin1987China](https://github.com/Robin1987China), [@pengpengyi92](https://github.com/pengpengyi92), and [@SiMinus](https://github.com/SiMinus)!
- **2026-08-24** 🔗 **IBKR's official MCP goes from "lists tools" to a working read-only portfolio source, and scheduling gets an agent tool that cannot act alone**: [#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178) fixed the URL, but IBKR's gateway still rejected FastMCP's stock OAuth client registration before login. An IBKR-scoped OAuth provider — browser-profile headers, `token_endpoint_auth_method: none`, a stable callback port, and stale-registration recovery, applied only when the MCP host is `api.ibkr.com` — completes authorization ([#1186](https://github.com/HKUDS/Vibe-Trading/pull/1186)), and the live-account-verified `get_account_summary` / `get_account_positions` tools now back the generic account/position reads, making `ibkr-live-official-mcp-readonly` an eligible `/portfolio` source ([#1190](https://github.com/HKUDS/Vibe-Trading/pull/1190), closes [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126)). **New:** the agent sees exactly one scheduling tool, `scheduled_research` — its `propose_create`/`propose_cancel` never touch the job store until you confirm on the surface you are on (Web card, CLI `y/N`, or an exact `confirm`/`确认` reply in IM), delivery targets are opaque operator-configured refs that never expose a raw chat/user id, and a job past its `end_at` expires instead of firing again ([#1187](https://github.com/HKUDS/Vibe-Trading/pull/1187)). **Fixed:** the comps and three-statement engines now refuse non-finite inputs everywhere they enter the arithmetic — a NaN peer metric had been *included* in the multiple distribution and dragged the median to NaN, and `abs(nan) > tolerance` is `False`, so a NaN balance sheet sailed through the hard balance check ([#1184](https://github.com/HKUDS/Vibe-Trading/pull/1184), closes [#1183](https://github.com/HKUDS/Vibe-Trading/issues/1183)); `get_market_data` validates codes, dates, source and interval before burning the loader fallback chain on a malformed call, and its source enum stopped silently rejecting six registered loaders ([#1185](https://github.com/HKUDS/Vibe-Trading/pull/1185)); Feishu QR login now persists the app credentials it receives exactly once — atomically, owner-only — instead of reporting a success that did not survive the process ([#1188](https://github.com/HKUDS/Vibe-Trading/pull/1188)); the risk-analysis skill doc's historical-VaR order statistic now matches the code ([#1189](https://github.com/HKUDS/Vibe-Trading/pull/1189)). Thanks [@sykuang](https://github.com/sykuang), [@goatyyc](https://github.com/goatyyc), [@AirHua-byte](https://github.com/AirHua-byte), [@Robin1987China](https://github.com/Robin1987China), [@cgycorey](https://github.com/cgycorey), and [@youngjincho02-arch](https://github.com/youngjincho02-arch)!
- **2026-08-23** 🔌 **The IBKR MCP seed named the wrong URL, and closing one LLM adapter closed them all**: The seeded official IBKR read-only MCP profile, the README and `SKILL.md` all pointed at `https://api.ibkr.com/v1/api/mcp`; IBKR's own AI-integration page publishes `https://api.ibkr.com/v1/api/mcp-public`, and the seed, all six READMEs and `SKILL.md` now name it — re-run `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes` if your `agent.json` still carries the old URL. The OAuth client-registration step that IBKR's gateway rejects is still open in [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) ([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)). **Fixed:** `ChatLLM.close()` closed LangChain's process-wide cached HTTPX clients, so one finished title-generation or image-vision call left every later request failing with "client has been closed" until a restart — only transports Vibe-Trading created itself are closed now ([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182)); a service restart mid-reply dropped the streamed text and left the attempt *running* forever — partial replies are now checkpointed and reconciled as an explicit *interrupted* transcript entry on the next start ([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180)). **New:** Web chat attaches up to five files per turn through the picker, drag-and-drop, or clipboard paste ([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179)). Thanks [@c020627](https://github.com/c020627) and [@AirHua-byte](https://github.com/AirHua-byte)!
<details>
<summary>Earlier news</summary>
- **2026-08-23** 🔌 **The IBKR MCP seed named the wrong URL, and closing one LLM adapter closed them all**: The seeded official IBKR read-only MCP profile, the README and `SKILL.md` all pointed at `https://api.ibkr.com/v1/api/mcp`; IBKR's own AI-integration page publishes `https://api.ibkr.com/v1/api/mcp-public`, and the seed, all six READMEs and `SKILL.md` now name it — re-run `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes` if your `agent.json` still carries the old URL. The OAuth client-registration step that IBKR's gateway rejects is still open in [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) ([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)). **Fixed:** `ChatLLM.close()` closed LangChain's process-wide cached HTTPX clients, so one finished title-generation or image-vision call left every later request failing with "client has been closed" until a restart — only transports Vibe-Trading created itself are closed now ([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182)); a service restart mid-reply dropped the streamed text and left the attempt *running* forever — partial replies are now checkpointed and reconciled as an explicit *interrupted* transcript entry on the next start ([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180)). **New:** Web chat attaches up to five files per turn through the picker, drag-and-drop, or clipboard paste ([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179)). Thanks [@c020627](https://github.com/c020627) and [@AirHua-byte](https://github.com/AirHua-byte)!
- **2026-08-22** 💼 **A Portfolio page — your holdings across brokers, read-only**: Pick any read-only connector profiles (connection instances over `account.read` + `positions.read`; the IBKR official-MCP profile is not yet eligible) and the new `/portfolio` page aggregates them into immutable snapshots with per-source provenance, USD/CNY valuation, CSV export and a history chart. A source that fails to refresh is reported as an **error and excluded from the totals** — never carried forward — and the snapshot is marked incomplete. The `portfolio_summary` agent tool returns `risk_xray_args` that feed the existing `portfolio_risk_xray`, and `vibe-trading portfolio show|refresh|sources` prints the same snapshot in the terminal. Read-only connector plugins you write yourself live under `~/.vibe-trading/connectors/` (a manifest declaring any write capability is rejected; secrets go to the OS keyring via the `[keyring]` extra), and nothing on this path can place an order ([#1072](https://github.com/HKUDS/Vibe-Trading/pull/1072), toward [#1171](https://github.com/HKUDS/Vibe-Trading/issues/1171)). **Fixed:** thirteen Alpha Zoo factors forward-filled a missing close before computing returns, turning a data gap into a finite "0% return" — the gap now stays `NaN` ([#1172](https://github.com/HKUDS/Vibe-Trading/pull/1172)); independent MCP clients on one http/sse server shared a single fallback research-goal session ([#1173](https://github.com/HKUDS/Vibe-Trading/pull/1173)); memory GC and compression left stale FTS rows and orphaned relation sidecars ([#1174](https://github.com/HKUDS/Vibe-Trading/pull/1174)); `cancel_run()` never reached a swarm worker already streaming — the stop now interrupts the stream, skips that turn's tool calls and lands as a *cancelled* task ([#1175](https://github.com/HKUDS/Vibe-Trading/pull/1175)); MCP `get_research_reports` dropped `beginTime`/`endTime` ([#1176](https://github.com/HKUDS/Vibe-Trading/pull/1176)); `get_options_chain` answered a wrong-cycle expiration with `ok: true` and another date's contracts ([#1177](https://github.com/HKUDS/Vibe-Trading/pull/1177)). Thanks [@goatyyc](https://github.com/goatyyc), [@Shizoqua](https://github.com/Shizoqua) and [@cgycorey](https://github.com/cgycorey)!
- **2026-08-21** ⏱️ **Runs that hung forever**: A `bash` timeout killed the shell but not the grandchildren holding its pipe handles, so a run sat "running" for 20+ minutes. Commands now spawn in their own process group, a timeout kills the whole tree, a stall watchdog ends a run making no forward progress, and compaction stopped discarding the model's own verification records ([#1169](https://github.com/HKUDS/Vibe-Trading/pull/1169)). **Fixed:** multi-year Tencent history silently truncated at 500 bars ([#1154](https://github.com/HKUDS/Vibe-Trading/pull/1154)). **New:** swarm runs replay only their failed subgraph ([#1158](https://github.com/HKUDS/Vibe-Trading/pull/1158), closes [#1157](https://github.com/HKUDS/Vibe-Trading/issues/1157)); Market Watch shows each monitor's latest verdict inline ([#1156](https://github.com/HKUDS/Vibe-Trading/pull/1156), closes [#943](https://github.com/HKUDS/Vibe-Trading/issues/943)); `quantlib` reaches 286 tested functions ([#1159](https://github.com/HKUDS/Vibe-Trading/pull/1159)–[#1168](https://github.com/HKUDS/Vibe-Trading/pull/1168)). Thanks [@wiliao](https://github.com/wiliao), [@cgycorey](https://github.com/cgycorey), [@he-yufeng](https://github.com/he-yufeng), [@BigFishEmily](https://github.com/BigFishEmily), [@santhreal](https://github.com/santhreal), [@SiMinus](https://github.com/SiMinus), and [@alinv0](https://github.com/alinv0)!
- **2026-08-20** 🚀 **v0.1.14 released** ([Release notes](https://github.com/HKUDS/Vibe-Trading/releases/tag/v0.1.14), `pip install -U vibe-trading-ai`): 272 commits and 74 merged pull requests since 0.1.13. **The headline is that a finished backtest is now something you can read rather than a folder of CSVs.** Run Detail grows four tabs — **Factor Research** (IC series with its mean line, IC statistics, quantile-group equity, and a pairwise IC correlation matrix that existed nowhere before), **Positions** (weight pie/treemap on a date slider, sector net-exposure bars, weight-evolution area — the pie is gross composition and the bars are net, so a long/short pair in one sector nets to zero on the bars while both legs stay visible on the pie), **Tearsheet** (monthly-returns heatmap, annual bars, top-5 drawdowns annotated onto the equity curve), and an interactive **research dashboard** with KPIs, benchmark-relative equity, rolling Sharpe and the full trade ledger. All four read artifacts a run already writes — no new pipeline. A new **Options Lab** page adds an expiry payoff diagram, a spot×IV scenario matrix, portfolio Greeks and a live options chain, computed through the same test-pinned engine the MCP tools use. **Install:** Intel Macs can `pip install vibe-trading-ai` again — `smartmoneyconcepts` pulled in `llvmlite`, which ships no macOS x86_64 wheel from 0.46 on, so every Intel install became a CMake source build; it is now the opt-in `[smc]` extra and the stale `<3.14` cap is gone ([#1035](https://github.com/HKUDS/Vibe-Trading/discussions/1035)). **New:** evidence-gated **Strategy Discovery** across the Alpha Zoo and the SDM store, with a population path, read-time freshness (`fresh`/`aging`/`stale`) and stale rows failing closed out of recommendations; scheduled research that **delivers itself** through a leased outbox and persists each monitor's verdict for the Market Watch list; seven read-only **Futu** endpoints; **Vietnam (HOSE)** as a backtest market; offline **USD-M account reconciliation**; **Novita AI** and **GitHub Copilot** providers; a hosted **MetaTrader 5** data source; **Spanish** and **German** locales; and MCP grows to 74 tools. **Correctness:** the test suite stopped escaping into your real config root, where a full run had been appending synthetic `order_rejected` records to the live hash-chained audit ledger; `build_registry()` no longer returns a short tool list in silence; `xirr` survives long-horizon discount underflow and DCF refuses non-finite inputs instead of returning a negative share price; `.VN` symbols stopped executing under China A-share rules; the backtest archive stopped mixing two runs' artifacts; and a broad grounding pass ended a class of false refusals on dates, ordered lists, identity constants in rate formulas, and order lines read as quotes. Thanks @Shizoqua, @shadowinlife, @pengpengyi92, @cgycorey, @ofeksh-tr, @lorenzozanee, @AndyLongest, @zzz607, @wiliao, @jay79-boop, @Robin1987China, @Echoandelementwebsites, @zhiwuyazhe-fjr, @x-lambda, @sykuang, @straun-repo, @nstavros, @ngoanpv, @miguelangelo78, @lukiod, @jax-novita, @honginp, @he-yufeng, @fixXxerTech, @er-s-an, @daviddaco1, @birdxs, @QCYTSN, @549236606-oss and @1psconstructor.
+2 -1
View File
@@ -52,12 +52,13 @@
> ⚠️ **تحذير أمني:** حساب X باسم `VibeTrading_HKU`، ومشروع Virtuals رقم `101845`، وعقد التوكن `0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4` كلّها غير رسمية ولا تتبع Vibe-Trading. لم نُطلق أو نؤيد مطلقًا أي توكن أو عملة ميم. لا تشترِ هذا التوكن، ولا تربط محفظتك، ولا توقّع أي شيء. [التفاصيل](SECURITY.md#official-channels--impersonation).
- **2026-08-26** ♻️ **أمر Alpaca حي يفقد ردّ الوسيط لم يعد لغزًا، وتوقّفت اختبارات الذهب الرجعية عن كونها بلا احتكاك**: تسجّل بوابة الأوامر ملكية كل إرسال بشكل دائم قبل الكتابة إلى الوسيط، وتستعيد النتيجة عبر `client_order_id` الدقيق فقط، وتنسب التنفيذات إلى فرق المركز المُوقَّع، وتُفعِّل HALT عند أي تناقض — ومسار الاستعادة لا يعيد الإرسال أبدًا ([#1213](https://github.com/HKUDS/Vibe-Trading/pull/1213)، [#1221](https://github.com/HKUDS/Vibe-Trading/pull/1221)، [#1222](https://github.com/HKUDS/Vibe-Trading/pull/1222)). **إصلاحات:** كانت المعادن تتبع أعراف pip والعقود الخاصة بالفوركس فصارت كلفة سبريد الذهب أصغر بنحو 1,460 مرة وتُقرَّب المراكز دون 1,000 أونصة إلى الصفر ([#1226](https://github.com/HKUDS/Vibe-Trading/pull/1226))؛ وكانت حيازات Futu بدولار هونغ كونغ تُقيَّم كدولار أمريكي فتتضخم بنحو سعر صرف USD/HKD ([#1228](https://github.com/HKUDS/Vibe-Trading/pull/1228))؛ وكان Shadow Account يقرأ مفاتيح مقاييس لا يُصدرها المشغّل فيُبلغ كل اختبار ناجح عن PnL = 0.00 ([#1217](https://github.com/HKUDS/Vibe-Trading/pull/1217))؛ ولم تكن استدعاءات LLM المتدفقة تطلب بيانات الاستخدام فتُبخس توكنات إخراج الـ swarm بنحو 18–36 مرة ([#1225](https://github.com/HKUDS/Vibe-Trading/pull/1225)). **جديد:** لقطات حساب Binance USD-M للقراءة فقط (اختياريًا) — قراءتان موقَّعتان ضمن قائمة السماح فقط وبلا سطح أوامر ([#1229](https://github.com/HKUDS/Vibe-Trading/pull/1229)، باتجاه [#1030](https://github.com/HKUDS/Vibe-Trading/issues/1030))؛ وإعادة اتصال OAuth للمحفظة تعمل في عملية فرعية محدودة فلا تعطّل عملية الويب ولا تحتجز منفذ الاستدعاء ([#1211](https://github.com/HKUDS/Vibe-Trading/pull/1211)). شكرًا [@Elfsa-Miranda](https://github.com/Elfsa-Miranda) و[@P1Piyush](https://github.com/P1Piyush) و[@JaxonHu1024](https://github.com/JaxonHu1024) و[@he-yufeng](https://github.com/he-yufeng) و[@honginp](https://github.com/honginp) و[@goatyyc](https://github.com/goatyyc)!
- **2026-08-25** 🛡️ **إغلاق حالتي fail-open في بوابات التداول الحي؛ وتوقُّف الـ purged CV عن مسح التدريب بين كتل الاختبار**: كان شورت Alpaca يُسجَّل كتعرُّض *موجب* (`qty` قيمة مطلقة والاتجاه في `side`) فكلما بعت أكثر ارتخى `max_total_exposure_usd` — أصبحت الكمية مُوقَّعة على مساري TAP JSON وSDK المباشر ([#1209](https://github.com/HKUDS/Vibe-Trading/pull/1209))؛ وكانت قراءات OKX/Futu تحوِّل استدعاء API مرفوضًا إلى «دفتر فارغ، `status: ok`» فتقيِّم بوابة التفويض الحدود على لا شيء — الآن تعيد مظروف خطأ صريحًا تُغلق البوابة عنده ([#1212](https://github.com/HKUDS/Vibe-Trading/pull/1212)). كلاهما ضمن المرحلة 0 من خارطة طريق التدقيق في [#1207](https://github.com/HKUDS/Vibe-Trading/issues/1207). **إصلاحات:** كان الـ purged CV التوافقي يعامل كتل الاختبار غير المتجاورة كامتداد واحد ويمسح كل مشاهدات التدريب بينها؛ الآن تُنقَّى المقاطع كلٌّ على حدة وترفع الطيّةُ الفارغةُ خطأً ([#1204](https://github.com/HKUDS/Vibe-Trading/pull/1204))؛ ودوال مخاطر الائتمان ترفض مدخلات NaN/inf بدل إعادة درجات NaN أو حكم «المنطقة الرمادية» ([#1215](https://github.com/HKUDS/Vibe-Trading/pull/1215)، يغلق [#1214](https://github.com/HKUDS/Vibe-Trading/issues/1214)). **جديد:** إعادة محاولة عمال swarm صارت بتراجع equal-jitter مسقوف ([#1210](https://github.com/HKUDS/Vibe-Trading/pull/1210)، باتجاه [#1208](https://github.com/HKUDS/Vibe-Trading/issues/1208))؛ و`vibe-trading --swarm-retry <run_id>` / `/swarm retry` يعيد تشغيل تشغيلٍ فاشل مع الاحتفاظ بالمهام المكتملة عبر `--resume` ([#1194](https://github.com/HKUDS/Vibe-Trading/pull/1194)). شكرًا [@he-yufeng](https://github.com/he-yufeng) و[@santhreal](https://github.com/santhreal) و[@Robin1987China](https://github.com/Robin1987China) و[@pengpengyi92](https://github.com/pengpengyi92) و[@SiMinus](https://github.com/SiMinus)!
- **2026-08-24** 🔗 **انتقل MCP الرسمي لـ IBKR من «سرد الأدوات» إلى مصدر محفظة فعلي للقراءة فقط؛ وحصلت الجدولة على أداة وكيل لا تستطيع التصرف وحدها**: أصلح [#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178) عنوان URL، لكن بوابة IBKR ظلت ترفض تسجيل عميل OAuth الافتراضي في FastMCP قبل تسجيل الدخول. موفّر OAuth مخصص لـ IBKR — ترويسات بنمط المتصفح و`token_endpoint_auth_method: none` ومنفذ رد نداء ثابت واستعادة التسجيلات البائتة، ولا يُطبَّق إلا عندما يكون مضيف MCP هو `api.ibkr.com` — يُكمل التفويض ([#1186](https://github.com/HKUDS/Vibe-Trading/pull/1186))، وأداتا `get_account_summary` / `get_account_positions` المتحقق منهما على حساب حقيقي تدعمان الآن قراءات الحساب/المراكز العامة، فأصبح `ibkr-live-official-mcp-readonly` مصدرًا مؤهلاً لصفحة `/portfolio` ([#1190](https://github.com/HKUDS/Vibe-Trading/pull/1190)، يغلق [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126)). **جديد:** يرى الوكيل أداة جدولة واحدة فقط `scheduled_research` — لا تمسّ `propose_create`/`propose_cancel` مخزن المهام حتى تؤكد على الواجهة التي أنت عليها (بطاقة تأكيد الويب، `y/N` في سطر الأوامر، أو ردّ حرفي `confirm`/`确认` في المراسلة)، وأهداف التسليم مراجع معتمة يهيّئها المشغّل ولا تكشف أبدًا معرّف الدردشة/المستخدم الخام، والمهمة التي تجاوزت `end_at` تنتهي صلاحيتها ولا تُنفَّذ مجددًا ([#1187](https://github.com/HKUDS/Vibe-Trading/pull/1187)). **تم الإصلاح:** يرفض محرّكا comps والقوائم الثلاث الآن المدخلات غير المنتهية عند كل نقطة تدخل فيها الحساب — كان مؤشر نظير NaN *يُحتسب* في توزيع المضاعفات فيجرّ الوسيط إلى NaN، و`abs(nan) > tolerance` تساوي `False` فكانت ميزانية NaN تجتاز الفحص الصارم ([#1184](https://github.com/HKUDS/Vibe-Trading/pull/1184)، يغلق [#1183](https://github.com/HKUDS/Vibe-Trading/issues/1183))؛ وتتحقق `get_market_data` من الرموز والتواريخ والمصدر والفاصل قبل استهلاك سلسلة التراجع بين المحمّلات على استدعاء مشوّه، وتوقف تعداد المصادر عن الرفض الصامت لستة محمّلات مسجّلة ([#1185](https://github.com/HKUDS/Vibe-Trading/pull/1185))؛ ويحفظ تسجيل دخول Feishu عبر QR الآن بيانات الاعتماد التي تُسلَّم مرة واحدة فقط حفظًا ذريًّا بأذونات المالك وحده ([#1188](https://github.com/HKUDS/Vibe-Trading/pull/1188))؛ وصارت صيغة إحصاء الترتيب لـ VaR التاريخي في وثيقة مهارة risk-analysis مطابقة للكود ([#1189](https://github.com/HKUDS/Vibe-Trading/pull/1189)). شكرًا [@sykuang](https://github.com/sykuang) و[@goatyyc](https://github.com/goatyyc) و[@AirHua-byte](https://github.com/AirHua-byte) و[@Robin1987China](https://github.com/Robin1987China) و[@cgycorey](https://github.com/cgycorey) و[@youngjincho02-arch](https://github.com/youngjincho02-arch)!
- **2026-08-23** 🔌 **كان إعداد IBKR MCP الافتراضي يشير إلى عنوان URL خاطئ، وإغلاق محوّل LLM واحد كان يغلقها جميعًا**: كان الإعداد الافتراضي لملف IBKR الرسمي للقراءة فقط عبر MCP وملف README و`SKILL.md` تشير جميعها إلى `https://api.ibkr.com/v1/api/mcp`، بينما تنشر صفحة تكامل الذكاء الاصطناعي الخاصة بـ IBKR نفسها نقطة النهاية `https://api.ibkr.com/v1/api/mcp-public` — وأصبح الإعداد الافتراضي وملفات README الستة و`SKILL.md` تشير إليها الآن. أعد تشغيل `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes` إذا كان `agent.json` لديك لا يزال يحمل العنوان القديم. خطوة تسجيل عميل OAuth التي ترفضها بوابة IBKR لا تزال مفتوحة في [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) ([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)). **تم الإصلاح:** كانت `ChatLLM.close()` تغلق عملاء HTTPX المخزّنين مؤقتًا على مستوى العملية في LangChain، فبعد انتهاء استدعاء واحد لتوليد العنوان أو تحليل الصور تفشل كل الطلبات اللاحقة بـ "client has been closed" حتى إعادة التشغيل — الآن تُغلق فقط وسائط النقل التي أنشأها Vibe-Trading بنفسه ([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182))؛ كانت إعادة تشغيل الخدمة أثناء بثّ الرد تُسقط النص المُرسَل وتترك المحاولة في حالة *running* إلى الأبد — الآن تُحفظ الردود الجزئية كنقاط تحقق وتُستعاد عند التشغيل التالي كإدخال *interrupted* صريح في السجل ([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180)). **جديد:** تتيح محادثة الويب إرفاق ما يصل إلى خمسة ملفات في كل دور عبر منتقي الملفات أو السحب والإفلات أو اللصق من الحافظة ([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179)). شكرًا [@c020627](https://github.com/c020627) و[@AirHua-byte](https://github.com/AirHua-byte)!
<details>
<summary>أخبار سابقة</summary>
- **2026-08-23** 🔌 **كان إعداد IBKR MCP الافتراضي يشير إلى عنوان URL خاطئ، وإغلاق محوّل LLM واحد كان يغلقها جميعًا**: كان الإعداد الافتراضي لملف IBKR الرسمي للقراءة فقط عبر MCP وملف README و`SKILL.md` تشير جميعها إلى `https://api.ibkr.com/v1/api/mcp`، بينما تنشر صفحة تكامل الذكاء الاصطناعي الخاصة بـ IBKR نفسها نقطة النهاية `https://api.ibkr.com/v1/api/mcp-public` — وأصبح الإعداد الافتراضي وملفات README الستة و`SKILL.md` تشير إليها الآن. أعد تشغيل `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes` إذا كان `agent.json` لديك لا يزال يحمل العنوان القديم. خطوة تسجيل عميل OAuth التي ترفضها بوابة IBKR لا تزال مفتوحة في [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) ([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)). **تم الإصلاح:** كانت `ChatLLM.close()` تغلق عملاء HTTPX المخزّنين مؤقتًا على مستوى العملية في LangChain، فبعد انتهاء استدعاء واحد لتوليد العنوان أو تحليل الصور تفشل كل الطلبات اللاحقة بـ "client has been closed" حتى إعادة التشغيل — الآن تُغلق فقط وسائط النقل التي أنشأها Vibe-Trading بنفسه ([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182))؛ كانت إعادة تشغيل الخدمة أثناء بثّ الرد تُسقط النص المُرسَل وتترك المحاولة في حالة *running* إلى الأبد — الآن تُحفظ الردود الجزئية كنقاط تحقق وتُستعاد عند التشغيل التالي كإدخال *interrupted* صريح في السجل ([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180)). **جديد:** تتيح محادثة الويب إرفاق ما يصل إلى خمسة ملفات في كل دور عبر منتقي الملفات أو السحب والإفلات أو اللصق من الحافظة ([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179)). شكرًا [@c020627](https://github.com/c020627) و[@AirHua-byte](https://github.com/AirHua-byte)!
- **2026-08-22** 💼 **صفحة المحفظة: حيازاتك عبر الوسطاء، للقراءة فقط**: اختر ملفات تعريف موصّلات للقراءة فقط (مثيلات اتصال فوق `account.read` + `positions.read`؛ ملف IBKR الرسمي عبر MCP ليس مؤهلًا بعد) فتجمعها صفحة `/portfolio` الجديدة في لقطات غير قابلة للتغيير مع مصدر لكل حيازة وتقييم بالدولار/اليوان وتصدير CSV ورسم تاريخي. المصدر الذي يفشل تحديثه يُبلَّغ عنه **كخطأ ويُستبعد من الإجماليات** — ولا يُستبدل أبدًا بذاكرة مؤقتة سابقة — وتُعلَّم اللقطة بأنها غير مكتملة. تُعيد أداة الوكيل `portfolio_summary` قيمة `risk_xray_args` التي تُغذّي أداة `portfolio_risk_xray` القائمة، ويطبع `vibe-trading portfolio show|refresh|sources` اللقطة نفسها في الطرفية. موصّلات القراءة فقط التي تكتبها بنفسك تُوضع في `~/.vibe-trading/connectors/` (أي بيان يُعلن قدرة كتابة يُرفض؛ وتذهب الأسرار إلى سلسلة مفاتيح النظام عبر الإضافة `[keyring]`)، ولا شيء على هذا المسار يمكنه إرسال أمر تداول ([#1072](https://github.com/HKUDS/Vibe-Trading/pull/1072)، باتجاه [#1171](https://github.com/HKUDS/Vibe-Trading/issues/1171)). **أُصلح:** كانت 13 من عوامل Alpha Zoo تملأ الإغلاق المفقود للأمام قبل حساب العوائد فتحوّل فجوة البيانات إلى «عائد 0%» محدود — تبقى الفجوة الآن `NaN` ([#1172](https://github.com/HKUDS/Vibe-Trading/pull/1172))؛ وكان عملاء MCP المستقلّون على خادم http/sse واحد يتشاركون جلسة هدف بحثي احتياطية واحدة ([#1173](https://github.com/HKUDS/Vibe-Trading/pull/1173))؛ وكان جمع قمامة الذاكرة والضغط يتركان صفوف FTS قديمة وملفات علاقات يتيمة ([#1174](https://github.com/HKUDS/Vibe-Trading/pull/1174))؛ ولم يكن `cancel_run()` يصل إلى عامل swarm يبثّ بالفعل — يقطع الإيقاف الآن البثّ ويتخطّى استدعاءات تلك الجولة ويُسجَّل كمهمة *ملغاة* ([#1175](https://github.com/HKUDS/Vibe-Trading/pull/1175))؛ وكان `get_research_reports` عبر MCP يُسقط `beginTime`/`endTime` ([#1176](https://github.com/HKUDS/Vibe-Trading/pull/1176))؛ وكان `get_options_chain` يجيب عن تاريخ انتهاء من دورة أخرى بـ `ok: true` وعقود تاريخ آخر ([#1177](https://github.com/HKUDS/Vibe-Trading/pull/1177)). شكرًا [@goatyyc](https://github.com/goatyyc)، [@Shizoqua](https://github.com/Shizoqua)، [@cgycorey](https://github.com/cgycorey)!
- **2026-08-21** ⏱️ **عمليات تشغيل تتجمّد إلى الأبد**: كانت مهلة `bash` تقتل الـ shell دون الأحفاد الممسكين بمقابض الأنابيب، فيبقى التشغيل «قيد التشغيل» أكثر من 20 دقيقة. الآن تُطلق الأوامر في مجموعة عمليات خاصة وتقتل المهلة الشجرة بأكملها، ويُنهي مراقب توقّف أي تشغيل لا يُحرز تقدّمًا، ولم يعد الضغط يُسقط سجلات تحقق النموذج نفسه ([#1169](https://github.com/HKUDS/Vibe-Trading/pull/1169)). **أُصلح:** كان تاريخ Tencent الممتد لسنوات يُقتطع بصمت عند 500 شمعة ([#1154](https://github.com/HKUDS/Vibe-Trading/pull/1154)). **جديد:** يعيد swarm تنفيذ الرسم الفرعي الفاشل وحده ([#1158](https://github.com/HKUDS/Vibe-Trading/pull/1158)، يغلق [#1157](https://github.com/HKUDS/Vibe-Trading/issues/1157))؛ ويعرض Market Watch أحدث حكم لكل مراقب داخل القائمة ([#1156](https://github.com/HKUDS/Vibe-Trading/pull/1156)، يغلق [#943](https://github.com/HKUDS/Vibe-Trading/issues/943))؛ وبلغت `quantlib` 286 دالة مختبَرة ([#1159](https://github.com/HKUDS/Vibe-Trading/pull/1159)–[#1168](https://github.com/HKUDS/Vibe-Trading/pull/1168)). شكرًا [@wiliao](https://github.com/wiliao)، [@cgycorey](https://github.com/cgycorey)، [@he-yufeng](https://github.com/he-yufeng)، [@BigFishEmily](https://github.com/BigFishEmily)، [@santhreal](https://github.com/santhreal)، [@SiMinus](https://github.com/SiMinus)، [@alinv0](https://github.com/alinv0)!
- **2026-08-20** 🚀 **صدر الإصدار v0.1.14** ([ملاحظات الإصدار](https://github.com/HKUDS/Vibe-Trading/releases/tag/v0.1.14)، `pip install -U vibe-trading-ai`): 272 التزامًا و74 طلب دمج منذ 0.1.13. **العنوان هو أن الاختبار الرجعي المكتمل صار شيئًا يمكن قراءته، لا مجلد ملفات CSV.** اكتسبت صفحة Run Detail أربع علامات تبويب — **بحث العوامل** (سلسلة IC اليومية مع خط متوسطها، وإحصاءات IC، ومنحنيات ملكية المجموعات الكمّية، ومصفوفة ارتباط IC لم تكن موجودة في أي مكان من قبل)، و**بنية المراكز** (رسم دائري/شجري للأوزان مع منزلق زمني، وأعمدة الانكشاف الصافي حسب القطاع، ومساحة تطوّر الأوزان — الدائري تركيب **إجمالي** والأعمدة **صافية**، فيتلاشى زوج شراء/بيع في القطاع نفسه إلى صفر على الأعمدة بينما تبقى الساقان مرئيتين على الدائري)، و**Tearsheet** (خريطة حرارية للعوائد الشهرية، وأعمدة سنوية، وأكبر خمسة تراجعات معلَّمة على منحنى الملكية)، و**لوحة بحث** تفاعلية بمؤشرات أداء ومنحنى ملكية مقابل المؤشر ونسبة شارب متدحرجة وسجل الصفقات كاملاً. الأربع تقرأ مخرجات تكتبها عملية التشغيل أصلاً — بلا أي خط بيانات جديد. وتضيف صفحة **Options Lab** الجديدة مخطط العوائد عند الاستحقاق، ومصفوفة سيناريوهات السعر الفوري×التذبذب الضمني، وحروف الإغريق للمحفظة، وسلسلة خيارات حيّة، محسوبة بالمحرك نفسه المثبَّت بالاختبارات الذي تستخدمه أدوات MCP. **التثبيت:** عادت أجهزة Mac بمعالج Intel قادرة على تنفيذ `pip install vibe-trading-ai` — إذ كانت `smartmoneyconcepts` تجرّ معها `llvmlite` التي لم تعد تنشر wheel لـ macOS x86_64 منذ 0.46، فتحوّل كل تثبيت على Intel إلى بناء من المصدر يتطلب CMake؛ صارت الآن إضافة اختيارية باسم `[smc]`، ورُفع معها سقف `<3.14` القديم ([#1035](https://github.com/HKUDS/Vibe-Trading/discussions/1035)). **الجديد:** **اكتشاف الاستراتيجيات ببوابة أدلة** عبر Alpha Zoo ومخزن SDM، مع مسار لتعبئة الأدلة، وحداثة تُحسب عند القراءة (`fresh`/`aging`/`stale`)، وصفوف قديمة تخرج من التوصيات الافتراضية بشكل fail-closed؛ وبحث مجدول **يسلّم نفسه** عبر صندوق صادر بعقد إيجار، ويحفظ حكم كل مراقب لقائمة Market Watch؛ وسبع نقاط نهاية للقراءة فقط من **Futu**؛ و**فيتنام (HOSE)** كسوق للاختبار الرجعي؛ و**مطابقة حساب USD-M** دون اتصال؛ ومزوّدا **Novita AI** و**GitHub Copilot**؛ ومصدر بيانات **MetaTrader 5** مُستضاف؛ ولغتا الواجهة **الإسبانية** و**الألمانية**؛ وارتفاع أدوات MCP إلى 74. **الصحّة:** لم تعد حزمة الاختبارات تفلت من صندوقها الرملي لتكتب في جذر إعداداتك الحقيقي، حيث كان كل تشغيل كامل يُلحق سجلات `order_rejected` مصطنعة بدفتر تدقيق التداول الحي المسلسل بالتجزئة؛ ولم تعد `build_registry()` تعيد قائمة أدوات ناقصة بصمت؛ وصار `xirr` يصمد أمام تدفّق الخصم السفلي على آفاق طويلة، ويرفض DCF المدخلات غير المنتهية بدل إعادة قيمة سهم سالبة؛ وتوقّفت رموز `.VN` عن التنفيذ بقواعد الأسهم الصينية من الفئة A؛ وتوقّف أرشيف الاختبار الرجعي عن خلط مخرجات تشغيلين؛ وأنهت جولة واسعة من إصلاحات grounding صنفًا كاملاً من الرفض الخاطئ المتعلق بالتواريخ والقوائم المرقّمة والثوابت المتطابقة في صيغ المعدلات وأسطر الأوامر التي كانت تُقرأ كأسعار مرصودة. شكراً لـ @Shizoqua و@shadowinlife و@pengpengyi92 و@cgycorey و@ofeksh-tr و@lorenzozanee و@AndyLongest و@zzz607 و@wiliao و@jay79-boop و@Robin1987China و@Echoandelementwebsites و@zhiwuyazhe-fjr و@x-lambda و@sykuang و@straun-repo و@nstavros و@ngoanpv و@miguelangelo78 و@lukiod و@jax-novita و@honginp و@he-yufeng و@fixXxerTLine truncated
+2 -1
View File
@@ -52,12 +52,13 @@
> ⚠️ **Advertencia de seguridad:** la cuenta de X `VibeTrading_HKU`, el proyecto de Virtuals `101845` y el contrato de token `0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4` no son activos oficiales de Vibe-Trading. Nunca hemos lanzado ni respaldado ningún token o memecoin. No compres, conectes una wallet ni firmes nada. [Detalles](SECURITY.md#official-channels--impersonation).
- **2026-08-26** ♻️ **Una orden Alpaca en vivo que pierde la respuesta del bróker deja de ser un misterio, y los backtests de oro dejan de ser sin fricción**: la puerta de órdenes registra de forma duradera la propiedad de cada envío antes de escribir al bróker, recupera el desenlace solo por el `client_order_id` exacto, atribuye las ejecuciones contra el delta de posición con signo y dispara el HALT ante cualquier contradicción — la recuperación jamás reenvía ([#1213](https://github.com/HKUDS/Vibe-Trading/pull/1213), [#1221](https://github.com/HKUDS/Vibe-Trading/pull/1221), [#1222](https://github.com/HKUDS/Vibe-Trading/pull/1222)). **Corregido:** los metales usaban las convenciones FX de pip y lote, dejando el spread del oro ~1.460× más barato y redondeando a cero las posiciones bajo 1.000 oz ([#1226](https://github.com/HKUDS/Vibe-Trading/pull/1226)); las posiciones HKD de Futu se valoraban como USD, sobrestimadas por el tipo USD/HKD ([#1228](https://github.com/HKUDS/Vibe-Trading/pull/1228)); Shadow Account leía claves de métricas que el runner nunca emite y cada backtest exitoso reportaba PnL = 0.00 ([#1217](https://github.com/HKUDS/Vibe-Trading/pull/1217)); las llamadas LLM en streaming nunca pedían usage, infrarreportando los tokens de salida del swarm ~18–36× ([#1225](https://github.com/HKUDS/Vibe-Trading/pull/1225)). **Nuevo:** snapshots de cuenta Binance USD-M de solo lectura (opt-in) — solo dos lecturas firmadas en lista de permitidos, sin superficie de órdenes ([#1229](https://github.com/HKUDS/Vibe-Trading/pull/1229), hacia [#1030](https://github.com/HKUDS/Vibe-Trading/issues/1030)); las reconexiones OAuth de la cartera corren en un subproceso acotado que no puede colgar el proceso web ni retener el puerto de callback ([#1211](https://github.com/HKUDS/Vibe-Trading/pull/1211)). ¡Gracias [@Elfsa-Miranda](https://github.com/Elfsa-Miranda), [@P1Piyush](https://github.com/P1Piyush), [@JaxonHu1024](https://github.com/JaxonHu1024), [@he-yufeng](https://github.com/he-yufeng), [@honginp](https://github.com/honginp) y [@goatyyc](https://github.com/goatyyc)!
- **2026-08-25** 🛡️ **Cerrados dos fail-open en las puertas de trading en vivo, y el purged CV deja de borrar el entrenamiento entre bloques de test**: Un corto de Alpaca se contabilizaba como exposición *positiva* (`qty` es magnitud y la dirección va en `side`), así que vender más aflojaba `max_total_exposure_usd` — la cantidad ahora lleva signo en las rutas TAP JSON y SDK directa ([#1209](https://github.com/HKUDS/Vibe-Trading/pull/1209)); las lecturas de OKX/Futu aplanaban una llamada API rechazada en «libro vacío, `status: ok`», dejando a la puerta de mandato evaluar límites contra nada — ahora devuelven el sobre de error con el que la puerta falla cerrada ([#1212](https://github.com/HKUDS/Vibe-Trading/pull/1212)). Ambos son la Fase 0 de la hoja de ruta de auditoría en [#1207](https://github.com/HKUDS/Vibe-Trading/issues/1207). **Corregido:** el purged CV combinatorio trataba bloques de test no contiguos como un solo tramo y purgaba todo el entrenamiento entre ellos; ahora cada segmento purga por separado y un fold vaciado lanza un error ([#1204](https://github.com/HKUDS/Vibe-Trading/pull/1204)); las funciones de riesgo de crédito rechazan entradas NaN/inf en lugar de devolver puntuaciones NaN o un veredicto de «zona gris» ([#1215](https://github.com/HKUDS/Vibe-Trading/pull/1215), cierra [#1214](https://github.com/HKUDS/Vibe-Trading/issues/1214)). **Nuevo:** los reintentos de los workers del swarm usan retroceso equal-jitter acotado ([#1210](https://github.com/HKUDS/Vibe-Trading/pull/1210), hacia [#1208](https://github.com/HKUDS/Vibe-Trading/issues/1208)); y `vibe-trading --swarm-retry <run_id>` / `/swarm retry` relanza una ejecución fallida, conservando las tareas completadas con `--resume` ([#1194](https://github.com/HKUDS/Vibe-Trading/pull/1194)). ¡Gracias [@he-yufeng](https://github.com/he-yufeng), [@santhreal](https://github.com/santhreal), [@Robin1987China](https://github.com/Robin1987China), [@pengpengyi92](https://github.com/pengpengyi92) y [@SiMinus](https://github.com/SiMinus)!
- **2026-08-24** 🔗 **El MCP oficial de IBKR pasa de «listar herramientas» a ser una fuente de cartera de solo lectura que funciona, y la programación gana una herramienta de agente que no puede actuar sola**: [#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178) corrigió la URL, pero la pasarela de IBKR seguía rechazando el registro de cliente OAuth estándar de FastMCP antes del inicio de sesión. Un proveedor OAuth específico de IBKR — cabeceras de perfil de navegador, `token_endpoint_auth_method: none`, puerto de callback estable y recuperación de registros obsoletos, aplicado solo cuando el host MCP es `api.ibkr.com` — completa la autorización ([#1186](https://github.com/HKUDS/Vibe-Trading/pull/1186)), y las herramientas `get_account_summary` / `get_account_positions`, verificadas con una cuenta real, respaldan ahora las lecturas genéricas de cuenta/posiciones, con lo que `ibkr-live-official-mcp-readonly` es una fuente elegible para `/portfolio` ([#1190](https://github.com/HKUDS/Vibe-Trading/pull/1190), cierra [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126)). **Nuevo:** el agente ve exactamente una herramienta de programación, `scheduled_research` — sus `propose_create`/`propose_cancel` nunca tocan el almacén de jobs hasta que confirmas en la superficie en la que estás (tarjeta web, `y/N` en la CLI, o una respuesta exacta `confirm`/`确认` en IM), los destinos de entrega son referencias opacas configuradas por el operador que nunca exponen un chat/user id crudo, y un job que supera su `end_at` expira en lugar de volver a dispararse ([#1187](https://github.com/HKUDS/Vibe-Trading/pull/1187)). **Corregido:** los motores de comps y de tres estados ahora rechazan entradas no finitas en cada punto donde entran a la aritmética — una métrica NaN de un comparable se *incluía* en la distribución de múltiplos y arrastraba la mediana a NaN, y `abs(nan) > tolerance` es `False`, así que un balance NaN pasaba la comprobación dura ([#1184](https://github.com/HKUDS/Vibe-Trading/pull/1184), cierra [#1183](https://github.com/HKUDS/Vibe-Trading/issues/1183)); `get_market_data` valida codes, fechas, source e interval antes de quemar la cadena de fallback de loaders en una llamada malformada, y su enum de sources dejó de rechazar en silencio seis loaders registrados ([#1185](https://github.com/HKUDS/Vibe-Trading/pull/1185)); el login QR de Feishu ahora persiste las credenciales que solo recibe una vez — de forma atómica y con permisos solo del propietario ([#1188](https://github.com/HKUDS/Vibe-Trading/pull/1188)); la fórmula del estadístico de orden del VaR histórico en la doc de la skill risk-analysis coincide ahora con el código ([#1189](https://github.com/HKUDS/Vibe-Trading/pull/1189)). ¡Gracias [@sykuang](https://github.com/sykuang), [@goatyyc](https://github.com/goatyyc), [@AirHua-byte](https://github.com/AirHua-byte), [@Robin1987China](https://github.com/Robin1987China), [@cgycorey](https://github.com/cgycorey) y [@youngjincho02-arch](https://github.com/youngjincho02-arch)!
- **2026-08-23** 🔌 **La semilla MCP de IBKR apuntaba a la URL equivocada, y cerrar un adaptador LLM los cerraba todos**: La semilla del perfil oficial de IBKR MCP de solo lectura, el README y `SKILL.md` apuntaban a `https://api.ibkr.com/v1/api/mcp`; la propia página de integración con IA de IBKR publica `https://api.ibkr.com/v1/api/mcp-public`, y ahora la semilla, los seis README y `SKILL.md` la usan. Vuelve a ejecutar `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes` si tu `agent.json` aún conserva la URL antigua. El paso de registro del cliente OAuth que la pasarela de IBKR rechaza sigue abierto en [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) ([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)). **Corregido:** `ChatLLM.close()` cerraba los clientes HTTPX en caché de todo el proceso de LangChain, así que una sola llamada terminada de generación de título o de visión de imágenes dejaba todas las peticiones posteriores fallando con "client has been closed" hasta reiniciar — ahora solo se cierran los transportes creados por el propio Vibe-Trading ([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182)); un reinicio del servicio a mitad de respuesta descartaba el texto ya transmitido y dejaba el intento en *running* para siempre — ahora las respuestas parciales se guardan como checkpoints y se reconcilian en el siguiente arranque como una entrada *interrupted* explícita ([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180)). **Nuevo:** el chat web adjunta hasta cinco archivos por turno mediante el selector, arrastrar y soltar o pegar desde el portapapeles ([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179)). ¡Gracias [@c020627](https://github.com/c020627) y [@AirHua-byte](https://github.com/AirHua-byte)!
<details>
<summary>Noticias anteriores</summary>
- **2026-08-23** 🔌 **La semilla MCP de IBKR apuntaba a la URL equivocada, y cerrar un adaptador LLM los cerraba todos**: La semilla del perfil oficial de IBKR MCP de solo lectura, el README y `SKILL.md` apuntaban a `https://api.ibkr.com/v1/api/mcp`; la propia página de integración con IA de IBKR publica `https://api.ibkr.com/v1/api/mcp-public`, y ahora la semilla, los seis README y `SKILL.md` la usan. Vuelve a ejecutar `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes` si tu `agent.json` aún conserva la URL antigua. El paso de registro del cliente OAuth que la pasarela de IBKR rechaza sigue abierto en [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) ([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)). **Corregido:** `ChatLLM.close()` cerraba los clientes HTTPX en caché de todo el proceso de LangChain, así que una sola llamada terminada de generación de título o de visión de imágenes dejaba todas las peticiones posteriores fallando con "client has been closed" hasta reiniciar — ahora solo se cierran los transportes creados por el propio Vibe-Trading ([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182)); un reinicio del servicio a mitad de respuesta descartaba el texto ya transmitido y dejaba el intento en *running* para siempre — ahora las respuestas parciales se guardan como checkpoints y se reconcilian en el siguiente arranque como una entrada *interrupted* explícita ([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180)). **Nuevo:** el chat web adjunta hasta cinco archivos por turno mediante el selector, arrastrar y soltar o pegar desde el portapapeles ([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179)). ¡Gracias [@c020627](https://github.com/c020627) y [@AirHua-byte](https://github.com/AirHua-byte)!
- **2026-08-22** 💼 **Una página de Cartera: tus posiciones en todos los brókers, en solo lectura**: Elige perfiles de conector de solo lectura (instancias de conexión sobre `account.read` + `positions.read`; el perfil oficial MCP de IBKR aún no es elegible) y la nueva página `/portfolio` los agrega en instantáneas inmutables con procedencia por fuente, valoración en USD/CNY, exportación CSV y un gráfico histórico. Una fuente que no logra actualizarse se reporta como **error y queda excluida de los totales** — nunca se arrastra la caché anterior — y la instantánea se marca incompleta. La herramienta de agente `portfolio_summary` devuelve `risk_xray_args` que alimentan al `portfolio_risk_xray` existente, y `vibe-trading portfolio show|refresh|sources` imprime la misma instantánea en la terminal. Los conectores de solo lectura que escribas tú viven en `~/.vibe-trading/connectors/` (un manifiesto que declare cualquier capacidad de escritura se rechaza; los secretos van al llavero del sistema vía el extra `[keyring]`), y nada en esta ruta puede colocar una orden ([#1072](https://github.com/HKUDS/Vibe-Trading/pull/1072), hacia [#1171](https://github.com/HKUDS/Vibe-Trading/issues/1171)). **Corregido:** trece factores del Alpha Zoo rellenaban hacia delante un cierre faltante antes de calcular retornos, convirtiendo un hueco de datos en un «retorno del 0 %» finito — el hueco ahora se mantiene `NaN` ([#1172](https://github.com/HKUDS/Vibe-Trading/pull/1172)); clientes MCP independientes en un mismo servidor http/sse compartían una única sesión de objetivo de investigación de reserva ([#1173](https://github.com/HKUDS/Vibe-Trading/pull/1173)); la recolección de basura y la compresión de memoria dejaban filas FTS obsoletas y sidecars de relaciones huérfanos ([#1174](https://github.com/HKUDS/Vibe-Trading/pull/1174)); `cancel_run()` nunca llegaba a un worker swarm que ya transmitía — la parada ahora interrumpe el flujo, omite las llamadas de ese turno y queda como tarea *cancelada* ([#1175](https://github.com/HKUDS/Vibe-Trading/pull/1175)); `get_research_reports` por MCP descartaba `beginTime`/`endTime` ([#1176](https://github.com/HKUDS/Vibe-Trading/pull/1176)); `get_options_chain` respondía a un vencimiento de otro ciclo con `ok: true` y los contratos de otra fecha ([#1177](https://github.com/HKUDS/Vibe-Trading/pull/1177)). ¡Gracias [@goatyyc](https://github.com/goatyyc), [@Shizoqua](https://github.com/Shizoqua) y [@cgycorey](https://github.com/cgycorey)!
- **2026-08-21** ⏱️ **Ejecuciones colgadas para siempre**: El tiempo límite de `bash` mataba el shell pero no a los nietos que retenían sus descriptores de tubería, así que una ejecución quedaba «en ejecución» más de 20 minutos. Ahora los comandos se lanzan en su propio grupo de procesos y el tiempo límite mata el árbol completo, un vigilante de estancamiento termina una ejecución que no avanza, y la compactación dejó de descartar los registros de verificación del propio modelo ([#1169](https://github.com/HKUDS/Vibe-Trading/pull/1169)). **Corregido:** el histórico de Tencent de varios años se truncaba en silencio a 500 barras ([#1154](https://github.com/HKUDS/Vibe-Trading/pull/1154)). **Nuevo:** las ejecuciones swarm reproducen solo su subgrafo fallido ([#1158](https://github.com/HKUDS/Vibe-Trading/pull/1158), cierra [#1157](https://github.com/HKUDS/Vibe-Trading/issues/1157)); Market Watch muestra el último veredicto de cada monitor en la lista ([#1156](https://github.com/HKUDS/Vibe-Trading/pull/1156), cierra [#943](https://github.com/HKUDS/Vibe-Trading/issues/943)); `quantlib` alcanza 286 funciones probadas ([#1159](https://github.com/HKUDS/Vibe-Trading/pull/1159)–[#1168](https://github.com/HKUDS/Vibe-Trading/pull/1168)). ¡Gracias [@wiliao](https://github.com/wiliao), [@cgycorey](https://github.com/cgycorey), [@he-yufeng](https://github.com/he-yufeng), [@BigFishEmily](https://github.com/BigFishEmily), [@santhreal](https://github.com/santhreal), [@SiMinus](https://github.com/SiMinus) y [@alinv0](https://github.com/alinv0)!
- **2026-08-20** 🚀 **Se lanza v0.1.14** ([Notas de la versión](https://github.com/HKUDS/Vibe-Trading/releases/tag/v0.1.14), `pip install -U vibe-trading-ai`): 272 commits y 74 pull requests fusionados desde 0.1.13. **El titular es que un backtest terminado ya es algo que se puede leer, y no una carpeta de CSV.** Run Detail gana cuatro pestañas — **Investigación de factores** (serie diaria de IC con su línea media, estadísticas de IC, curvas de equity por quintiles y una matriz de correlación de IC que no existía en ninguna parte), **Posiciones** (tarta/treemap de pesos con deslizador de fechas, barras de exposición neta por sector y área de evolución de pesos — la tarta es composición **bruta** y las barras son **netas**, así que un par largo/corto en un mismo sector se anula en las barras mientras ambas patas siguen visibles en la tarta), **Tearsheet** (mapa de calor de rentabilidades mensuales, barras anuales y las 5 mayores caídas anotadas sobre la curva de equity) y un **panel de investigación** interactivo con KPIs, equity relativa al índice, Sharpe móvil y el libro de operaciones completo. Las cuatro leen artefactos que la ejecución ya escribe: ninguna canalización de datos nueva. La nueva página **Options Lab** añade un diagrama de pagos al vencimiento, una matriz de escenarios spot×IV, las griegas de la cartera y una cadena de opciones en vivo, calculadas con el mismo motor fijado por tests que usan las herramientas MCP. **Instalación:** los Mac Intel vuelven a poder hacer `pip install vibe-trading-ai` — `smartmoneyconcepts` arrastraba `llvmlite`, que desde 0.46 no publica wheel para macOS x86_64, de modo que toda instalación en Intel se convertía en una compilación desde fuente con CMake; ahora es el extra opcional `[smc]` y el tope obsoleto `<3.14` desaparece ([#1035](https://github.com/HKUDS/Vibe-Trading/discussions/1035)). **Novedades:** **descubrimiento de estrategias con puerta de evidencia** sobre el Alpha Zoo y el almacén SDM, con ruta de población, frescura calculada en lectura (`fresh`/`aging`/`stale`) y filas obsoletas que salen fail-closed de las recomendaciones por defecto; investigación programada que **se entrega sola** a través de una bandeja de salida con lease y que persiste el veredicto de cada monitor para la lista de Market Watch; siete endpoints de solo lectura de **Futu**; **Vietnam (HOSE)** como mercado de backtest; **conciliación de cuenta USD-M** offline; los proveedores **Novita AI** y **GitHub Copilot**; una fuente de datos **MetaTrader 5** alojada; los idiomas **español** y **alemán**; y MCP crece a 74 herramientas. **Corrección de errores:** la suite de tests dejó de escaparse hacia tu raíz de configuración real, donde cada ejecución completa venía añadiendo registros `order_rejected` sintéticos al libro de auditoría encadenado por hash; `build_registry()` ya no devuelve en silencio una lista de herramientas incompleta; `xirr` sobrevive al subdesbordamiento del descuento a largo plazo y el DCF rechaza entradas no finitas en lugar de devolver un valor por acción negativo; los símbolos `.VN` dejaron de ejecutarse bajo reglas de acciones A chinas; el archivo de backtest dejó de mezclar los artefactos de dos ejecuciones; y una amplia pasada de grounding terminó con una clase de rechazos falsos sobre fechas, listas ordenadas, constantes de identidad en fórmulas de tasas y líneas de orden leídas como cotizaciones. Gracias @Shizoqua, @shadowinlife, @pengpengyi92, @cgycorey, @ofeksh-tr, @lorenzozanee, @AndyLongest, @zzz607, @wiliao, @jay79-boop, @Robin1987China, @Echoandelementwebsites, @zhiwuyazhe-fjr, @x-lambda, @sykuang, @straun-repo, @nstavros, @ngoanpv, @miguelangelo78, @lukiod, @jax-novita, @honginp, @he-yufeng, @fixXxerTech, @er-s-an, @daviddaco1, @birdxs, @QCYTSN, @549236606-oss y @1psconstructor.
+2 -1
View File
@@ -52,12 +52,13 @@
> ⚠️ **セキュリティ警告:** Xアカウント `VibeTrading_HKU`、Virtualsプロジェクト `101845`、およびトークンコントラクト `0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4` は、いずれもVibe-Trading公式のものではありません。Vibe-Tradingはこれまで、いかなるトークンやミームコインも発行・公認していません。購入、ウォレットの接続、署名は行わないでください。[詳細](SECURITY.md#official-channels--impersonation)
- **2026-08-26** ♻️ **ブローカー応答を失ったライブ Alpaca 注文が謎でなくなり、ゴールドのバックテストが摩擦ゼロでなくなりました**:注文ゲートはブローカー書き込み前に送信の所有権を永続化し、正確な `client_order_id` のみで結果を復元、符号付きポジション差分で約定を帰属させ、矛盾があれば HALT——復元経路は決して再送信しません([#1213](https://github.com/HKUDS/Vibe-Trading/pull/1213)、[#1221](https://github.com/HKUDS/Vibe-Trading/pull/1221)、[#1222](https://github.com/HKUDS/Vibe-Trading/pull/1222))。**修正:** 貴金属が FX の pip・ロット規約を使い、ゴールドのスプレッドコストが約 1,460 分の 1 に、1,000 オンス未満のポジションは静かにゼロ化([#1226](https://github.com/HKUDS/Vibe-Trading/pull/1226));Futu の HKD 保有が USD として評価され、約 USD/HKD レート分過大([#1228](https://github.com/HKUDS/Vibe-Trading/pull/1228));Shadow Account がランナーの出力しないメトリクスキーを読み、成功したバックテストが常に PnL = 0.00([#1217](https://github.com/HKUDS/Vibe-Trading/pull/1217));ストリーミング LLM 呼び出しが usage を要求せず、swarm の出力トークンを約 18〜36 倍過少報告([#1225](https://github.com/HKUDS/Vibe-Trading/pull/1225))。**新機能:** 読み取り専用 Binance USD-M 口座スナップショット(オプトイン)——許可リスト化された署名付きリード 2 本のみ、注文面なし([#1229](https://github.com/HKUDS/Vibe-Trading/pull/1229)、[#1030](https://github.com/HKUDS/Vibe-Trading/issues/1030) に向けて);ポートフォリオの OAuth 再接続は制限付きサブプロセスで実行され、Web プロセスやコールバックポートを塞ぎません([#1211](https://github.com/HKUDS/Vibe-Trading/pull/1211))。[@Elfsa-Miranda](https://github.com/Elfsa-Miranda)、[@P1Piyush](https://github.com/P1Piyush)、[@JaxonHu1024](https://github.com/JaxonHu1024)、[@he-yufeng](https://github.com/he-yufeng)、[@honginp](https://github.com/honginp)、[@goatyyc](https://github.com/goatyyc) の皆さん、ありがとうございます!
- **2026-08-25** 🛡️ **ライブゲートの 2 件の fail-open を封鎖;purged CV がテストブロック間の訓練データを消す問題も修正**:Alpaca のショートが*プラス*のエクスポージャーとして計上され(`qty` は絶対値、方向は `side`)、売るほど `max_total_exposure_usd` が緩んでいた——数量は TAP JSON と直接 SDK の両経路で符号付きに([#1209](https://github.com/HKUDS/Vibe-Trading/pull/1209));OKX/Futu は拒否された API 呼び出しを「空の帳簿、`status: ok`」に平坦化し、マンデートゲートが何もない帳簿で上限を評価していた——今は明示的なエラー封筒を返し、ゲートは fail-closed する([#1212](https://github.com/HKUDS/Vibe-Trading/pull/1212))。いずれも [#1207](https://github.com/HKUDS/Vibe-Trading/issues/1207) 監査ロードマップの Phase 0。**修正:** 組合せ purged CV が非連続テストブロックを一つのスパンとして扱い、その間の訓練観測をすべて purge していた;今はセグメント単位で purge し、訓練データが空になった fold は例外を上げる([#1204](https://github.com/HKUDS/Vibe-Trading/pull/1204));信用リスク関数は NaN/inf 入力を拒否し、NaN スコアや「グレーゾーン」判定を返さない([#1215](https://github.com/HKUDS/Vibe-Trading/pull/1215)、[#1214](https://github.com/HKUDS/Vibe-Trading/issues/1214) をクローズ)。**新機能:** swarm ワーカーのリトライは上限付き equal-jitter バックオフに([#1210](https://github.com/HKUDS/Vibe-Trading/pull/1210)、[#1208](https://github.com/HKUDS/Vibe-Trading/issues/1208) に向けて);`vibe-trading --swarm-retry <run_id>` / `/swarm retry` で失敗した実行を再実行、`--resume` で完了済みタスクを保持([#1194](https://github.com/HKUDS/Vibe-Trading/pull/1194))。[@he-yufeng](https://github.com/he-yufeng)、[@santhreal](https://github.com/santhreal)、[@Robin1987China](https://github.com/Robin1987China)、[@pengpengyi92](https://github.com/pengpengyi92)、[@SiMinus](https://github.com/SiMinus) の皆さん、ありがとうございます!
- **2026-08-24** 🔗 **IBKR 公式 MCP が「ツールを列挙するだけ」から実用の読み取り専用ポートフォリオソースへ;スケジューリングには単独では実行できないエージェントツールが追加**:[#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178) は URL を修正しましたが、IBKR ゲートウェイはログイン前に FastMCP 標準の OAuth クライアント登録を拒否していました。IBKR 専用の OAuth プロバイダ——ブラウザ相当のヘッダー、`token_endpoint_auth_method: none`、固定コールバックポート、失効登録の自動回復を、MCP ホストが `api.ibkr.com` の場合にのみ適用——が認可を完了させ([#1186](https://github.com/HKUDS/Vibe-Trading/pull/1186))、実口座で検証済みの `get_account_summary` / `get_account_positions` が汎用の口座/ポジション読み取りを支えるようになり、`ibkr-live-official-mcp-readonly` は `/portfolio` の有効なソースになりました([#1190](https://github.com/HKUDS/Vibe-Trading/pull/1190)、[#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) をクローズ)。**新機能:** エージェントに見えるスケジューリングツールは `scheduled_research` の 1 つだけ——`propose_create`/`propose_cancel` は、いま居るサーフェスで確認するまでジョブストアに触れません(Web の確認カード、CLI の `y/N`、IM では正確に `confirm`/`确认` と返信)。配信ターゲットはオペレーターが設定する不透明な参照で、生の chat/user id は決して露出せず、`end_at` を過ぎたジョブは期限切れになり再実行されません([#1187](https://github.com/HKUDS/Vibe-Trading/pull/1187))。**修正:** comps と三表モデルは、数値が演算に入るすべての入口で非有限入力を拒否するようになりました——従来は NaN のピア指標が倍率分布に*含まれて*中央値を NaN に引きずり、`abs(nan) > tolerance` は `False` のため NaN のバランスシートがハードチェックをすり抜けていました([#1184](https://github.com/HKUDS/Vibe-Trading/pull/1184)、[#1183](https://github.com/HKUDS/Vibe-Trading/issues/1183) をクローズ)。`get_market_data` は不正な呼び出しでローダーのフォールバックチェーンを浪費する前に codes/日付/source/interval を検証し、source の列挙が登録済み 6 ソースを黙って拒否することもなくなりました([#1185](https://github.com/HKUDS/Vibe-Trading/pull/1185))。Feishu の QR ログインは、一度しか渡されないアプリ資格情報をアトミックかつ所有者限定の権限で永続化します([#1188](https://github.com/HKUDS/Vibe-Trading/pull/1188))。risk-analysis スキル文書のヒストリカル VaR の順序統計量式をコードに一致させました([#1189](https://github.com/HKUDS/Vibe-Trading/pull/1189))。[@sykuang](https://github.com/sykuang)、[@goatyyc](https://github.com/goatyyc)、[@AirHua-byte](https://github.com/AirHua-byte)、[@Robin1987China](https://github.com/Robin1987China)、[@cgycorey](https://github.com/cgycorey)、[@youngjincho02-arch](https://github.com/youngjincho02-arch) の皆さん、ありがとうございます!
- **2026-08-23** 🔌 **IBKR MCP シードが誤った URL を指していた問題と、LLM アダプタを 1 つ閉じると全部閉じてしまう問題**:公式 IBKR 読み取り専用 MCP プロファイルのシード、README、`SKILL.md` はいずれも `https://api.ibkr.com/v1/api/mcp` を指していましたが、IBKR 自身の AI 連携ページが公開しているエンドポイントは `https://api.ibkr.com/v1/api/mcp-public` です。シード・6 つの README・`SKILL.md` をすべてこちらに揃えました。`agent.json` に古い URL が残っている場合は `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes` を再実行してください。IBKR ゲートウェイが OAuth クライアント登録を拒否する件は引き続き [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) で追跡中です([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178))。**修正:** `ChatLLM.close()` が LangChain のプロセス全体で共有されるキャッシュ済み HTTPX クライアントまで閉じていたため、タイトル生成や画像認識の呼び出しが 1 回終わるだけで、以降のリクエストが再起動まで "client has been closed" で失敗していました。今は Vibe-Trading 自身が作成したトランスポートだけを閉じます([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182))。応答のストリーミング中にサービスが再起動すると出力済みテキストが失われ、attempt が *running* のまま残っていました。部分応答をチェックポイントとして保存し、次回起動時に明示的な *interrupted* エントリとして履歴に復元します([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180))。**新機能:** Web チャットでファイル選択・ドラッグ&ドロップ・クリップボード貼り付けにより 1 ターンに最大 5 ファイルを添付できます([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179))。[@c020627](https://github.com/c020627) さん、[@AirHua-byte](https://github.com/AirHua-byte) さん、ありがとうございます!
<details>
<summary>過去のニュース</summary>
- **2026-08-23** 🔌 **IBKR MCP シードが誤った URL を指していた問題と、LLM アダプタを 1 つ閉じると全部閉じてしまう問題**:公式 IBKR 読み取り専用 MCP プロファイルのシード、README、`SKILL.md` はいずれも `https://api.ibkr.com/v1/api/mcp` を指していましたが、IBKR 自身の AI 連携ページが公開しているエンドポイントは `https://api.ibkr.com/v1/api/mcp-public` です。シード・6 つの README・`SKILL.md` をすべてこちらに揃えました。`agent.json` に古い URL が残っている場合は `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes` を再実行してください。IBKR ゲートウェイが OAuth クライアント登録を拒否する件は引き続き [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) で追跡中です([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178))。**修正:** `ChatLLM.close()` が LangChain のプロセス全体で共有されるキャッシュ済み HTTPX クライアントまで閉じていたため、タイトル生成や画像認識の呼び出しが 1 回終わるだけで、以降のリクエストが再起動まで "client has been closed" で失敗していました。今は Vibe-Trading 自身が作成したトランスポートだけを閉じます([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182))。応答のストリーミング中にサービスが再起動すると出力済みテキストが失われ、attempt が *running* のまま残っていました。部分応答をチェックポイントとして保存し、次回起動時に明示的な *interrupted* エントリとして履歴に復元します([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180))。**新機能:** Web チャットでファイル選択・ドラッグ&ドロップ・クリップボード貼り付けにより 1 ターンに最大 5 ファイルを添付できます([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179))。[@c020627](https://github.com/c020627) さん、[@AirHua-byte](https://github.com/AirHua-byte) さん、ありがとうございます!
- **2026-08-22** 💼 **Portfolio ページ:ブローカー横断で保有を読み取り専用に集約**:読み取り専用のコネクタープロファイル(`account.read` + `positions.read` を持つ接続インスタンス。IBKR 公式 MCP プロファイルはまだ対象外)を選ぶと、新しい `/portfolio` ページがそれらをイミュータブルなスナップショットに集約します——保有ごとの出所、USD/CNY 評価、CSV エクスポート、履歴チャート付き。更新に失敗したソースは**エラーとして報告され合計から除外**され——前回のキャッシュで埋めることはなく——スナップショットは不完全とマークされます。`portfolio_summary` ツールは既存の `portfolio_risk_xray` にそのまま渡せる `risk_xray_args` を返し、`vibe-trading portfolio show|refresh|sources` は同じスナップショットをターミナルに表示します。自作の読み取り専用コネクタープラグインは `~/.vibe-trading/connectors/` に置きます(書き込み能力を宣言したマニフェストは拒否、シークレットは `[keyring]` extra 経由で OS のキーチェーンへ)。この経路からは何も発注できません([#1072](https://github.com/HKUDS/Vibe-Trading/pull/1072)、[#1171](https://github.com/HKUDS/Vibe-Trading/issues/1171) に向けて)。**修正:** Alpha Zoo の 13 ファクターがリターン計算前に欠損終値を前方補完し、データギャップを有限の「0% リターン」にしていました——ギャップは `NaN` のまま保たれます([#1172](https://github.com/HKUDS/Vibe-Trading/pull/1172))。同一 http/sse サーバー上の無関係な MCP クライアントが単一のフォールバック研究ゴールセッションを共有していました([#1173](https://github.com/HKUDS/Vibe-Trading/pull/1173))。メモリの GC と圧縮が古い FTS 行と孤立した relation サイドカーを残していました([#1174](https://github.com/HKUDS/Vibe-Trading/pull/1174))。`cancel_run()` がストリーミング中の swarm worker に届かず——ストリームを中断し、そのターンのツール呼び出しをスキップし、*キャンセル済み*タスクとして記録します([#1175](https://github.com/HKUDS/Vibe-Trading/pull/1175))。MCP `get_research_reports` が `beginTime`/`endTime` を落としていました([#1176](https://github.com/HKUDS/Vibe-Trading/pull/1176))。`get_options_chain` が別サイクルの満期に `ok: true` と他の日付の契約を返していました([#1177](https://github.com/HKUDS/Vibe-Trading/pull/1177))。貢献に感謝します:[@goatyyc](https://github.com/goatyyc)、[@Shizoqua](https://github.com/Shizoqua)、[@cgycorey](https://github.com/cgycorey)。
- **2026-08-21** ⏱️ **永久に固まる実行**:`bash` のタイムアウトは shell だけを kill し、パイプハンドルを持つ孫プロセスが生き残るため、実行は 20 分以上「実行中」のままでした。現在は専用プロセスグループで起動してツリー全体を kill し、新しいストール監視が前進のない実行を終了させ、圧縮もモデル自身の検証記録を捨てなくなりました([#1169](https://github.com/HKUDS/Vibe-Trading/pull/1169))。**修正:** 複数年の Tencent 履歴が 500 本で暗黙に切り詰められていました([#1154](https://github.com/HKUDS/Vibe-Trading/pull/1154))。**新機能:** swarm 実行は失敗サブグラフのみを再生([#1158](https://github.com/HKUDS/Vibe-Trading/pull/1158)、[#1157](https://github.com/HKUDS/Vibe-Trading/issues/1157) をクローズ)。Market Watch は各モニターの最新判定を一覧内に表示([#1156](https://github.com/HKUDS/Vibe-Trading/pull/1156)、[#943](https://github.com/HKUDS/Vibe-Trading/issues/943) をクローズ)。`quantlib` はテスト済み 286 関数に到達([#1159](https://github.com/HKUDS/Vibe-Trading/pull/1159)–[#1168](https://github.com/HKUDS/Vibe-Trading/pull/1168))。貢献に感謝します:[@wiliao](https://github.com/wiliao)、[@cgycorey](https://github.com/cgycorey)、[@he-yufeng](https://github.com/he-yufeng)、[@BigFishEmily](https://github.com/BigFishEmily)、[@santhreal](https://github.com/santhreal)、[@SiMinus](https://github.com/SiMinus)、[@alinv0](https://github.com/alinv0)。
- **2026-08-20** 🚀 **v0.1.14 リリース**([リリースノート](https://github.com/HKUDS/Vibe-Trading/releases/tag/v0.1.14)、`pip install -U vibe-trading-ai`):0.1.13 以降 272 コミット・74 件のマージ済み PR。**主役は、終わったバックテストが CSV の山ではなく「読めるもの」になったことです。** Run Detail に 4 つのタブが増えました——**ファクター研究**(平均線付きの日次 IC 系列、IC 統計、分位ポートフォリオの資産曲線、そしてこれまでどこにも無かった IC 相関行列)、**ポジション構成**(日付スライダー付きのウェイト円/ツリーマップ、業種別ネットエクスポージャー、ウェイト推移の面グラフ。円は**グロス**構成、バーは**ネット**なので、同一業種のロング/ショートはバーでは相殺されて 0 になり、円では両脚とも見えたままです)、**ティアシート**(月次リターンのヒートマップ、年次バー、上位 5 ドローダウンを資産曲線に重ねて表示)、そして KPI・ベンチマーク対比の資産推移・ローリングシャープ・全約定台帳を備えた対話型**リサーチダッシュボード**。4 つとも実行が既に書き出している artifact を読むだけで、新しいデータパイプラインはありません。新しい **Options Lab** ページでは満期損益図、原資産×IV のシナリオ行列、ポートフォリオのグリークス、ライブのオプションチェーンを、MCP ツールと同じテストで固定されたエンジンで計算します。**インストール:** Intel Mac で再び `pip install vibe-trading-ai` が通ります——`smartmoneyconcepts` が `llvmlite` を引き込み、後者は 0.46 以降 macOS x86_64 wheel を出していないため、Intel でのインストールは毎回 CMake を要するソースビルドになっていました。これをオプトインの `[smc]` extra に移し、古い `<3.14` 上限も外しました([#1035](https://github.com/HKUDS/Vibe-Trading/discussions/1035))。**新機能:** Alpha Zoo と SDM ストアをまたぐ**エビデンス・ゲート付きストラテジー探索**(投入経路、読み取り時に算出する鮮度 `fresh`/`aging`/`stale`、陳腐化した行は既定の推奨から fail-closed で除外)、リース付き outbox で**自分から配信する**スケジュール調査と Market Watch 一覧向けに永続化される判定、7 つの読み取り専用 **Futu** エンドポイント、バックテスト市場としての**ベトナム(HOSE)**、オフラインの **USD-M 口座照合**、**Novita AI** と **GitHub Copilot** のプロバイダ、ホスト型 **MetaTrader 5** データソース、**スペイン語**と**ドイツ語**のロケール、そして MCP ツールは 74 個に。**正確性:** テストスイートがサンドボックスを抜け出して実際の設定ルートに書き込むことがなくなりました——以前はフル実行のたびにハッシュ連鎖の実口座監査台帳へ偽の `order_rejected` が追記されていました。`build_registry()` は欠けたツール表を黙って返しません。`xirr` は長期ホライズンの割引アンダーフローに耐え、DCF は非有限入力を負の株価で返さず拒否します。`.VN` 銘柄が A 株ルールで約定されることもなくなり、バックテストのアーカイブが 2 つの実行の成果物を混ぜることもなくなりました。さらに grounding の一連の修正で、日付・順序付きリスト・レート式中の恒等定数・見積りと誤読された注文行という誤拒否の一群が解消しました。@Shizoqua、@shadowinlife、@pengpengyi92、@cgycorey、@ofeksh-tr、@lorenzozanee、@AndyLongest、@zzz607、@wiliao、@jay79-boop、@Robin1987China、@Echoandelementwebsites、@zhiwuyazhe-fjr、@x-lambda、@sykuang、@straun-repo、@nstavros、@ngoanpv、@miguelangelo78、@lukiod、@jax-novita、@honginp、@he-yufeng、@fixXxerTech、@er-s-an、@daviddaco1、@birdxs、@QCYTSN、@549236606-oss、@1psconstructor の皆さんに感謝します。
+2 -1
View File
@@ -52,12 +52,13 @@
> ⚠️ **보안 경고:** X 계정 `VibeTrading_HKU`, Virtuals 프로젝트 `101845`, 토큰 컨트랙트 `0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4`는 모두 Vibe-Trading 공식과 무관합니다. Vibe-Trading은 어떠한 토큰이나 밈코인도 발행하거나 공식적으로 지지한 적이 없습니다. 해당 토큰을 구매하거나 지갑을 연결하거나 어떠한 서명도 하지 마세요. [자세히 보기](SECURITY.md#official-channels--impersonation).
- **2026-08-26** ♻️ **브로커 응답을 잃은 라이브 Alpaca 주문이 더 이상 미스터리가 아니며, 금 백테스트가 무마찰이기를 멈췄다**: 주문 게이트는 브로커 쓰기 전에 제출 소유권을 내구성 있게 기록하고, 정확한 `client_order_id`로만 결과를 복구하며, 부호 있는 포지션 델타로 체결을 귀속시키고, 모순이 있으면 HALT한다 — 복구 경로는 절대 재제출하지 않는다 ([#1213](https://github.com/HKUDS/Vibe-Trading/pull/1213), [#1221](https://github.com/HKUDS/Vibe-Trading/pull/1221), [#1222](https://github.com/HKUDS/Vibe-Trading/pull/1222)). **수정:** 귀금속이 FX pip·랏 규약을 써서 금 스프레드 비용이 약 1,460배 작아지고 1,000온스 미만 포지션이 조용히 0이 됐다 ([#1226](https://github.com/HKUDS/Vibe-Trading/pull/1226)); Futu HKD 보유가 USD로 평가되어 약 USD/HKD 환율만큼 과대계상됐다 ([#1228](https://github.com/HKUDS/Vibe-Trading/pull/1228)); Shadow Account가 러너가 내보내지 않는 메트릭 키를 읽어 성공한 백테스트마다 PnL = 0.00으로 보고했다 ([#1217](https://github.com/HKUDS/Vibe-Trading/pull/1217)); 스트리밍 LLM 호출이 usage를 요청하지 않아 swarm 출력 토큰이 약 18–36배 과소보고됐다 ([#1225](https://github.com/HKUDS/Vibe-Trading/pull/1225)). **신규:** 읽기 전용 Binance USD-M 계좌 스냅샷(옵트인) — 허용 목록의 서명 읽기 두 개뿐, 주문 표면 없음 ([#1229](https://github.com/HKUDS/Vibe-Trading/pull/1229), [#1030](https://github.com/HKUDS/Vibe-Trading/issues/1030)을 향해); 포트폴리오 OAuth 재연결이 제한된 서브프로세스에서 실행되어 웹 프로세스나 콜백 포트를 붙잡지 못한다 ([#1211](https://github.com/HKUDS/Vibe-Trading/pull/1211)). [@Elfsa-Miranda](https://github.com/Elfsa-Miranda), [@P1Piyush](https://github.com/P1Piyush), [@JaxonHu1024](https://github.com/JaxonHu1024), [@he-yufeng](https://github.com/he-yufeng), [@honginp](https://github.com/honginp), [@goatyyc](https://github.com/goatyyc) 님들께 감사드립니다!
- **2026-08-25** 🛡️ **라이브 게이트의 fail-open 두 건 차단; purged CV가 테스트 블록 사이 훈련 데이터를 지우던 문제 수정**: Alpaca 숏이 *양수* 익스포저로 기록되어(`qty`는 절댓값, 방향은 `side`) 팔수록 `max_total_exposure_usd`가 느슨해졌다 — 이제 TAP JSON과 직접 SDK 두 경로 모두 수량에 부호가 붙는다 ([#1209](https://github.com/HKUDS/Vibe-Trading/pull/1209)); OKX/Futu는 거부된 API 호출을 "빈 장부, `status: ok`"로 뭉개 위임 게이트가 빈 장부에 대고 한도를 평가했다 — 이제 명시적 오류 봉투를 반환하고 게이트는 fail-closed 한다 ([#1212](https://github.com/HKUDS/Vibe-Trading/pull/1212)). 둘 다 [#1207](https://github.com/HKUDS/Vibe-Trading/issues/1207) 감사 로드맵의 Phase 0. **수정:** 조합형 purged CV가 비연속 테스트 블록을 한 구간으로 취급해 그 사이 훈련 관측치를 전부 purge했다; 이제 세그먼트별로 purge하고 훈련 데이터가 빈 fold는 예외를 던진다 ([#1204](https://github.com/HKUDS/Vibe-Trading/pull/1204)); 신용리스크 함수는 NaN/inf 입력을 거부하며 NaN 점수나 "회색 지대" 판정을 반환하지 않는다 ([#1215](https://github.com/HKUDS/Vibe-Trading/pull/1215), [#1214](https://github.com/HKUDS/Vibe-Trading/issues/1214) 닫음). **신규:** swarm 워커 재시도가 상한 있는 equal-jitter 백오프로 바뀌었다 ([#1210](https://github.com/HKUDS/Vibe-Trading/pull/1210), [#1208](https://github.com/HKUDS/Vibe-Trading/issues/1208)을 향해); `vibe-trading --swarm-retry <run_id>` / `/swarm retry`로 실패한 실행을 다시 돌리고 `--resume`으로 완료된 태스크를 유지한다 ([#1194](https://github.com/HKUDS/Vibe-Trading/pull/1194)). [@he-yufeng](https://github.com/he-yufeng)、[@santhreal](https://github.com/santhreal)、[@Robin1987China](https://github.com/Robin1987China)、[@pengpengyi92](https://github.com/pengpengyi92)、[@SiMinus](https://github.com/SiMinus) 님들께 감사드립니다!
- **2026-08-24** 🔗 **IBKR 공식 MCP가 "도구 목록만 보이던" 상태에서 실제로 쓰이는 읽기 전용 포트폴리오 소스로; 스케줄링에는 혼자서는 실행할 수 없는 에이전트 도구 추가**: [#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)이 URL을 고쳤지만 IBKR 게이트웨이는 로그인 전에 FastMCP 기본 OAuth 클라이언트 등록을 거부했습니다. IBKR 전용 OAuth 프로바이더 — 브라우저형 헤더, `token_endpoint_auth_method: none`, 고정 콜백 포트, 만료 등록 복구를 MCP 호스트가 `api.ibkr.com`일 때만 적용 — 가 인증을 완료하고([#1186](https://github.com/HKUDS/Vibe-Trading/pull/1186)), 실계좌로 검증된 `get_account_summary` / `get_account_positions` 도구가 범용 계좌/포지션 읽기를 지원하게 되어 `ibkr-live-official-mcp-readonly`가 `/portfolio`의 유효한 소스가 되었습니다([#1190](https://github.com/HKUDS/Vibe-Trading/pull/1190), [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) 종료). **신규:** 에이전트에게 보이는 스케줄링 도구는 `scheduled_research` 하나뿐 — `propose_create`/`propose_cancel`은 현재 사용 중인 화면에서 확인하기 전까지 작업 저장소를 건드리지 않습니다(Web 확인 카드, CLI `y/N`, IM에서는 정확히 `confirm`/`确认`으로 답장). 전달 대상은 운영자가 구성한 불투명 참조로 원시 chat/user id를 절대 노출하지 않으며, `end_at`이 지난 작업은 만료되어 다시 실행되지 않습니다([#1187](https://github.com/HKUDS/Vibe-Trading/pull/1187)). **수정:** comps와 3대 재무제표 모델이 산술에 들어가는 모든 입구에서 비유한 입력을 거부합니다 — 이전에는 NaN 동종업체 지표가 배수 분포에 *포함되어* 중앙값을 NaN으로 끌고 갔고, `abs(nan) > tolerance`는 `False`라서 NaN 대차대조표가 하드 검사를 통과했습니다([#1184](https://github.com/HKUDS/Vibe-Trading/pull/1184), [#1183](https://github.com/HKUDS/Vibe-Trading/issues/1183) 종료); `get_market_data`는 잘못된 호출로 로더 폴백 체인을 소모하기 전에 codes/날짜/source/interval을 검증하고, source 열거형이 등록된 6개 로더를 조용히 거부하던 문제도 사라졌습니다([#1185](https://github.com/HKUDS/Vibe-Trading/pull/1185)); Feishu QR 로그인은 딱 한 번만 내려오는 앱 자격 증명을 원자적으로, 소유자 전용 권한으로 저장합니다([#1188](https://github.com/HKUDS/Vibe-Trading/pull/1188)); risk-analysis 스킬 문서의 역사적 VaR 순서통계량 공식이 코드와 일치하게 되었습니다([#1189](https://github.com/HKUDS/Vibe-Trading/pull/1189)). [@sykuang](https://github.com/sykuang)、[@goatyyc](https://github.com/goatyyc)、[@AirHua-byte](https://github.com/AirHua-byte)、[@Robin1987China](https://github.com/Robin1987China)、[@cgycorey](https://github.com/cgycorey)、[@youngjincho02-arch](https://github.com/youngjincho02-arch) 님들께 감사드립니다!
- **2026-08-23** 🔌 **IBKR MCP 시드가 잘못된 URL을 가리키던 문제와, LLM 어댑터 하나를 닫으면 전부 닫히던 문제**: 공식 IBKR 읽기 전용 MCP 프로필 시드, README, `SKILL.md` 모두 `https://api.ibkr.com/v1/api/mcp`를 가리켰지만, IBKR 자체 AI 연동 페이지가 공개한 엔드포인트는 `https://api.ibkr.com/v1/api/mcp-public`입니다. 시드, README 6종, `SKILL.md`가 이제 모두 이 주소를 가리킵니다. `agent.json`에 예전 URL이 남아 있다면 `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes`를 다시 실행하세요. IBKR 게이트웨이가 OAuth 클라이언트 등록을 거부하는 단계는 [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126)에서 계속 추적합니다 ([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)). **수정:** `ChatLLM.close()`가 LangChain의 프로세스 전역 캐시 HTTPX 클라이언트까지 닫아, 제목 생성이나 이미지 인식 호출이 한 번 끝나면 이후 모든 요청이 재시작 전까지 "client has been closed"로 실패했습니다. 이제 Vibe-Trading이 직접 만든 전송 계층만 닫습니다 ([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182)); 응답 스트리밍 도중 서비스가 재시작되면 출력된 텍스트가 사라지고 attempt가 영원히 *running* 상태로 남았습니다. 이제 부분 응답을 체크포인트로 저장하고 다음 시작 시 명시적인 *interrupted* 대화 기록으로 복원합니다 ([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180)). **신규:** 웹 채팅에서 파일 선택, 드래그 앤 드롭, 클립보드 붙여넣기로 한 턴에 최대 5개 파일을 첨부할 수 있습니다 ([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179)). [@c020627](https://github.com/c020627), [@AirHua-byte](https://github.com/AirHua-byte) 님 감사합니다!
<details>
<summary>이전 뉴스</summary>
- **2026-08-23** 🔌 **IBKR MCP 시드가 잘못된 URL을 가리키던 문제와, LLM 어댑터 하나를 닫으면 전부 닫히던 문제**: 공식 IBKR 읽기 전용 MCP 프로필 시드, README, `SKILL.md` 모두 `https://api.ibkr.com/v1/api/mcp`를 가리켰지만, IBKR 자체 AI 연동 페이지가 공개한 엔드포인트는 `https://api.ibkr.com/v1/api/mcp-public`입니다. 시드, README 6종, `SKILL.md`가 이제 모두 이 주소를 가리킵니다. `agent.json`에 예전 URL이 남아 있다면 `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes`를 다시 실행하세요. IBKR 게이트웨이가 OAuth 클라이언트 등록을 거부하는 단계는 [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126)에서 계속 추적합니다 ([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178)). **수정:** `ChatLLM.close()`가 LangChain의 프로세스 전역 캐시 HTTPX 클라이언트까지 닫아, 제목 생성이나 이미지 인식 호출이 한 번 끝나면 이후 모든 요청이 재시작 전까지 "client has been closed"로 실패했습니다. 이제 Vibe-Trading이 직접 만든 전송 계층만 닫습니다 ([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182)); 응답 스트리밍 도중 서비스가 재시작되면 출력된 텍스트가 사라지고 attempt가 영원히 *running* 상태로 남았습니다. 이제 부분 응답을 체크포인트로 저장하고 다음 시작 시 명시적인 *interrupted* 대화 기록으로 복원합니다 ([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180)). **신규:** 웹 채팅에서 파일 선택, 드래그 앤 드롭, 클립보드 붙여넣기로 한 턴에 최대 5개 파일을 첨부할 수 있습니다 ([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179)). [@c020627](https://github.com/c020627), [@AirHua-byte](https://github.com/AirHua-byte) 님 감사합니다!
- **2026-08-22** 💼 **포트폴리오 페이지: 여러 브로커의 보유 종목을 읽기 전용으로 한눈에**: 읽기 전용 커넥터 프로필(`account.read` + `positions.read`를 가진 연결 인스턴스; IBKR 공식 MCP 프로필은 아직 대상 아님)을 고르면 새 `/portfolio` 페이지가 이를 불변 스냅샷으로 집계합니다 — 보유 종목마다 출처 표기, USD/CNY 평가, CSV 내보내기, 히스토리 차트 포함. 새로 고침에 실패한 소스는 **오류로 보고되고 합계에서 제외**되며 — 지난 캐시로 대체하지 않고 — 스냅샷은 불완전으로 표시됩니다. `portfolio_summary` 도구는 기존 `portfolio_risk_xray`에 그대로 넘길 수 있는 `risk_xray_args`를 반환하고, `vibe-trading portfolio show|refresh|sources`는 같은 스냅샷을 터미널에 출력합니다. 직접 작성한 읽기 전용 커넥터 플러그인은 `~/.vibe-trading/connectors/`에 둡니다(쓰기 능력을 선언한 매니페스트는 거부, 비밀값은 `[keyring]` extra를 통해 OS 키체인으로). 이 경로에서는 어떤 것도 주문을 낼 수 없습니다([#1072](https://github.com/HKUDS/Vibe-Trading/pull/1072), [#1171](https://github.com/HKUDS/Vibe-Trading/issues/1171)을 향해). **수정:** Alpha Zoo 팩터 13개가 수익률 계산 전에 결측 종가를 앞으로 채워 데이터 결측을 유한한 "0% 수익률"로 만들었습니다 — 이제 결측은 `NaN`으로 남습니다([#1172](https://github.com/HKUDS/Vibe-Trading/pull/1172)). 같은 http/sse 서버의 서로 무관한 MCP 클라이언트가 하나의 폴백 연구 목표 세션을 공유했습니다([#1173](https://github.com/HKUDS/Vibe-Trading/pull/1173)). 메모리 GC와 압축이 오래된 FTS 행과 고아 relation 사이드카를 남겼습니다([#1174](https://github.com/HKUDS/Vibe-Trading/pull/1174)). `cancel_run()`이 스트리밍 중인 swarm worker에 닿지 않았습니다 — 이제 스트림을 중단하고 그 턴의 도구 호출을 건너뛰며 *취소됨* 태스크로 기록됩니다([#1175](https://github.com/HKUDS/Vibe-Trading/pull/1175)). MCP `get_research_reports`가 `beginTime`/`endTime`을 버렸습니다([#1176](https://github.com/HKUDS/Vibe-Trading/pull/1176)). `get_options_chain`이 다른 주기의 만기에 `ok: true`와 다른 날짜의 계약을 돌려줬습니다([#1177](https://github.com/HKUDS/Vibe-Trading/pull/1177)). 기여해 주신 [@goatyyc](https://github.com/goatyyc), [@Shizoqua](https://github.com/Shizoqua), [@cgycorey](https://github.com/cgycorey)에게 감사드립니다.
- **2026-08-21** ⏱️ **영원히 멈춰 있던 실행**: `bash` 타임아웃이 shell만 종료하고 파이프 핸들을 쥔 손자 프로세스는 살아남아, 실행은 20분 넘게 "실행 중"이었습니다. 이제 전용 프로세스 그룹에서 시작해 트리 전체를 종료하고, 정체 감시자가 진전 없는 실행을 끝내며, 압축도 모델 자신의 검증 기록을 버리지 않습니다([#1169](https://github.com/HKUDS/Vibe-Trading/pull/1169)). **수정:** Tencent의 다년 히스토리가 500봉에서 조용히 잘렸습니다([#1154](https://github.com/HKUDS/Vibe-Trading/pull/1154)). **신규:** swarm 실행은 실패한 하위 그래프만 재생합니다([#1158](https://github.com/HKUDS/Vibe-Trading/pull/1158), [#1157](https://github.com/HKUDS/Vibe-Trading/issues/1157) 종료). Market Watch는 각 모니터의 최신 판정을 목록에 표시합니다([#1156](https://github.com/HKUDS/Vibe-Trading/pull/1156), [#943](https://github.com/HKUDS/Vibe-Trading/issues/943) 종료). `quantlib`는 테스트된 286개 함수에 도달했습니다([#1159](https://github.com/HKUDS/Vibe-Trading/pull/1159)–[#1168](https://github.com/HKUDS/Vibe-Trading/pull/1168)). 기여해 주신 [@wiliao](https://github.com/wiliao), [@cgycorey](https://github.com/cgycorey), [@he-yufeng](https://github.com/he-yufeng), [@BigFishEmily](https://github.com/BigFishEmily), [@santhreal](https://github.com/santhreal), [@SiMinus](https://github.com/SiMinus), [@alinv0](https://github.com/alinv0)에게 감사드립니다.
- **2026-08-20** 🚀 **v0.1.14 릴리스**([릴리스 노트](https://github.com/HKUDS/Vibe-Trading/releases/tag/v0.1.14), `pip install -U vibe-trading-ai`): 0.1.13 이후 272개 커밋, 74개 병합 PR. **주인공은 끝난 백테스트가 CSV 더미가 아니라 읽을 수 있는 결과물이 되었다는 점입니다.** Run Detail에 탭 네 개가 추가됐습니다 — **팩터 리서치**(평균선이 있는 일별 IC 시계열, IC 통계, 분위 그룹 자산곡선, 그리고 지금까지 어디에도 없던 IC 상관행렬), **포지션 구조**(날짜 슬라이더가 달린 비중 파이/트리맵, 업종별 순익스포저 막대, 비중 변화 영역 차트 — 파이는 **총액** 구성이고 막대는 **순액**이라, 같은 업종의 롱/숏 쌍은 막대에서 0으로 상쇄되지만 파이에서는 두 다리가 모두 보입니다), **티어시트**(월별 수익률 히트맵, 연간 막대, 자산곡선 위에 표시한 상위 5개 낙폭), 그리고 KPI·벤치마크 대비 자산추이·롤링 샤프·전체 체결 원장을 담은 대화형 **리서치 대시보드**. 네 가지 모두 실행이 이미 기록하는 artifact를 읽을 뿐, 새 데이터 파이프라인은 없습니다. 새 **Options Lab** 페이지는 만기 손익도, 현물×IV 시나리오 행렬, 포트폴리오 그릭스, 실시간 옵션 체인을 MCP 도구와 동일한, 테스트로 고정된 엔진으로 계산합니다. **설치:** Intel Mac에서 다시 `pip install vibe-trading-ai`가 됩니다 — `smartmoneyconcepts`가 `llvmlite`를 끌어오는데, 후자는 0.46부터 macOS x86_64 wheel을 내지 않아 Intel 설치가 매번 CMake가 필요한 소스 빌드로 바뀌었습니다. 이제 선택형 `[smc]` extra로 옮겼고 낡은 `<3.14` 상한도 없앴습니다([#1035](https://github.com/HKUDS/Vibe-Trading/discussions/1035)). **신규:** Alpha Zoo와 SDM 저장소를 아우르는 **근거 게이트 전략 탐색**(적재 경로, 읽는 시점에 계산되는 신선도 `fresh`/`aging`/`stale`, 오래된 행은 기본 추천에서 fail-closed로 제외), 리스가 걸린 outbox로 **스스로 전달하는** 예약 리서치와 Market Watch 목록용으로 저장되는 판정, 읽기 전용 **Futu** 엔드포인트 7종, 백테스트 시장으로서의 **베트남(HOSE)**, 오프라인 **USD-M 계좌 대사**, **Novita AI**·**GitHub Copilot** 프로바이더, 호스팅형 **MetaTrader 5** 데이터 소스, **스페인어**·**독일어** 로케일, 그리고 74개로 늘어난 MCP 도구. **정확성:** 테스트 스위트가 샌드박스를 벗어나 실제 설정 루트에 쓰는 일이 없어졌습니다 — 이전에는 전체 실행 때마다 해시 체인 실계좌 감사 원장에 가짜 `order_rejected`가 덧붙었습니다. `build_registry()`는 빠진 도구 목록을 조용히 반환하지 않습니다. `xirr`는 장기 할인 언더플로를 견디고, DCF는 비유한 입력에 음수 주가 대신 거부로 응답합니다. `.VN` 종목이 A주 규칙으로 체결되지 않으며, 백테스트 아카이브가 두 실행의 산출물을 섞지 않습니다. 또한 일련의 grounding 수정으로 날짜, 순서 목록, 요율 수식 속 항등 상수, 호가로 오독된 주문 라인에서 비롯된 오거부가 정리됐습니다. @Shizoqua, @shadowinlife, @pengpengyi92, @cgycorey, @ofeksh-tr, @lorenzozanee, @AndyLongest, @zzz607, @wiliao, @jay79-boop, @Robin1987China, @Echoandelementwebsites, @zhiwuyazhe-fjr, @x-lambda, @sykuang, @straun-repo, @nstavros, @ngoanpv, @miguelangelo78, @lukiod, @jax-novita, @honginp, @he-yufeng, @fixXxerTech, @er-s-an, @daviddaco1, @birdxs, @QCYTSN, @549236606-oss, @1psconstructor 님께 감사드립니다.
+2 -1
View File
@@ -52,12 +52,13 @@
> ⚠️ **安全警告:** X 账号 `VibeTrading_HKU`、Virtuals 项目 `101845` 及代币合约 `0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4` 均非 Vibe-Trading 官方。我们从未发行或背书任何代币或 meme 币。请勿购买、连接钱包或签名。[详细说明](SECURITY.md#official-channels--impersonation)。
- **2026-08-26** ♻️ **实盘 Alpaca 下单丢失券商响应不再是悬案;黄金回测不再零摩擦**:下单闸门在写 broker 前先持久化这笔提交的所有权,恢复只认精确 `client_order_id`,成交按带符号仓位增量归因,任何矛盾直接 HALT——恢复路径绝不重发([#1213](https://github.com/HKUDS/Vibe-Trading/pull/1213)、[#1221](https://github.com/HKUDS/Vibe-Trading/pull/1221)、[#1222](https://github.com/HKUDS/Vibe-Trading/pull/1222))。**修复:** 贵金属沿用外汇 pip/手数约定,黄金点差成本小了约 1460 倍、1000 盎司以下仓位被静默归零([#1226](https://github.com/HKUDS/Vibe-Trading/pull/1226));富途 HKD 持仓被当成 USD 估值,虚高约一个 USD/HKD 汇率([#1228](https://github.com/HKUDS/Vibe-Trading/pull/1228));Shadow Account 读的是 runner 从不产出的指标键,成功回测一律报 PnL = 0.00([#1217](https://github.com/HKUDS/Vibe-Trading/pull/1217));流式 LLM 调用从不请求用量,swarm 输出 token 少报约 18–36 倍([#1225](https://github.com/HKUDS/Vibe-Trading/pull/1225))。**新增:** Binance 只读 USD-M 账户快照(可选开启)——仅两个白名单签名读端点、无任何下单面([#1229](https://github.com/HKUDS/Vibe-Trading/pull/1229),朝向 [#1030](https://github.com/HKUDS/Vibe-Trading/issues/1030));组合页 OAuth 重连改在受限子进程运行,不再卡死 Web 进程或占住回调端口([#1211](https://github.com/HKUDS/Vibe-Trading/pull/1211))。感谢 [@Elfsa-Miranda](https://github.com/Elfsa-Miranda)、[@P1Piyush](https://github.com/P1Piyush)、[@JaxonHu1024](https://github.com/JaxonHu1024)、[@he-yufeng](https://github.com/he-yufeng)、[@honginp](https://github.com/honginp)、[@goatyyc](https://github.com/goatyyc)!
- **2026-08-25** 🛡️ **堵上实盘闸门的两个 fail-open;purged CV 不再清空测试块之间的训练集**:Alpaca 空头被记成*正*敞口(`qty` 恒为绝对值、方向在 `side`),越卖 `max_total_exposure_usd` 反而越松——现在 TAP JSON 与直连 SDK 两条路径的数量都带符号([#1209](https://github.com/HKUDS/Vibe-Trading/pull/1209));OKX/Futu 会把被拒绝的 API 调用压平成「空账本,`status: ok`」,让授权闸门对着空仓评估限额——现在返回明确错误信封,闸门据此 fail-closed([#1212](https://github.com/HKUDS/Vibe-Trading/pull/1212))。两者同属 [#1207](https://github.com/HKUDS/Vibe-Trading/issues/1207) 审计路线图的 Phase 0。**修复:** 组合式 purged CV 把非连续测试块当成一整段、清掉它们之间的全部训练观测;现在按段独立 purge,训练集被清空的折直接抛错([#1204](https://github.com/HKUDS/Vibe-Trading/pull/1204));信用风险函数拒绝 NaN/inf 输入,不再返回 NaN 分数或「灰色地带」结论([#1215](https://github.com/HKUDS/Vibe-Trading/pull/1215),关闭 [#1214](https://github.com/HKUDS/Vibe-Trading/issues/1214))。**新增:** swarm worker 重试改为封顶 equal-jitter 退避([#1210](https://github.com/HKUDS/Vibe-Trading/pull/1210),朝向 [#1208](https://github.com/HKUDS/Vibe-Trading/issues/1208));`vibe-trading --swarm-retry <run_id>` / `/swarm retry` 可重跑失败运行,`--resume` 保留已完成任务([#1194](https://github.com/HKUDS/Vibe-Trading/pull/1194))。感谢 [@he-yufeng](https://github.com/he-yufeng)、[@santhreal](https://github.com/santhreal)、[@Robin1987China](https://github.com/Robin1987China)、[@pengpengyi92](https://github.com/pengpengyi92)、[@SiMinus](https://github.com/SiMinus)!
- **2026-08-24** 🔗 **IBKR 官方 MCP 从「只能列工具」变成可用的只读组合数据源;调度获得一个无法独自行动的 agent 工具**:[#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178) 修正了 URL,但 IBKR 网关仍在登录前拒绝 FastMCP 默认的 OAuth 客户端注册。新的 IBKR 专用 OAuth provider——浏览器特征请求头、`token_endpoint_auth_method: none`、固定回调端口、过期注册自动清理,且仅当 MCP 主机为 `api.ibkr.com` 时生效——完成了授权([#1186](https://github.com/HKUDS/Vibe-Trading/pull/1186));真实账户验证过的 `get_account_summary` / `get_account_positions` 工具现在支撑通用账户/持仓读取,`ibkr-live-official-mcp-readonly` 因此成为合格的 `/portfolio` 数据源([#1190](https://github.com/HKUDS/Vibe-Trading/pull/1190),关闭 [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126))。**新增:** agent 只见一个调度工具 `scheduled_research`——它的 `propose_create`/`propose_cancel` 在你于所在界面确认之前绝不触碰任务存储(Web 确认卡片、CLI `y/N`、IM 里准确回复 `confirm`/`确认`),投递目标是运营方配置的不透明引用、永不暴露原始 chat/user id,任务过了 `end_at` 即过期不再触发([#1187](https://github.com/HKUDS/Vibe-Trading/pull/1187))。**修复:** comps 与三表模型现在在数值进入运算的每个入口拒绝非有限输入——此前 NaN 的同业指标会被*计入*倍数分布、把中位数拖成 NaN,而 `abs(nan) > tolerance` 为 `False`,NaN 资产负债表能安然通过硬校验([#1184](https://github.com/HKUDS/Vibe-Trading/pull/1184),关闭 [#1183](https://github.com/HKUDS/Vibe-Trading/issues/1183));`get_market_data` 在烧掉整条 loader 回退链之前先校验 codes/日期/source/interval,其 source 枚举也不再静默拒绝六个已注册的数据源([#1185](https://github.com/HKUDS/Vibe-Trading/pull/1185));飞书扫码登录现在会把只下发一次的应用凭证原子化、仅属主可读地持久化,而不是报告一个进程一退出就失效的「成功」([#1188](https://github.com/HKUDS/Vibe-Trading/pull/1188));risk-analysis skill 文档里的历史 VaR 顺序统计量公式与代码对齐([#1189](https://github.com/HKUDS/Vibe-Trading/pull/1189))。感谢 [@sykuang](https://github.com/sykuang)、[@goatyyc](https://github.com/goatyyc)、[@AirHua-byte](https://github.com/AirHua-byte)、[@Robin1987China](https://github.com/Robin1987China)、[@cgycorey](https://github.com/cgycorey)、[@youngjincho02-arch](https://github.com/youngjincho02-arch)!
- **2026-08-23** 🔌 **IBKR MCP 种子配置指错了 URL;关掉一个 LLM 适配器会把所有适配器一起关掉**:官方 IBKR 只读 MCP 配置种子、README 和 `SKILL.md` 写的都是 `https://api.ibkr.com/v1/api/mcp`,而 IBKR 自己的 AI 集成页面公布的端点是 `https://api.ibkr.com/v1/api/mcp-public`——种子、六份 README 和 `SKILL.md` 现在统一指向它;若你的 `agent.json` 里还是旧 URL,请重新执行 `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes`。IBKR 网关拒绝 OAuth 客户端注册这一步仍在 [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) 跟进([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178))。**修复:** `ChatLLM.close()` 会把 LangChain 进程级缓存的 HTTPX client 一并关掉,一次标题生成或图片识别调用结束后,后续所有请求都报 "client has been closed" 直到重启——现在只关闭 Vibe-Trading 自己创建的传输层([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182));回复流式输出到一半服务重启,已输出的文字会丢失、attempt 永远停在 *running*——现在部分回复会落盘 checkpoint,下次启动时作为明确的 *interrupted* 对话记录恢复([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180))。**新增:** Web 聊天每轮最多可通过文件选择、拖放或剪贴板粘贴附加五个文件([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179))。感谢 [@c020627](https://github.com/c020627) 和 [@AirHua-byte](https://github.com/AirHua-byte)!
<details>
<summary>更早的新闻</summary>
- **2026-08-23** 🔌 **IBKR MCP 种子配置指错了 URL;关掉一个 LLM 适配器会把所有适配器一起关掉**:官方 IBKR 只读 MCP 配置种子、README 和 `SKILL.md` 写的都是 `https://api.ibkr.com/v1/api/mcp`,而 IBKR 自己的 AI 集成页面公布的端点是 `https://api.ibkr.com/v1/api/mcp-public`——种子、六份 README 和 `SKILL.md` 现在统一指向它;若你的 `agent.json` 里还是旧 URL,请重新执行 `vibe-trading connector configure ibkr-live-official-mcp-readonly --yes`。IBKR 网关拒绝 OAuth 客户端注册这一步仍在 [#1126](https://github.com/HKUDS/Vibe-Trading/issues/1126) 跟进([#1178](https://github.com/HKUDS/Vibe-Trading/pull/1178))。**修复:** `ChatLLM.close()` 会把 LangChain 进程级缓存的 HTTPX client 一并关掉,一次标题生成或图片识别调用结束后,后续所有请求都报 "client has been closed" 直到重启——现在只关闭 Vibe-Trading 自己创建的传输层([#1182](https://github.com/HKUDS/Vibe-Trading/pull/1182));回复流式输出到一半服务重启,已输出的文字会丢失、attempt 永远停在 *running*——现在部分回复会落盘 checkpoint,下次启动时作为明确的 *interrupted* 对话记录恢复([#1180](https://github.com/HKUDS/Vibe-Trading/pull/1180))。**新增:** Web 聊天每轮最多可通过文件选择、拖放或剪贴板粘贴附加五个文件([#1179](https://github.com/HKUDS/Vibe-Trading/pull/1179))。感谢 [@c020627](https://github.com/c020627) 和 [@AirHua-byte](https://github.com/AirHua-byte)!
- **2026-08-22** 💼 **持仓页:跨券商只读汇总你的持仓**:选几个只读连接器 profile(基于 `account.read` + `positions.read` 的连接实例;IBKR 官方 MCP profile 暂不可选),新的 `/portfolio` 页就把它们汇总成不可变快照——每条持仓带来源、按 USD/CNY 估值、可导出 CSV、有历史曲线。刷新失败的源会被**报为错误并从总额中剔除**——绝不拿上次缓存顶替——同时快照标为不完整。`portfolio_summary` 工具返回可直接喂给现有 `portfolio_risk_xray` 的 `risk_xray_args`;终端里 `vibe-trading portfolio show|refresh|sources` 打印同一份快照。自己写的只读连接器插件放在 `~/.vibe-trading/connectors/`(manifest 声明任何写能力即被拒绝;密钥通过 `[keyring]` extra 进系统钥匙串),这条路径上没有任何东西能下单([#1072](https://github.com/HKUDS/Vibe-Trading/pull/1072),朝向 [#1171](https://github.com/HKUDS/Vibe-Trading/issues/1171))。**修复:** 13 个 Alpha Zoo 因子在算收益前先前向填充了缺失收盘价,把数据缺口变成有限的「0% 收益」——现在缺口保持 `NaN`([#1172](https://github.com/HKUDS/Vibe-Trading/pull/1172));同一 http/sse 服务器上互不相关的 MCP 客户端共用一个兜底研究目标会话([#1173](https://github.com/HKUDS/Vibe-Trading/pull/1173));记忆 GC 与压缩遗留过期 FTS 行和孤儿关系 sidecar([#1174](https://github.com/HKUDS/Vibe-Trading/pull/1174));`cancel_run()` 到不了正在流式输出的 swarm worker——现在会打断流、跳过该轮工具调用并记为*已取消*任务([#1175](https://github.com/HKUDS/Vibe-Trading/pull/1175));MCP `get_research_reports` 丢掉了 `beginTime`/`endTime`([#1176](https://github.com/HKUDS/Vibe-Trading/pull/1176));`get_options_chain` 对错周期到期日返回 `ok: true` 外加另一日期的合约([#1177](https://github.com/HKUDS/Vibe-Trading/pull/1177))。感谢 [@goatyyc](https://github.com/goatyyc)、[@Shizoqua](https://github.com/Shizoqua)、[@cgycorey](https://github.com/cgycorey)!
- **2026-08-21** ⏱️ **永远卡住的运行**:`bash` 超时只杀掉 shell,握着管道句柄的孙进程还活着,运行便「运行中」挂了 20 分钟以上。现在命令在独立进程组启动、超时杀掉整棵进程树,新增的停滞看门狗会终结毫无前进的运行,压缩也不再丢弃模型自己的验证记录([#1169](https://github.com/HKUDS/Vibe-Trading/pull/1169))。**修复:** 跨年的腾讯历史在 500 根 K 线处被静默截断([#1154](https://github.com/HKUDS/Vibe-Trading/pull/1154))。**新增:** swarm 运行只重放失败子图([#1158](https://github.com/HKUDS/Vibe-Trading/pull/1158),关闭 [#1157](https://github.com/HKUDS/Vibe-Trading/issues/1157));Market Watch 在列表内显示每个监控的最新结论([#1156](https://github.com/HKUDS/Vibe-Trading/pull/1156),关闭 [#943](https://github.com/HKUDS/Vibe-Trading/issues/943));`quantlib` 达到 286 个经测试函数([#1159](https://github.com/HKUDS/Vibe-Trading/pull/1159)–[#1168](https://github.com/HKUDS/Vibe-Trading/pull/1168))。感谢 [@wiliao](https://github.com/wiliao)、[@cgycorey](https://github.com/cgycorey)、[@he-yufeng](https://github.com/he-yufeng)、[@BigFishEmily](https://github.com/BigFishEmily)、[@santhreal](https://github.com/santhreal)、[@SiMinus](https://github.com/SiMinus)、[@alinv0](https://github.com/alinv0)!
- **2026-08-20** 🚀 **v0.1.14 发布**([Release notes](https://github.com/HKUDS/Vibe-Trading/releases/tag/v0.1.14),`pip install -U vibe-trading-ai`):自 0.1.13 以来 272 个 commit、74 个已合并 PR。**主角是:跑完的回测终于是可以读的东西,而不是一堆 CSV。** Run Detail 新增四个页签——**因子研究**(IC 序列与其均值线、IC 统计、分组净值,以及一个此前根本不存在的 IC 两两相关矩阵)、**持仓结构**(带日期滑块的权重饼图/树图、行业净敞口柱、权重演化面积图;饼图是**总额**构成而柱图是**净额**,所以同一行业里的多空对冲在柱图上抵为零、在饼图上两条腿都还看得见)、**Tearsheet**(月度收益热力图、年度柱状图、前 5 大回撤并标注在净值曲线上),以及一个带 KPI、基准相对净值、滚动 Sharpe 和完整成交流水的交互式**研究看板**。四者读的都是运行本就写出的 artifact——没有新增数据管线。新的 **Options Lab** 页面提供到期损益图、现价×IV 情景矩阵、组合希腊字母和实时期权链,算的是 MCP 工具同一套被测试钉死的引擎。**安装:** Intel Mac 又能 `pip install vibe-trading-ai` 了——`smartmoneyconcepts` 会拖进 `llvmlite`,而后者从 0.46 起不再提供 macOS x86_64 wheel,于是每一次 Intel 安装都变成需要 CMake 的源码构建;现在它改为可选的 `[smc]` extra,过期的 `<3.14` 上限也一并去掉([#1035](https://github.com/HKUDS/Vibe-Trading/discussions/1035))。**新增:** 跨 Alpha Zoo 与 SDM 库的**证据闸门策略发现**,带证据填充路径、读取时计算的新鲜度(`fresh`/`aging`/`stale`)以及陈旧行 fail-closed 退出默认推荐;排期研究现在会**自己投递**——经带租约的 outbox 送出,并把每个监控的判定持久化供 Market Watch 列表使用;七个只读 **Futu** 端点;**越南(HOSE)**成为回测市场;离线 **USD-M 账户对账**;**Novita AI** 与 **GitHub Copilot** 两个模型提供方;托管的 **MetaTrader 5** 数据源;**西班牙语**与**德语**界面;MCP 工具增至 74 个。**正确性:** 测试套件不再逃出沙箱写进你真实的配置根目录——此前跑一次全量会往那本哈希链式的实盘审计账本里追加伪造的 `order_rejected` 记录;`build_registry()` 不再静默返回一份残缺的工具表;`xirr` 扛得住长周期折现下溢,DCF 遇到非有限输入直接拒绝而不是返回一个负的每股价值;`.VN` 代码不再按 A 股规则撮合;回测归档不再把两次运行的产物混进同一个包;另有一轮 grounding 修复,终结了日期、有序列表、费率公式里的恒等常数以及被误读成报价的下单指令这几类误拒。感谢 @Shizoqua、@shadowinlife、@pengpengyi92、@cgycorey、@ofeksh-tr、@lorenzozanee、@AndyLongest、@zzz607、@wiliao、@jay79-boop、@Robin1987China、@Echoandelementwebsites、@zhiwuyazhe-fjr、@x-lambda、@sykuang、@straun-repo、@nstavros、@ngoanpv、@miguelangelo78、@lukiod、@jax-novita、@honginp、@he-yufeng、@fixXxerTech、@er-s-an、@daviddaco1、@birdxs、@QCYTSN、@549236606-oss 和 @1psconstructor。