当前位置: 首页 > news >正文

收盘之后,别急着问 AI 明天涨不涨:我把一套“会核验证据的投委会”做成了 Skill

项目地址:https://github.com/AdvancingTitans/stock-analysis

下午三点,A 股收盘。

指数红了,账户却没怎么涨;新闻里说“市场情绪回暖”,自选股中却有一半还趴在水下;某个热门概念冲上板块涨幅榜,群聊里已经有人开始讨论第二天要不要追,而你隐约觉得哪里不对,却又说不清究竟是成交不足、资金过于集中,还是高位股已经开始松动。

屏幕上从来不缺数字。

缺的是一种能力:把这些数字放回同一个市场语境里,判断今天究竟发生了什么,它与你的持仓有什么关系,以及明天需要观察哪些条件,而不是急着给出一个“看多”或者“看空”的答案。

这也是我开发stock-analysis的起点。

它不是一个预测明天涨跌的水晶球,也不是把几个行情接口接到大模型之后,让 AI 即兴写一篇股评。它更像一台安静运行在 Agent 背后的市场复盘引擎:先寻找证据,核对交易日,检查字段是否完整,判断数据来自哪里;然后再把指数、板块、涨跌停结构、市场宽度、风险信号和个人持仓放进统一框架;最后才允许投资专家视角进入,形成一份有依据、有边界、也能被追溯的复盘报告。

截至本文分析时,这个技能已覆盖 A 股、港股、美股与基金,提供盘前、盘中、盘后复盘、单股与基金速览、持仓分析、证据包、数据源诊断、单专家视角、默认投委会综合和双专家对抗分析。更重要的是,这些能力已经摆脱对外部行情分析工具的运行依赖,形成了独立的数据适配、缓存、投资记忆、证据评分与报告编排体系。

一、市场从来不缺观点,真正稀缺的是“观点之前的纪律”

今天,大模型写一篇市场复盘并不难。

把上证指数、成交额、北向资金和几个新闻标题扔进提示词,不到一分钟,一篇结构完整、语气专业的报告就会出现。它可能会谈风险偏好,谈产业趋势,谈资金轮动,甚至给出仓位建议。

问题在于:报告写得像研究,不等于研究真的发生过。

指数数据是不是同一个交易日?港股行情是否因为接口延迟而缺了一天?成交额为空时,模型有没有把空值理解成缩量?板块榜抓取失败后,报告里所谓的“今日主线”究竟来自真实数据,还是来自上一轮缓存?新闻是今天的,还是历史复盘时混进来的当前新闻?当一个字段拿不到时,系统究竟会承认不知道,还是悄悄用一个看起来合理的数字填上?

金融分析最危险的错误,往往不是结论保守,而是输入看起来完整。

这类问题也不是某个项目独有。FinSphere 的研究者在讨论股票分析 Agent 时,就把“分析深度不足”与“缺少客观报告评价机制”列为当前金融大模型的两类核心问题。实时数据、量化工具和语言模型固然重要,但如果没有稳定的数据契约和评估框架,模型只是在更流畅地组织不确定信息。

因此,stock-analysis做的第一件事,并不是让Agent在股评时更聪明,而是给分析过程加上一套不那么感性、却更加重要的纪律:

先取数,再判断;
先核验,再叙述;
拿不到的数据,就明确写拿不到;
只有证据足够时,才允许生成更深的结论。

这句话看起来简单,但它决定了这个技能与普通股评工具之间最本质的区别。

二、它不是行情查询器,而是一台证据驱动的复盘引擎

从用户视角看,stock-analysis可以很简单。

你可以让 Agent 复盘当天 A 股,也可以查询某只股票或基金;可以要求完整盘后报告,也可以在盘中只看关键点;可以读取本地持仓,也可以指定使用巴菲特、段永平、达利欧或者西蒙斯的框架。

但在这条自然语言指令背后,技能并不是立刻开始“写”。

它先构建一份证据包,将市场拆成六个彼此关联、又可以独立检查的模块:

M1 是大盘指数与市场宽度。
它不只看指数涨跌,还检查成交额或成交量、A 股与港美股之间的强弱关系、上涨家数与下跌家数是否支持指数表现。指数上涨但市场宽度偏弱,与指数下跌但多数个股上涨,是完全不同的市场状态。

