用AI搭建个人投资研究系统:信息到决策的完整链路
我直接从读者视角出发写一篇关于用AI搭建个人投资研究系统的深度分享把核心概念、完整框架、工具选型和实操过程都讲透保证内容是落地、有借鉴价值的。1. 项目全景AI投资实战营到底在解决什么问题先聊聊我为什么要碰这个项目。这两年做个人投资研究我最深的感受是市场本身并不难懂难懂的是信息。每个交易日上千条公告、几十篇研报、无数条新闻推送、还有各种群聊里的“内幕消息”——面对这种量级的噪音人脑已经很难正常工作了。大部分散户的决策模式其实很原始打开软件看看涨幅榜发现某只股票连续涨了几天再搜一下“为什么涨”看到三五篇推文说“因为某概念利好”就觉得自己掌握了逻辑然后追进去。这本质上不是投资研究是情绪跟随。所以这个实战营想干的事情是用一套AI工作流把个人投研行为重构成标准化流程信息如何采集、事件如何归类、利好利空如何量化、逻辑链如何校验、回撤之后如何复盘。你可以理解成给自己建了一个“一人规模的券商研究所”负责数据的、写纪要的、做模型的、管风控的都是你区别在于很多日常工作交给AI来完成。一句话总结这个项目用AI搭建一套能复用的个人投研系统让每一次投资决策都有明确的依据链条而不是拍脑袋。这个项目适合三类人。第一类是有一定投资经验、但决策模式仍然是“听消息看K线”的散户需要一套工具强制自己把研究动作规范化第二类是自媒体作者或内容创作者想用AI批量生产高质量个股分析、行业梳理内容同时避免事实性错误第三类是程序员或AI爱好者想找一个真实业务场景来实践大模型调用、Agent工作流编排、数据库管理等技术投研恰好是个足够复杂、足够有延展性的场景。小白也能用但需要先理解一个前提AI给的是信息加工能力不是股神预测能力。关于工具定位我必须先纠正一个很多人的误解。现在市面上的AI投顾、智能荐股App很多但它们的逻辑是黑盒——给你一个“买入”信号你不知道它依据什么。这个项目的思路完全不同我们要的不是AI替你决策而是AI替你完成研究工作它帮你把公告里那些含蓄的措辞翻译成人话帮你把一份200页的招股书压缩成三页结构化要点帮你把过去三年财报里毛利率异常的季度自动挑出来。决策权始终在你手上AI是放大镜和脚手架不是神力。整个系统的核心价值是解决三个普遍痛点。一是信息消化效率低你花一个晚上读完的材料AI可能十分钟内就能完成结构化摘要二是决策依据不清晰很多人买完之后根本说不出“我的买入逻辑具体是什么”系统会强制你记录决策依据并建立验证锚点三是复盘走过场亏了钱就删软件赢了就觉得自己是股神系统会把每一次操作决策的预测和结果都存下来定期生成对照分析报告。这三个痛点才是AI介入投研的真正价值所在抓不住这三点工具链搭得再华丽也只是摆设。2. 工具选型解析从模型、数据到Agent框架的取舍逻辑搭建这套投研系统选型决策能决定项目的成败。我先给一个总览结论底层模型选型、数据获取渠道、Agent工作流框架、存储与展示方案这四个层次里前三个决定系统能力上限第四个决定你愿不愿意持续用下去。2.1 底层模型性能、成本与合规的三角博弈模型层是整个系统的“大脑”。目前可选的方案大致分三条路线第一完全使用云端大模型API通过联网搜索、长上下文来覆盖投研任务优点是部署快、能力天花板高缺点是成本会随调用量增长第二本地部署开源模型用私有化方式处理敏感持仓数据优点是数据不出本机、可离线运行缺点是消费级硬件跑大模型效果有限第三混合架构云端跑需要长文本、强推理的任务本地跑摘要、分类、抽取这类轻量任务这种方案最平衡。我最终选择了混合架构。长文档分析招股书、年报和深度逻辑推理财报质疑、事件因果链分析交给云端模型来处理因为这需要大参数量和长上下文能力而像公告关键要素抽取、新闻分类打标、情绪词识别这类重复度高的任务则使用本地部署的7B量级模型完成。这样做的理由很直接投研任务多数是“读厚书写薄纸”处理长文档时模型能力直接决定输出质量这种任务对成本不敏感因为频率低而分类、抽取任务量大但模式固定本地跑既省钱又保隐私。模型参数上我吃过一次亏写出来供大家参考。最初图省事把所有任务都丢给云端模型一个月跑下来API账单让我后悔不已。后来我把任务做了分级凡是重复性高的数据清洗、实体抽取、标签分类全部切换到本地模型云端只处理每月几十次的高价值深度分析成本直接下降85%左右。一个基本原则一篇文章的“读”和“想”可以由AI完成但发给模型之前先用脚本滤掉垃圾内容、拆好结构这样更省钱也更准。2.2 数据层公开数据源的抓取策略与合规边界投研的原料是数据数据源的质量比模型选型更能拉开系统差距。数据层我按四个维度搭建。公告与定期报告主要来源是巨潮资讯网和各大交易所官网用定时巡检策略每天早中晚各扫一次增量更新不追求实时投研场景对分钟级响应没有需求。新闻与舆情覆盖主流财经媒体的RSS源和公众号文章关键点在于舆情数据需要保留完整失链的位置信息和发布时间方便后续做“信息时间线”回溯。行情与财务数据选用AkShare和Tushare这类开源数据库日常有免费额度就够用架构上注意预留替换接口防止某个数据源突然失效。社交平台讨论数据这部分敏感性最高主要用于监测市场情绪但采集过程必须尊重平台条款不做暴力破解、不绕过访问控制只采集公开信息且控制频率。这里要特别提醒合规问题。这套系统所有数据源都使用正规公开渠道属于“公开信息自动化阅读”范畴不碰内幕信息、不采集非公开接口、不做高频交易信号。个人做研究用没问题但如果未来要把系统能力对外提供服务需要重新审查数据合规方案尤其是舆情数据的展示与传播边界。2.3 Agent工作流为什么单选Dify而不是LangChainAgent框架是系统的“四肢”。市面上的选择主要是LangChain、Dify、Coze和Elastic AI Assistant等。我的选择是Dify核心理由是它在“工作流可视化编排”和“知识库RAG”这两个投研高频需求上有现成方案部署好后配置一个“财报分析Agent”就是拖拽几个节点的事。LangChain我早期也调研过它更偏底层灵活度高但需要写很多胶水代码对于非专业开发者来说维护成本偏高而投研系统里工作流的变化频率远高于代码变化频率——今天要加一个新闻情绪分析节点明天想调整一下报告输出模板用可视化编排比改代码高效得多。但这不意味着LangChain没有价值。如果你对AI Agent工程有较强理解或者有特殊的数据处理需求比如自定义向量检索逻辑LangChain仍然是更值得选择的方向。判断标准很简单你的核心能力是投资研究还是编程前者用Dify减少工程负担后者可以用LangChain做更自由的探索。工作流设计上要遵循“一步文档一步加工”的节奏。我的系统里跑得最顺手的一条“财报解读”工作流是这样的先由本地模型抽取关键财务指标云端模型负责生成经营分析初稿然后调用工具检查计算结果是否匹配原始数值最后把结果写入结构化数据库。每一步都把上一轮的输出作为下一个节点的输入数据全程保持可追溯。这里我建议设计Agent时遵循一个准则每个Agent只干一类事宁可多配几个角色不要让一个角色干太多活儿这样排查问题时很舒服不会出现一个问题不知道是哪个环节引起的尴尬情况。2.4 存储与展示方案让数据会说话数据存下来不是目的能快速查阅和发现问题才是。存储层我用了一套轻量组合结构化数据股票基本信息、交易记录、财务指标入PostgreSQL非结构化文本研报、新闻、公告全文入Elasticsearch做全文检索向量数据用于RAG检索的文本嵌入存到Weaviate。三库分工明确互不干扰。展示层没有做复杂的前端页面而是用Grafana搭了一个简单的仪表盘实时显示信息流监控状态、各股票自动化研报的生成情况、系统维护度健康指标。数据分析场景下我习惯用Notion作为“人工介入区”所有AI生成的分析报告默认进Notion供人工审读确认无误再归档到正式库中。这里分享一个个人很受用的习惯AI产出所有结论性内容都先进入“草稿区”人工确认后才算数。这能避免很多低级失误。3. 核心细节解析与实操要点投研逻辑的量化与AI工作流细节工具部署好之后真正的硬骨头在于“投研逻辑怎么变成AI指令”。这个环节做不好系统就只能是个高端信息聚合器谈不上投研助手。分享几个我认为最核心的落地点。3.1 决策依据结构化从“模糊感觉”走向“可验证假设”个人投资最容易犯的错就是买入逻辑说得清卖出逻辑模糊复盘逻辑完全没有。这个系统要做的第一件事就是强制每个人在决策时输出三段式结构事实清单、推断假设、验证指标。简单说就是你看到了什么客观事实、你觉得这会怎样推断假设、如果对了会显露什么信号验证指标。AI在这个环节能发挥两个作用。其一它在信息收集阶段就替你做事实核查比如模型读到一篇关于公司获得大额政府补贴的新闻会自动查询公司公告库看这条消息是否有公告佐证其二它会为每一条核心假设建议2-3个可量化的验证指标比如“渠道变革见效”这个假设对应指标可以拆成经销商进货额同比增速、终端动销率、应收账款周转天数三个维度。这三个指标不是拍脑袋来的是AI基于同行业相似公司的历史模式提取出来的经验特征虽然不一定完全准确但有参考价值。我实际项目中建了一个“假设日志”表每条记录包含股票代码、决策时间、假设内容、对应指标、预设验证周期、验证日期、验证结果、盈亏结果。每季度自动跑一次对照程序把所有“当时信誓旦旦的假设”和“最终结果”并排展示。运行一年后我发现一个非常有价值的规律我亏钱最多的交易往往不是假设判断错误而是根本没有写过假设。有些交易纯粹是一时冲动连“我当时为什么买”都说不清楚。有了这个系统后这种事情至少少了一半。3.2 事件驱动投研教AI看懂“发生了什么→意味着什么”投研的日常工作很大一部分是事件解读。一家公司突然公告“拟收购某标的”市场马上会问这到底是利好还是利空收购价格是否合理对原有业务是协同还是拖累传统做法是去雪球看帖子、找研报看观点、翻历史文章找规律普通人做完这一套下来至少一两个小时。AI时代的做法是设计一条“事件解读流水线”事件要素抽取→历史相似事件检索→影响维度分析→生成结构化解读。以“收购公告”为例系统会自动抽出交易对象、交易对价、支付方式、业绩承诺、标的经营数据等核心要素然后去本地知识库检索过去三五年同类收购案的实施情况用AI整理成“影响分析”对现金流的影响、对商誉的风险、对业务协同的可能贡献。整个过程15分钟完成产出物是一份结构化分析卡片比花三四个小时自己翻资料覆盖得还全。这件事真正的难点不是模型能力而是“事件分类体系”怎么设计——AI不知道“定增”“回购”“股权激励”“业绩预增”这些事件里什么信息是核心要素。所以我在系统里维护了一套事件模板体系每个事件类型对应一个字段抽取模板和一套分析要点。目前已经有二十多个常用事件模板在运行覆盖面越广系统的理解能力越强。这里想强调的是投研AI系统的进化方向不是模型越来越聪明而是模板和知识库越来越厚实大模型只是搜索引擎的输入输出逻辑真正的领地意识来源于私域知识积累。3.3 财务异常感知把机械式的财务分析方法交给AI财务分析是AI最适合替代人工的领域之一因为它的判断逻辑相对固定毛利率为什么变化、应收账款为什么暴增、现金流和净利润为什么背离、商誉占净资产比例是否过高。这些都是有标准分析模式的而AI恰恰擅长按图索骥。我实际部署的“财报异常扫描器”工作流逻辑分四步。第一步自动抓取最新一期的财务报表全文第二步用结构化抽取提取利润表、资产负债表、现金流量表的全部项目第三步计算约三十个财务指标的同比、环比变动第四步由本地模型筛选变动超过阈值或不符合行业常规的指标云端模型对这些“可疑点”进行解释并生成分析段落。这套流程的适用效果立竿见影。之前我手动看财报常年漏掉“应收账款增速显著快于营收增速”这类信号——这通常意味着公司放宽信用条件来拉动账面收入反映的是增长质量问题而AI不会漏。更厉害的是后续衔接分析报告输出后如果发现某项财务指标异常系统会自动去新闻库检索是否有相关解释再生成一条“需要人工关注”的提示。这不代表AI能判断这个异常是造假还是合理现象但至少能把一百个财务数据里最值得你盯着看的三五个挑出来让你少做大量无效阅读。3.4 知识库沉淀把公司的“历史记忆”变成决策背景很多个人投资者都会有一个感受研究一家公司最怕的是“没上下文”。你从公告和新闻里看到的永远只有当下但这家公司过去三年有没有反复发生同类事件、市场对它的态度如何变化、管理层一贯的风格是什么这些背景信息极其珍贵也是专业机构的护城河。给普通散户用AI搭建知识库挺难因为要把每家公司的历史文章、研报、公告喂给模型做长期记忆。我做的方案很朴素给每家公司建一个“档案空间”里面存历史公告全文、新闻时间线、历史分析报告、管理层关键发言纪要。当用户提问“这家公司现在值不值得关注”系统先检索这家公司的档案空间形成“背景摘要”再结合当前最新信息生成回答。这个方案的妙处在于它不是让AI凭空乱猜而是先让AI基于充足的史料做判断它的回答会显得老练得多。知识库的运维成本比想象中高。最麻烦的是数据更新每次财报发布、重要公告都需要人工确认归档是否同步。我的补救方案是设置每周自动巡检任务核对知识库最新文档日期与数据源最新文档日期是否一致不一致就自动触发补抓流程。这个机制让知识库基本保持在半周内新鲜的节奏。4. 实操过程与核心环节实现完整跑通“个股研究仓库”的搭建我拿一个具体案例来演示全链路。目标是给我自选股池里的每一只股票建立一个自动更新的“研究仓库”仓库存三种东西一份结构化档案主营业务、股权结构、历史财务数据一份动态监控报告本周重要事件、舆情变化、估值分位一份AI解读报告从档案和事件中提炼的投资要点但标注“仅作参考不作荐股建议”。4.1 环境准备与基础配置我把这套系统跑在一台配置为64GB内存、两块2TB NVMe硬盘的消费级工作站上操作系统是Ubuntu 22.04。整机功耗和主机成本都不高三个月下来运行成本比纯云端方案还划算。具体软件栈如下Dify用于工作流编排PostgreSQLWeaviateElasticsearch用于数据存储Qwen2.5-7B作为本地模型跑轻量任务云端接入大模型API做深度分析Grafana用于可视化监控AkShare负责行情与财务数据采集。安装部署这里不说太细重点提两个实践中容易踩的坑。第一Weaviate和Elasticsearch的默认内存配置比较保守如果数据量超过预期检索会明显变慢建议根据实际数据量调整堆内存参数第二Dify社区版默认不支持异步任务如果需要跑长耗时工作流比如整份年报分析要做任务队列改造或用补丁方案。十次部署里至少三次会遇到这两类问题。4.2 数据流管道配置让数据自动流进了“档案空间”数据管道是系统的“血液循环系统”。我使用Apache Airflow做定时调度每个小时跑一次增量采集任务。采集任务推导出三个子流程公告巡检子流程每两小时看一遍巨潮资讯更新新闻监控子流程每小时扫一遍RSS源落到Elasticsearch财务数据子流程每日收盘后从AkShare拉取一次当日行情和最新财报数据更新PostgreSQL。配置完成不代表万事大吉。实际运行两周后我就发现一个数据质量问题同一事件的新闻在多个来源出现而采集器视为不同内容导致“多条信息”被当成“多个事件”分析报告会高估某类信息的热度。解决方案是在采集链路上增加“文本去重”节点——对标题和正文内容计算相似度超过阈值的文本只保留来源最多的一条。这种数据治理的脏活累活看起来没什么技术含量但少了它下游分析结果就会失真。4.3 单只个股分析工作流的完整拆解举一个真实执行过的例子“XX股份”公告拟收购一家锂电材料公司。系统在早晨6点的事件巡检中捕获这篇公告然后自动触发“收购事件分析工作流”。工作流执行过程如下第一步事件要素抽取。模型自动从公告正文抽取标的公司、交易对价、支付方式现金还是增发、业绩承诺条款、评估增值率全部结构化后写入事件表。第二步档案关联。系统检索“XX股份”的知识库档案找到公司历史上有无相关并购经历顺便查出账上货币资金与本次交易对价的匹配度。第三步历史相似案例检索。在本地知识库中检索“同行业公司收购锂电材料资产”的案例找到三个参照样本并计算平均溢价水平。第四步生成结构化报告。按“事件速览、要素拆解、历史背景、潜在影响、风险提示、需要人工关注的问题”六个板块输出分析卡片。整个过程15分钟完成产出物是三千字左右的分析报告加两张表格。我拿到报告后做的最重要一件事是检查它有没有把一个关键问题漏掉这家公司近三年经营性现金流为负账上资金主要靠融资维持那么现金收购的钱从哪来系统果然在“资金压力”小节点上标了黄色提醒还自动检索了公司近半年的融资公告并附上“如需确认建议翻阅公司最新一期募集说明书”的提示。这种主动排查缺口的能力比单纯生成分析叙述有用得多这也是AI投研系统比普通资料搜索引擎强的地方。4.4 盘后监控与风险提醒机制除了针对事件的深度分析系统每天还有一次固定巡检在下午收盘后自动跑一遍。巡检产出物是一张监控日报列三大块内容持仓与自选股的最新动态公告、舆情、大宗交易异动估值分位变化当前市盈率/市净率处于近五年历史分位风险信号扫描如财务指标异动、质押比例超高、董监高离职等。风险扫描这里多花点篇幅讲。这个模块是系统最核心的“哨兵”我把风险信号分成几类财务类经营活动现金流连续三个季度为负、应收账款复合增速明显超过营收复合增速、商誉占净资产比例超过30%、治理类审计意见非标、控股股东高比例质押、高管密集减持、合规类频繁违规处罚、诉讼公告增加。每次巡检扫描这些信号命中一条就生成一条记录多发问题自动汇总一周内同一股票积累三条以上风险记录就触发“重点关注”标签并推送通知。这套机制给我的最大启发不是预警本身而是“风险纪律”的感觉以前看股票基本只看上涨逻辑现在每天有个系统在旁边提醒风险心态会沉稳很多。因为每次想买入一只新股票时看到它在风险库里还挂着两条历史记录就会多问自己一句“这个风险解决了吗”这就是决策质量的提升。5. 常见问题与排查技巧实录这个系统搭建过程中我踩过很多坑挑几个有代表性的记录在下面按频率排序。5.1 “AI分析输出看似专业但事实错误频出”这是最让人头疼的问题。AI生成的分析报告结构完整、逻辑清晰但细看关键数据可能算错了比如把“毛利率下降3个百分点”写成“毛利率下降3%”或者把去年同期的营收当成同比基准。排查发现根因在于“AI将财务数字当作文本生成任务而不是计算任务”。解决方案是设计工作流时在生成报告之前增加一个“计算器节点”。这个节点先调用代码将财务报表数据算好把结果写入变量AI做报告时只能引用变量值不允许自己“推断”数字。这样能直接把事实性错误率降到几乎为零。这种做法值得各位认真对待。投研场景里AI的一千句漂亮废话没有一句“计算器算出来的正确数字”值钱。模型擅长的是组织语言、归纳因果不擅长精确计算因此永远不要把需要计算结果的步骤交还给模型自由发挥。5.2 “知识库检索经常返回无关内容”RAG检索增强效果好但翻车概率也高。常见的问题是“分析这家公司的盈利能力”时检索到的知识片段往往是前几年的旧新闻或某次行业会议的无关纪要导致AI回答得“泛泛而谈”。解决方案分三部分一是检索时设置时间衰减权重让新文档有更高优先权二是按文档类型给不同权重比如财报全文权重高于新闻摘要三是在知识库里增加“文档用途”标签如“财务数据”、“行业背景”、“管理层观点”检索时按用途过滤。调试RAG效果时建议先用平台自带的检索测试工具单独查看每次检索的命中记录不要直接看最终回答。等检索结果稳定合理了再调整模型提示词和输出格式。检索引擎和内容生成是两层逻辑先优化源头再优化下游顺序不能反。5.3 “数据采集经常中断影响下游分析时效性”数据管道运行一个月后我统计过一次任务失败率总体接近3%不算高但很闹心。原因是各平台的反爬策略升级、网络波动、接口字段变动等都会导致某一次抓取任务失败。排查思路是先判断失败类型网络类故障重试一轮往往能解决接口字段变动类故障则需要更新解析模板靠重试解决不了。我的建议是不要试图消灭所有失败而是设计“失败有迹可循”的机制。每次任务失败后自动保存原始响应报文到日志库每天巡检时扫一遍失败日志。这样即使个别数据没采下来至少知道是哪个环节出了问题也方便手动补采。说实话用开源数据库最大的隐性成本就是维护这个心理预期要有。5.4 “跑大模型时显卡内存不够直接OOM”本地模型在消费级显卡上跑长文档OOM很常见。几个缓解方案一是把长文档切成片段再进模型而不是一次性喂全文二是选用支持流式输出的部署方案配合量化模型如4-bit量化降低显存占用三是用“分块摘要再汇总”的策略先把每章摘要算好最后汇总各章摘要成总摘要。这招对千页级文档特别有效信息损失在可控范围内显存占用却下降了一个数量级。5.5 工具勘误速查表问题表现可能原因排查优先级建议处理分析报告数据与原文不符模型自由推算替代了计算函数高强制计算结果注入变量AI只做引用知识库检索结果偏旧时间权重设置不合理高增加时间衰减因子检索结果多为无关文档文档用途标签缺失中按文档用途过滤按类型设权重定时任务频繁失败站点反爬或接口字段变更中看失败类型更新解析规则或重试回答风格不稳定模型温度参数偏高低温度调到0.2以下输出更稳定本地模型OOM长文档超过上下文且显存有限中分块摘要、量化模型、流式输出6. 项目效果复盘与我的实际体会这套系统实际跑了大半年之后我再回头看最初“靠感觉投资”的状态差别真的非常明显。过去的决策支撑基本只有三个来源财经媒体的观点、社群里的讨论、自己的情绪。现在的决策支撑是一整套可回溯的信息链路我这里能看到买入当天的市场舆情温度、财报异常扫描结果、历史类似事件的横向对比、风险信号的预警记录。决策质量提升的本质不是AI替我找到了“正确答案”而是它帮我减少了“低级错误”——漏看重大公告、忽略财务异常、把偶然新闻当趋势。这其实已经足够拉开差距了。说几个运行数据给大家一个直观感受。系统部署后三个月里累计处理了4.8万条新闻、3800余份公告、400余份财报全文生成了超过150份个股分析卡片。假设同样的工作强度人工完成每天至少多花三到五小时。那些多余的时间我现在用来做一件事定期打开“假设校验表”逐个翻看当时写下的投资逻辑和半年后的验证结果逐步迭代自己的判断框架。这也是我目前认为这套系统最大的价值它不告诉你“现在该买股票”它逼你记录“当初为什么买了股票”然后用时间这根针把当初的想法刺破看你放的是真金还是泡沫。最后分享一个小经验。很多人会问这个系统里最值得投资的部分是哪个我一定说是“决策日志模块”——不是技术难度最高的那一块但它是最影响行为模式的。技术上写一个记录假设、追踪指标、定期对照结果的模块非常简单行为上的价值在于它强迫你从“以涨跌论英雄”变成“以逻辑对错论英雄”。涨了但逻辑错了这是一次侥幸的失败跌了但逻辑对了这是一次失败的正确两者在长期投资中的意义完全不同。这套系统的下一步我打算继续扩展两个方向。一是把“产业链传导”关系引入知识库比如锂矿价格上涨对正极材料、电池、整车各环节的影响路径是什么让AI能理解的不是孤立事件而是传导链条二是接入更多第三方数据源比如专利数据、招聘数据、卫星影像对应的公开描述提升信息前置度。用AI搭个人投研系统这条路刚刚开始后续还有大量值得摸索的空间但我最想强调的是所有工具最终都是放大镜你的判断力才是唯一的那个操作主体这句话任何时候都值得放在第一位。这次的分享就到这里了。如果实操中有什么我没想到的新坑欢迎在评论区告诉我大家相互补课。