机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。
Vibe-Trading:你的个人交易智能体
一条命令,让你的智能体具备完整交易研究能力
官网 · 文档 · News · Features · Shadow Account · Demo · Quick Start · Examples · API / MCP · Roadmap · Contributing
📰 新闻
⚠️ 安全警告: X 账号
VibeTrading_HKU、Virtuals 项目101845及代币合约0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4均非 Vibe-Trading 官方。我们从未发行或背书任何代币或 meme 币。请勿购买、连接钱包或签名。详细说明。
-
2026-10-27 🛠️ 组合连接与研究正确性修复(尚未发版):通过网页或 CLI 保存各连接独立的 IBKR/富途网关地址,Agent 读取也使用该地址(#1983)。Robinhood 组合读取支持账户选择、分页及股票报价;后续补修校验报价与请求代码一致,选择较新的常规/盘后成交并显示报价时间(#2054,011a555ed)。恢复 Qlib ROC/CORD 公式,严格执行影子策略声明的入场边界(#2069, #2073)。保留金融单位与数字证据,将币种声明限制在所属对象内,拒绝非有限数和布尔型金融输入,并接受普通两轮
claude-cli结构化最终回答(#2072, #2053, #2064)。以上已进入main,随下一版本发布。 -
2026-10-26 🛠️ Agent 取消、数字核验与行情正确性修复(尚未发版):停止聊天时取消执行中的 Swarm,并忽略迟到的状态事件(#2059, #2060)。恢复 Qlib BETA/RESI 的滚动 OLS 定义,允许符合条件的文档数字进入证据账本,并让
claude-cli从原生工具调用被拒绝的情况中恢复(#2062, #2058, #2048)。新增 alpha-bench 字段级数据可用性元信息,修复权重溢出、事件研究秩缩放和归因区间对齐(#2057, #2046, #2000, #2044)。同时修复 Moonshot 推理强度路由、交易日志/期权输入校验、Stooq 分类股代码、筛选器小数字段及 ST 股票板块涨跌幅限制(#2043, #2052, #2049, #2012, #1988, #1984)。以上已进入main,随下一版本发布。 -
2026-10-25 🛠️ 会话、行情与计算修复(尚未发版):删除会话时同步清除搜索记录,首条消息带附件或 Swarm 指令时也能正确更新聊天标题(#1970、#1969)。修复 CCXT 历史行情提前截断、Nobitex 日线日期及 Tiingo 分类股代码映射(#1999、#1989、#2010)。保留小额成交和图表价格精度,修正 GTJA 因子公式与 VWAP 单位,并在改变状态前拒绝含义不明的布尔参数(修复)。以上已进入
main,随下一版本发布。
更早的新闻
-
2026-10-24 🛠️ MCP、回测与搜索修复(尚未发版):MCP 加载运行时
.env,Shell 工具仍需在启动时显式启用(#1974)。报告期货默认杠杆假设(#1972),年化计算保留时间跨度中的小数天数(#1971),ddgs 返回空结果时继续尝试已启用的搜狗/Bing 备用源(修复)。 -
2026-10-23 🛠️ 模型、组合与期货修复(尚未发版):直连 MiniMax 默认使用 M3.1 Flash,并在工具调用间保留推理历史(#1936)。Longbridge 按币种展示现金及融资额度,贯通 Agent、CLI、API 和网页端(#1940)。修复全球期货路由、合约乘数与微型合约手续费,使用默认定价参数时明确告警(#1965)。同时修复组合错误信息脱敏、审计日志轮转、IC 统计、数值解析和微信附件文件冲突。详情见 CHANGELOG。
-
2026-10-22 🚀 v0.1.18 发布(发布说明,
pip install -U vibe-trading-ai):精简 Agent runtime——工具参数按需加载,大结果完整保留在运行目录中可读取,Swarm 保留新观察,用量统计覆盖压缩与中断调用;保留自动聊天标题。在 0.1.17 的验证回测上,模型调用从 12 次降到 7 次,输入 token 约为原来的五分之一。同时包含 0.1.17 之后的安全、数字校验、模拟账户与打包修复。今日已在 main 修复(下个版本发布): 临时的模型服务错误重试后不再让实盘模型决策停摆一整天;研究目标的最终回答即使超出 token 预算也会正常交付(CHANGELOG)。 -
2026-10-21 🚀 v0.1.17 发布(发布说明,
pip install -U vibe-trading-ai):自 0.1.16 以来共 638 个提交、228 个合并的 PR,另有 41 个 PR 的改动经维护者提交合入,来自 33 位贡献者。本版主角是逐日模拟交易: Agent 与 MCP 可调用paper_trade_step工具,保存的模拟账户可通过vibe-trading paper、REST API 和网页端使用;两者都按已收盘的日线撮合订单或策略,绝不触达券商,保存的账户只向前推进(#1939)。其余大部分是正确性修复,很多属于同一类问题:算不出来的值现在会如实说明,而不是变成一个看似合理的数字。 没有亏损交易时的盈利因子、无定义的相关系数和无界比率返回null,IC 样本不足的因子会被跳过并说明原因;缺失价格不再被用来拼接收益;拼错或所选引擎不使用的回测配置会在运行卡片中提示。新增: 巴西(B3)市场,Alpha Zoo 因子从 462 个增至 478 个,Slack 与 Discord 加入网页端渠道引导配置,邮件报告支持 HTML 或可设密码的 PDF,Run Detail、聊天和 Swarm 显示 Token 用量,claude-cli模型提供方,以及波斯语和土耳其语(界面共 11 种语言)。今日修复: 资金流备用源会标明实际来源,并区分总净流入与主力净流入;Telegram 配置步骤已补充说明。已于当晚随 v0.1.18 发布:mcp>=1.30修复了--transport http的 CVE-2026-59951;自定义模型地址每次连接都会重新校验,并可在 fake-IP 代理下使用;数字核验能识别run_dir/…引用和−$金额;相关性分析把北交所920xxx代码归到.BJ(CHANGELOG)。感谢 @rudycelekli, @Shizoqua, @he-yufeng, @shadowinlife, @zeus229, @alexwan02, @Jackzigen, @cgycorey, @MetaAviator, @lorenzozanee, @Mikesad, @remote-controlled-man, @Romzhou, @sambazhu, @wavebyrd, @BHhhh-123, @Bortlesboat, @bygordon130-hub, @davidalmeida90, @DrDLyuan, @Emad211, @Frank-zhu2000, @goatyyc, @hunters1011-ctrl, @incorpore, @mdb1230, @mminkus, @passionbull, @rwxyx518-prog, @ThreeTima, @tomaszkubiak-courses 和 @xaritoku! -
2026-10-20 🛠️ 回测诊断与研究正确性:对无法识别的回测配置键发出告警,将未定义的相关性显示为未知而非零,并在重新验证时复用已保存的年化因子(#1935, #1933, #1915)。同时改进因子样本检查、工具输入校验、交易日志市场分类、数值格式和企业微信流式回复。完整 14 项修复及剩余限制见 CHANGELOG。
-
2026-10-19 🛠️ 九项金融计算修复:纠正因子衰减的新旧数据权重、A 股板块涨跌幅与北交所代码识别、SEC 第四季度流量推导及事件研究估计窗口。保留富途持仓代码身份和极小 MACD/布林带数值;拒绝负特异方差,让 Yahoo 外汇代码使用对应货币对的点差与隔夜费(#1912、#1920、#1930)。完整九项修复与限制见 CHANGELOG。
-
2026-10-18 🛠️ 调度与研究可靠性:实盘调度采用共享调度内核(#1899),数字核验保留币种身份(#1905)。新增因子中性化与 PCA(#1817),修复 Swarm 事件末行未写完时的读取故障和 Matrix 最终回复丢失。详见 CHANGELOG。
-
2026-10-17 🛠️ Token 用量与研究可靠性:运行详情、聊天和 swarm 展示模型用量(#1890)。研究任务与可选后台任务采用共享调度内核(#1893),实盘调度保持不变。修复交易日志日期时间配对、证据路径、因子并列值、记忆目录、数值错误处理与渠道进度。详见 CHANGELOG。
-
2026-10-16 🛠️ 凭据安全与金融计算修复:扩大渠道及模型凭据脱敏覆盖(#1880),本地数据修改后刷新行情缓存(#1879),反向开仓手续费只计一次(#1891)。修正欧洲格式交易金额、严格 JSON、零值及负值比较、持仓周期、最低权重、平台型峰谷识别与报告路径。详见 CHANGELOG。
-
2026-10-15 🛠️ 模型费用控制与研究可靠性:实盘执行程序每次决策使用独立会话,支持可配置频率与持久化每日用量预算(#1854)。回测采用轻量预览,同时保留完整交易记录(#1853、#1865)。修正百分比证据运算、复制回测历史去重、波峰波谷信号时点、加密货币路由与凭证脱敏。范围及限制见 CHANGELOG。
-
2026-10-14 🛠️ 回测、搜索与文档读取修复:风险比率与净值导出纳入首根 K 线盈亏(#1844)。会话搜索按不同会话返回结果,保留标题并展示匹配上下文(#1827、#1834)。改进 PDF/Office 内容提取,拒绝无法解析的证据引用,并加强金融计算输入校验与凭证脱敏。
-
2026-10-13 🧩 组合导入、策略适配与研究工具:只读导入 extraETF 持仓,支持带日期的欧元估值与配置建议;适配后的子策略使用自己的回测证据(#1170、#1149)。新增经测试的自定义模型端点、共享的 Pixel Office 手动任务板、波斯语/土耳其语界面、mStock 只读查询及聚源研究数据。 修正按结算币种记账、富途市场选择与成本口径、港股逐标的每手股数、已保存的验证参数和运行进度;完成声明式数值核验与 Agent 循环拆分。mStock 暂不纳入组合汇总,Robinhood 期权执行仍不可用。范围与限制见 CHANGELOG。
-
2026-10-12 🧮 研究与回测更新:修正开仓成交、清仓时归因、回撤时长、估值容差及因子 IC 的 SEC 财报可见时点(#1780–#1794)。新增 13 个基本面/估值因子、巴西数据与回测、需显式启用的 ZimaOS 模板,以及飞书运行进度。范围与数据限制见 CHANGELOG。
-
2026-10-11 🛠️ 五项优先修复:派生数字的每个数据操作数都须有证据,不支持的实盘期权继续拦截。离线基准保持指定数据源,交易记录区分零盈亏平仓,Codex 工具保留可选参数(#1622、#1779、#1781、#1785)。
-
2026-10-10 🛠️ Slack/Discord 配置与可复现研究:本地化配置表单可测试机器人凭证,测试不会保存改动(#1764、#1777)。组合研究可复用不可变快照,Web 可导出脱敏 JSON(#1769)。技术指标报告日期边界和输入指纹;损坏的会话记录可恢复且不重写原文件。另修复记忆召回、凭证脱敏和交易流水格式识别。详见 CHANGELOG。
-
2026-10-09 🛠️ 渠道设置与回测修正:原地更新渠道设置时保留 URL 内嵌凭证和微信认证后的服务地址,Web 以九种语言说明保存与重启结果(#1737、#1742、#1744)。跨市场期权波动率仅使用截至当前时点的时间戳,回撤纳入初始资金。修正加密货币/贵金属数据源路由、港股重复识别、缓存恢复、科学计数金额解析及缺失净值验证;mootdx 移出默认 A 股链。全部十三项 PR 见 CHANGELOG。
-
2026-10-08 🔐 PDF 报告密码保护与券商读取修复:定时邮件 PDF 可选 AES-256 密码保护,覆盖 Web、CLI 模板和 Agent 确认入口;密码只保存在渠道私有配置中(#1709)。KIS 读取三个交易场所的订单,明确过期的 token 只刷新一次,不完整的读取返回错误(#1726)。派生公式保留说明标签之后的完整算式,证据核验规则保持不变(#1728)。
-
2026-10-07 🛠️ 研究连续性与风险指标修正:运行状态移出系统提示词,保留稳定前缀以利于缓存(#1708)。跨市场日期正确对齐,缺失价格不再拼接跨期收益,期权 Sortino 按全样本计算下行偏差(#1710、#1717、#1727)。数据源测试共用 OHLCV 契约,并修正信用估值、风格敞口、滚动验证和审计诊断。
-
2026-10-06 🛠️ 实盘控制与报告纠错修复:停止实盘运行会取消当前分析并等待调度器完成清理,覆盖启动期间取消及 API 关闭,运行状态时间单位也已修正(#1704)。紧急撤单/平仓扫描跳过异常记录,继续处理其余订单和持仓(#1703);不同券商的调度独立保存,持久化正确处理并发写入与短写入。美股半日交易遵循提前收市时间(#1706)。报告纠错保留已核验通过的数字,反馈截断也不会暗示未列出的数字已通过(#1702)。
-
2026-10-05 🛠️ 研究输入与计算修复:聊天支持更长的研究输入,超限时以当前语言提示缩短(#1701)。回测 Sortino 使用全样本下行偏差;分组验证剔除重叠标签,协方差权重保持有限,影子账户 RSI 使用 Wilder 初始均值,记忆支持按文件名删除。 报告误用调用别名时,纠正提示提供真实字段引用(#1638),数值校验保持不变。
-
2026-10-04 🛠️ 定时报告与研究流程完善:定时任务支持编辑并选择已配置的交付目标,邮件报告可选 HTML 或 PDF 附件(#1649, #1680)。 回测提供结构化摘要与产物分页读取(#1646, #1647);同时修复记忆搜索片段、导出路径提示、宏观数据截断说明、月线风险、反向持仓及清仓后重新入场的换手率、隐含波动率精度、VaR 缺口、源码安装更新,以及 Robinhood 不受支持的期权下单拦截。
-
2026-10-03 🛠️ 研究、报告与数据可靠性修复:修复中文、日文和韩文会话搜索、渠道设置、券商持仓估值与文件写入中阻碍日常使用的问题。PDF 交付嵌入中日韩字体,Swarm 校验预设输入并隔离各任务产物,回放的工具结果在上下文压缩后仍可用(#1683, #1455, #1635)。回测保持一致复权口径,本地缓存区分数据来源,单资产上限与周/月风险计算遵循声明设置,审计保留亏损符号,数值核验绑定本次引擎输出及准确列表引用,Stooq 拒绝冷却后允许重试(#1684, #1650, #1685, #1640)。
-
2026-10-02 🛠️ 回测与报告核验修复:策略文件写入保留模型来源,不再崩溃 (#1673);蒙特卡洛回撤与 Sharpe 计算纳入初始资金 (#1664)。报告审计保留会计括号负数及单位 (#1663),数值核验制品记录已触发的声明式检查 (#1661),公开数据源健康报告附带脱敏后的失败原因 (#1643)。印尼语工具文档与注册表同步 (#1671)。
-
2026-10-01 ✅ 数据正确性与可复现回测:A 股复权转换拒绝有歧义的单根 K 线边界 (#1551);南向东财金额按百万港元缩放,失败响应不再被当作空数据 (#1486);北向备用源区分 2024-08-19 后的成交额与净流入 (#1484)。币安未定价持仓标记为不完整,不影响其他券商 (#1505);回测运行卡记录模型来源,并提示训练截止日期未知或不在回测区间内 (#1618)。
-
2026-09-30 🛠️ 飞书进入 Web UI、一个读到当天价格的动量因子,以及从未亏损的回测的盈利因子:飞书加入引导式频道配置,提供独立的连接测试,热重载时会关闭旧的 WebSocket(#1572)。
academic_carhart_mom原本用 12 个月收益减去 1 个月收益,结果随当天收盘价变动;现在改为从 12 个月前到 1 个月前的收益(#1578)。没有亏损交易的回测,盈利因子现在记为未定义,而不是会把它排到最后的 0.0(#1602)。Stooq 的反爬页面现在会让本进程后续请求全部停下,而不只是记一条日志(#1637);MCP 工具结果只传给 agent 一份,不再重复最多四次(#1634);loop.py拆出第一个独立模块(#1636)。 -
2026-09-29 🚀 v0.1.16 发布 (发布说明,
pip install -U vibe-trading-ai):自 0.1.15 以来共 492 个提交、116 个合并的 PR,来自 16 位贡献者。这一版的主题是:每个数字都能说明自己从哪里来。 数字核验不再根据数字旁边的文字去猜它是什么:模型为每个数字声明角色(observed / derived / proposed / cited / count),核验层对照本会话的工具结果逐个检查,核不上的数字单独删去,而不是整篇回答被拒。回测自己的输出——Sortino、换手、权重、蒙特卡洛 p 值,不只是夏普——现在都能用来核对关于它的报告;运行卡只在与保存的 CSV 一致时才引用某个指标。长研究任务不再丢失已取到的数据:上下文压缩按各模型的真实窗口计算,不再用固定的 40K 估算。缺失数据的清查又覆盖了 59 个因子。本版还修复了用户反馈的问题: 失败的运行保留步骤,停止说明写明是哪个调用没有产出;read_file会说明能读哪里,模型不再反复猜路径直到「无进展」停止;Codex 下中途插入的指令不再覆盖系统提示,推理内容跨轮保留,默认模型改为gpt-6-sol;get_market_data遇到不带后缀的美股代码会提示改用AAPL.US,不再返回空数据。新增: 阿根廷(BYMA)市场、周线和月线、印尼语界面、恒生聚源、OpenCode、邮件与 WebSocket 通道、在网页端配置即时通讯通道,以及韩国投资证券(KIS)、Upbit、Toss 证券和 Scalable Capital 连接器,券商总数达到 18 家。感谢 @Shizoqua, @zeus229, @cgycorey, @shadowinlife, @lorenzozanee, @he-yufeng, @chiww, @as950118, @woshi77777stars, @Yoruxyv, @sambazhu, @0xouzm, @tingkk, @tonydo, @alanwilhelm 和 @modelpath-dev! -
2026-09-28 🛠️ 数据源健康检查与券商能力透明化:定时检查通过有时限、不携带凭据的公开数据源探测报告连接故障和数据异常(#1627);BaoStock socket 请求增加超时控制,并串行隔离并发会话(#1615)。Copilot 凭据查询在短期缓存到期后重新读取(#1619)。自动生成的券商矩阵分别列出各 profile 的模拟盘/实盘权限,明确区分能力声明与运行验证(#1629)。 数值核验与 MT5 补充修复:保留证据中的显式标的及精确字段引用,本地化数字分组沿用既有数值容差(#1584、#1586、#1588);纯文本纠错受次数限制(#1600)。MT5 搜索使用指定终端,拒绝歧义券商后缀;回测沙箱只接收校验后的终端连接设置(#1597、#1598)。
-
2026-09-27 🛠️ 可复核的运行卡片与更可靠的研究流程:运行卡片在 JSON、Markdown 和运行详情页展示回测执行哈希记录及已核验的指标 CSV 引用(#1612)。GTJA 高低点远近因子修正计日与并列极值处理(#1604),印度市场回测平空仓按买入方向检查涨跌停(#1608)。token 用量可读,同时不放行任意凭据字符串(#1606);异常 MCP schema 保留对象属性(#1607);即时下单目标检查不再误拦研究问题(#1605)。配置文档明确默认使用 OpenRouter(#1609)。
-
2026-09-26 🛠️ 指标计算与交易限额更可靠:技术指标保留观测日期,并能恢复对话压缩时移除的结果,避免重复取数(#1590、#1601)。Qlib158 的五个 WVMA 窗口统一使用绝对收益率计算分子(#1594);Benford 检查在数值边界也能保留正确首位数字(#1591)。明确设为零的敞口上限保持为零(#1593),Dhan 模拟订单拒绝小数及无效数量,不再因舍入丢失输入精度(#1595)。无效的可选数值环境变量回退到默认值,显式配置约束仍然生效(#1592)。运行时触发器修复字段默认值,并保留子类工厂的正确行为(#1599)。
-
2026-09-25 🛠️ 研究会话与频道诊断更可靠:回测 CSV 中的文本列不再导致数值指标整行丢失(#1579),对话压缩的保留消息预算现在计入推理内容(#1582)。频道加载失败时会正确记录异常(#1580);Telegram 指南澄清了 CLI 与 Web 控件共享同一个 API 运行时(#1583)。Robinhood 持仓读取拒绝格式错误的购买力对象,同时保留缺失或空值为未知(#1526)。离开聊天页面时也会取消未执行的历史消息滚动定时器。感谢 @Shizoqua 和 @lorenzozanee!
-
2026-09-24 💱 美元标的被按比索记账、Email 与 WebSocket 进入 Web UI,以及一次 SDK 升级引发的 CI 故障:BYMA 和多伦多交易所在本币标的之外还挂有美元报价的标的(GGALD.BA、DLR-U.TO),阿根廷或加拿大回测却把它们放进唯一的比索或加元资金池计价。现在加载器只接纳以本市场货币报价的标的,与 LSE 标的的既有规则一致;其他由数据源声明的报价货币随数据一起传递,回答写出的就是正确的货币(#1576)。港股的人民币柜台和美元柜台(80700.HK、9834.HK)在港交所有各自的代码区间,出于同样原因不再进入港股回测,并按其本身的货币报价。个股概况在发行人基本面之外给出该上市标的自己的交易所与货币(#1577),grounding 与标的搜索认识数据层支持的每个市场(#1575),
technical_indicators返回成交量时附上数据源声明的单位——手或股,相差 100 倍(#1571)。Email 与 WebSocket 加入引导式频道配置,邮件服务器证书现在会被校验,设置写入也不再接受跨站页面的请求,不走 SSL 的 IMAP 登录也会先用 STARTTLS 加密再发送密码(#1544)。修复: openai 3.19.2 下显式的 provider 请求头会被环境里的同名头挤掉,曾让所有 PR 的 CI 变红(#1568);来自微秒精度数据源的回测被标成 1970 年(#1560);明摆着是下单指令的研究目标重新被拒绝(#1562);strict bench 的样本外切分可能让一侧为空(#1559);HRP 标签对齐、交叉验证标签顺序和量化输入里的非有限值(#1555、#1556、#1557、#1558);影子账户过度交易的时间窗口(#1563);以及按日而非按年计算的资产增长率(#1564)。感谢 @Shizoqua、@zeus229 和 @shadowinlife! -
2026-09-23 🇦🇷 阿根廷标的、方向反了的空头仓位定权,以及尾部风险闸门的最后一半:
.BA(BYMA 股票与 CEDEAR)作为独立的 ARS 市场走 Yahoo,Web UI 也按普通市场分组和显示;阿根廷回测在 BYMA 执行规则建模之前仍然直接拒绝,不套用别的市场假设(#1543)。均值方差和考虑换手的优化器把每个仓位都按做多打分,于是最好的空头拿到最少资金。两者现在按仓位收益定权:两只正相关标的一多一空是互相对冲,而不是读成同向相关——在相关性 +0.92 的一对上,旧目标函数把全部资金压在多头,新的分成 0.51 / -0.49(#1548)。另外,一旦一次会话里出现多于一个尾部风险口径(VaR 与 ES,或 95% 与 99%),尾部风险数字必须指明自己的字段,ES 95% 再也不能借用 VaR 95% 的数值(#1425)。修复:蒙特卡洛校验按交易场所的年 bar 数折算,而不是硬编码 252,同一份报告里的夏普不再自相矛盾(#1546);负价 bar 上的期货下单不再被整单拒绝(#1547);基准 IC 为负时因子的 IC ratio 留空,不再把真实衰减读成健康改善(#1549);同名但类型不同的两条记忆各自保留索引行和链接目标(#1545)。感谢 @zeus229、@Shizoqua 和 @he-yufeng! -
2026-09-22 📅 周线和月线;上下文压缩后的结果重放曾可能让证据丢失:
get_market_data和回测支持1W、1M(09-20 起为防止1M被当成一分钟而拒绝)。各数据源仍按日线取数,周/月 bar 由日线合成,日期为该周或该月最后一个交易日,21 个月的月度复盘一次调用即得 21 根 bar(#1479)。价格指数统一标为不复权,不再按数据源对个股的复权方式打标(#1541)。被上下文压缩清掉的只读工具结果从本次运行的缓存中恢复,不再重复拉取;每次运行有上限,任何写操作都会清空缓存,重新生成的文件会被重新读取(#1488)。用字段 ref 声明的尾部风险数字会对照该字段核验,把 95% 的值写成 VaR 99% 会被拦下(#1444)。QVeris 拒绝个股和 ETF 的 bar(它按搜索排名挑选的数据源说不清复权口径),也拒绝按结果计价的报价(#1494)。感谢 @sambazhu, @zeus229, @he-yufeng, @jw232 and @cgycorey! -
2026-09-22 💸 资金费把现金扣成负数后回测中止;另有三个工具把被拒绝的查询当成没有数据:加密货币的资金费可能把可用现金扣到负数,此时策略想开的下一个仓位连「一股不开」都放不下,回测就以「planned order … exceeds available capital」(或「insufficient capital for position rebalance」)中止。现在这笔开仓会被跳过,并只记一次
insufficient_capital;同一根 bar 的减仓照常执行;亏损超过保证金的平仓仍按原规则整根 bar 中止(#1542)。大宗交易、融资融券和财务报表现在也能区分「东方财富拒绝了过时的查询」和「确实没有数据」,与股东户数、龙虎榜、限售解禁共用同一个判定。西班牙语、德语等以逗号作小数点的回答,现在也能把17,93 %、1.410,00 CNY与工具结果核对;而像1400,1777这样没有空格的两个数仍按两个数处理,数字须按其书写精度与证据一致(#1517)。感谢 @turtle696966969696 提供精确到分的复现,也感谢 @zeus229! -
2026-09-21 🔌 IM 频道可在 Web UI 里配置;24 个 alpha 曾用缺失的那根 K 线算出数值:设置页现在可以逐个编辑 IM 频道:密钥只显示掩码,未保存的表单也能先测连接,保存后只热替换这一个频道、无需重启;钉钉和 QQ 提供分步引导(#1520、#1529),所有适配器改回标准库日志,过去被
{}占位符吞掉的诊断信息重新进入日志(#1533)。Alpha Zoo 里,比较的一侧因窗口含缺失 K 线而为 NaN 时结果是 False,会输出一个常数;#1463 的扫描只把那根 K 线挪动一个 tick,看不到这种情况。改用“有缺口 vs 无缺口”对比后又找出 24 个 alpha,现在按输入的回看范围屏蔽,完整数据上本就无定义的相关系数保持原来的判定(#1523、#1534、#1463)。数据:限售解禁的free_shares改为真正的解禁数量,而不是流通股本(#1513);龙虎榜席位按上榜原因分别排名(#1512);股东户数返回真实的历史期数(#1518);腾讯、东方财富和 AKShare 的 A 股前复权标记为分红加法调整(#1497);恒生聚源作为需 token 的 A 股数据源加入回退链(#1474);组合估值支持任意 ISO-4217 币种,缺汇率时只让该来源失败而非整张快照(#1510);connector account正确显示 Binance、富途和 Trading 212 的余额(#1539)。新增:印尼语界面与 README(#1482)。移除:Requesty provider,改用openrouter并指向其 base URL。感谢 @shadowinlife, @he-yufeng, @Shizoqua, @lorenzozanee, @cgycorey, @zeus229, @sambazhu, @Yoruxyv and @jastincheis! -
2026-09-20 🛠️ 行情请求更明确,日常交互更可靠:月线
1M请求现在明确报不支持,不再悄悄返回一分钟 K 线(#1487);周线和月线支持仍由 #1479 跟踪。欢迎页快捷操作会高亮实际选中项(#1500);钉钉下载文件名会清理路径字符(#1506);Signal 不再因 emoji 后的提及偏移而误删文字(#1478);信用利差表把5/5.0等相同期限合并为一列(#1507)。 -
2026-09-19 🛠️ 被误报成“无披露”或错误来源的数据问题:修正上游改名字段,恢复 A 股股东户数查询;接口拒绝请求时直接报告原因,不再误称股票没有披露(#1490)。请求的 SDK 不可用而发生降级时,行情来源现在逐股票记录实际提供数据的 loader,降级标记和复权口径也随之匹配(#1491)。QVeris 不再把
indicators覆盖成结束日期(#1496);复权选择、复权响应解析及计费问题仍由 #1494 跟踪。感谢 @cgycorey 和 @lorenzozanee! -
2026-09-18 ✂️ 放行稿里连表格序号都被略去,以及一笔买不起的单被记成 26 次拒绝:grounding 闸门把未核实的数字切掉后放行回答时,一张排名表回来,序号 1、2、3、表头里的
12m、正文里的「3 names」全被换成了(omitted※)。原因是表格单元格里的任何整数都被当作测量值,而每个被切掉的数字,其数字串还会在全文里再被清扫一遍。现在,给行编号的那一列算结构;单元格里与文字并列的普通整数按它在句子里的方式处理;清扫不再以一位数为键;编造的收益率和估值倍数照切不误(#1471)。hold模式下,把一篮子开仓按可用现金等比缩小的搜索,每一步都会记一次zero_size拒绝,于是一张现金买不起的合约被报成 26 次手数取整失败;现在只记一次insufficient_capital(#1470)。修复: 回测里的local:代码只从你自己的数据集读取,读不到就拒绝,绝不用网络数据源来补(#1467);事件研究的 CAR 标准误现在计入了共用估计参数的各日预测之间的协方差——估计窗口为 30 天时,零事件下标准化 CAR 的方差此前为 1.41–1.46,现在是 1.07–1.08(#1466);真实的historical_var/parametric_var结果现在能为它返回的 VaR 提供依据(#1464);20 个因子不再用常数填补缺失的 K 线,递归平滑类因子则按一条已写明并有测试的规则跳过缺口继续计算(#1463)。同日稍后: 用默认配置(LANGCHAIN_PROVIDER=openai)跑gpt-5.6-terra,第一次调用工具就失败:Chat Completions 对gpt-5.6系列拒绝带 function tools 的请求,除非 reasoning effort 设为none。适配器现在会把这样的请求改到/v1/responses重试一次,推理保留,并为该模型记住这条路线(#1473)。新增: OpenCode Go / Zen 成为内置的opencode提供商,会带上中继要求的x-opencode-session,compaction 线程里也一样(#1416,关闭 #1415)。合并: 被记忆 GC 归档的条目不再同时交给压缩(#1450);Patell z 对每种正常收益模型使用其自身的自由度(#1449);微观结构估计量遇到 NaN 或无穷输入会拒绝,而不是返回零价差(#1451);声明为绝不回落到网络的数据源,按标的补缺时也守住这个承诺(#1441);回测在年化前会把声明的周期和实际拿到的 K 线间距比对,声明成1H的日线文件不再按小时频率年化,周线文件按 52 年化(#1432)。感谢 @5gaLbt 和 @turtle696966969696 的反馈,以及 @tonydo、@Shizoqua 和 @chiww 的修复! -
2026-09-17 🔐 一个登录下有多个 Robinhood 账户,以及测试全绿、实盘却拒绝每一单的闸门:Robinhood 现在可以作为只读持仓来源,只读取你从 Robinhood 自己的账户列表中选定的那一个账户,不做任何预选(#1428);实盘交易也用同样的方式把每份授权绑定到一个账户(#1442)。此前 runner 和下单前闸门调用 Robinhood 时不带账户,读回包还少解了一层,于是每次对账都中止、每一单都被拒;测试却一直是绿的,因为测试里伪造的回包形状 Robinhood 从来不会返回。持仓在报价回包完成映射前暂不计价。修复: swarm worker 在每个写出总结的退出路径上都会保存消息日志(#1439);qlib158 的上涨日、下跌日计数不再把缺失的收盘价算作平盘日(#1459);策略衰减检查不再把无穷大的 Sharpe 判为健康(#1447);自定义因子库目录不再在整个进程里顶替同名的内置因子(#1468)。感谢 @balu1866 提供回包结构,也感谢 @cgycorey 和 @0xouzm!
-
2026-09-16 🧪 四个都会给出「看似合理」数字的数值错误:情绪词典把 "low" 同时算作看多词和看空词,一出现就自我抵消(#1448);头肩形态检测用带符号的肩部均值做分母,负值序列上明显不对称的两肩也能通过对称性检查(#1456);期权引擎的年化比共享指标少算一根 bar,放大了短回测的年化值(#1458);copula 伪观测把缺失值排成最大值,并给相同的值分配任意的不同秩(#1453)。感谢 @Shizoqua。
-
2026-09-15 🧮 靠数字旁边的词来判断数字是什么的 grounding 闸门:每个行情回答发布前都要过的这道检查,过去靠一份措辞目录判断一个数是价格、目标价还是指标——65 条正则,每多一种说法就多一个修复提交,同一句话和它的译文还可能得到不同判决。现在由模型在读者看不到的
figures块里声明每个数字的身份(observed、derived、proposed、cited、count),闸门只看数字的形状,并逐条对照本会话的工具结果核实。被拒的回答会收到一轮修正提示,逐个列出不通过的数字和最接近的观测价;第二稿仍不通过时只裁掉这几个数字((略※))再发布,不再整篇换成固定的拒答——拒答只保留给标的识别有问题、或一个价格都没取到的运行。等待期间,聊天页用 8 种语言显示「正在核对答案中的数字」。发布前经过三轮对抗式审查和真实模型运行,补上了小数逗号、像年份的价格、未标语言的代码块、千元级标的的整数价格、被标成计数的价格,以及未核实数字提前流式输出。元数据计数和指标名里的词不再能证明指标,多个指标写在同一句里也不再被误拒(#1418、#1420、#1421、#1426、#1433)。感谢 @zeus229、@he-yufeng 和 @5gaLbt! -
2026-09-14 🇰🇷 被当成永续合约回测的 A 股,以及模型能传却永远不生效的 swarm 参数:所有没有专用分支的 A 股数据源——
local、tencent、eastmoney、baostock、mootdx、sina——都把纯 A 股组合路由到了加密货币引擎:它不施加任何 A 股规则(印花税、T+1、涨跌停、100 股一手),却会按每 8 小时对持仓收取永续合约资金费。回测照样成功、指标内部自洽,这正是它危险的地方;现在纯 A 股组合从任何数据源都会进入ChinaAEngine(#1431)。另外,swarm worker 会把每个工具调用的run_dir覆盖为 agent 工作区,于是对声明了该参数的工具——首当其冲是backtest——模型传什么目录都读不到,而报错里也不写路径。声明的run_dir现在在工作区内照传入值生效、越界则拒绝并写明边界,backtest 工具也会说明它检查的是哪个目录(#1430、#1429)。新增:四个连接器同时落地,计数达到 18——KIS(한국투자증권;独立主机上的真实 모의투자 模拟盘,外加只读实盘)、Upbit(韩元加密货币;模拟盘 + 只读实盘,因交易所不提供模拟/实盘判别而封顶)、Toss Securities(只读实盘;已结订单历史分页读到底、超过上限直接拒绝而不是截断;读取路径已用真实账户验证)以及 Scalable Capital 的 Agentic MCP——完全只读的 profile,显式工具白名单,不带任何下单能力(#1407、#1408、#1409、#1417)。修复:共享的 SDK 诊断信息让每家券商的用户都去检查 Longbridge;现在八种语言都会指向出问题券商自己的 SDK 或网关(#1436)。感谢 @chiww、@cgycorey、@as950118、@dudco 和 @tingkk! -
2026-09-13 🗂️ 形状不对的券商返回被当成空账户,以及从未进入运行卡片的诊断信息:portfolio 层读取持仓时以空列表作为默认值,于是一个根本没有持仓列表的返回——尚未做映射的 MCP 响应,或者 IBKR 官方 MCP 没有给出结构化持仓的时候——就成了一个“什么都不持有”的数据源,快照还被记为完整。这正是聚合层要杜绝的“悄悄变小的组合”,所以现在没有持仓列表的读数一律拒绝:该数据源显示为错误、快照标记为不完整,而真正为空的账户(
"positions": [])仍按空账户读取。这个问题是在审查一个持仓尚未映射的新 MCP 连接器时发现的。另外,运行卡片(run card)只保留标量指标,引擎专门写给卡片读者的字典或列表型诊断全被丢弃——读者能看到有多少个计划被拒,却看不到是哪个标的、因为什么。这些指标现在放进structured_metrics块,每个指标上限 4 KiB(UTF-8 JSON),超出的在_omitted下列出名字,并在 Run Card 标签页以全部八种语言显示(#1424)。感谢 @cgycorey! -
2026-09-12 📥 看起来像持仓的分红行,以及错放一个分隔符就差一千倍的数字格式:extraETF 的 CSV 导出现在可以读成 portfolio 层的持仓结构——只读、只用标准库,任何不靠猜测就读不出来的内容一律拒绝(#1406,推进 #1170)。Investments 导出读成持仓,Transaktionen 导出读成带类型的变动记录,所以自带数量和价格的
Dividende(分红)行永远不会被当成持仓,交易流水文件也无法冒充一个空组合。数字严格按导出的德语格式解析:1.386,608是 1386.608;美式顺序的1,234.56直接拒绝,而不是读偏一千倍;超出 8 位小数传输精度的值拒绝而不是四舍五入——否则0,000000004股会变成 0。未知表头(报错会列出两套已知列名)、未知交易标签、没有标的的变动、同一 Portfolio ID 下重复出现的同一标的都会被拒;而同一 ISIN 出现在两个 Portfolio ID 下——多组合导出的正常情形——仍保留为两条持仓。导出本身没有快照日期,所以文件修改时间以source_mtime报告,没有任何一条持仓声称自己有观测时间。目前还没有调用方,下一步是接入 portfolio 容器。感谢 @cgycorey 和 @KaiLuettmann! -
2026-09-11 📉 请求八年的腾讯行情只拿回最后两年,以及一个把智能体自己跑的每一次回测都拒之门外的证据闸门:腾讯
fqkline接口对一个时间窗返回的是最后 500 根 K 线而不是最前面的——请求沪深 300 的2018-01-01..2026-06-30,拿到的是2024-06-06..2026-06-30——而 loader 却向前翻页,一页之后就越过了窗口,返回一段只有尾部的序列,退出码 0、没有任何警告。现在它从结束日期向后翻页,遇到空页先重新请求一次再相信,把错误形态的响应当作失败,并提升 loader 缓存版本,旧翻页方式缓存下来的序列不会再被读出 (#1411,关闭 #1410)。refresh_strategy_evidence会拒绝backtest工具产生的每一次运行,因为入库闸门读取的state.json只有智能体运行时才会写;现在工具自己记录成功、失败和超时,闸门对无人背书的运行依然 fail-closed (#1413,关闭 #1412)。冷启动时并发的行情请求,可能对完全可用的标的返回_unresolved:loader 注册表在导入执行之前就把自己标记为已初始化,于是同时到来的首批调用者看到的是空注册表——报告者的实测里 8 个中有 7 个 (#1405,关闭 #1403)。swarm worker 文档里写明作为白名单的skills:列表,现在由load_skill真正执行,而不再只写在提示词里 (#1414);相关性分析 skill 的 Engle-Granger 示例遇到无名序列会崩溃,现在改为调用经过测试的 quantlib 函数,而不是自己再拟合一遍 OLS (#1404)。还有一个是我们自己的:13 个保存 API 密钥的券商配置文件——alpaca.json、zerodha.json等——不在.gitignore里,尽管那段注释声称已经覆盖;对于把VIBE_TRADING_HOME设为仓库目录的人,离把凭据提交进去只差一次git add -A。现在由测试从代码推导这份清单。另一个同样是我们自己的:Zerodha、Dhan、Shoonya 的 paper 连接器在本地模拟下单,读取的却是真实账户,而撤单对任何订单号都回报成功——包括一张真实挂单,而它其实仍在生效;现在只接受模拟器自己签发的订单号。感谢 @shadowinlife、@alanwilhelm 和 @Shizoqua! -
2026-09-10 🧾 一条照做不生效的排障提示,以及一个穿着父策略签字的衍生策略:stooq 返回反爬验证页时,loader 会告诉运维如何绕开——但这条建议的两半按原文都走不通。
VIBE_TRADING_MARKET_DATA_ORDER_*根本没有任何地方读取:registry 构造的是MARKET_DATA_ORDER_<MARKET>,配置层把它交给裸的os.getenv,所以照着导出是静默空操作,stooq 依旧稳坐美股数据链第 2 位。另一半"把 stooq 从链里去掉"会被直接拒绝——覆盖值必须是默认链的排列,所以一个数据源可以改顺序但不能移除。现在这条提示写的是 registry 真正读取的变量名,并说明了排列约束,且钉在 registry 上而非硬编码字面量,不会再漂 (#1402)。另外,描述驱动的策略适配落了第一半:适配产物是一个新制品,通过derived_from指向父策略;描述可以改 universe、名称和仓位方式,信号原样拷贝;子制品的证据从空开始,数字来自它自己的回测而不是继承父策略的 (#1391,关联 #1149)。合入过程中补掉两个缺口,二者都只比这个 PR 想守的规则隔了一个字段。dataclasses.replace会拷贝调用里没点名的每一个字段,于是子制品出来是UNVALIDATED,却仍带着父策略的validator和approver——一份从未挣得的独立签字——外加一个artifact_version和一个model_version,而对应的代码还没有任何模型生成过。以及父证据闸门只有测试能碰到:register_adaptation从不查它,所以证据过期或不足的父策略照写不误,与这套底座对外宣称的行为相反。现在闸门的入参是关键字且必填,忘记调用这件事本身已经不可能。感谢 @chiww 和 @modelpath-dev! -
2026-09-09 🚀 v0.1.15 发布 (发布说明,
pip install -U vibe-trading-ai):自 0.1.14 起 551 个 commit、162 个已合并 PR,来自 35 位贡献者。这一轮的主题是「数据要讲清楚自己是什么」——而其中三个最大的修复其实是同一个 bug 换了三身衣服:一个默认值把缺失悄悄替换成看起来合理的数,而这个数在下游与真实观测完全无法区分。Alpha Zoo 的 NaN 契约从各个 alpha 内部上移到了 registry:用np.where对比较式分支的 alpha 永远看不到 NaN——比较结果是False——于是把某一根 bar 上所有声明输入置空之后,462 个 alpha 里仍有 84 个照样返回了数字,而dropna()正是把缺口挡在 IC 之外的机制,所以这些常数都被当成真实信号消费了。现在 registry 会在任一声明依赖缺失的 bar 上把输出掩成 NaN,同一套扫描之后一个都不剩(#1377,关闭 #1376)。warmup 那一半明确留开而不是悄悄带过:仍有 52 个 alpha 在自己声明的min_warmup_bars之内就出值,而 registry 级的 warmup 掩码会连带把「只是把窗口多声明了两三根」的 alpha 也一起抹掉,所以这一半需要的是一个方向决策,而不是 52 个 PR。同一类的第二例:pandas 至今仍把pct_change()默认为前向填充,于是一根缺失的收盘价变成一个从未发生过的 0.0% 收益;四个 PR 各修了一个调用点,而穷举清查找出10 个文件里的 24 处——其中两处就在那些 PR 正在改的文件里。第三例:futures数据源链点名tushare和akshare,而两家都根本没实现期货端点,于是每一个合约都掉进了 A 股股票端点。AKShare 现在通过免 token 的新浪日线端点提供中国合约(含具体合约与主力连续,已在上期所/中金所/广期所/郑商所四家实测),而全球合约返回空、落到local,不再被当成股票定价(#1395)。价格本身现在也会标注自己所用的复权口径;口径从未对真实返回体实测过的数据源,报unknown而不是猜一个(#1317)。实盘侧新增五处 fail-closed:券商持仓查询返回 API 错误、halt sweep 中途收到错误信封、flatten 闩锁跨 runner 重启、未决 Alpaca 委托按精确 client ID 跨重启找回、以及买入限价单按「报价与限价中较差的一侧」定量(两条通路都改)。回测侧:期权信号改在下一根 bar 成交,不再用生成信号的那根 bar 的价格;期权空头腿占用保证金并按购买力把关开仓;永续资金费在 8 小时以上周期按 bar 跨度结算;超额再平衡篮子按比例缩放而不是直接中止;停牌持仓按最后成交价而非成本价估值。Agent 循环:某次会话已经成功取到财报、资金流、融资盘和研报数据,随后这些结果为腾出上下文被清除,而去重账本仍拒绝重新获取——单次运行被拦 44 次,最终对已经拿到过的数据回答「未取得基本面数据」;现在结果按精确调用身份对账,无进展预算也改为计观测而不是计活动量。打 tag 前落地的最后一批,正是上面三个主题的缩影。CL2412.NYMEX匹配不上任何符号模式——裸的带月份形式(CL2412)能匹配,带场所的形式(ES.CME)也能匹配,唯独合约真正的写法两边都不沾——于是一份美国原油合约按 T+1、不可做空、以人民币结算跑完;Tushare 自己的交易所拼法在中国侧有镜像问题,现在两半都能正确分类(#1396,关闭 #1394)。pct_change()的调用点原本是一个一个修的(#1397、#1398),之后穷举清查才找出其余;同一个默认值还藏在 TopN 选股把毫无因子观测的标的照样排名(#1399)和情绪因子对着自己填出来的零做正交化(#1400)背后。中国期货回测现在会说明哪些品种用的是通用默认值而不是表内条目——rb的真实保证金率就是 0.10,与默认值同一个数,而「查到的」不能读作「假设的」(关闭 #1393)。ML walk-forward 示例也清除了未来标签(#1392)。本轮新增: 英国股票(LSE.L/.IL,SDRT 按「只在买入侧」建模——两侧都收会把每一次往返成本高估一半)、Zerodha Kite Connect 作为第 14 家券商(因 Kite 不暴露任何运行时实盘判据,按红线封顶为模拟盘 + 只读)、只读多券商组合(Web / REST / CLI / agent 工具四条入口,刷新失败的数据源是「被排除在合计之外的错误」而不是陈旧缓存)、Quant Library 新增 15 项(Heston、层次风险平价、Copula、VPIN/Roll/Amihud/Kyle 微观结构、含有限差分希腊字母的障碍期权、ISDA CDS、关键利率久期、Vasicek、因子 IC、Ornstein-Uhlenbeck、Ulcer/Pain、事件研究检验、分组净化交叉验证)、巴西葡萄牙语成为第 8 种语言、只读的 Nobitex 与 Wallex、日历触发的部分再平衡、swarm 重放与重试,以及一套离线 evals 校验器——所需插桩缺失时它输出NOT_EVALUABLE而不是判过。感谢本轮全部 35 位贡献者! -
2026-09-08 🧪 在输入为空的那根 bar 上照样打印出数字的因子,以及一次返回瑞典比特币 ETP 的现货黄金搜索:Alpha Zoo 的契约是让 NaN 穿过 warmup 与缺失数据,但用
np.where比较分支的因子永远看不到 NaN —— 比较结果是False,三元表达式于是落到它的常量分支。把 462 个因子逐一测过,在某根 bar 上清空其申报的全部输入后,仍有 84 个因子照样给出数字;而把缺口挡在 IC 之外的正是dropna(),所以这些常量被当成真实信号消费掉了。守卫现在放在 registry 而不是每个因子里 —— 只要该 bar 上有申报依赖缺失,输出就被置为 NaN —— 同一套测量在修复后一个都测不出来(#1377,关闭 #1376)。契约的另一半 warmup 窗口也修了 11 个因子(#1379、#1380、#1381、#1382、#1383)—— 用同样方式测这一半,仍有 52 个因子在自己申报的min_warmup_bars之内就出值。registry 级的 warmup 屏蔽会连带清空那些只是申报保守的因子的行,所以这半边暂不合并,写在这里而不是悄悄带过。另外,search_symbol("XAUUSD")返回的唯一候选是VALOUR-BTC-0-SEK.ST—— 一只瑞典比特币 ETP —— 并就此锁定了整轮运行的标的身份;金属/外汇货币对查询现在被当作精确标的断言,只保留写法不同但两条腿相同的候选(#1282)。修复: 公告日期不带时刻,因此在日内 K 线上,一份财报从它自己公告日的第一根 bar 起就可见 —— 整整一个交易日的前视。日内帧现在直接拒绝,fundamental_subdaily="next_day"是显式的选择项(关闭 #1387)。写成通用表头| 指标 | 数值 |的指标断言能绕过在散文里会拒绝同一断言的分析闸门(#1375);镜像的错误则相反 —— 被当作公式变量使用的价格词close/SMA50 > 1被读成了断言的价格(#1378,关闭 #1354)。粘贴进来的券商代码(HK.00700、US.AAPL、SH.600519)根本扫不出符号,于是每个行情工具都回答identity_required(#1384)。三个 Archimedean copula 的 CDF 在强相依参数下返回错误的极值 —— Clayton0.0、Gumbel1.0、Frankinf—— 现在改在对数空间计算,并用 2500 位精度的参照在 θ ∈ [-5000, 5000] 上逐点校验(#1386,关闭 #1385)。超过品种手数上限的 MT5 委托会被静默截断后发出,没有限价的 eToro 限价单挂在盘上永不触发却显示为已接受,futu K 线沿用了未声明的复权口径,BTCUSDT走的是 A 股规则 —— 在一个永续合约上执行 T+1 与禁止做空(#1388)。感谢 @cgycorey、@Shizoqua、@he-yufeng、@Robin1987China、@laiyierjiangsu、@aminak58 和 @nandofmike! -
2026-09-07 🪙 一笔 50 盎司的黄金委托被静默抹成 0,以及一张按合约规模 1/2500 计价的货币期货:跨市场回测里,复合引擎每个市场只持有一个共享子引擎,但只有
apply_slippage会刷新该子引擎自己的活动品种——于是round_size和calc_commission用的是最后一次同步进去的那个品种。50 盎司黄金按外汇 1000 单位的微型手计算,直接舍成 0;黄金期货被收了股指期货的费率制手续费(6.90)而不是它自己的定额(20.00);隔夜利息也按 100000 单位的标准手而非 100 盎司的金属手计算(#1370)。另外_extract_product读不出品种码里带数字、或末位字母恰好也是月份码的合约:6EZ4、6JH25、M2K、MYM2503、FESX2503全部落到默认乘数 50——而6E的真值是 125000(#1369)。现在一律先对着乘数表按最长匹配解析,带月份的形式(M2KZ4)和前缀撞车(SILZ4与SI)一并覆盖。修复: 四个 Alpha Zoo 因子会在停牌日和自己声明的预热期内打印硬编码的 ±1 或 0——NaN 比较的结果是False而不是 NaN,三元分支于是落到常量上。min_warmup_bars只是元数据、没有任何环节会裁掉那些行,真正把缺口挡在 IC 之外的是dropna(),所以这些常量被当成真信号消费了(#1371、#1372、#1373、#1374)。用同一口径实测整个因子库,还有 82 个因子是同一形状;与其一个 PR 修一个,现在按 registry 级统一守卫记在 #1376。策略发现的证据行此前对整轮只解析一次仓位规模而不是按 regime 分别解析,且一格无法解析的基准值就能让该轮产出的全部证据行消失(#1368)。新增: 一个不断发起工具调用却拿不到新信息的运行,现在会在 8 轮后带着一条可见的恢复请求停下,而不是把整个预算耗在路径猜测上——被报告的那一次花了约 35 轮反复猜同样被拒的路径。相同调用从第二次失败起才被拒绝,而不是第一次,所以限流或超时后的一次诚实重试仍然会跑(#1363,关闭 #1353)。感谢 @Shizoqua、@be-student 和 @nandofmike! -
2026-09-06 🛡️ 按一个永远不会成交的价格计算的限价买单,以及一次什么都没核验却返回 PASS 的审计:MCP 下单闸门只用实时报价给数量单计价,于是一张两倍于市价的限价单通过了按报价计算的上限,实际可能以两倍于授权名义金额成交。现在按报价与限价中较差的一侧计价——这正是直连 SDK 路径早就在用的规则——无法解析的限价直接拒绝而不是放行(#1361)。报告审计器会跳过所有没有取到数值的核验点,然后因为"没有失败项"而返回 PASS,等于给一份毫无证据支撑的报告盖章;现在零核验点一律 fail-closed(#1362)。修复: 分析工具失败后仍能断言指标,而新加的引用豁免——对论文的夏普比率成立,对本次运行本就该观测的价格不成立——会让"分析师称 TSLA.US 最新成交价 412.35 美元。"在零工具调用下通过(#1338,关闭 #1336);一行现金分红记录会让整个交易流水解析失败(#1356);上下文压缩按工具名解除去重锁,导致清掉一个参数变体后其余变体仍被拦(#1358);哈希链合规账本在 Windows 上拒绝首次追加(#1261)。新增: Zerodha Kite Connect 使券商数达到 14 家——仅读取与模拟盘,因为 Kite 不提供运行时的模拟/实盘判别器(#1193);Nobitex 与 Wallex 带来伊朗托曼计价交易对,数据源增至 27 个,且两者都不会静默退化到美元计价的场所(#1263);原生 Anthropic 调用会缓存静态的工具与系统提示前缀,不再每轮按全价重发(#1366)。感谢 @cgycorey、@ashutoshsinghpr7、@saju01、@he-yufeng、@Emad211、@averatec0773、@birdxs 和 @AirHua-byte!
-
2026-09-05 🔓 模型编造的价格,英文放行、中文却被拦下;以及一个再也读不回自己已取数据的智能体:接地闸门只认
close不认closed,于是零工具调用的The stock closed at 412.35.直接通过,而同一句编造的中文(该股收盘 412.35。)被拒。last traded at和quoted at根本没有规则,中文侧则有镜像漏洞 ——成交价/最新价/股价/收报全部漏掉。两边词表现已补齐,英文形式必须跟 "at",成交量和并购措辞不会误判;新增测试断言两种语言对同一句给出相同判定,而不是各测各的。另一件事:某次会话成功取到了财报、资金流、融资盘和研报数据,随后这些结果为腾出上下文被清除,而去重账本仍拒绝重新获取 —— 单次运行被拦 44 次,最终对已经拿到过的数据回答"未取得基本面数据"。现在清除结果会同时解封该工具,账本按参数而非工具名计键,token 预算也真正计入工具调用参数,不再把 100 KB 负载算成十个 token(#1349、#1341、#1352,关闭 #1343)。修复: 在 aarch64 上,从 Web UI 发起的每一次回测都段错误 —— 沙箱资源限制在多线程服务进程 fork 出的子进程里执行 Python,这是 POSIX 未定义行为;现改为 exec 之后再施加(关闭 #1355)。GC=F与XAUUSD被判为 A 股(#1280);BRK.B.US等带点号的类别股取回空数据(#1351);满仓再平衡遇手续费超支时直接中止而非按比例缩放(#1344,关闭 #1274);百分点变动 ——3.6pp、3.6 个百分点、250 基点—— 被读成报价(#1346);BTCUSDT这类合并写法的加密对无法识别,而现货铂金却被解析成并不存在的加密对(#1265);策略库历史在时间戳并列时返回最旧优先(#1347);Codex 适配器丢弃了提供方上报的模型名(#1348)。新增: 对话中先前给出的市场语境可用于收窄符号解析,由VIBE_CONTEXTUAL_IDENTITY_CONSTRAINTS控制(#1269);投委会 worker 拿到其提示词本就假定存在的基本面数据面板(#1345);基于录制对比的确定性 USD-M 容差校准(#1248)。感谢 @nandofmike, @atomfive, @thisisjun786, @cgycorey, @saju01, @he-yufeng, @aminak58, @AirHua-byte, @lorenzozanee, @ethanstoner, @Shizoqua! -
2026-09-04 🩺 每一次 Claude 5 运行都在第一个请求就失败,而停牌持仓被重新按你的买入成本计价:当前 Anthropic SDK 下
langchain-anthropic会把temperature挪进extra_body,而我们的自愈只弹掉了顶层的那个键 —— 于是重试原样送回 API 刚刚拒绝的字段,claude-sonnet-5/claude-opus-5上的每一次运行都在首次调用就死掉(#1330,closes #1329)。回测里,持有超过前向填充上限的仓位会被重新按入场价计价:净值打印出一段背后没有任何市场事件的回撤,再平衡的仓位测算也跑在这个幻影价上。现在无论停牌多久都按最后成交价计价,而下单成交仍然拒绝陈旧价格(#1332,closes #1318)。修复:提交时的调整有三条路可以放宽你已批准的 mandate —— 字符串形式的数字绕过数值检查、True被当作数字通过、标的白名单根本没有比较分支;同时纯现金(cash-only)是杠杆轴的下界而不是非法类型,所以最保守的 mandate 依然提交得上去(#1285)。计时器现在能挺过切换页面、刷新和从历史里重开会话(#1340,closes #1339),前端与桌面两个 lock 文件里 7 条未修的 npm 安全通告也已打上补丁。感谢 @averatec0773、@he-yufeng 和 @Jackzigen! -
2026-09-03 📡 一个永远不会应答的数据源,以及证明不了的带日期数字:stooq 对非浏览器客户端返回一个 JavaScript 工作量证明页面 —— HTTP 200,正文是 HTML —— 而 loader 把它读成了「没有数据」,于是美股链路的第 2 位每次取数都是白跑一趟,运行日志里还什么都看不到。现在它会被识别为不可用,并给出一次性警告说明如何重排或移除该数据源(#1342,closes #1315)。另外,一个同时带着价格和日期的通用工具结果,在进入 grounding 账本的路上把日期丢了,于是带日期的表述根本没有可匹配的证据,一个本来正确的回答被拒绝;现在时间戳会被带上,而行自己的日期会覆盖从上层继承来的那个(#1333)。修复:目标证据与状态的 MCP 包装要求传入一个 goal id,而注册版工具的文档写的是可选,所以一个想表达「当前目标」的客户端只会拿到校验错误(#1331);Codex 适配器丢弃了提供方上报的 token 数,用量统计只能退回到按字符数估算(#1334)。新增:swarm 的 MCP stdio 路径拿到了真正起子进程的集成覆盖,取代原先那句「未测试」的说明(#1335)。感谢 @he-yufeng 和 @Shizoqua!
-
2026-09-02 💵 最后两个把分红记成亏损的 loader,以及一个应答者并非本人的显式数据源:FMP 和 Tiingo 仍在下发未复权 OHLC,而链上其余数据源给的是复权价——除权跳空被读成真实下跌,08-31 已为 Yahoo 修掉,现在这两个也修掉了(#1320,关闭 #1296)。同一次改动里一并订正了它们在价格口径表中的条目:已复权的行情不能盖
raw的章,否则 #1317 加的混用口径告警校验的是标签而不是数据。FMP 同时迁到 Stable 端点,显式source="fmp"现在会明确失败,而不是把别家的数字挂在 FMP 名下返回(#1276,关闭 #1270)。修复: 全角括号里的代码——公司名(代码)价格——会与它自己的数字被切开,未标源符号闸门始终看不到两者在一起(#1326,关闭 #1260);内置技能里每一条references/链接现在对 agent 和在 GitHub 上点击它的人都能解析到同一个文件(#1328)。新增: 巴西葡萄牙语作为第八种语言加入界面(#1327)。感谢 @lorenzozanee、@thisisjun786、@cgycorey、@jw232、@ethanstoner 和 @nandofmike! -
2026-09-01 🎯 期权回测按信号自己算出来的那个价格成交,而裸卖空可以卖出根本无力覆盖的权利金:日期为 T 的信号用 T 当天的收盘价和 IV 定价——这是每一次期权回测里都存在的虚假收益,不只是刻意构造的场景。信号现在改到下一根 bar 成交,空头腿按 CBOE 口径计提保证金并核对购买力(#1299、#1306)。已修复:永续资金费在日线上每天只结算一次,而引擎自己的模型是每天 3 次(#1307);1 倍杠杆的空头完全豁免强平(#1298);复合运行丢掉了印度 T+1,且每根 bar 的涨跌停判定都失效放行(#1309)。新增:每一份下发的行情都标注价格口径——复权、未复权,或诚实地标为未知——混用口径的运行会明确提示(#1317,关闭 #1301)。感谢 @he-yufeng、@cgycorey、@lorenzozanee、@guestccc!
-
2026-08-31 🧮 Yahoo 把每一次分红都记成了亏损,而你看到的再平衡次数和实际成交毫无关系:Yahoo 的两条路径都提供未做分红复权的 OHLC,而链上其余数据源给的是复权价,于是只要 Yahoo 赢下这条链,任何美股回测里的除息缺口都会被读成真实下跌。现在 OHLC 按 Yahoo 的
adjclose缩放,yfinance 路径直接请求复权序列;两边的成交量都保持原始值(#1287)。为核实这一点而实测整条链时,有个结论值得直说:sina 和 longbridge 至今仍提供完全未复权的价格,所以你落在哪个源上仍然会改变价格口径——这个缺口现由 #1301 追踪。另外,rebalance_count数的是目标权重的变化而非执行次数:一个目标恒定的 SPY/BND 策略在 1,269 笔交易的情况下只报告了 1 次再平衡。现在「请求」与「执行」是两组独立指标,后者从不可变的成交记录推导(#1281,关闭 #1275)。新增:rebalance_mask支持按日历或指定日期做部分再平衡,不必每根 bar 都调(#1277,关闭 #1273);HTML 版 alpha bench 报告现在也带上了 JSON 早就有的幸存者偏差披露,并注明成分股来源与其数据截止日(#1289)。修复: 一个符号解析失败不再拖累同批其余符号——回退链现在只重试缺失的那些,且来源信息标注每个符号实际来自哪个源(#1288);紧急停止的清仓扫描可能锁定一个它从未扫过的 episode,两个并发完成也可能互相覆盖记录(#1254);可用的富途 OpenD 连接因健康报告缺少connection_state而被显示为不可用;桌面端更新器把「权限不足」的进程探测读成了「后端已退出」(#1284);以及会话在回合中途被切到后台后,侧边栏的思考指示器会一直转到标签页关闭为止(#1257,关闭 #1256)。感谢 @he-yufeng, @cgycorey, @thisisjun786, @bonyohana, @lorenzozanee, 和 @iagop03! -
2026-08-30 🇬🇧 LSE 英股上线,不再把便士当英镑;闭市时 live trigger 也不再触发:
.L符号现在端到端打通 Yahoo → yfinance → local 行情 fallback、股票档案与财务报表、交易日志与 Shadow 消费端,以及英镑结算回测。Loader 只把.L当作交易所标识:明确标为 GBp/p 的价格除以 100,GBP 原样通过,USD、其他币种或未知币种在进入静态英镑记账层之前即被拒绝。每个符号的换算来源可完整穿过缓存往返,缓存版本也已提升,旧的不安全条目不会回流;英股执行同时采用整股数量和slippage_uk(#1206,关闭 #1205)。修复: 当所有关联市场都处于闭市时,市场触发的 live tick 会在读取券商之前停止,而仅间隔和事件驱动的通道不受此门控(#1253);Run Detail 可滚动并截断过长 prompt,切换 run 后会重新折叠(#1258);非回测 run 会转到 Studio 而不是空白 dashboard,空的交易产物数组也不再遮住有内容的trade_log(#1259)。感谢 @cgycorey、@he-yufeng 和 @iagop03! -
2026-08-29 🛑 跳过了自己动作的紧急停止开关,以及解析成另一个币的加密货币交易对:当已停机通道的券商读取失败时——适配器返回的是错误信封而不是抛异常,清仓流程把它当成订单列表来遍历——清仓流程仍然把自己标记为已触发。紧急停止开关本该执行的撤单与平仓,在那次事件里被静默跳过,也没有任何机制重试。现在只有在真正尝试过券商写入之后才会上锁,每次停机事件都会独占声明以免两个 runner 重复平仓,并且不再把包在传输层成功里的券商拒绝当作已接受(#1244)。另外,查询
ETH-USDT会返回AETHUSDT-USD——Aave Ethereum USDT,一个完全不同的资产——因为符号搜索从未覆盖交易所交易对,最终由 Yahoo 的最近似字符串胜出。现在精确交易对会对着交易所目录解析,这些目录是公开的、不需要券商账号(#1242,关闭 #1234)。新增: 内置连接器会公布机器可读的接入合同,因此vibe-trading connector setup和持仓页的连接中心共用同一套通用流程,密钥按连接分别存放在操作系统钥匙串中(#1250)。修复: 流式重试现在会逐次升级并遵守Retry-After(#1208);目标仓位不足一手而被取整为零的腿,现在会被报告出来,而不是一次都不成交却毫无提示(#1235);显式基准现在按评估窗口而不是抓取窗口计算,昨天的预热边界不再拿两段不同的时间作比较。感谢 @cgycorey、@pengpengyi92、@lorenzozanee、@goatyyc、@ethanstoner、@QG8000 和 @turtle696966969696! -
2026-08-28 📏 崩掉的回测,和悄悄多算了一年的回测:v0.1.14 上每一个跨市场回测都会崩——runner 对跨市场篮子刻意传
bars_per_year=None,而新的风险 X 光直接对它调用math.sqrt。另有两处消费者存在同样的缺口;四处现在统一走同一个按跨度推导的年化因子(#1239,closes #1237)。更安静的那个:长回看策略需要你所要求区间之前的 K 线,于是 agent 把start_date前移一年来喂 MA200——然后把这一年也算进了业绩。号称十年的回测实际报了十一年,多出那一年的成交、CAGR 和基准全被折算进去,不报错,指标之间还自洽。现在warmup_bars(或evaluation_start_date)把数据窗口和评估窗口分开:预热 K 线只用来喂指标,其余一概不碰(#1240)。新增:quantlib增加 Heston (1993) 随机波动率定价、分层风险平价、高斯与阿基米德 Copula、微观结构估计量(VPIN、Roll、Amihud、Kyle)和有限差分障碍期权 Greeks——23 个模块共 306 个经测试的函数(#1195–#1198、#1203)。修复: 8 条 skill 参考链接指向read_file打不开的路径,这些文档对 agent 一直在静默加载失败。感谢 @cgycorey、@santhreal、@turtle696966969696 和 @wanderkiller! -
2026-08-27 🛑 kill-switch 清仓扫单挺过重启,也不再轻信不稳的券商连接:halt 期间,撤单+平仓扫单把券商的任何响应都当成功——但 MCP 适配层会把失败调用转成
{"status": "error"}信封,于是一次断线就能留下一份看起来合规的审计记录,而挂单其实还活着;现在两个阶段都对错误信封 fail-closed(#1232)。扫单的「只发一次」闩锁原先只在内存里:平仓单还在飞时重启进程,会把整轮扫单重放一遍——每个持仓再来一张市价单,足以把多头账户打成净空头;闩锁现在持久化在 HALT 哨兵旁并绑定该次 halt,清除后再触发仍会重新武装(#1233)。新增:每个市场的数据源回退顺序在 Settings → Data Source Priority 里可见、可重排——热生效、按市场持久化(MARKET_DATA_ORDER_*),且只允许重排:增删数据源一律拒绝,不设覆盖时默认顺序分毫不动(#1231);Binance USD-M 对账结果落为防篡改的漂移证据产物——严格 JSON,快照不完整或来源不支持即 fail-closed,无任何下单面(#1230,推进 #1030)。感谢 @he-yufeng、@sambazhu、@honginp! -
2026-08-26 ♻️ 实盘 Alpaca 下单丢失券商响应不再是悬案;黄金回测不再零摩擦:下单闸门在写 broker 前先持久化这笔提交的所有权,恢复只认精确
client_order_id,成交按带符号仓位增量归因,任何矛盾直接 HALT——恢复路径绝不重发(#1213、#1221、#1222)。修复: 贵金属沿用外汇 pip/手数约定,黄金点差成本小了约 1460 倍、1000 盎司以下仓位被静默归零(#1226);富途 HKD 持仓被当成 USD 估值,虚高约一个 USD/HKD 汇率(#1228);Shadow Account 读的是 runner 从不产出的指标键,成功回测一律报 PnL = 0.00(#1217);流式 LLM 调用从不请求用量,swarm 输出 token 少报约 18–36 倍(#1225)。新增: Binance 只读 USD-M 账户快照(可选开启)——仅两个白名单签名读端点、无任何下单面(#1229,朝向 #1030);组合页 OAuth 重连改在受限子进程运行,不再卡死 Web 进程或占住回调端口(#1211)。感谢 @Elfsa-Miranda、@P1Piyush、@JaxonHu1024、@he-yufeng、@honginp、@goatyyc! -
2026-08-25 🛡️ 堵上实盘闸门的两个 fail-open;purged CV 不再清空测试块之间的训练集:Alpaca 空头被记成正敞口(
qty恒为绝对值、方向在side),越卖max_total_exposure_usd反而越松——现在 TAP JSON 与直连 SDK 两条路径的数量都带符号(#1209);OKX/Futu 会把被拒绝的 API 调用压平成「空账本,status: ok」,让授权闸门对着空仓评估限额——现在返回明确错误信封,闸门据此 fail-closed(#1212)。两者同属 #1207 审计路线图的 Phase 0。修复: 组合式 purged CV 把非连续测试块当成一整段、清掉它们之间的全部训练观测;现在按段独立 purge,训练集被清空的折直接抛错(#1204);信用风险函数拒绝 NaN/inf 输入,不再返回 NaN 分数或「灰色地带」结论(#1215,关闭 #1214)。新增: swarm worker 重试改为封顶 equal-jitter 退避(#1210,朝向 #1208);vibe-trading --swarm-retry <run_id>//swarm retry可重跑失败运行,--resume保留已完成任务(#1194)。感谢 @he-yufeng、@santhreal、@Robin1987China、@pengpengyi92、@SiMinus!
README 内容已截断, 请前往 GitHub 查看完整内容。
- 本文标题:Vibe-Trading - 氛围交易:您的个人交易代理
- 本文链接:https://www.cn121.com/llm/hkuds-vibe-trading.html
- 原项目:HKUDS/Vibe-Trading 版权归原作者 HKUDS 及贡献者所有
- 收录信息:本站于 2026-10-28 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站译文为其衍生内容;使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 HKUDS/Vibe-Trading。
- 翻译说明:本页正文为人工智能生成内容——由机器翻译对原项目 README 初译、经程序校验排版,可能存在错漏,请以原项目文档为准。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。