M2 是板块资金与集中度。
它观察行业、概念板块排名、资金流向,以及涨停主题是否过度集中。市场有十个方向同时活跃,与资金全部挤在一个题材里,表面上都可能是“指数上涨”,但持续性和风险结构完全不同。

M3 是赚钱效应与上涨主线。
涨停数量、首板与连板结构、龙头梯队、活跃方向,都被用来判断市场是否真的存在可扩散的赚钱效应,而不是只有少数权重股撑住指数。

M4 是下跌风险。
跌停数量、炸板数量与炸板率,用来观察高位分歧、追涨风险和市场承接能力。它关心的不是“市场跌不跌”,而是风险正在以什么方式暴露。

M5 是特征分组。
早盘涨停、低位异动、成长板块活跃样本、持仓风格等信息,被重新分组,帮助用户识别当前市场更偏向趋势、成长、低位扩散,还是防御与存量博弈。

M6 是综合风险与抗跌方向。
它将前面的市场结构重新汇总,寻找在整体分化中仍能维持相对强度的方向,并形成下一交易日的验证清单。

在代码层面,这六个模块并不是写在提示词中的六个标题。系统会分别构建模块数据,记录证据可用状态、来源事件、缺失字段和交易日期,再由报告引擎统一生成结果。证据包还会给 M1 至 M6 各自分配基础权重,将质量分、缺失模块和模块诊断写入元数据。

这意味着报告不是分析流程的唯一产物。

正文负责让人阅读;证据包负责让人检查。

当用户启用证据输出后,系统会保留记录证据情况的JSON文件,以及 M1 到 M6 的独立模块文件。你可以看到某个结论依赖了哪些指数、哪些板块数据、哪些来源发生过降级,以及为什么某个模块被标记为“证据暂缺”。

很多 AI 工具努力让用户看不见复杂性。

stock-analysis的选择恰好相反:正文可以干净,但复杂性必须被保存。因为真正可信的自动化,不是永远不出错,而是出错之后仍能知道错在哪里。

三、在国内市场,数据源稳定本身就是一种产品能力

做过 A 股数据的人,大多经历过类似时刻。

某个接口昨天还能用,今天突然返回空响应;同一个代码在不同市场需要不同前缀;腾讯和新浪的文本编码出现生僻字时解析异常;东财某个端点在部分网络环境下直接断开;板块榜抓取失败,却因为缓存策略不严谨,把空结果保存下来,导致后续几次报告都像市场当天没有任何行业数据。

因此,stock-analysis没有把“支持多个数据源”当成装饰性的功能描述,而是把数据源路由写成了一套明确的优先级。

A 股基础报价优先走腾讯,再走新浪;东财更多承担独有数据或末级回退。港股由腾讯和新浪互补,美股由新浪与腾讯互补;当东财作为港美股 fallback 时,系统会通过搜索接口动态解析 secid,避免只依赖有限的静态代码映射。基金则使用天天基金与东财公开数据,必要时回退新浪基金。

对于最容易出问题的板块榜,系统采用更谨慎的路线:东财clist获取失败后,尝试同花顺公开板块页面;公开 HTTP 仍不可用时,再进入 Camofox、Hermes内置浏览器或 Playwright 等浏览器接管链路。只有拿到非空数据时才允许写入缓存,避免一次空响应污染之后的报告。

它甚至明确约束了东财请求方式:复用 Session、关闭环境代理、串行请求、保持最小间隔、加入随机抖动,并进行指数退避。空响应和 HTTP 000 被视为失败,而不是被转换成零。

这类工程细节很少出现在宣传海报上,却决定了产品是否能被长期使用。

一个行情工具最令人沮丧的,并不是偶尔拿不到数据,而是拿不到数据时依然表现得像什么都知道。stock-analysis在字段为空时保留None,在报告中留下空单元格;价格小于等于零时过滤异常值;指数涨跌额与涨跌幅同时为空或异常时切换来源;仍然失败,就不展示该行,并把原因放进证据。

它不追求“任何时候都给满一页内容”。

它追求的是:只要出现在报告里的数字,就应该尽量能够被解释。

四、为什么默认不是一个专家,而是一间投委会

