CtrlK
BlogDocsLog inGet started
Tessl Logo

thesis-drift

AI Berkshire skill: 投资论文漂移检测:分清事实变化与措辞变化. Source: skills/thesis-drift.md.

59

Quality

67%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./codex-skills/thesis-drift/SKILL.md
SKILL.md
Quality
Evals
Security

Codex adapter note

This skill is generated from skills/thesis-drift.md so Claude Code and Codex users share one canonical workflow.

  • Treat $ARGUMENTS as the user's request in the current Codex thread.
  • When the source mentions Claude-only surfaces such as Task, Agent, WebSearch, Bash, Read, or Write, use the closest Codex capability available in this session: subagents when available, web search when needed, shell commands for local tools, and normal file edits for workspace files.
  • Use shared project tools from 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.
  • Before starting research, run the 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.
  • Preserve the research quality rules from AGENTS.md: cross-check financial data, use exact arithmetic tools for valuation/math, and clearly label uncertainty and source gaps.

投资论文漂移检测:分清事实变化与措辞变化

对 $ARGUMENTS 执行投资论文漂移检测。

支持输入格式

  • 公司名 旧报告路径 新报告路径 — 指定两份研究报告或论文快照进行对比
  • 公司名 reports/{公司名}-thesis-旧日期.md reports/{公司名}-thesis-新日期.md — 对比两份带日期的论文快照
  • 公司名 — 自动查找 reports/{公司名}-thesis.md 及同目录历史快照;如果没有基线则转入缺失基线处理

"当事实改变时,我就改变想法。你呢?" —— 凯恩斯

"股价波动不是论文漂移,事实变了才是。" —— AI Berkshire

设计理念

长期持仓最难的不是每天读新闻,而是区分三件事:

  • 事实改变:收入、利润率、竞争格局、管理层行为、资本配置发生可验证变化
  • 价格改变:市场情绪或估值倍数变化,但生意本身未变
  • 措辞改变:两份报告表达不同,但底层证据和判断没有变化

投资论文漂移检测的目标是:只在证据变化时承认论文变化。不能因为报告换了写法就制造漂移,也不能因为股价涨跌就误判基本面。

本 Skill 依赖 /thesis-tracker 输出的结构化维度:核心假设清单、红线清单、估值锚点、追踪记录表。没有这些结构时,先补齐基线,再做漂移检测。

执行流程

第一步:判断操作模式

解析 $ARGUMENTS

  • 如果提供两份报告路径 → 进入指定报告对比模式
  • 如果只提供公司名 → 查找 reports/{公司名}-thesis.md 及历史快照,进入自动快照对比模式
  • 如果只找到一份报告或没有历史基线 → 进入缺失基线处理模式
  • 如果两份报告不是同一家公司 → 停止并要求用户确认,不做跨公司漂移判断

模式A:指定报告对比

A1:读取并校验两份报告

读取旧报告和新报告,提取:

  • 报告日期、公司名、股票代码
  • 核心论文(5句话)
  • 核心假设清单
  • 红线清单
  • 估值锚点
  • 追踪记录表
  • 管理层质量判断
  • 竞争护城河判断
  • 当前建议动作(买入 / 持有 / 观察 / 减仓 / 清仓)

如果报告缺少关键结构,先标注"结构缺失",但仍尽量从正文中抽取证据;抽取不到的维度标为"无法判断",不能编造结论。

A2:证据归一化

把两份报告中的事实证据整理成同一张表:

维度旧报告证据新报告证据数据来源是否可验证
估值锚点
核心假设
红线
管理层质量
竞争护城河

只比较证据,不比较文风。 如果新旧报告只是同义改写、排序变化、语气变化,但事实数据和判断阈值没有变化,判定为 Unchanged。

A3:数值与估值校验

所有数值变化必须使用 tools/financial_rigor.py 做精确计算,禁止 LLM 心算:

python3 tools/financial_rigor.py verify-valuation \
  --price {当前价格} \
  --eps {EPS} \
  --bvps {每股净资产} \
  --fcf-per-share {每股自由现金流}

如需计算市值、百分比变化、目标价差异或情景估值,使用:

python3 tools/financial_rigor.py verify-market-cap --price {价格} --shares {股本} --reported {报告市值} --currency {币种}
python3 tools/financial_rigor.py cross-validate --field {字段} --values '{JSON}' --unit {单位}
python3 tools/financial_rigor.py three-scenario --price {价格} --eps {EPS} --shares {股本亿} --growth {乐观} {中性} {悲观} --pe {乐观PE} {中性PE} {悲观PE}
python3 tools/financial_rigor.py calc --expr '{精确算式}'

关键财务数据必须至少两处独立来源交叉验证。来源不足、口径不一致、无法复核的数字必须标注为"低置信度 / 待核实"。

A4:逐维度判定漂移

固定使用以下维度,不要临时增减:

