SuperAPI AI Directory

thesis-drift

General & other

View repository

Updated 10-16 01:34

About this skill

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.
Investment thesis drift detection: distinguish factual change from wording change

Run investment thesis drift detection on $ARGUMENTS.

Supported input formats:

  • 公司名 旧报告路径 新报告路径 — Specify two research reports or thesis snapshots for comparison
  • 公司名 reports/{公司名}-thesis-旧日期.md reports/{公司名}-thesis-新日期.md — Compare two dated thesis snapshots
  • 公司名 — Automatically find reports/{公司名}-thesis.md and historical snapshots in the same directory; if there is no baseline, switch to missing baseline handling

"When the facts change, I change my mind. What do you do?" — Keynes

"Stock price fluctuations are not thesis drift; only changed facts are." — AI Berkshire

Design philosophy

The hardest part of long-term holding is not reading the news every day, but distinguishing three things:

  • Facts change: verifiable changes occur in revenue, profit margins, competitive landscape, management behavior, or capital allocation
  • Prices change: market sentiment or valuation multiples change, but the business itself has not changed
  • Wording changes: the two reports are expressed differently, but the underlying evidence and judgments have not changed

The goal of investment thesis drift detection is:only acknowledge thesis change when the evidence changes. Do not create drift just because a report is written differently, and do not misjudge the fundamentals just because the stock price rises or falls.

This Skill depends on /thesis-tracker structured dimensions output: core assumption checklist, red line checklist, valuation anchors, tracking record table. When these structures are absent, fill in the baseline first, then perform drift detection.

Execution flow

Step 1: Determine the operating mode

Parse $ARGUMENTS:

  • If two report paths are provided → enterspecified report comparisonmode
  • If only a company name is provided → find reports/{公司名}-thesis.md and historical snapshots, enterautomatic snapshot comparisonmode
  • If only one report is found or there is no historical baseline → entermissing baseline handlingmode
  • If the two reports are not for the same company → stop and ask the user to confirm; do not make cross-company drift judgments

Mode A: Specified report comparison

A1: Read and validate the two reports

Read the old report and the new report, and extract:

  • Report date, company name, stock ticker
  • Core thesis (5 sentences)
  • Core assumption checklist
  • Red line checklist
  • Valuation anchors
  • Tracking record table
  • Management quality judgment
  • Competitive moat judgment
  • Current recommended action (buy / hold / watch / reduce / exit)

If a report lacks key structures, first mark "structure missing", but still try as much as possible to extract evidence from the body text; dimensions from which nothing can be extracted should be marked "unable to judge"; do not fabricate conclusions.

A2: Evidence normalization

Organize the factual evidence in the two reports into the same table:

Dimension Old report evidence New report evidence Data source Verifiable or not
Valuation anchors
Core assumptions
Red lines
Management quality
Competitive moat

Compare only the evidence, not the writing style. If the new and old reports are merely synonymous rewrites, reorderings, or tonal changes, with no changes to factual data or judgment thresholds, the determination is Unchanged.

A3: Numerical and valuation verification

All numerical changes must use tools/financial_rigor.py for precise calculation; LLM mental arithmetic is prohibited:

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

If you need to calculate market capitalization, percentage changes, target price differences, or scenario valuations, use:

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 '{精确算式}'

Key financial data must be cross-verified by at least two independent sources. Figures with insufficient sources, inconsistent definitions, or that cannot be reviewed must be marked as "low confidence / to be verified."

A4: Dimension-by-dimension drift determination

Use the following dimensions consistently; do not add or remove them on an ad hoc basis:

Dimension Determination focus Improved Unchanged Weakened
Valuation anchor Intrinsic value, PE/PB/FCF Yield, margin of safety, target price range Margin of safety widens or intrinsic value is revised upward and verified with tools No substantive change in the valuation range and margin of safety Margin of safety narrows, intrinsic value is revised downward, or valuation assumptions become invalid
Core assumptions checklist Verifiable assumptions such as revenue growth, profit margin, cash flow, users/orders/capacity, etc. More assumptions are strengthened by new evidence Assumption status is broadly consistent with the evidence Assumptions are marginally weakened, impaired, or broken
Red line checklist Integrity, regulation, business decline, competitive breakthrough, abnormal management actions The original red line risk is removed or significantly reduced Not triggered and the risk level is unchanged The red line is triggered or the probability of triggering increases
Management quality Integrity, capital allocation, buybacks and dividends, execution, shareholder friendliness New behavior increases trust Behavior continues the previous judgment Behavior damages trust or capital allocation worsens
Competitive moat Market share, pricing power, network effects, cost advantage, substitution threat The moat widens or the competitive advantage is verified No substantive change in the landscape The moat is weakened or a competitor breaks through

Each dimension can only give three types of conclusions:Improved / Unchanged / Weakened。

A5: Evidence-driven rule

Every conclusion other than Unchanged must cite the specific new evidence that caused the change:

  • Financial statement line items: e.g., revenue growth, gross margin, operating cash flow, buyback 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, loss of a major customer, competitor breakthrough
  • Price and valuation: must specify whether this is a "valuation change" or a "fundamental change"; do not confuse them

If no evidence can be found to explain the change, the determination must be Unchanged or Cannot determine, and drift must not be inferred from wording differences.

A6: Output drift report

Report structure

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

Dimension drift table

Dimension Old judgment New judgment Drift direction Triggering evidence Confidence
Valuation anchor Improved / Unchanged / Weakened High/Medium/Low
Core assumptions checklist Improved / Unchanged / Weakened High/Medium/Low
Red lines checklist 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 the trigger evidence —, do not fabricate evidence just to fill in the table.

The overall conclusion must answer

  1. Has the thesis drifted? No drift / Positive drift / Negative drift / Insufficient evidence to determine
  2. Where did the drift come from? Valuation / Fundamentals / Management / Competitive landscape / Red-line event
  3. Is it a factual change or a price change? Clearly separate and explain
  4. How should the recommended action migrate? For example: Watch → Buy, Buy → Hold, Hold → Reduce, Reduce → Exit
  5. What evidence is needed next? Next financial report / regulatory disclosure / management explanation / competitor data

Mode B: Automatic snapshot comparison

B1: Locate snapshots

In reports/ search for:

  • reports/{公司名}-thesis.md
  • reports/{公司名}-thesis-*.md
  • reports/{公司名}/ reports under the thesis、论文、追踪 directory containing thesis, thesis, or tracking

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, the user's specification takes precedence.

B2: Prevent incorrect pairing

Before comparison, confirm:

  • The company name or stock ticker is consistent
  • The report dates are different
  • Both reports contain an extractable thesis structure or research conclusions

If it cannot be confirmed to be the same company, stop and ask the user to provide an explicit path.

B3: Execute Mode A

After finding two valid snapshots, execute fully according to Mode A.


Mode C: Missing baseline handling

If only one report is found or no old snapshot is found:

  1. Clearly state:There is no comparable historical baseline, so drift detection cannot be performed
  2. Do not fabricate an old thesis based on memory or market impressions
  3. Guide the user to first use /thesis-tracker {公司名} 建立论文 to establish a structured baseline
  4. If the current report is already complete enough, suggest saving it as reports/{公司名}-thesis.md as the baseline for future drift detection

Output format:

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

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

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

Key principles

  • Evidence takes priority over wording — synonymous rewording is not drift; only changes in factual evidence are drift
  • Fundamentals take priority over stock price — stock price rises and falls only affect the valuation anchor and do not automatically change business quality
  • Values must be recalculated — all percentages, valuation multiples, and target price differences must use tools/financial_rigor.py
  • Mark uncertain when uncertain — when sources are missing, definitions are inconsistent, or verification is impossible, do not force a judgment
  • Handle red lines separately — red-line triggers take priority over cheap valuation and cannot be masked by a low PE
  • Output must be reviewable — every Improved / Weakened conclusion must be traceable to specific evidence