股票分析工具很容易陷入另一种表面繁荣:不断增加专家角色。

一个巴菲特 Agent,一个芒格 Agent,一个达利欧 Agent,再加几个技术分析与风险管理 Agent。角色越多,界面越热闹,输出也越长。但如果每个 Agent 都基于不同数据、不同口径或者不同上下文自由发挥,多专家并不会自动带来更好的判断,只会产生更多难以核验的观点。

stock-analysis对专家机制的处理更加克制。

它内置 15 个结构化投资专家角色,包括巴菲特、芒格、格雷厄姆、卡拉曼、彼得·林奇、欧奈尔、伍德、达利欧、索罗斯、利弗莫尔、米勒维尼、西蒙斯、段永平、张坤与冯柳。每个专家不是一段“请模仿某某语气”的提示词,而是包含证据权重调整、重点分析模块、风险关注点与委员会角色的结构化定义。

默认投资委员会由巴菲特、芒格、段永平、张坤、格雷厄姆和达利欧构成。

这些视角不会分别写六篇报告,再机械地拼到一起。由投资委员会形成的专家引擎会在同一份证据包上计算综合权重,判断哪些模块已经激活,并对 M1 与 M6 进行额外综合分析。

在 M1 中,它检查多个市场指数是否一致上行、一致下行还是明显分化;检查指数表现与市场宽度是否矛盾;识别交易日不一致、权重股支撑或拖累等异常。在 M6 中,它汇总各专家的风险关注点,调和框架冲突,并根据炸板率、跌停数量与市场分化形成综合风险评分。

这里最关键的设计是:专家只能改变看问题的顺序,不能改变事实本身。

巴菲特框架会更重视商业质量、安全边际与永久性本金损失;芒格框架强调反向推演、激励错配和不做清单;达利欧会更关心宏观周期、流动性、相关性与组合平衡;欧奈尔关注盈利加速、行业龙头与量价确认;西蒙斯则强调数据口径、样本稳定性、拥挤度和交易成本。

但无论选择哪一种视角,结论都必须回到相同的指数、成交、板块、风险与持仓证据。

这让“专家模式”不再是一种角色扮演,而成为一种可切换的研究框架。

用户也可以使用 single 模式,让整篇报告按照某一个专家的证据优先级重新组织;或者使用 adversarial 模式,让两个专家从不同角度审视同一份材料。单专家报告不会只在结尾追加一段“巴菲特点评”,而是连章节结构、证据顺序、风险表达和观察清单都会发生变化。报告同时禁止虚构专家发言或声明自己就是某位投资者。

这是一条看似细小、实际上非常重要的边界:借鉴方法,不消费人格;使用框架,不伪造权威。

五、真正有用的复盘,最终一定要回到“我的持仓”

一篇市场报告可以写得很精彩,但对于投资者来说,真正重要的问题通常只有几个:

为什么指数涨了,我的账户却没涨?

今天的下跌是市场系统性风险,还是我的持仓集中在错误方向?

某只股票虽然上涨,但是否依然跑输对应基准?

我持有两只基金,看起来名称不同,底层重仓股是不是高度重复?

我的组合究竟是在承担成长风格风险、单一市场风险,还是单一行业风险?

因此,stock-analysis不把持仓分析当成报告末尾的一张附加表,而是将它并入整个复盘语境。

用户可以通过结构化输入提供股票与基金持仓,完整信息会保存进技能自己的本地投资记忆。之后的复盘可以自动读取该记忆,同时计算当前市值、累计浮盈亏、当日盈亏、不同币种的人民币折算、前三大持仓占比、单一市场最高暴露、持仓风格以及相对基准表现。基金持仓还会继续展开重仓股,用于观察重复暴露。

这里依然保持着严格的输入纪律。

代码、买入日期、数量或可推导数量的买入金额必须完整,才会进入收益计算。用户新提供的信息不完整时,系统不会擅自覆盖旧投资记忆;也不会因为本地碰巧存在一份残缺 profile,就在普通市场复盘中生成似是而非的持仓结论。

一份完整的持仓复盘最终不只告诉你“赚了多少钱”。