维度判定重点ImprovedUnchangedWeakened
估值锚点内在价值、PE/PB/FCF Yield、安全边际、目标价区间安全边际扩大或内在价值上修且经工具验算估值区间和安全边际无实质变化安全边际收窄、内在价值下修或估值假设失效
核心假设清单收入增速、利润率、现金流、用户/订单/产能等可验证假设更多假设被新证据强化假设状态与证据基本一致假设边际弱化、受损或破裂
红线清单诚信、监管、业务衰退、竞争突破、管理层异常动作原有红线风险解除或显著下降未触发且风险水平不变红线被触发或触发概率上升
管理层质量诚信、资本配置、回购分红、执行力、股东友好度新行为提高信任度行为延续旧判断行为损害信任或资本配置变差
竞争护城河市占率、定价权、网络效应、成本优势、替代威胁护城河变宽或竞争优势被验证格局无实质变化护城河被削弱或竞对突破

每个维度只能给出三类结论:Improved / Unchanged / Weakened

A5:证据驱动规则

每个非 Unchanged 的结论必须引用导致变化的具体新证据:

  • 财报行项目:例如收入增速、毛利率、经营现金流、回购金额、净现金
  • 监管披露:例如 10-K/20-F、年报、中报、港交所公告、SEC filing
  • 新闻事件:例如管理层变动、监管处罚、重大客户流失、竞品突破
  • 价格与估值:必须说明这是"估值变化"还是"基本面变化",不能混淆

如果找不到能解释变化的证据,必须判定为 Unchanged无法判断,不能用措辞差异推断漂移。

A6:输出漂移报告

报告结构

一、对比对象与时间跨度
二、总体结论:论文是否漂移
三、维度漂移表
四、证据差异明细
五、估值与数值验算
六、建议动作迁移
七、不确定项与需补充来源
八、下次跟踪重点

维度漂移表

维度旧判断新判断漂移方向触发证据置信度
估值锚点Improved / Unchanged / Weakened高/中/低
核心假设清单Improved / Unchanged / Weakened高/中/低
红线清单Improved / Unchanged / Weakened高/中/低
管理层质量Improved / Unchanged / Weakened高/中/低
竞争护城河Improved / Unchanged / Weakened高/中/低

Unchanged 行的触发证据写 ,不要为了填表编造证据。

总体结论必须回答

  1. 论文是否漂移? 未漂移 / 正向漂移 / 负向漂移 / 证据不足无法判断
  2. 漂移来自哪里? 估值 / 基本面 / 管理层 / 竞争格局 / 红线事件
  3. 是事实变化还是价格变化? 明确拆开说明
  4. 建议动作如何迁移? 例如:Watch → Buy、Buy → Hold、Hold → Reduce、Reduce → Exit
  5. 下一步需要什么证据? 下一份财报 / 监管披露 / 管理层说明 / 竞对数据

模式B:自动快照对比

B1:查找快照

reports/ 中查找:

  • reports/{公司名}-thesis.md
  • reports/{公司名}-thesis-*.md
  • reports/{公司名}/ 目录下包含 thesis论文追踪 的报告

选择时间最早且结构完整的文件作为旧报告,时间最新的文件作为新报告。若用户指定日期,以用户指定为准。

B2:防止错误配对

对比前必须确认:

  • 公司名或股票代码一致
  • 报告日期不同
  • 两份报告都包含可抽取的论文结构或研究结论

如果无法确认同一公司,停止并要求用户提供明确路径。

B3:执行模式A

找到两份有效快照后,按模式A完整执行。


模式C:缺失基线处理

如果只找到一份报告或没有找到旧快照:

  1. 明确说明:缺少可比较的历史基线,不能执行漂移检测
  2. 不要根据记忆或市场印象补造旧论文
  3. 引导用户先使用 /thesis-tracker {公司名} 建立论文 建立结构化基线
  4. 如果当前报告已足够完整,可建议将它保存为 reports/{公司名}-thesis.md 作为未来漂移检测基线

输出格式:

无法执行论文漂移检测:缺少历史基线。

已找到:
- 当前报告:{路径 / 未找到}
- 历史基线:未找到

建议:
1. 先运行 /thesis-tracker {公司名} 建立论文
2. 下次有新财报或重大事件后,再运行 /thesis-drift {公司名} 旧报告 新报告

关键原则

  • 证据优先于措辞 — 同义改写不是漂移,只有事实证据变化才是漂移
  • 基本面优先于股价 — 股价涨跌只影响估值锚点,不自动改变生意质量
  • 数值必须验算 — 所有百分比、估值倍数、目标价差异必须用 tools/financial_rigor.py
  • 不确定就标注不确定 — 来源缺失、口径不一致、无法复核时,不要硬判
  • 红线单独处理 — 红线触发优先级高于估值便宜,不能被低 PE 掩盖
  • 输出必须可复盘 — 每个 Improved / Weakened 结论都要能追溯到具体证据
Repository
xbtlin/ai-berkshire
Last updated
First committed

Is this your skill?

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.