新闻详情

新闻详情

首页 / 资讯中心 / 详情

手把手搭建投研AI Skill:目录结构、模板与踩坑经验

发布时间:2026/9/30 9:09:38来源:尧图网络
手把手搭建投研AI Skill:目录结构、模板与踩坑经验
每天收盘后把自己钉在电脑前翻公告、扒财报、对数据的日子做投研的朋友应该都不陌生。我自己的工作时间被大量重复动作吃掉之后终于下决心把整套流程做成了一套 AI skill。这里说的 skill不是一句聪明的提示词而是能在 Claude Code、Cursor 这类编程助手里被自动加载、按固定流程执行的可复用技能包。这篇文章就把我这个投研 skill 的完整设计思路、目录结构、模板和踩过的坑都摊开来讲希望对同样在折腾 AI 投研工具的人有点帮助。1. 投研流程里真正值得固化的部分为什么做成 skill 而不是万能 prompt我先说一个自己的真实感受直接用 prompt 让大模型帮我分析某家公司十次里有八次会得到一个看似全面、实则空泛的结论。模型会把营收、利润、估值这些词轮番抛出来但当你追问数据是哪来的和上年同期比到底差在哪的时候它就开始含糊了。问题不在于模型笨而在于投研本身是一套强流程的活儿流程没被固化模型自然只能自由发挥。1.1 skill 和普通提示词的本质区别普通提示词是一次性对话每次都要重新描述背景、格式、数据口径skill 则是一个目录里面装着模型需要遵守的指令、可执行的脚本、预先设计好的模板。模型一旦识别到当前任务匹配某个 skill就会自动读取目录里的说明按说明一步步执行。用一个生活类比普通 prompt 像你临时指挥一个实习生去查一下这家公司对方可能东一榔头西一棒槌skill 则像你交给这位实习生一份标准作业手册手册上写着先做什么、后做什么、数据从哪个库拿、报告按什么结构写、哪些风险项必须核对。同样的实习生拿到手册之后产出的质量会稳定非常多。1.2 投研场景的天然优势流程固定、数据公开、输出有章法投研这件事天生适合做成 skill原因有三个。第一流程高度固定。不管是分析个股还是行业总是先拉数据、再看财务、然后估值、最后给风险结论这个线性流程不太依赖灵感。第二数据源相对公开。财报、公告、行情数据都有约定俗成的获取渠道只要把脚本写好模型可以自己拉取不必每次从零开始。第三输出结构可预期。投研报告有固定的框架读者在乎的是数字准确、逻辑清晰而不是文采飞扬。所以我把基本面分析财务指标对比风险检查持仓跟踪这些固定动作全部拆成了 skill 子模块。模型负责调用工具、读取数据、生成报告我负责审核结论。这比让它自由回答可靠得多。2. 从 0 到 1 搭建投研 skill目录、声明文件与运行机制先看一个最简目录结构。以 Claude Code 的 skill 机制为例我会在~/.claude/skills/下建一个名为finance_research的目录~/.claude/skills/finance_research/ ├─ SKILL.md ├─ scripts/ │ ├─ fetch_quotes.py # 拉行情K线 │ ├─ fetch_financials.py # 拉财务摘要 │ └─ parse_report.py # 解析年报PDF ├─ templates/ │ ├─ company_analysis.md # 个股分析模板 │ ├─ industry_analysis.md # 行业分析模板 │ └─ risk_checklist.md # 风险检查清单 └─ references/ └─ data_sources.md # 数据源说明SKILL.md是这个技能包的核心说明文件它决定了模型在什么情况下调用该 skill、以及调用后执行的规则。用 YAML frontmatter 开头正文用自然语言描述操作流程直接给出一份可以抄作业的版本--- name: finance_research description: 投资研究分析覆盖公司基本面分析、行业对比、财务指标体检、估值判断、风险清单梳理。当用户询问某家公司的投资价值、财务状况、行业前景或者要求生成投研报告时优先使用该技能。 allowed-tools: bash, python, web_search --- # 投研分析执行流程 1. 先判断任务类型个股分析 / 行业对比 / 风险检查 / 财报解读。 2. 使用 scripts/fetch_financials.py 获取财务数据优先使用本地缓存。 3. 若用户提供年报PDF使用 scripts/parse_report.py 提取文本。 4. 所有关键财务数字必须标注数据来源和截止日期。 5. 按 templates/company_analysis.md 的结构生成报告不得跳过风险清单。 6. 报告结尾必须给出数据局限性说明包括数据滞后性和模型可能存在的理解偏差。2.1 description 怎么写才能让模型准时命中很多人在这一步随手写一句帮我做投研结果模型经常不触发 skill。关键规则是description 要描述用户的需求场景而不是你的功能。比如你写本技能用于股票分析当用户问帮我看看这家公司值不值得买时模型可能觉得这不是股票分析而不敢触发。但如果你写当用户询问某公司投资价值、财务健康状况、行业前景或要求生成投研报告时使用模型就能更准确地匹配。我还会刻意在 description 里加一些触发词比如财报估值基本面仓位建议减持商誉。这些词在不同模型上的命中率略有差异实测多写几类场景能明显提高触发率。2.2 数据脚本的边界抓什么、缓存什么、不碰什么写脚本时最容易犯的错是把所有数据源都塞进去。我的原则是行情和财务摘要走脚本深度内容走人工提供文件。fetch_quotes.py我一般这样写用 akshare 拉日线数据并缓存到本地 CSVimport akshare as ak import pandas as pd import os from datetime import datetime def fetch_daily(symbol: str, start: str 20200101, end: str None): 拉取日线行情缓存到本地 data/ 目录。 symbol 格式sh600000 或 sz000001。 end end or datetime.now().strftime(%Y%m%d) cache_path fdata/{symbol}_{start}_{end}.csv if os.path.exists(cache_path): return pd.read_csv(cache_path) df ak.stock_zh_a_hist(symbolsymbol.split(sh|sz)[1], perioddaily, start_datestart, end_dateend, adjustqfq) df.to_csv(cache_path, indexFalse) return df这里有个细节值得说只要接口允许一定设置adjustqfq前复权。如果不复权分红送股会导致历史价格出现跳空后面算涨跌幅、画趋势图全是错的。第一次踩这个坑时我以为某公司股价暴跌实际只是除权除息。财务摘要我用ak.stock_financial_abstract_ths或直接解析年报 PDF二选一。脚本层面我只负责把数据落成结构化表格不做任何建议。判断和建议留给模型结合分析模板来做这样分工清晰出问题也好排查。2.3 不碰什么这个边界必须提前写进 skill 说明里不对未公开信息做预测不输出任何形式的确定性内幕。模型只能基于公开数据和用户提供的材料分析所有结论都是概率性判断。我在SKILL.md里专门加了一条本技能所有输出均基于公开信息不构成投资建议。禁止编造未公开的业绩数据禁止使用主力资金意图庄家动向等无法验证的说法。这条规则既是合规需要也实际提高了报告质量。没有了神秘化表述模型反而会把注意力放在财报数字和估值逻辑上。3. 把分析框架内嵌到 skill 里一套可复用的投研模板模板是整个 skill 的灵魂。模型能不能稳定产出专业报告取决于你给它的框架够不够细。我把所有模板放在templates/目录下模型输出时严格按模板结构填充。3.1 公司分析模板先财务、再估值、后结论这是我平时最常用的一份模板核心是不允许模型跳过任何一节# 公司分析简报 ## 一、业务画像 - 公司主营业务一句话 - 收入结构按产品线/地区最近年度 - 商业模式特点To B / To C / 平台型 ## 二、财务体检最近三年 - 营收及同比增速 - 归母净利润及同比增速 - 毛利率、净利率变化 - ROE加权及变化趋势 - 经营现金流 / 净利润比值低于1要重点提示 - 资产负债率、有息负债规模 ## 三、估值分析 - 当前 PE / PB / PS标注数据日期 - 近三年估值分位数 - 与同行业可比公司的估值对比 ## 四、风险清单 - [ ] 应收账款是否异常增长 - [ ] 商誉占净资产比例是否超过30% - [ ] 大股东质押比例是否超过50% - [ ] 近一年是否有大额减持公告 - [ ] 审计意见是否为非标准无保留意见 ## 五、结论 - 核心看点最多3条 - 核心风险最多3条 - 适合进一步研究的触发条件 ## 数据来源与局限性说明这份模板最关键的改动是加了经营现金流/净利润这个比值。很多新手看财报只看利润表结果被应收账款和存货欺骗。现金流比值连续多年低于 0.7通常意味着利润只是账面数字这个信号在模板里出现后模型每次都会主动计算不会遗漏。3.2 行业对比模板同口径比才有意义做行业分析时最大的坑是口径不一致。比如归母净利润和净利润两个词在财报里经常被混用增速算出来可以差十几个百分点。所以行业对比模板里我会强制要求所有公司使用同一指标口径统一用归母净利润财务截止日期必须一致若数据来自不同年份年报在表格中标注年报期下面是模板中的对比表格| 公司 | 营收(亿) | 营收同比 | 归母净利润(亿) | 净利同比 | 毛利率 | ROE | PE | |------|---------|---------|---------------|---------|--------|-----|-----| | A公司 | 数据 | 数据 | 数据 | 数据 | 数据 | 数据| 数据| | B公司 | 数据 | 数据 | 数据 | 数据 | 数据 | 数据| 数据|我见过模型自动把扣非净利润和归母净利润混在一列里的情况导致对比结果完全失真。所以模板顶部用加粗标注了一行提示「所有利润类指标默认使用归母净利润除非用户特别说明」。3.3 风险检查清单让模型像审计员一样逐项确认风险清单如果只是模型想想有什么风险输出会很发散。我把它做成逐项核对的检查表模型必须调用web_search或读取用户提供的公告文件来确认每一项。清单里固定包含这几项商誉占净资产比例超过 30%有减值风险应收账款增速连续两年超过营收增速大股东质押比例过高需关注流动性关联交易占营收比例超过 20%审计师出具了带强调事项段或者非标意见存货周转天数连续上升且存货增速快于营收每项后面我要求模型给出通过 / 未通过 / 数据不足三选一结论。数据不足时不允许自行猜测必须在报告中明确提示。这份检查清单落地之后模型报告的质量提升非常明显因为它从一个写作文的模式切到了填表格的模式后者很少遗漏关键风险。4. 实测中最容易翻车的环节与处理经验再好的结构跑起来也会遇到实际问题。我把自己在真实使用中踩过的坑整理成一段排查链路每一个都对应着具体解决方案。4.1 财报 PDF 解析表格错位与口径陷阱第一次让 skill 直接读上市公司年报 PDF我天真地以为pdfplumber能把表格完美提取出来。结果模型生成的营收数据出现明显错误——核对之后发现PDF 里表格跨页时表头会重复提取出来的列错位了。处理办法分成两层。第一层是脚本层面我对parse_report.py做了规则只提取目标 PDF 的钱前 80 页关键段落碰到表格线条复杂的页直接跳过不强行解析。第二层是模型层面在SKILL.md的流程里写死一条规则从 PDF 提取的财务数字必须与用户口头提供或行情接口返回的数据交叉验证。若不一致以接口数据为准并在报告中标注差异。从那以后模型再也不会拿着一个错位的数字一本正经地分析。顺带说一句PDF 解析后的人工复核仍然不能省我现在每周固定花十分钟抽查三份报告里的关键财务数字成本很低但安全感高很多。4.2 数据时效性一次过期数据导致的分析偏差有段时间我让 skill 做每日复盘模型偶尔会拿三天前的行情数据当最新价。原因很简单脚本有缓存机制当天数据接口还没刷新的时候模型直接读了旧 CSV 文件。我的解决方式是在缓存逻辑里加入时间校验def cache_fresh(path: str, expire_hours: int 2) - bool: 判断缓存文件是否在有效期内 import time if not os.path.exists(path): return False age time.time() - os.path.getmtime(path) return age expire_hours * 3600同时对 skill 的流程做了一条硬性要求报告里标注的行情日期必须等于或晚于模型上次刷新数据的日期否则视为无效输出重新执行数据获取步骤。有了这道校验模型的睁眼说瞎话问题基本绝迹。4.3 模型幻觉治理强制引用与数据校验所有用过 AI 做数据工作的人都会遇到幻觉问题投研场景尤其危险因为数字错了就是真金白银的损失。我的治理思路是三板斧强制引用原始数据文件。指令中明确要求报告中每个关键财务数字后面必须用括号标注数据来源比如来自 fetch_financials.py 输出截止2024年报。要求模型自我校验。报告生成前先按流程生成一遍data_check.md里面只放数字和来源再由模型把正文和这个检查文件逐项比对。对数据不足诚实输出。禁止模型脑补任何指标未知就写未获取到该项数据。这套流程实际跑下来模型预测性幻觉大幅减少。曾经有一次它想当然地把毛利率约40%写进结论被校验规则拦住了因为它找不到对应的数据文件来源——这就是规则生效的例子。5. 从单票到组合skill 的复用与扩展思路投研 skill 做成了之后最爽的部分是可以横向复制。同一个框架稍微改改模板就能支撑完全不同的工作流。5.1 持仓周报自动化我把公司分析模板改成了持仓周报格式周一早上自动拉取持仓列表里每只股票的周涨幅、成交额、最新财务风险开关生成一张总览表。关键是把持仓列表做成一个简单的 CSV 维护文件skill 脚本只负责读取和刷新模型只负责基于表格写解读。每周一份周报内容包括持仓整体涨跌幅和基准对比个股异动原因摘要结合 tushare 公告和新闻检索风险清单状态变化下周关注事件日历这套流程跑起来之后我的周一早上直接省掉了一个多小时的机械梳理工作。5.2 公告监控与事件驱动检查单另一个我常用的子技能是事件驱动检查单。当某家公司发布重大公告比如大额减持、重大合同、更名模型不会盲目解读消息是好是坏而是按检查单逐项判断这是否改变公司基本面逻辑利润、收入、现金流公告中的关键数字是否与模型已知数据一致该事件是否触发风险清单中的某一项需要进一步验证的信息点是什么这样生成的不是利空利多式的武断结论而是一份带着验证步骤的工作底稿。我拿着底稿再去做深度调研效率和准确率都比以前高不少。5.3 多 agent 分工把 skill 拆成子技能单纯一个finance_researchskill 承担太多职责后触发判断会变得迟钝。我后来把它拆成了三个更小的技能子技能职责触发场景financial_radar拉取行情与财务数据产出数据核对文件需要数据、涨跌分析、财务指标计算report_draft基于数据文件生成结构化分析报告需要报告、结论、行业对比risk_audit独立运行风险清单输出风险开关状态需要对风险的单独核验拆分的收益不仅是触发更精准更重要的是可以让两个 agent 同时工作一个跑数据、一个审风险最后合并输出。虽然实际操作起来需要处理并发冲突但思路一旦跑通投研流水线的雏形就出来了。最后说一点我的个人体会。做这套 skill 最值得的投资不是模型提示词技巧而是把分析框架本身变成代码的一部分。框架在才谈得上工具化框架乱再强的模型也只是个聪明的聊天机器。如果你也想复现这套东西我建议从最常用的公司分析模板开始先跑通单票流程再加数据脚本最后再慢慢加行业对比和风险审计。别想着一步到位投研 skill 是一块一块拼出来的每加一块你自己会更清楚下一块是什么。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

网神SecIPS 3600 P5000-TG13M入侵防御系统部署与调优实战 2026/9/30 10:34:17

网神SecIPS 3600 P5000-TG13M入侵防御系统部署与调优实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
三维向量绕任意轴旋转:罗德里格斯公式与七矩阵连乘 2026/9/30 10:34:17

三维向量绕任意轴旋转:罗德里格斯公式与七矩阵连乘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
高德地图JS API与three.js实现3D建筑多楼层模型实战 2026/9/30 10:34:17

高德地图JS API与three.js实现3D建筑多楼层模型实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
多源Transformer信贷评分:小微授信从三张表到文本融合的落地实践 2026/9/30 10:34:16

多源Transformer信贷评分:小微授信从三张表到文本融合的落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
嵌入式Linux驱动开发实战:设备树、固件与调试经验 2026/9/30 10:34:08

嵌入式Linux驱动开发实战:设备树、固件与调试经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Jira安装三重契约:JVM、MySQL、字符编码深度解析 2026/9/30 10:33:52

Jira安装三重契约:JVM、MySQL、字符编码深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