它还会把持仓放回市场结构中:对应板块是否属于当日主线,个股相对基准是跑赢还是跑输,组合是否过度集中,新闻中是否出现高信号事件,以及下一交易日什么条件出现时才应该提高暴露、降低风险或继续等待。

这也是它与传统持仓记账工具的区别。

记账工具回答过去发生了什么;
stock-analysis试图回答,这些变化在当前市场中意味着什么。

六、它最适合的,不是一次性的问答,而是重复发生的投资工作流

这个技能的价值,只有放进真实场景里才会变得清晰。

场景一:每天收盘后的固定复盘

对于个人投资者,最大的困难往往不是看不懂某个指标,而是无法长期坚持同一套复盘标准。

今天关注指数,明天关注新闻,后天又因为某只股票大跌而只盯持仓。时间久了,每一天的判断都建立在不同信息上,很难回看自己当时为什么做出某个决策。

stock-analysis用固定 M1–M6 结构解决的是“复盘口径漂移”。

市场每天在变,问题顺序却相对稳定:指数如何,市场宽度如何;资金去了哪里;赚钱效应是否扩散;风险在哪里积累;哪些特征更强;什么方向相对抗跌。

长期下来,真正沉淀的不是一堆日报,而是一套可以比较的市场观察记录。

场景二:盘中快速判断,而不是强行生成完整研报

上午十点半,用户往往不需要五千字市场分析。

此时最重要的是指数和市场宽度是否一致、板块主线有没有形成、赚钱效应是否扩散、炸板率是否上升,以及持仓是否明显偏离市场。

stock-analysis会根据北京时间识别盘前、盘中、午间和盘后,自动选择 summary、key-points 或 full 深度。盘前和盘中输出的是简报结构,盘后才进入完整复盘。历史日期则按盘后逻辑处理,避免把过去某天的报告写成盘中快照。

这种“时段感”非常重要。

一个工具不是输出越长越专业,而是应该知道在什么时候,用户真正需要什么。

场景三:先查事实,再决定是否值得深挖

用户问“贵州茅台今天怎么样”,未必是在请求一篇价值投资报告。

因此,单股与基金入口默认是确定性的,不默认使用大模型。单股速览先返回价格、涨跌、开高低、成交量、成交额、交易日和数据质量提示;基金速览返回估值或净值、长期业绩、费率、规模、基金经理公开画像以及主要重仓股报价。

只有当用户继续要求“深度分析”“用段永平视角分析”或者“结合持仓复盘”时,才升级到完整证据包与专家分析报告。

这个设计避免了一个常见问题:用户只是问一个数字,系统却先消耗大量模型调用,最后生成一篇用户根本不需要的长文。

场景四:为内容创作者和研究者提供可复用材料

每天写市场复盘的人,最耗时间的部分并不总是写作,而是整理表格、确认交易日、检查指数、计算涨跌停结构、找板块主线,再把所有内容转成可发布格式。

stock-analysis输出标准 Markdown,同时将证据保存为 JSON。正文可以进入微信公众号、知识库或 Obsidian,证据包则留作后续核查、二次加工和自动化分析。

它不是替内容创作者写一段不可追溯的“今日市场点评”,而是在尝试把每天重复的资料整理过程产品化。

场景五:作为 Agent 系统中的金融分析能力组件

它不内置聊天外壳,不负责发送消息,也不执行真实交易。

这反而使它更容易作为 Skill 嵌入 Hermes、Codex、OpenClaw 或其他 Agent 环境:上层 Agent 负责理解用户意图、补充持仓信息和组织交互;stock-analysis负责行情路由、证据包、质量评分与报告输出。

职责越清晰,系统越容易扩展。

七、与 TradingAgents、FinRobot、AI Hedge Fund、OpenBB 相比,它站在什么位置

stock-analysis放到现有开源项目中看,它并不是要替代所有金融行情分析工具,而是有自己独特的角色定位。

TradingAgents 模拟的是一家真实交易机构的角色结构:基本面分析师、情绪分析师、新闻分析师、技术分析师、看多与看空研究员、交易员、风险管理团队和投资组合经理共同讨论,最后形成交易决策。它强调多 Agent 协作、动态辩论与交易机构工作流,并依赖语言模型与相应数据服务。

