AI Berkshire skill: 投资研究:巴菲特-芒格-段永平-李录 四大师综合分析框架. Source: skills/investment-research.md.
47
49%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./codex-skills/investment-research/SKILL.mdThis skill is generated from skills/investment-research.md so Claude Code and Codex users share one canonical workflow.
$ARGUMENTS as the user's request in the current Codex thread.tools/ in this repository. Prefer running commands from the repository root with paths like python3 tools/financial_rigor.py ...; if the current thread starts outside the repo, locate the actual checkout path first instead of assuming a fixed home-directory path.date command to confirm today's date; treat it as the baseline for "latest" data and state the data cutoff date in the report header. Never assume the current date from training data.AGENTS.md: cross-check financial data, use exact arithmetic tools for valuation/math, and clearly label uncertainty and source gaps.对 $ARGUMENTS 进行系统化投资研究分析。
基于巴菲特、芒格、段永平、李录四位投资大师的方法论,按以下七个模块顺序执行研究:
在开始研究前,先评估该公司的"AI可研究性",识别潜在的数据偏见:
信息丰富度评级:
| 等级 | 特征 | AI研究陷阱 | 应对策略 |
|---|---|---|---|
| A级(信息充裕) | 上市多年、券商覆盖多、媒体报道密集 | 共识过强,AI输出趋同于市场定价,alpha有限 | 重点做反面检验:聪明人为什么不买?被忽略的风险是什么? |
| B级(信息适中) | 上市1-3年、覆盖有限、部分数据需推算 | AI可能用"合理推测"填补空白,看起来完整实则虚假确定性 | 每个推算数据标注置信度,区分"有据推算"和"凭空填充" |
| C级(信息稀缺) | 刚上市/冷门股/新兴市场、几乎无覆盖 | AI会因资料不足而过度保守,误判为"看不清=不好" | 用第一性原理提问(见下方),从有限信息中提取商业本质 |
C级公司的第一性原理研究法: 当公开资料不足时,不要试图拼凑出"看起来完整"的报告,而是聚焦以下底层问题:
偏见自查清单(研究全程保持警惕):
将信息丰富度评级结果写入报告开头,并在最终结论中注明"AI研究置信度"与"实际投资确定性"的区别。
数据源规范:参见
skills/financial-data.md。所有财务数据必须来自两个独立来源,误差>1%须标记。
- 美股:macrotrends(主)+ stockanalysis(副)
- 港股:aastocks(主)+ macrotrends ADR(副)
- A股:东方财富(主)+ 巨潮资讯(副)
使用 Task 工具启动后台 Agent,从网络收集以下数据:
数据收集完成后,必须调用 tools/financial_rigor.py 对关键数据进行程序化验证,杜绝LLM心算误差。
必须验证的数据点:
强制验证步骤(使用Bash调用工具):
Step 1 — 市值验算(精确十进制,非浮点):
python3 tools/financial_rigor.py verify-market-cap \
--price {股价} --shares {总股本} --reported {报告市值} --currency {币种}Step 2 — 关键数据多源交叉验证:
python3 tools/financial_rigor.py cross-validate \
--field {字段名} --values '{"来源1": 数值, "来源2": 数值}' --unit {单位}对收入、净利润、现金储备分别执行。
Step 3 — 估值指标精确验算(PE/PB/ROE/FCF Yield 等):
python3 tools/financial_rigor.py verify-valuation \
--price {股价} --eps {EPS} --bvps {每股净资产} --fcf-per-share {每股FCF} --dividend {每股股息}验证规则:
常见错误防范:
分析要点:
逐一验证五类护城河:
| 护城河类型 | 验证方法 |
|---|---|
| 品牌/定价权 | 是否能在不损失销量的情况下提价? |
| 转换成本 | 客户迁移到竞品的成本有多高? |
| 网络效应 | 用户越多产品越好吗? |
| 规模效应 | 规模带来的成本优势有多大? |
| 技术/专利壁垒 | 技术领先几年?能否被复制? |
分析护城河趋势:过去5年变宽还是变窄?未来5年预判。
巴菲特式追问:10年后这条护城河还在吗?什么能摧毁它?
芒格式追问:我最可能在哪里犯错?聪明人为什么会不买/做空这家公司?
段永平式追问:如果CEO退休,这家公司还能保持竞争力吗?
李录式追问:站在20年后回看,这家公司是"这个时代的标准石油"还是"昙花一现的3Com"?
python3 tools/financial_rigor.py three-scenario \
--price {股价} --eps {EPS} --shares {总股本亿} \
--growth {乐观增速} {中性增速} {悲观增速} \
--pe {乐观PE} {中性PE} {悲观PE} --years 3 --currency {币种}三年三情景回答"贵不贵",十年折现回答"值不值得重仓"。凡是给出十年期 IRR 或终值倍数的研究,必须走这套流程,用 tools/terminal_value.py。
终值倍数只有一个合法来源——永续增长模型,不许用同业类比:
$$PE_{终值} = \frac{1 - g/ROIC}{r - g}$$
"帝亚吉欧 13 倍所以茅台给 16 倍"是循环论证:用别人今天的价格,证明我假设的价格合理。市场今天整体贵,类比法就把这份贵原封不动搬到十年后。
Step 1 — 定三个输入,逐个写出理由(这一步全是判断,不是计算,必须在报告里交代):
| 输入 | 怎么定 | 常见错误 |
|---|---|---|
| r 资本成本 | 无风险利率 + β × ERP。币种必须与现金流一致:人民币口径 6%–9%(主用 8%),美元/港元口径 9%–11.5%(主用 10%) | 跟着国债利率跑。中国国债 1.70% 折出来的 PE 会到 50 倍以上,那不是估值是放大偏见 |
| ROIC 稳态增量资本回报 | 夹在存量 ROIC(含不上表的无形护城河,偏高)与派息反解的隐含增量 ROIC(假设 capex 回报为零,偏低)之间 | 直接用存量 ROIC。等于假设新投的每块钱都能复制建立微信时的回报 |
| g 永续增速 | 不是未来十年增速(那已在终值利润里),是终值年之后到永远。硬天花板是长期名义 GDP:人民币口径基准档 ≤2%,美元口径 ≤4% | 用美元的 g 配人民币的 r。3% 名义增长在美国是 0.5% 实际(保守),在中国是 2% 实际(激进) |
g 不随 r 变——g 是对终值年之后经济的判断,r 是你要求的回报,两件独立的事。做敏感性时只动 r。
Step 2 — 三条硬约束准出检查(不通过不许把估值写进报告):
python3 tools/terminal_value.py audit \
--currency {CNY|USD|HKD} --r {资本成本} --roic {稳态ROIC} \
--g {悲观g},{基准g},{乐观g} --rf {无风险利率} --beta 1.0 \
--discrete-risks "{风险名}:{情景|尾部档|概率|未建模},..."三条检查的内容与打回条件:
| # | 检查 | 打回条件 |
|---|---|---|
| C1 | r 与 g 必须同币种 | r 落在别的币种区间、或基准档 g 超过本币上限。工具会直接指出"这是 USD 的量级——r 用了本币而 g 用了外币" |
| C2 | 分母 r−g ≥ 5 个百分点 | 任一档不足 5pct。分母越窄 g 动一点点估值就翻天;分母 ≤0 直接判模型失效。确实要做上行/下行情景时加 --upside-only 显式声明,但报告里必须写明"这是情景不是估值" |
| C3 | 离散风险不得进 r 或 β | 任一风险归属写成 折现率/r/beta 一律打回。退市、VIE 失效、地缘断供、监管重击必须归 情景 或 尾部档。β 偏离 1.0 必须给 --beta-justification |
C3 为什么是硬的:抬 r 三个百分点,对第 10 年现金流的惩罚是第 1 年的 2.6 倍;而退市风险是大致均匀甚至前置的年度危害率。用折现率处理离散风险,会系统性地把风险的时间分布搞反。 正确做法是单列一个尾部情景档并给它一个概率。
C1/C2/C3 的完整论证见 reports/7公司10年投资价值横评-确定性调整后回报-20260814.md 第 3.4–3.6 节——三条都是那份报告实际踩过的坑。
Step 3 — 出数(准出后才能跑):
# 单点退出 PE,打印完整算式(留存率/分子/分母全部展开,便于报告引用)
python3 tools/terminal_value.py pe --roic {ROIC} --g {g} --r {r}
# 从零算 IRR
python3 tools/terminal_value.py irr \
--profit {终值年利润} --mcap {今日市值} --pe {退出PE} \
--years 10 --payout {股息率-稀释率}多公司横评时把参数写成 JSON 传 --config,再用 table / sweep / check。
Step 4 — 报告里必须写出的四件事:
未建模 的),写进"限制"章节。巴菲特式追问:这个 r 如果错 2 个百分点,我的结论会翻转吗?如果会,我的结论买的是公司还是折现率?
段永平式追问:如果股市明天关闭5年,你愿意以这个价格持有吗?
汇总表格:
| 维度 | 结论 | 信心度 |
|---|---|---|
| 生意质量(段永平) | ||
| 护城河(巴菲特) | ||
| 管理层(段永平+巴菲特) | ||
| 最大风险(芒格) | ||
| 文明趋势(李录) | ||
| 估值(巴菲特+段永平) |
最终决策表格:
| 策略 | 建议 |
|---|---|
| 空仓者 | |
| 持仓者 | |
| 卖出信号 | |
| 加仓信号 |
四位大师的模拟点评(用引用格式)。
~/[公司名]投资研究报告.md报告写入文件后,必须执行数据抽检,通过后方可发布:
Step 1 — 提取抽检清单(15%随机抽样):
python3 tools/report_audit.py extract \
--report <报告文件路径>输出 JSON 模板,每项含 fetched_value(待填)。
Step 2 — 取数核验:
对清单中每个数据点,按 skills/financial-data.md 规范从可靠信源取数
(美股:macrotrends+stockanalysis;港股:aastocks+macrotrends;A股:东方财富+巨潮资讯),
填入 fetched_value / fetched_source / fetched_value2 / fetched_source2。
Step 3 — 输出判决:
python3 tools/report_audit.py verdict \
--results '<填好的JSON>' \
--report <报告文件名>Step 4 — 估值口径复检(含十年折现估值的报告必须执行):
如果报告里出现了十年期 IRR 或终值倍数,把最终定稿用的参数再跑一遍 audit,确认写进报告的数字与准出时的一致:
python3 tools/terminal_value.py audit \
--currency {币种} --r {r} --roic {ROIC} --g {三档g} --rf {无风险利率} \
--beta {β} --discrete-risks "{风险归属清单}"这一步不能跳过的原因:第七步的 audit 是在算数之前做的,而写报告的过程中经常会回头调 g 或 r。准出前的最后一次 audit 才是对报告负责的那一次。
d9c124b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.