thesis-drift
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCodex adapter note
Codex adapter note
This skill is generated from so Claude Code and Codex users share one canonical workflow.
skills/thesis-drift.md- Treat as the user's request in the current Codex thread.
$ARGUMENTS - 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 in this repository. Prefer running commands from the repository root with paths like
tools/; if the current thread starts outside the repo, locate the actual checkout path first instead of assuming a fixed home-directory path.python3 tools/financial_rigor.py ... - Before starting research, run the 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.
date - Preserve the research quality rules from : cross-check financial data, use exact arithmetic tools for valuation/math, and clearly label uncertainty and source gaps.
AGENTS.md
This skill is generated from so Claude Code and Codex users share one canonical workflow.
skills/thesis-drift.md- Treat as the user's request in the current Codex thread.
$ARGUMENTS - 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 in this repository. Prefer running commands from the repository root with paths like
tools/; if the current thread starts outside the repo, locate the actual checkout path first instead of assuming a fixed home-directory path.python3 tools/financial_rigor.py ... - Before starting research, run the 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.
date - Preserve the research quality rules from : cross-check financial data, use exact arithmetic tools for valuation/math, and clearly label uncertainty and source gaps.
AGENTS.md
投资论文漂移检测:分清事实变化与措辞变化
Investment Thesis Drift Detection: Distinguish Between Fact Changes and Wording Changes
对 $ARGUMENTS 执行投资论文漂移检测。
支持输入格式:
- — 指定两份研究报告或论文快照进行对比
公司名 旧报告路径 新报告路径 - — 对比两份带日期的论文快照
公司名 reports/{公司名}-thesis-旧日期.md reports/{公司名}-thesis-新日期.md - — 自动查找
公司名及同目录历史快照;如果没有基线则转入缺失基线处理reports/{公司名}-thesis.md
"当事实改变时,我就改变想法。你呢?" —— 凯恩斯"股价波动不是论文漂移,事实变了才是。" —— AI Berkshire
Perform investment thesis drift detection on $ARGUMENTS.
Supported Input Formats:
- — Specify two research reports or thesis snapshots for comparison
Company Name Old Report Path New Report Path - — Compare two dated thesis snapshots
Company Name reports/{Company Name}-thesis-old-date.md reports/{Company Name}-thesis-new-date.md - — Automatically find
Company Nameand historical snapshots in the same directory; if no baseline exists, proceed to missing baseline handlingreports/{Company Name}-thesis.md
"When the facts change, I change my mind. What do you do?" — John Maynard Keynes"Stock price fluctuations are not thesis drift; only fact changes are." — AI Berkshire
设计理念
Design Philosophy
长期持仓最难的不是每天读新闻,而是区分三件事:
- 事实改变:收入、利润率、竞争格局、管理层行为、资本配置发生可验证变化
- 价格改变:市场情绪或估值倍数变化,但生意本身未变
- 措辞改变:两份报告表达不同,但底层证据和判断没有变化
投资论文漂移检测的目标是:只在证据变化时承认论文变化。不能因为报告换了写法就制造漂移,也不能因为股价涨跌就误判基本面。
本 Skill 依赖 输出的结构化维度:核心假设清单、红线清单、估值锚点、追踪记录表。没有这些结构时,先补齐基线,再做漂移检测。
/thesis-trackerThe hardest part of long-term holding is not reading the news every day, but distinguishing three things:
- Fact Changes: Verifiable changes in revenue, profit margins, competitive landscape, management behavior, and capital allocation
- Price Changes: Changes in market sentiment or valuation multiples, but the business itself remains unchanged
- Wording Changes: Two reports express differently, but the underlying evidence and judgments remain unchanged
The goal of investment thesis drift detection is: Only acknowledge thesis changes when evidence changes. Do not create drift just because the report is rewritten, nor misjudge fundamentals because of stock price fluctuations.
This Skill relies on structured dimensions output by : core assumption list, red line list, valuation anchor, tracking record table. If these structures are not available, first complete the baseline before performing drift detection.
/thesis-tracker执行流程
Execution Process
第一步:判断操作模式
Step 1: Determine Operation Mode
解析 :
$ARGUMENTS- 如果提供两份报告路径 → 进入指定报告对比模式
- 如果只提供公司名 → 查找 及历史快照,进入自动快照对比模式
reports/{公司名}-thesis.md - 如果只找到一份报告或没有历史基线 → 进入缺失基线处理模式
- 如果两份报告不是同一家公司 → 停止并要求用户确认,不做跨公司漂移判断
Parse :
$ARGUMENTS- If two report paths are provided → Enter Specified Report Comparison mode
- If only the company name is provided → Find and historical snapshots, enter Automatic Snapshot Comparison mode
reports/{Company Name}-thesis.md - If only one report is found or no historical baseline exists → Enter Missing Baseline Handling mode
- If the two reports are not for the same company → Stop and ask the user to confirm, do not make cross-company drift judgments
模式A:指定报告对比
Mode A: Specified Report Comparison
A1:读取并校验两份报告
A1: Read and Validate Two Reports
读取旧报告和新报告,提取:
- 报告日期、公司名、股票代码
- 核心论文(5句话)
- 核心假设清单
- 红线清单
- 估值锚点
- 追踪记录表
- 管理层质量判断
- 竞争护城河判断
- 当前建议动作(买入 / 持有 / 观察 / 减仓 / 清仓)
如果报告缺少关键结构,先标注"结构缺失",但仍尽量从正文中抽取证据;抽取不到的维度标为"无法判断",不能编造结论。
Read the old and new reports, extract:
- Report date, company name, stock symbol
- Core thesis (5 sentences)
- Core assumption list
- Red line list
- Valuation anchor
- Tracking record table
- Management quality judgment
- Competitive moat judgment
- Current recommended action (Buy / Hold / Watch / Reduce / Exit)
If the report lacks key structures, mark "Structure Missing" first, but still try to extract evidence from the text as much as possible; mark dimensions that cannot be extracted as "Cannot Judge", do not fabricate conclusions.
A2:证据归一化
A2: Evidence Normalization
把两份报告中的事实证据整理成同一张表:
| 维度 | 旧报告证据 | 新报告证据 | 数据来源 | 是否可验证 |
|---|---|---|---|---|
| 估值锚点 | ||||
| 核心假设 | ||||
| 红线 | ||||
| 管理层质量 | ||||
| 竞争护城河 |
只比较证据,不比较文风。 如果新旧报告只是同义改写、排序变化、语气变化,但事实数据和判断阈值没有变化,判定为 Unchanged。
Organize the factual evidence from the two reports into the same table:
| Dimension | Old Report Evidence | New Report Evidence | Data Source | Verifiable |
|---|---|---|---|---|
| Valuation Anchor | ||||
| Core Assumptions | ||||
| Red Lines | ||||
| Management Quality | ||||
| Competitive Moat |
Only compare evidence, not writing style. If the old and new reports are just synonymous rewrites, order changes, or tone changes, but the factual data and judgment thresholds have not changed, judge as Unchanged.
A3:数值与估值校验
A3: Numerical and Valuation Verification
所有数值变化必须使用 做精确计算,禁止 LLM 心算:
tools/financial_rigor.pybash
python3 tools/financial_rigor.py verify-valuation \
--price {当前价格} \
--eps {EPS} \
--bvps {每股净资产} \
--fcf-per-share {每股自由现金流}如需计算市值、百分比变化、目标价差异或情景估值,使用:
bash
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 '{精确算式}'关键财务数据必须至少两处独立来源交叉验证。来源不足、口径不一致、无法复核的数字必须标注为"低置信度 / 待核实"。
All numerical changes must be accurately calculated using , LLM mental calculation is prohibited:
tools/financial_rigor.pybash
python3 tools/financial_rigor.py verify-valuation \
--price {Current Price} \
--eps {EPS} \
--bvps {Book Value Per Share} \
--fcf-per-share {Free Cash Flow Per Share}To calculate market capitalization, percentage changes, target price differences, or scenario valuations, use:
bash
python3 tools/financial_rigor.py verify-market-cap --price {Price} --shares {Shares Outstanding} --reported {Reported Market Cap} --currency {Currency}
python3 tools/financial_rigor.py cross-validate --field {Field} --values '{JSON}' --unit {Unit}
python3 tools/financial_rigor.py three-scenario --price {Price} --eps {EPS} --shares {Shares Outstanding (100M)} --growth {Optimistic} {Neutral} {Pessimistic} --pe {Optimistic PE} {Neutral PE} {Pessimistic PE}
python3 tools/financial_rigor.py calc --expr '{Precise Formula}'Key financial data must be cross-validated with at least two independent sources. Numbers with insufficient sources, inconsistent calibers, or unreviewable must be marked as "Low Confidence / To Be Verified".
A4:逐维度判定漂移
A4: Drift Judgment by Dimension
固定使用以下维度,不要临时增减:
| 维度 | 判定重点 | Improved | Unchanged | Weakened |
|---|---|---|---|---|
| 估值锚点 | 内在价值、PE/PB/FCF Yield、安全边际、目标价区间 | 安全边际扩大或内在价值上修且经工具验算 | 估值区间和安全边际无实质变化 | 安全边际收窄、内在价值下修或估值假设失效 |
| 核心假设清单 | 收入增速、利润率、现金流、用户/订单/产能等可验证假设 | 更多假设被新证据强化 | 假设状态与证据基本一致 | 假设边际弱化、受损或破裂 |
| 红线清单 | 诚信、监管、业务衰退、竞争突破、管理层异常动作 | 原有红线风险解除或显著下降 | 未触发且风险水平不变 | 红线被触发或触发概率上升 |
| 管理层质量 | 诚信、资本配置、回购分红、执行力、股东友好度 | 新行为提高信任度 | 行为延续旧判断 | 行为损害信任或资本配置变差 |
| 竞争护城河 | 市占率、定价权、网络效应、成本优势、替代威胁 | 护城河变宽或竞争优势被验证 | 格局无实质变化 | 护城河被削弱或竞对突破 |
每个维度只能给出三类结论:Improved / Unchanged / Weakened。
Use the following fixed dimensions, do not add or remove temporarily:
| Dimension | Judgment Focus | Improved | Unchanged | Weakened |
|---|---|---|---|---|
| Valuation Anchor | Intrinsic value, PE/PB/FCF Yield, margin of safety, target price range | Margin of safety expands or intrinsic value is revised upward and verified by tools | Valuation range and margin of safety have no substantial changes | Margin of safety narrows, intrinsic value is revised downward, or valuation assumptions fail |
| Core Assumption List | Revenue growth rate, profit margin, cash flow, verifiable assumptions such as users/orders/capacity | More assumptions are strengthened by new evidence | Assumption status is basically consistent with evidence | Assumptions are marginally weakened, damaged, or broken |
| Red Line List | Integrity, regulation, business decline, competitive breakthrough, abnormal management actions | Original red line risks are eliminated or significantly reduced | Not triggered and risk level remains unchanged | Red line is triggered or trigger probability increases |
| Management Quality | Integrity, capital allocation, share repurchases and dividends, execution, shareholder friendliness | New behaviors increase trust | Behaviors continue old judgments | Behaviors damage trust or capital allocation deteriorates |
| Competitive Moat | Market share, pricing power, network effects, cost advantages, substitution threats | Moat widens or competitive advantages are verified | Competitive landscape has no substantial changes | Moat is weakened or competitors break through |
Each dimension can only give three types of conclusions: Improved / Unchanged / Weakened.
A5:证据驱动规则
A5: Evidence-Driven Rules
每个非 Unchanged 的结论必须引用导致变化的具体新证据:
- 财报行项目:例如收入增速、毛利率、经营现金流、回购金额、净现金
- 监管披露:例如 10-K/20-F、年报、中报、港交所公告、SEC filing
- 新闻事件:例如管理层变动、监管处罚、重大客户流失、竞品突破
- 价格与估值:必须说明这是"估值变化"还是"基本面变化",不能混淆
如果找不到能解释变化的证据,必须判定为 Unchanged 或 无法判断,不能用措辞差异推断漂移。
Each non-Unchanged conclusion must cite specific new evidence that caused the change:
- Financial statement items: e.g., revenue growth rate, gross profit margin, operating cash flow, repurchase amount, net cash
- Regulatory disclosures: e.g., 10-K/20-F, annual report, interim report, HKEX announcement, SEC filing
- News events: e.g., management changes, regulatory penalties, major customer loss, competitor breakthroughs
- Price and valuation: Must explain whether this is "valuation change" or "fundamental change", cannot confuse the two
If no evidence can be found to explain the change, must judge as Unchanged or Cannot Judge, cannot infer drift from wording differences.
A6:输出漂移报告
A6: Output Drift Report
报告结构
Report Structure
一、对比对象与时间跨度
二、总体结论:论文是否漂移
三、维度漂移表
四、证据差异明细
五、估值与数值验算
六、建议动作迁移
七、不确定项与需补充来源
八、下次跟踪重点I. Comparison Objects and Time Span
II. Overall Conclusion: Is the Thesis Drifting?
III. Dimension Drift Table
IV. Evidence Difference Details
V. Valuation and Numerical Verification
VI. Recommended Action Migration
VII. Uncertain Items and Required Supplementary Sources
VIII. Key Focus for Next Tracking维度漂移表
Dimension Drift Table
| 维度 | 旧判断 | 新判断 | 漂移方向 | 触发证据 | 置信度 |
|---|---|---|---|---|---|
| 估值锚点 | Improved / Unchanged / Weakened | 高/中/低 | |||
| 核心假设清单 | Improved / Unchanged / Weakened | 高/中/低 | |||
| 红线清单 | Improved / Unchanged / Weakened | 高/中/低 | |||
| 管理层质量 | Improved / Unchanged / Weakened | 高/中/低 | |||
| 竞争护城河 | Improved / Unchanged / Weakened | 高/中/低 |
Unchanged 行的触发证据写 ,不要为了填表编造证据。
—| Dimension | Old Judgment | New Judgment | Drift Direction | Trigger Evidence | Confidence |
|---|---|---|---|---|---|
| Valuation Anchor | Improved / Unchanged / Weakened | High/Medium/Low | |||
| Core Assumption List | Improved / Unchanged / Weakened | High/Medium/Low | |||
| Red Line List | Improved / Unchanged / Weakened | High/Medium/Low | |||
| Management Quality | Improved / Unchanged / Weakened | High/Medium/Low | |||
| Competitive Moat | Improved / Unchanged / Weakened | High/Medium/Low |
For Unchanged rows, write in Trigger Evidence, do not fabricate evidence for filling the table.
—总体结论必须回答
Overall Conclusion Must Answer
- 论文是否漂移? 未漂移 / 正向漂移 / 负向漂移 / 证据不足无法判断
- 漂移来自哪里? 估值 / 基本面 / 管理层 / 竞争格局 / 红线事件
- 是事实变化还是价格变化? 明确拆开说明
- 建议动作如何迁移? 例如:Watch → Buy、Buy → Hold、Hold → Reduce、Reduce → Exit
- 下一步需要什么证据? 下一份财报 / 监管披露 / 管理层说明 / 竞对数据
- Is the thesis drifting? No Drift / Positive Drift / Negative Drift / Insufficient Evidence to Judge
- Where does the drift come from? Valuation / Fundamentals / Management / Competitive Landscape / Red Line Event
- Is it a fact change or a price change? Clearly explain separately
- How to migrate recommended actions? e.g., Watch → Buy, Buy → Hold, Hold → Reduce, Reduce → Exit
- What evidence is needed next? Next financial report / Regulatory disclosure / Management explanation / Competitor data
模式B:自动快照对比
Mode B: Automatic Snapshot Comparison
B1:查找快照
B1: Find Snapshots
在 中查找:
reports/reports/{公司名}-thesis.mdreports/{公司名}-thesis-*.md- 目录下包含
reports/{公司名}/、thesis、论文的报告追踪
选择时间最早且结构完整的文件作为旧报告,时间最新的文件作为新报告。若用户指定日期,以用户指定为准。
Look in for:
reports/reports/{Company Name}-thesis.mdreports/{Company Name}-thesis-*.md- Reports containing "thesis", "论文", or "追踪" in the directory
reports/{Company Name}/
Select the earliest file with a complete structure as the old report, and the latest file as the new report. If the user specifies a date, follow the user's specification.
B2:防止错误配对
B2: Prevent Incorrect Pairing
对比前必须确认:
- 公司名或股票代码一致
- 报告日期不同
- 两份报告都包含可抽取的论文结构或研究结论
如果无法确认同一公司,停止并要求用户提供明确路径。
Before comparison, must confirm:
- Company name or stock symbol is consistent
- Report dates are different
- Both reports contain extractable thesis structures or research conclusions
If it cannot be confirmed that they are for the same company, stop and ask the user to provide a clear path.
B3:执行模式A
B3: Execute Mode A
找到两份有效快照后,按模式A完整执行。
After finding two valid snapshots, fully execute Mode A.
模式C:缺失基线处理
Mode C: Missing Baseline Handling
如果只找到一份报告或没有找到旧快照:
- 明确说明:缺少可比较的历史基线,不能执行漂移检测
- 不要根据记忆或市场印象补造旧论文
- 引导用户先使用 建立结构化基线
/thesis-tracker {公司名} 建立论文 - 如果当前报告已足够完整,可建议将它保存为 作为未来漂移检测基线
reports/{公司名}-thesis.md
输出格式:
无法执行论文漂移检测:缺少历史基线。
已找到:
- 当前报告:{路径 / 未找到}
- 历史基线:未找到
建议:
1. 先运行 /thesis-tracker {公司名} 建立论文
2. 下次有新财报或重大事件后,再运行 /thesis-drift {公司名} 旧报告 新报告If only one report is found or no old snapshots are found:
- Clearly state: Missing comparable historical baseline, cannot perform drift detection
- Do not fabricate an old thesis based on memory or market impressions
- Guide the user to first establish a structured baseline using
/thesis-tracker {Company Name} Establish Thesis - If the current report is complete enough, suggest saving it as as the baseline for future drift detection
reports/{Company Name}-thesis.md
Output format:
Cannot perform thesis drift detection: Missing historical baseline.
Found:
- Current Report: {Path / Not Found}
- Historical Baseline: Not Found
Recommendations:
1. First run /thesis-tracker {Company Name} Establish Thesis
2. After the next financial report or major event, run /thesis-drift {Company Name} Old Report New Report关键原则
Key Principles
- 证据优先于措辞 — 同义改写不是漂移,只有事实证据变化才是漂移
- 基本面优先于股价 — 股价涨跌只影响估值锚点,不自动改变生意质量
- 数值必须验算 — 所有百分比、估值倍数、目标价差异必须用
tools/financial_rigor.py - 不确定就标注不确定 — 来源缺失、口径不一致、无法复核时,不要硬判
- 红线单独处理 — 红线触发优先级高于估值便宜,不能被低 PE 掩盖
- 输出必须可复盘 — 每个 Improved / Weakened 结论都要能追溯到具体证据
- Evidence takes precedence over wording — Synonymous rewrites are not drift; only changes in factual evidence are drift
- Fundamentals take precedence over stock price — Stock price fluctuations only affect valuation anchors, do not automatically change business quality
- Numerical values must be verified — All percentages, valuation multiples, and target price differences must use
tools/financial_rigor.py - Mark uncertainty when uncertain — Do not force a judgment when sources are missing, calibers are inconsistent, or unreviewable
- Red lines are handled separately — Red line triggering takes priority over cheap valuation, cannot be covered by low PE
- Output must be reproducible — Each Improved / Weakened conclusion must be traceable to specific evidence