FinRobot 的目标更接近完整金融 AI 平台。它覆盖数据获取、财务预测、DCF 估值、可比公司分析、多 Agent 研究和专业 HTML/PDF 研报生成,适合公司级深度研究与金融应用开发。

AI Hedge Fund 更像一个开放式实验场:不同投资大师 Agent、估值 Agent、情绪 Agent、技术 Agent、风险经理与组合经理共同生成信号,并提供回测与未来持续运行的基金化设想。项目本身也明确定位为教育和研究用途。

OpenBB 则位于更底层的数据基础设施位置。它强调“连接一次,多处消费”,把公共、授权和私有数据接入 Python、工作台、Excel、MCP 与 REST API,为量化研究、分析界面和 AI Agent 提供统一数据层。

与这些项目相比,stock-analysis的定位更窄,却也更贴近一个高频、具体的问题:

如何每天稳定地完成一次国内投资者真正能用的市场与持仓复盘。

它不试图成为金融数据操作系统,不模拟完整交易公司,不建立自动交易基金,也不生成几十页公司估值报告。

它把主要精力集中在几个更小、但更难做好的环节:

国内市场公开数据的稳定路由;
盘前、盘中、盘后的报告节奏;
A 股涨跌停生态与板块结构;
A、H、美股及基金的统一代码与持仓处理;
证据包和质量降级;
在相同证据基础上的多投资框架综合。

换句话说,TradingAgents 更像一间模拟交易公司,FinRobot 更像自动化投研平台,OpenBB 更像金融数据基础设施,而stock-analysis更像放在投资者桌面上的复盘工作台。

它不追求把每一件事都做完,而是把“收盘后应该怎样重新理解今天”这件事做深。

八、为什么要把它做成 Skill,而不是另一个独立 App

独立 App 往往要求用户适应产品。

Skill 则可以进入用户已经存在的工作流。

你可以在对话中说:“复盘今天 A 股,结合我的持仓。”
也可以说:“只看盘中风险,不需要完整报告。”
还可以说:“用达利欧视角重新看我的组合暴露。”
或者:“先查询这只基金的长期业绩和重仓,再决定要不要深度分析。”

Agent 负责把这些自然语言归一化为命令行参数,底层仍走同一条报告路径。

这意味着用户不需要记住所有命令,也不需要理解数据源 fallback、证据评分和报告渲染器。

与此同时,它仍然保留行情分析的确定性。

对开发者来说,可以自动运行、测试、诊断与集成;对普通用户来说,只需要表达需求。这种“自然语言入口加确定性内核”的组合,可能比单纯做一个聊天机器人更接近金融 Agent 的实际形态。

大模型擅长理解意图和组织语言;
程序擅长执行规则和保持数据口径;
真正可靠的金融 Skill,不应该要求其中任何一方独自承担全部工作。

九、它仍然有边界,而边界恰恰是可信度的一部分

stock-analysis并不承诺预测收益,也不会发送真实交易指令。

公开行情源仍可能受到网络、限流、页面变化和交易日差异影响;浏览器 fallback 依赖运行环境;法定休市日表需要跨年度维护;部分龙虎榜、两融、解禁、大宗交易和研报端点仍属于可扩展能力,不会全部进入默认日报。

它的质量评分也不等于“这份报告有 80% 正确”。

当前评分更多是在衡量模块是否可用、关键字段是否完整、市场宽度与板块数据是否取得。尤其 M3 至 M6 的评分仍主要依据模块可用性,未来还可以进一步引入字段级置信度、跨源一致性、时效衰减和历史复盘误差。

但我更愿意保留这些边界,而不是把它包装成一个“全自动 AI 投资顾问”。

因为金融工具最重要的能力之一,就是知道什么时候应该停止推断。

拿不到市场宽度,就不假装指数代表全部股票;
没有完整持仓,就不计算伪精确收益;
社区样本不足,就不输出多空比例;
历史复盘,就不混入今天的新闻;
数据源全部失败,就明确告诉用户数据不可用。

承认不知道,并不会削弱 AI 的价值。

在投资中,很多时候它恰恰比自信地给出错误答案更有价值。

十、写在最后:好的复盘,不是替你做决定,而是让你知道自己为什么做决定

夜深之后,市场会逐渐安静。

