sediment-framework
与用户多轮对话,对齐林奇分类、归篮(篮子折现率)、专属属性、假设与可演算主尺后,再把估值框架沉淀落盘。 在用户要求「写估值框架」「按林奇分类」「沉淀框架」「更新框架」「财报后修订假设」「归篮」、 「入库标的」、说出 /sediment-framework 或 /lynch-framework, 或明确要以可复现方式把某 ticker 的专属估值逻辑写入 frameworks/ 时使用。 默认先持续
SKILL.md.claude/skills/sediment-framework/SKILL.md
GitHub沉淀估值框架(sediment-framework · 篮子折现率)
折现率 (r) 按生意性质归入 7 个篮子(references/rules/basket.md「§r 篮子」;值的真源 eval/lib/gordon.py BASKET_R),(G_{cap}=\min(6%, r-4%))(gordon.g_cap);随之而来的是域判定、DDM 触发、周期票 regime / point 双口径与利率敏感性。利率轴 _AXIS.rates 的机器数据在 frameworks/axes/rates.py:USD 段已建、HKD 跟 USD,CNY 仅有长期中枢、TWD 待建;个股接入并不完整。新版脚本将已有敏感读数放入结果,日报从已保存结果读取;缺少读数时日报不显示利率行,研究中如实说明缺口,不从轴正文补读。
主形态是持续对话,不是一次性写文档。
用户明确说「可以落盘 / 写成文件 / 确认写入」之后,才写 frameworks/<TICKER>.md。
「继续 / 嗯 / 好」≠ 授权落盘。标的池 = 扫 frameworks/*.md(排除 _ 前缀与 AGENTS.md / README.md);MUST NOT 维护 universe.yaml。
模板:frameworks/_TEMPLATE.md。仓库契约:frameworks/AGENTS.md(核心)+ references/contracts.md(脚本、输出和写作契约)。语义真源:references/rules/*.md(节名 → 文件的索引在 references/valuation-rules.md;别处写「valuation-rules.md「X」」就查索引,只读命中的那份)。各参考文件沿用的 Inputs、Outputs、表格或 Assumptions 旧称是计算与研究内容的定位词,不是要求正文保留机器格式;涉及正文及输出的具体形式统一按 references/contracts.md。
懒加载(MUST)
资金用途不明、截顶换尺或回报域边界导致锚点跳变时,读 references/rules/retention.md「资金用途不确定时的候选区间」及 references/contracts.md「资金用途候选区间」。
| 时机 | Read |
|---|---|
| 第 2 块业务地图 / 定 pe 带 / 银行票 | references/heuristics.md |
| 第 3 块归篮 / 任何涉及 (r) 的讨论 | references/rules/basket.md「§r 篮子」 |
| 第 7 块定锚之前、任何选倍数形式(完整式 / (1/r) / (1/(r-g)) / 窗口 NPV)的讨论 | references/rules/retention.md「经营价值与超额现金」+「留存去向审计」+「杠杆门」(先拉 ≥7 年 capex / NPPE / 净债 / 现金,拆超额现金、定 RONIC 层级、分桶、算净债 / EBITDA 与利息 / EBIT 后才许定形式;2026-10-13) |
| 第 6 块定锚 / 框架纠正改尺 | references/construction.md |
| 定 L 档倍数,或公式生成的倍数掉出本票历史实付区间(护栏红) | references/rules/anchors.md「L 的倍数也要有实证」(L 的倍数取同等盈利月份实付的下沿,不由 g 生成;隐含 g 只作坐标) |
| 定 (g) / (g_2)、两段式、周期票中枢分子或 regime / point 双口径 | references/rules/growth.md |
| 定 (V_{opt}) / 候选带 / 共享轴的构造 | references/rules/options.md |
| 保险腿、被动 ETF、(r_f) 敏感带 | references/rules/special-legs.md |
| 生成的 M 倍数低于自身实测带下沿(③ 出带) | references/rules/out-of-band.md「③ 出带处理流程」(先补 ②、带同基、增长率诚实、逐档降篮、篮 4 仍出带 → BLOCKED + 带边 r 并列) |
zone ∈ {stretched,deep_discount}(研究当日现价归 zone,只在对话里) |
references/zone-reflection.md |
| 向用户说明期权 (V_{opt}) / 候选带在卡片、日报上怎么显示、跨档告不告警 | 先核对实际消费方代码;references/contracts.md 记录目标契约,迁移完成前不能将目标描述成现有行为 |
| 任何锚点 / 敏感性 / 子代理结果交给用户之前;落盘前 | references/self-review.md(四问 + 稳态回报与 (g_2) 认可门) |
| 准备拟落盘摘要之前,及授权后保存结果时 | references/result-publication.md |
| 拟落盘摘要之后、授权之前 | references/checklist.md |
| 写或改标的文档、轴文件之前(含题头修补) | references/contracts.md |
| 设计脚本、校验或接入消费方 | references/contracts.md「计算与测试」 |
未按上表加载对应 reference → 不得报价带 / 声称 A2f 完成 / 勾自检完成。
派后台子代理
子代理只读任务说明点到的东西,读多少由任务说明决定。写任务说明时:
- 点名文件与节:从上表挑本任务命中的行,写成
references/rules/<文件>.md「节名」;任务说明里只列这些文件,SKILL.md 与其余 references 由主会话按需转述。 - 框架文档按目录读:先在
lynch/根跑just outline <TICKER>(轴文件给路径;frameworks/里有自己的 justfile,在那里跑找不到这条)拿各节行号与每条假设一行,再用 Read 的 offset / limit 只读任务要的节或假设行;整篇改写才全文读。eval 脚本先跑看输出,要改哪段再读哪段。 - 一段只读一次:读过的段留在上下文里,后面直接引用;Edit 成功即已落地,核对改动
grep -n那几行。 - 复用已有材料:同批已拉的数据与试算结果写明路径,注明直接复用。
- 转述硬约束:落盘门闩、第 13 条 BLOCKED、第 17 条个人信息,以及本任务的写入范围。
- 产出落文件、回报给摘要:完整产出写
frameworks/_local/tmp/<批次>/;回给主会话的只有一屏以内的结论 + 文件路径。 - 长输出先落文件:
pdftotext、longbridge报表、just check的输出写进_local/tmp/再grep/sed -n取行。
硬约束(违反则停下问用户)
- 对话优先 / 落盘门闩:一次只问一块;授权前 MUST NOT 创建或修改正式框架、共享轴及每票演算脚本,也不得写正式结果库。取数与贴表可以;临时试算、拟采纳提案和收据可写入用户私有的
frameworks/_local/tmp/。 - 框架内容只写本仓库(授权后):
frameworks/<TICKER>.md;可选frameworks/eval/<TICKER>.py。用户授权后,可按references/result-publication.md使用专用命令维护 App 结果库;其他文件的写入范围不变。不写 invest-data /universe.yaml。新票的演算脚本写到frameworks/eval/<TICKER>.py(内容仓库),题头仍写eval: eval/<TICKER>.py(相对内容仓库根)。MUST NOT 在lynch/eval/下建每票脚本——那是代码仓库的库目录。 - 林奇分类:
lynch_primary必填;lynch_secondary可选;∈ 六类枚举。专属叙事只进 §1 / Assumptions,不作 secondary。 - 业务地图有材料:分部/SOTP 前 MUST 拉财报分部 + ≥1 份研报线索;MUST NOT 凭常识空拆。不足标
待补。 - 单文件时间线:不建多版本文件。Changelog 仅事件追踪;初建日不写;框架纠正不写;事件按自然日合并
### YYYY-MM-DD。 - 不整页推翻:先读全文再增量;大改也在同文件改现行块。
- 数字可追溯:计算输入旁的脚本注释写来源、日期、口径和判断;正文解释读者需要质疑的关键数字。缺则
待补,不编造。 - 倍数多维印证:定倍数 / (L/M/H) 前 MUST 展示印证矩阵(
heuristics.mdA2d)。 - 档位跨票可比:构造走
construction.md;语义见rules/anchors.md「锚点语义」。散布 MUST NOT 来自手法。 - 不做交易指令。
- Ticker 规范化:见下方表;文件名 = 题头
# TICKER=frameworks/eval/<TICKER>.py。 - 两端 zone MUST 反思:
stretched/deep_discount→zone-reflection.md。现价不是输入;两终点同等合法((P\le H+V_{opt}),或接受溢价并举证)。中间三档不强制。现价只在研究对话里用,A2f 结论不落盘(2026-09-27 定)。 - BLOCKED 不落盘:见
rules/out-of-band.md「BLOCKED 的语义」「纠正对账门」。泛授权(「按推荐来 / 不用对话」)解不开 BLOCKED;只有用户看过原因后明确拍板才落盘,未满足的规则和复核条件用人话说明;subagent prompt MUST 转述本条。 - r 只能归篮,不能拧:每腿 (r) 只能是
rules/basket.md「§r 篮子」表中 7 个值之一(真源gordon.pyBASKET_R);一腿 MAY 按「篮子对」声明过渡篮 / 终值篮两个篮子值,适用判据见该节。脚本声明每条实际折现率对应的篮子和理由并调用check_r校验;只作披露的读数不冒充篮子值。改篮子值属仓库级,单票 MUST NOT 动。市价隐含回报只在对话里讨论。 - 倍数形式由留存去向审出,不是选的:定锚前 MUST 跑
rules/retention.md「经营价值与超额现金」(拆超额现金、经营口径三处同换、RONIC 按档取最远卖方年份前瞻回报、留存拆分与约束、零增长条件)与「留存去向审计」Step 0–5,把拆分读数、RONIC 来源与分桶结论写进 Assumptions;命中「禁止形态」任一条、周期股同等盈利月份交叉差 > 20%、或新建框架 (g_2) 任一层原值碰到上限(碰顶即停),即停下回对话。存量框架的框架纠正只做三件事(同节「框架纠正的范围」),已讨论定稿的取法不动(2026-10-13;2026-10-15 改)。 - 出带不许照印,也不许换带 / 拧 g 凑进去:M 倍数低于自身带下沿时 MUST 走
rules/out-of-band.md「③ 出带处理流程」——先补 ②、带与分子同基、带有效性核验(带下沿月份的预期增速与 ROE 是否与现模型同量级;失真带 MUST NOT 用来降篮或反推,③ 判不可判定走对账门)、增长率按窗口 + 终值诚实写、逐档降篮到篮 4(仅限干净带);仍出带 → BLOCKED:停下报告(篮 4 诚实结构下 L/M/H + 带边 r 并列价带;市价隐含 r 只在对话里报、不落盘)。MUST NOT 维持初分篮照印、改看另一条能过的带、把区间 CAGR 当永续、用期权救尺、用失真带降篮。 - 子代理网络请求 MUST NOT 含用户个人信息(邮箱、姓名等,含 SEC User-Agent);网站要求联系方式就换来源(2026-10-14 定)。
模式判定
| 用户意图 | 模式 |
|---|---|
| 新 ticker / 尚无文件 | 初建 |
| 纠正口径 / 修公式 / 证据链 / skill 对齐 | 框架纠正 — 改现行块,不写 Changelog |
| 财报后核对 / 假设状态变化 / 里程碑 | 事件增量 — 改现行块;仅引用的客观数字发生变化时写更新记录(references/contracts.md「框架文档」) |
| 只改分类或题头主尺一行 | 题头修补 |
已有文件却说「重写」→ 先确认纠正 vs 事件;Changelog 默认保留。
Ticker 规范化
| 市场 | 规则 | 例 | 禁止 |
|---|---|---|---|
| 美股 | MUST .US |
WOLF.US |
WOLF |
| 港股 | 保留 .HK,常 4 位补零 |
0700.HK |
700.HK、0700 |
| A 股 | .SH / .SZ(全仓一致) |
601899.SH |
601899、随意 .SS |
口述裸美股代码 → 先补 *.US 再写路径。
步骤 A — 初建
A1. 静默准备(可工具,不落盘)
- 读
_TEMPLATE.md;已有同名 → 改走 B 或 C - 轴候选懒加载:只读
_INDEX.md「共享情景轴」或ls frameworks/axes/,记候选逻辑 id;命中后再核对共享轴机器模块及可阅读说明,MUST NOT 预读全部轴正文,也不把正文作为计算输入。 - 预取:最近财报 segment + ≥1 份卖方分部/SOTP 线索
- 原始披露优先:分部利润、资本结构、章程、减值、分红政策 → 定期报告原文(PDF →
pdftotext -layout);搜索摘要只定位文档。口径字段 MUST 引附注原句(归母 vs 归属普通股股东) - 不要此时创建框架文件
A2. 对话对齐(一次一块)
- 林奇主类(及是否次类)— 2–3 选项 + 倾向理由
- 业务地图 → 是否分部 — MUST
Read references/heuristics.md;贴有来源业务表;按分部/银行启发式给主尺骨架 2–3 选项(不要擅自定案)。DDM 例外见rules/basket.md「永续增长口径」(只剩触发 (b)) - 归篮 — MUST
Read references/rules/basket.md「§r 篮子」:每腿(ETF 按成分行业;被动 ETF 主尺走「§ETF 例外」趋势通道,红利类加去利率化对照版)给篮子 + 一句判据理由 + CAPM 粗筛读数;|CAPM − 篮子| > 3pp 须写「为什么行业风险 ≠ β 风险」。周期票同时声明挂载商品轴各档 regime / point 语义、利率轴货币段 - 一句话 thesis + 主尺公式(映射到 (L/M/H))
- 专属属性(≥1)
- 可证伪假设
- 锚点 — MUST
Read references/construction.md+heuristics.md(A2d)- 分腿先声明每腿 Gordon vs EV/EBIT(§5b);分腿 不合成 (\bar r),逐腿相加
- 先印证矩阵,再锁倍数,再算 (L/M/H)、切点、五档价格区间;周期票两口径都算,主价带取轴声明语义
- 每锚一句「定价了什么」;禁止现价倒推,现价及其派生读数亦不落盘(
AGENTS.md「现价 — 禁写契约」) - 隐含 r(P) 只在对话里作诊断、不落盘;新研究的 USD / HKD 票 MUST 接入机器利率轴并输出 (r_f) 敏感带、共识列和反向压力列(
rules/special-legs.md「§利率轴」)。迁移旧记录时未接入的读数如实标待补,不从正文代取或为迁移补造数据。 - 用研究当日现价归 zone(只在对话里);两端 zone → MUST
Read references/zone-reflection.md跑完再进摘要,A2f 结论不落盘
决定权边界:仅林奇主类、归篮与主尺骨架列选项;其余构造给推荐+默认并推进,用户不反对即定。
七块对齐且 A2f(若触发)完成后:按 references/result-publication.md 准备拟采纳结果和收据 → 贴拟落盘摘要 → Read references/checklist.md → 未获授权时问是否授权落盘。若用户已明确授权,不重复征询;仍须在改正式文件前准备拟采纳结果和收据。
拟落盘摘要 MUST 含两块(2026-10-12 定:曾有两处近门槛判断要用户追问才翻出):
- 回报率拆解:M 档 ROE = 净利率 × 资产周转 × 权益乘数,并列 ROIC(口径同「杠杆门」①)、RONIC(层级与取值,「经营价值与超额现金」②)与 RONIC 所在的域,超额现金单列时并列经营口径 ROE;商誉 + 无形资产 > 归母权益(有形净资产为负)MUST 点名。只报 ROE 不算拆解
- 边界判断清单:凡换一种读法会翻转某道门的触发结果、或使任一锚点变动 >5% 的判断,逐条列「宽松读法 / 严格读法 / 采用 / 理由」,默认采用更严的读法;偏离默认 MUST 写具名理由(规则明文、仓库同口径可比性),不得以「更贴卖方 / 更贴现价」为理由
A2b. 取数
| 需要 | 工具 |
|---|---|
| 报价 / 三表 / 倍数 | yfinance / longbridge |
| 分部 / segment Note | 财报技能、Longbridge、earnings-recap;缺则 Wisburg |
| 资本结构 / 章程 / 减值 / 分红 | 定期报告原文 |
| EPS/EBIT 共识与桥 | estimate-analysis / consensus |
| ROIC/ROE | fundamentals / valuation |
| 研报 SOTP / 分部倍数 | Wisburg ≥2 家 |
| 历史 PE / 同业 | Longbridge valuation* |
| 共享轴 | 仅命中后核对 frameworks/axes/<轴模块>.py 的数据与来源,以及人读轴说明 |
A3. 落盘(仅明确授权后)
- 按
references/contracts.md写人读框架与frameworks/eval/<TICKER>.py:脚本持有量化输入、来源注释、计算和检查;文档解释结果、关键参数及判断。现价与其派生读数不写入正文。规则拦下但用户知情拍板的,说明未满足的规则与复核条件。 - 执行脚本及适用的测试;保存结果按
references/result-publication.md执行,确认与消费按references/contracts.md执行。 - 新建/改题头/改轴挂载 →
python3 scripts/gen_index.py - 汇报路径、分类、主尺、假设条数、尚缺数据
未授权 → 停在对话。
步骤 B — 框架纠正(不写 Changelog)
读现行 → 对话列拟改 → 涉倍数走 A2d、涉锚点 MUST 走 construction.md、两端 zone 走 A2f(研究当日现价,不落盘) → 拟摘要前按 references/result-publication.md 准备拟采纳结果和收据 → 授权后只改现行块 + 必要时 eval,并按该参考保存结果。用户已明确授权时不重复征询,但须先准备结果和收据。过程不进 §4。
步骤 C — 事件增量
读现行 → 判断新证据改变哪些输入、模型或观察结论 → 使用临时副本试算 + 必要时 A2f(研究当日现价,不落盘) → 拟摘要前按 references/result-publication.md 准备拟采纳结果和收据 → 用户授权后更新正式脚本并重算、修改现行文档并按该参考保存结果;用户已明确授权时不重复征询,但须先准备结果和收据。引用的客观数字有变化才写更新记录(references/contracts.md「框架文档」)。
步骤 D — 题头修补
只改题头两行引用块;纯修补不写 Changelog。改 ticker/中文名 → gen_index.py。
题头约定
# TICKER — 中文名 / English Name
> 林奇:`primary`[ / `secondary`] | 更新:YYYY-MM-DD | eval: eval/TICKER.py
> 主尺:(一句话索引;细节在 §0 / §3)
林奇六类
| 枚举值 | 中文 |
|---|---|
slow_grower |
缓慢增长 |
stalwart |
稳定增长 / 绩优 |
fast_grower |
快速增长 |
cyclical |
周期 |
turnaround |
转机 |
asset_play |
资产隐蔽 |
「估值重估」不是第七类,写在 §1 thesis。