涨停截图不再刷新,群聊里的情绪也会慢慢消退。你重新打开当天的报告,看到指数、成交、市场宽度、板块集中度、赚钱效应、炸板风险和自己的持仓被放在同一张地图上。

有些结论可能仍然不确定。

你依旧不知道明天一定会涨还是会跌,也无法从一份报告里获得绝对答案。

但你开始知道,今天的上涨究竟来自广泛修复,还是少数权重股;知道账户跑输是因为组合风格不匹配,还是个股自身走弱;知道某个热门方向需要什么条件才能继续确认,也知道哪些风险一旦出现,就应该停止给自己的持仓寻找理由。

这或许才是 AI 在投资复盘中最现实的价值。

不是替人预测未来,而是帮助人们以更稳定的方式观察现在;
不是制造更多观点,而是让观点回到证据;
不是把投资变得简单,而是把复杂性整理得可以理解。

stock-analysis想做的,就是这样一件并不喧闹的事:

在每天收盘之后,把散落在行情、板块、新闻、基金与持仓里的信息重新收拢;让不同投资框架在同一份证据上提出问题;最后留下一份能够阅读、能够检查,也值得在第二天重新打开的市场记录。

它不是一位永远正确的投资大师。

它更像一个不会因为市场情绪而改变复盘纪律的研究搭档。

http://www.jsqmd.com/news/1131857/

相关文章:

  • 缠论终极自动化解决方案:5分钟在通达信上实现免费缠论分析插件
  • 我用纯前端做了一个在线图片处理工具,零上传、免安装、隐私安全!
  • Cangaroo:开源CAN总线分析利器,让汽车电子调试变得简单高效
  • 关于Matlab今天我只说三点
  • 3款古汉语BERT模型对比:bert-ancient-chinese vs SikuBERT vs GuwenBERT,38K词表与6倍语料实测
  • Windows 11 资源监视器排查:5分钟定位并结束占用U盘的隐藏进程
  • CH348 Linux驱动 v1.0 在树莓派5上部署:Ubuntu 24.04 内核头文件缺失的3步修复
  • 奥维昔巴特Odevixibat婴幼儿用药,长期安全性循证说明
  • 2026最新5款AI编程工具权威实测合集|Cursor中文氛围开发低成本平替决策指南
  • MariaDB 10.5.4 二进制包安装:CentOS 7 逻辑卷(LVM)配置与多实例脚本实战
  • Hashcat掩码攻击实战:高效破解8位混合密码的策略与技巧
  • VFX Graph 与 Shuriken 粒子系统对比:10万火花粒子性能实测与5大应用场景分析
  • AEB/ACC/LKA 等 27 项 ADAS 功能解析:从传感器融合到 ECU 控制的完整技术栈
  • UE4/5 资产重定向器(Redirector)创建逻辑解析:4个条件与1个核心函数
  • 8086中断系统 256个中断向量表:从DOS功能调用到自定义中断服务程序
  • Linux 内核日志实战:printk 8级优先级详解与 /proc/sys/kernel/printk 4参数调优
  • 临界分词的存在性与最优性:从统计临界态到神经语言模型的双语实证检验 -更新
  • Linux 系统中创建符号链接(软链接)
  • 【AI研究报告】定制生成:基层科研人申报省级课题的“利器”!
  • Kubernetes 1.32 集群部署:Ubuntu 24.04 双节点 10 分钟快速初始化
  • 2026国内企业级智能体推荐:6款主流产品功能、适用场景全对比
  • 基于51/STM32单片机智能马桶设计 久坐提醒 换气除臭 杀菌消毒331(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 7.3量化
  • Vision-Language-Action:LMDrive双损失函数训练模块与 LangAuto 基准评测框架
  • HarmonyKit | 鸿蒙新特性对比:Tabs vs HdsTabs 选型深度解析
  • 嘉立创SMT 2026下单实战:3种器件库存状态解析与5步高效备料策略
  • 高并发秒杀三大核心技术实战
  • vsftpd 3.0.5 安全配置实战:5项关键设置加固FTP服务器
  • KubeFed v0.3.1 实战部署:2集群联邦配置与Nginx应用分发验证
  • 最小权限原则实战:从Linux进程到云原生的五层权限收缩