mcpField
U
us-undervalued-growth-screener

us-undervalued-growth-screener

github.com/tradermonty其他3.4k1.6k 次安装2 天前更新
代码仓库

关于 us-undervalued-growth-screener

面向 Claude Code 的美国上市低估成长股筛选 Skill,结合 direct-FMP 流程、确定性候选筛选和基于来源的公司研究。

主要功能

  1. 01direct-FMP 筛选流程
  2. 02四类候选发现
  3. 03流动性与预测检查
  4. 04SEC 和 IR 资料研究
  5. 05审计排名与文件

适用场景

  1. 01筛选美国上市 GARP 股票
  2. 02在财报或申报后更新筛选
  3. 03比较增长、估值、稀释与风险

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tradermonty/claude-trading-skills --skill us-undervalued-growth-screener

安装后在 Claude Code 中输入/us-undervalued-growth-screener确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
annual-estimates.example.jsonl
broad-screen-audit.example.json
broad-screen-results.example.jsonl
broad-screen-shortlist.example.json
candidate-input.example.json
claude-code-config.example.json
discovery-audit.example.json
discovery-pool.example.jsonl
enriched-candidate-pool.example.jsonl
enrichment-queue.example.json
global-sources.example.json
listing-only-input.example.jsonl
market-context.example.json
screening-config.example.json
universe-audit-results.example.jsonl
universe-band-audit.example.json
universe-input.example.jsonl
references/
autonomous-execution.md
checkpointing.md
claude-code-execution.md
data-contract.md
full-universe-snapshot.md
methodology-ja.md
methodology.md
migration-v1-to-v2.md
migration-v2-to-v3.md
migration-v3-to-v3.1.md
migration-v3.1-to-v3.2.md
migration-v3.2-to-v3.3.md
migration-v3.3-to-v3.4.md

详细介绍

美国低估值成长股筛选器 — v3.6(Claude Code Direct-FMP)

概述

仅凭一个简单请求,即可端到端筛选美国低估值成长股/GARP 股票。找出每股收益(EPS)或每股自由现金流(FCF)能够持续复合增长、足以支撑未来两到三年获得可观回报的公司,且不假设估值倍数扩张,同时控制会计口径、预测构建、SBC、稀释、杠杆、周期性、公司行动、同行背景、来源时效性和证据质量等因素。

Claude Code 是首选的执行环境。 在 Claude Code 中,运行一次本地 Direct-FMP 流水线。Python 进程会批量获取数据、持久化缓存、规范化 FY1、计算流动性、通过四条研究路线发现标的,并确定性地执行宽泛筛选,同时将原始 FMP 数据保留在磁盘上,不放入模型上下文。Claude 只读取精简的运行摘要和选定候选公司的资料包,然后完成 SEC/IR 尽职调查和现有的严格评估流程。

“使用此技能筛选低估值成长股”之类的请求,应视为完整请求。 解析默认设置、收集当前数据、选择可行的数据获取途径、保存检查点、解决可处理的阻碍,并在同一任务中返回完整结果。除非用户明确缩小范围,否则绝不要要求用户提供股票代码列表、API 套餐详情、输出路径或单独的“继续”指令。

深度分析预算与研究路线覆盖: 有界 Direct-FMP 路径默认设置为 max_deep_dive_candidates: 3。三个入选标的无法代表全部四条研究路线。默认路线目标为:核心 GARP 2 个、高增长例外 1 个、优质接近门槛标的 1 个、周期性正常化 1 个(总计 5 个名额)。三只标的的运行会优先选择不同路线中的候选公司,但不保证每条路线都有一只标的。若要按路线优先选择 5 个标的,请在 assets/claude-code-config.example.json 的本地副本中设置 max_deep_dive_candidates: 5,并使用该配置重新运行有界流水线。实际路线覆盖情况仍取决于符合条件的候选公司和多元化偏好。独立的完整快照路径要求设置 full_snapshot_deep_dive_candidates: 5。有关选择和预算调整的详情,请参阅 references/claude-code-execution.md。

不可妥协的运行环境预检

读取或复用任何先前的运行产物之前,请先验证已安装的运行环境:

python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py --version
python3 skills/us-undervalued-growth-screener/scripts/screen_universe.py --version
python3 skills/us-undervalued-growth-screener/scripts/build_discovery_pool.py --version
python3 skills/us-undervalued-growth-screener/scripts/build_provider_prefilter_pool.py --version
python3 skills/us-undervalued-growth-screener/scripts/normalize_estimates.py --version
python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py --version
python3 skills/us-undervalued-growth-screener/scripts/evaluate_candidates.py --version
python3 skills/us-undervalued-growth-screener/scripts/prepublish_audit.py --version
python3 skills/us-undervalued-growth-screener/scripts/bundle_run_artifacts.py --version

所有命令必须报告相同的元数据:

skill_version = 3.6.1
schema_version = 3
contract_revision = 3.5
runtime_fingerprint = ug-v3.6.1-claude-code-direct-fmp-20260830

丢弃并重新生成运行环境元数据不同的任何审计、检查点或快照。不要混用 v3.1 至 v3.5 的脚本、资源或运行产物。同名技能若已过期或来自缓存,属于严重执行失败,不是警告。

自主完成协议

对于简单请求,请在不将控制权交还给用户的情况下完成以下所有事项:

  1. 确定 analysis_as_of 和最近一个已结束的美国常规交易时段收盘时间。
  2. 收集当前市场背景信息,并提供字段级来源支持和时效性检查。
  3. 在 Claude Code 中调用 run_pipeline.py,而不是批量调用 FMP MCP。将提供方的负载保留在磁盘上,仅向模型提供精简摘要。
  4. 通过自适应且已穷尽的市值区间,审查 NYSE/Nasdaq/NYSE American 的上市范围;当提供方响应达到上限时,继续细分区间。
  5. 构建可复现的经济候选池。无需要求全市场公司都提供完整财务报表。
  6. 区分已尝试补充信息与已成功补充信息。
  7. 应用确定性的广泛筛选脚本。不要用临时的 LLM 截止标准替代其状态。
  8. 在 Claude Code 中通过确定性的多通道抽样,最多选出三家经济上合理的深入研究候选公司:核心 GARP、高增长例外、接近达标的优质公司,以及需要标准化分析的周期性公司。存在替代选项时,同一行业最多选两家公司。增长阈值仍是参考标准,而非孤立的硬性门槛。
  9. 解析所选候选池中的每一行,或记录有来源支持的穷尽证据。
  10. 对每个入选标的进行公司行动预检和一手来源承保分析。
  11. 将每个入选标的保存为已验证的候选记录,包括 review_required、screened_out 和 excluded 结果。
  12. 组装 schema-v3 / contract-v3.5 快照。
  13. 运行 evaluate_candidates.py --strict --require-final。
  14. 应用最终质量资格门槛;将现金流疲弱、ROIC 偏低、杠杆过高、稀释严重、低位情景脆弱或 LOE 严重的标的归为 conditional 或 review_required。
  15. 运行 prepublish_audit.py;修复所有可解决的阻塞项并重新运行。
  16. 运行 bundle_run_artifacts.py,生成包含所有引用文件的独立审计 ZIP。
  17. 仅在所有门槛均通过后,提供正式排名和可下载的文件包。

退出代码 2 表示继续执行当前任务:补充队列信息、验证候选池生成审计、完成入选标的的深入研究,或修复契约失败。它绝不表示“请用户说继续”。附上审计文件后,运行 manage_run_state.py next-action;执行返回的操作和列出的每个标的。绝不要询问要处理两家还是五家入选公司。若要更改数量上限,请先重新运行广泛筛选,让被省略的标的标记为 deferred_by_budget。

完成语义

来自经过审计的有界候选池的最终排名

当满足以下条件时,可依据可复现生成的有界候选池给出限定范围的最终排名:

candidate-pool generation audit is valid
candidate_pool_exhausted = true
all_rows_resolved = true
unresolved_count = 0
queue_count = 0
all selected symbols have verified candidate records
strict final evaluation passes

标明结论范围,例如 stratified_discovery_pool 或 provider_prefilter。不得暗示未经审查的市场上市公司已接受经济筛选。

“没有符合条件的候选公司”的全市场结论

全市场无候选公司结论除满足以上所有条件外,还要求覆盖范围内的经济筛选已全部完成:

conclusion_scope = full_listing_universe
candidate_pool covers every in-scope listing
in_scope_missing_count = 0
at least one row was economically assessable
selected_symbols = []
“没有符合条件的候选公司”的有界候选池结论

有界候选池只能得出以下结论:

no qualifying candidates in the audited bounded pool

不得声称整个美国小盘股/中盘股市场都没有符合条件的公司。

进行实时简单请求运行前,请先阅读 references/autonomous-execution.md。

适用场景

在以下情况下使用此技能:

  • 发掘并排序在美国上市的低估成长型或 GARP 股票。
  • 筛选在 NYSE、Nasdaq 和 NYSE American 上市的运营公司普通股。
  • 验证仅凭 EPS 或每股 FCF 增长,能否支持未来两到三年约 30%–50% 的上涨空间。
  • 在财报、业绩指引、申报文件、公司行动或预期修订后,更新先前的筛选结果。
  • 从远期估值、增长持久性、ROIC、标准 FCF、SBC、稀释、同行、周期风险和行业特定 KPI 等方面比较候选股票。

以下情况请勿使用:

  • 股票已选定后撰写通用的单只股票报告;请使用 us-stock-analysis。
  • 纯股息、动量、技术形态、尚未产生收入的生物科技或并购套利筛选。
  • 自动下单。

前提条件

  • Python 3.9 或更高版本。
  • 生成的 FMP 直连客户端需要 requests;确定性评估和审计脚本则使用标准库。
  • 在 Claude Code 直连模式下,环境中必须设置 FMP_API_KEY。切勿提交或打印此密钥。
  • 能够访问最新的 SEC、公司 IR 和宏观经济来源,以对选定公司进行承销分析。
  • reports/ 和 .cache/ 目录可写。
  • 不假定需要特定的 FMP 付费方案。批量端点失败时,会回退到有界的逐标的补充,并在诊断信息中予以说明。

默认范围

除非用户另有指定:

  • 交易所:NYSE、Nasdaq、NYSE American。
  • 证券类型:活跃的运营公司普通股。
  • 市值范围:5 亿至 200 亿美元。
  • 最低股价:5 美元。
  • 优选平均日成交额:500 万美元;硬性下限为 100 万美元。
  • Claude Code 提供商预筛选池:经过代码端经济指标筛选和流动性验证后,目标为 30 只股票;有界的逐标的回退最多可检查 80 只股票,但不会将其提供商数据载入模型上下文。
  • 深入分析预算:默认在有界的 Claude Code 路径上分析 3 只股票,从 4 个确定性研究路径中选出;3 个名额无法覆盖全部 4 个路径。选定后必须解析每只股票;只有重新运行广泛筛选,才能调低预算,使未纳入的股票标记为 deferred_by_budget。
  • 排名结果最多 10 只,但经过验证的深入分析集合可能更少。
  • 正式固定倍数下的最低上涨空间:在有依据的两年或三年周期内达到 30%。
  • 倍数收缩压力测试:将当前远期倍数下调 20%。
  • 可用于排名的共识预测周期,分析师人数至少为 3,除非构建了有完整来源支持的独立预测。
不可变的请求范围与有界执行

对于最简请求,用户要求的市值范围始终为 500M–20B 美元。切勿为了方便,将运行配置改写为 3–4B 的范围。分别记录 user_requested_scope 和 executed_scope。除非用户明确要求,否则缩小执行范围即属于不完整;上下文或工具预算压力并不构成授权。将上市页面/区间流式写入 JSONL,而不要把每一行都加载到对话上下文中。

流动性证据

切勿用单个交易日的成交量计算 ADDV。生成候选名单时,必须使用提供商的平均日成交额指标,或使用 price × average_volume,并明确标注至少 20 个交易日的平均窗口及来源 ID。缺少有效平均流动性证据的行须保持 needs_enrichment 状态,且不得进入发现池。

当前远期预测周期

当前 P/E 必须明确为 NTM 或 FY1,并且与正值的当前远期 EPS、价格、财年/期间元数据、预期日期、分析师人数及来源 ID 相一致。通用的更远年份 P/E 值无效。缺少 FY1/NTM 数据行、区间跨越零或预测分歧极端时,应将该标的转入补充分析或标记为 unavailable_after_enrichment;绝不能将其列为低 P/E 选择。

结果质量控制

确定性的多通道候选发现

不要让单一全局评分用某一种风格或行业填满研究预算。存在符合条件的名称时,将默认的五个深入研究名额分配到以下通道:

  • 两个核心 GARP 名称,
  • 一个高增长例外,Forward P/E 不超过 30x,
  • 一个优质的临界落选者,其低估值可能弥补低于指南的表面增长率,
  • 一个需要明确中周期模型的周期性候选者。

根据确定性优先级填补未使用的名额;存在其他选择时,每个行业最多选两个。报告每个入选名称的 selection_lane。LLM 可以解释这些决定,但不得用临时设定的门槛取而代之。

正式资格质量门槛

通过上涨空间测试的名称并不会自动成为 eligible。正式排名还要求:

  • 最终评分至少为 70,
  • SBC 调整后 FCF 收益率至少为 3% 或 EV/FCF 不超过 30x,
  • ROIC 至少为 8%,
  • 适用时,Net Debt/EBITDA 不超过 3.0x,
  • 摊薄后股数 CAGR 不超过 5%,
  • 在有依据的低共识情景下,至少有 15% 的上涨空间,
  • 不存在差于已配置门槛的严重 LOE 尾部损失。

一到两项一般性不达标可能导致状态为 conditional;严重的 FCF 或 LOE 不达标以及更广泛的弱点会导致状态为 review_required。绝不能仅仅因为平均共识 EPS 暗示有 30% 的上涨空间,就把低 P/E、高 EV-FCF 的转型故事标记为正式赢家。

独立预测驱动因素证据

每个排名中第 2 年/第 3 年的桥接分析都必须使用 construction_method=independent_driver_model。每个收入、利润率、利息、税项、股数、FCF 和调整驱动因素都需要注明来源和来源 ID。对于从目标 EPS 反向求解的任何驱动因素,标记 target_solved=true;这会导致桥接分析不通过。仅仅为了让模型与共识一致而设定的残差调整,并不构成独立验证。

仅发布自包含的结果

最终报告只有在 prepublish_audit.py 验证了所有引用的审计文件、计数、哈希值、情景算术、候选状态、最终三选标签,以及不存在未完成运行措辞之后,才可发布。使用 bundle_run_artifacts.py 打包整个运行目录;仅包含 Markdown/JSON 摘要的 ZIP 并不完整。

数据获取策略

首选的 Claude Code 路径 — 直接使用 FMP,精简模型上下文

运行一条本地命令:

python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py \
  --config skills/us-undervalued-growth-screener/assets/claude-code-config.example.json \
  --output-dir reports/us-undervalued-growth-screener

生成的 FMP 客户端沿用代码库集中管理的 scripts/fmp_client/ 单一事实来源模式。它会将原始响应和持久化 SQLite 缓存写入磁盘。不要将原始提供方数据树粘贴或读入语言模型上下文。只读取 run-summary.json、NEXT_ACTION.json、audit/broad-screen-audit.json 和 candidate-packets/ 下的精简数据包。

对于没有批量估算数据的方案,要进行全市场范围的运行,请先收集所有冻结的 股票池分片,然后再筛选经过验证的快照:

python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py \
  --stage collect-estimates --shard-index 0 --shard-count 8 \
  --snapshot-dir .cache/us-garp/snapshot-current \
  --config skills/us-undervalued-growth-screener/assets/claude-code-config.example.json \
  --resume

python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py \
  --stage screen-full-snapshot \
  --snapshot-dir .cache/us-garp/snapshot-current \
  --config skills/us-undervalued-growth-screener/assets/claude-code-config.example.json \
  --output-dir reports/us-undervalued-growth-screener

每个分片只运行一次,不带 --resume;仅在继续已有的部分分片时使用 --resume。收集和筛选都仅针对当前数据: 收集会固定估算值的标准化基准,而筛选会补充精确的流动性和 TTM 质量证据。首次收集会将已耗尽的上市枚举审计记录绑定到快照清单中。筛选会在创建提供方或运行产物之前进行只读内容/时效性预检,将绑定枚举证明和每个已验证分片的摘要传递至下游审计,在有效名称达到 50 个或符合条件的名称全部耗尽之前补充流动性不达标的名称,并提交五个已探测的深入研究名称。完整的收集和筛选约定请参阅 references/full-universe-snapshot.md。 如果屏幕数据补充期间耗尽了提供商调用预算,命令会以状态码 2 退出,并写入 audit/partial-run-diagnostic.json 和 audit/enriched-estimates.partial.jsonl。诊断文件是最后一个原子提交标记,记录快照 ID/摘要、阶段、确定性的已尝试/已完成/待处理/中断符号、中断的提供商操作、提供商计数器,以及部分产物的哈希值。只有在该标记存在,且其中记录的哈希值和行数均通过验证时,才可读取部分产物;如果标记缺失或不匹配,部分输出就不具权威性。screen-full-snapshot 不支持 --resume:恢复提供商预算后,使用同一已验证快照重新运行;成功调用产生的新缓存/原始记录可以保留,现有缓存/原始数据也会复用,不会被删除或重写。如果在数据包阶段预算耗尽,broad-screen-audit.json 也会被标记为不完整/诊断状态,所有嵌套的选择承诺字段都会被清除,并将所有宽筛选行(包括已拒绝的行)重写为 deferred_by_budget,同时禁用选择资格。原始 decision 会保留在 prior_decision 中,原始顶层选择字段会保留在 prior_selection 中;这些归档仅供审计,不能作为选择依据,重复失效时会保留首次归档。审计文件和任何部分输出都不代表最终的全市场结论。质量探测的 calls_used 和 actual_eps_calls 统计 FMP 提供商预算单位:缓存调用或未发送的调用不计费,已消耗的重试响应仍计入。每次重试都使用新的空运行目录。CLI 会添加唯一的尝试后缀,并将原始响应保存在同级的尝试目录中;直接调用者不得重复使用非空输出目录。

直接运行器会先尝试批量获取比率、关键指标、预估值和 EOD 数据集。仅当无法使用批量访问时,才会回退到有界的逐符号数据补充。如果批量端点受套餐限制(402/403),缓存会将该端点记住 30 天,后续运行不会再消耗调用次数来重新探测。回退时,预估值种子采用按行业 × 市值分层的样本(按 √ 加权的 Hamilton 配额,在单元格内按流动性排序,并以哈希打破平局),样本规模根据剩余调用预算确定;audit/seed-audit.json 会说明选择依据。选择股票池前,会对排名靠前的候选标的进行 key-metrics-ttm 质量探测(ROIC、FCF 收益率、EV/FCF、杠杆、SBC);如果经探测确定的某行 SBC 调整后 FCF 收益率低于 1%,则除 high_growth_exception 外,不得进入任何筛选通道。精确的 20 天 ADDV 计算按四个经济筛选通道的优先级进行,而非按股票代码顺序进行。完整的执行约定请阅读 references/claude-code-execution.md 和 references/migration-v3.6-to-v3.6.1.md。

第 1 层 — 上市标的全集审计

仅收集适用于广泛覆盖的字段:

  • 股票代码和交易所,
  • 活跃/普通股状态,
  • 价格和报价时间戳,
  • 市值,
  • 平均每日成交额,或足以计算该数值的数据,
  • 可用时的行业和细分行业。

不要用成交量下限替代 ADDV 阈值。如果 API 只能按成交量筛选,请广泛获取数据,计算 价格 × 平均成交量,并在本地应用美元流动性规则。

目标是至少达到 95% 的上市标的字段完整度。使用提供商总数以及已完成的分页,或已穷尽且无缺口的市值区间,证明枚举完整性。仅匹配请求的市值下限和上限,不能证明完整性。

第 2 层 — 经济候选池

按以下顺序选择最佳路径:

  1. 使用 build_provider_prefilter_pool.py 构建的多通道提供方预筛选池。分别获取核心 GARP、P/E 21–30 高增长、低 P/E 优质落选项,以及需要标准化的周期性行业的广泛数据行;合并并审计各通道,而不是使用单一的狭窄查询条件 P/E≤20 + revenue≥8% + low-cycle。
  2. 使用已附加到上市行的可用预期数据/基本面数据,然后应用相同的四通道标签。
  3. 使用 build_discovery_pool.py 进行分层发现作为后备方案,然后补充数据。
  4. 仅在用户明确提供时使用用户提供的候选池。

对于范围有限的实时运行,目标是至少获得 30 条已解析的候选池数据行,且至少涵盖三个通道,除非提供方的可用数据已明确耗尽。较小的便捷候选池可用于诊断,但不得将其描述为高召回率的 GARP 搜索。

如实说明经济筛选的范围。run-summary.json 将 listing_enumeration_complete 与 economic_screen_scope_complete 分开,并报告 estimate_seed_coverage_pct/valid_estimate_coverage_pct;在范围有限的逐标的后备路径上,经济筛选范围永远不完整,发现审计会记录 provider_exhausted_scope: estimate_seed。将此类结果描述为“使用共识预期数据评估了 N 个种子标的”,绝不可将其描述为市场范围的结论。只有经过深入验证的全市场分类和绑定验证摘要齐备时,screen-full-snapshot 才能在逐标的路径上输出 final_marketwide。

不要因为 TTM 或报表端点受套餐限制而停止。应自动切换路径。

确定性广泛筛选规则
  • 收入增长、每股增长、ROIC、杠杆率和优选估值水平都是指导标准,而不是孤立的硬性门槛。
  • 将轻微未达标项记录在 guideline_misses 中。
  • 仅在出现严重淘汰因素时使用 screen_fail_reasons,例如要求标准 FCF 时标准 FCF 非正、ROIC 为负、杠杆率过高、估值极端且增长不足以支撑,或远期增长为负。
  • 若估值具有吸引力,且每股增长仍可信,即使收入增长略有未达标,也允许进入 near_miss_review。
  • 若增长和证据足以支持复核,允许 P/E 21–30 的高增长例外。
  • 对周期性评分为 3–5 的标的,添加 mid_cycle_normalization_required;不要自动拒绝该数据行。
  • 若 peak_profit_risk=true,无论周期性数值评分如何,均要求进行标准化。
  • 在获得适合该行业的估值或杠杆证据之前,银行、保险公司、REIT、BDC、MLP 和汽车经销商均应暂不纳入。
  • 将脚本生成的候选名单视为权威结果。脚本运行后,不要再通过非正式的收入增长或周期性门槛,剔除类似 GDDY 的落选项或类似 KGS/AMKR 的周期性标的。
第 3 层 — 一手来源深入调查

仅对选定的标的,通过 SEC 文件和公司 IR 核实重要事实。供应商可以提供发现和共识数据,但凡可获取一手来源,实际收入、现金流、债务、股份数、SBC、指引、公司行动和会计调整均必须以一手来源为依据。

来源与证据规则

按以下层级使用:

  1. SEC 文件。
  2. 公司 IR。
  3. 官方宏观/统计来源。
  4. 市场数据和共识数据供应商。
  5. 信誉良好的新闻和第三方文字记录,仅作为补充背景。
  6. 明确标注的分析师计算和假设。

每个来源都必须包含:

unique source ID
tier and kind
publication timestamp
retrieval timestamp
data_as_of when different
URL
non-empty supports[] array

官方来源标签必须与官方域名匹配。第三方文字记录绝不能视为公司 IR。动态市场字段应根据其底层数据日期进行测试,而不仅仅是检索时间。

财务与预测控制

标准 FCF 和 TTM 证据

使用:

standard FCF = operating cash flow − capex cash outflow

Capex 是正值现金流出。通过一种有文档记录的方法构建 TTM 现金流:

  • 已报告的 TTM,
  • 四个离散季度,或
  • 最近一个财年 + 本年迄今 − 上年同期迄今。

每个组成期间都必须有可解析的来源 ID。不要对累计 10-Q 现金流值重复计数。

现金分类

对于普通运营公司,将报告的现金及现金等价物标准化为 corporate_cash;并单独识别符合条件的有价证券。对于支付、托管、市场平台、经纪或资金流转业务,明确区分公司现金、结算/客户资金和受限现金。企业价值和净债务只使用股东可支配的现金。

基于驱动因素的预测桥接

如果某个分子只是被设定为等于 EPS × shares,不要用它来验证预测。

对于 EPS,独立重构:

forecast operating income = forecast revenue × forecast operating margin
forecast pretax income = operating income + net interest/other income
forecast GAAP net income = pretax income × (1 − tax rate)
forecast adjusted net income = GAAP net income + sourced after-tax adjustments
forecast EPS = forecast net income ÷ forecast diluted shares

对于每股 FCF,基于 OCF 和 capex,或基于数据来源完整的收入/FCF 利润率模型,推导标准 FCF,然后除以预测稀释股数。

驱动因素计算结果必须在容差范围内与所声称的指标一致。提供的分子/分母字段仅用于交叉核对。调整后期间还必须将基于驱动因素推导的 GAAP 指标及税后调整与 GAAP 调节表对应一致。

GAAP 和调整后指标

分别存储本期、第 2 年和第 3 年的指标口径。口径混用会阻止正式情景通过。必须说明反复剔除的「一次性」项目、SBC、收购成本和无形资产摊销,并将其纳入质量/风险评估。

ROIC、EBITDA 和质量证据

用于评分或杠杆计算的 ROIC 和 EBITDA,必须提供关联来源的输入数据,或透明的分析师计算过程。证据缺失会限制数据质量,并阻止在缺乏依据的情况下给予 100 分。

行业与周期控制

商业化生物制药及特许权使用费/药物递送平台

如果公司有商业化产品/特许权使用费敞口,则将 biopharma、pharma、biotechnology、royalty_biopharma 和 drug_delivery_platform 等别名标准化为 commercial_biopharma。

必须提供:

  • 产品或特许权使用费集中度,
  • 最近的重大 LOE/专利事件,
  • 距 LOE 的年数,
  • 可解析的来源 ID,
  • 重大情况下配置的 6x 和 8x LOE 压力情景。

缺少结构性风险证据时,将产生 review_required 状态并限制质量评分。

周期性行业与峰值利润风险

如果周期性评级为 3–5,或 peak_profit_risk=true,则必须提供有来源支持的标准化对象,其中包含周期中段收入/利润率/EPS/FCF;或者说明当前经济表现为何能够持续。仅有风险标记不足以达到 eligible。

工作流

步骤 1 — 在 Claude Code 中运行直接发现

对于 Claude Code,先使用上面的直接运行器。它会创建运行目录、上市情况和候选池审计、精简候选数据包、run-summary.json 和 NEXT_ACTION.json。无需征求用户确认,直接遵循 NEXT_ACTION.json。对于无法执行直接 HTTP 代码的主机,以下手动命令仍可作为后备方案。

步骤 1B — 手动主机后备方案:创建运行目录和实时上下文
reports/us-undervalued-growth-screener/<run-id>/
├── market-context.json
├── global-sources.json
├── universe.jsonl
├── discovery/
├── broad-screen/
├── run/
└── final/

切勿将合成示例资产中的值、URL、日期、来源 ID 或股票代码复制到实际运行中。

Step 2 — 构建、规范化并审计候选池

在运行契约中保留用户最初要求的范围。如果无法获取批量经济数据,则根据经过完整审计的上市公司全集构建有界发现池,不得缩小用户要求的市值范围。用于生成候选池的每一条上市记录都必须包含经验证的提供方平均流动性证据,或至少 20 个交易日的流动性证据。

如果可以进行提供方筛选,则为每个分组保存一个 JSONL 文件,并按确定性方式合并:

python3 skills/us-undervalued-growth-screener/scripts/build_provider_prefilter_pool.py \
  --universe reports/us-undervalued-growth-screener/<run-id>/universe.jsonl \
  --lane core_garp=reports/us-undervalued-growth-screener/<run-id>/provider/core.jsonl \
  --lane high_growth_exception=reports/us-undervalued-growth-screener/<run-id>/provider/high-growth.jsonl \
  --lane quality_near_miss=reports/us-undervalued-growth-screener/<run-id>/provider/near-miss.jsonl \
  --lane cyclical_normalization=reports/us-undervalued-growth-screener/<run-id>/provider/cyclical.jsonl \
  --output-dir reports/us-undervalued-growth-screener/<run-id>/provider \
  --analysis-as-of <ISO-8601> \
  --source-id <provider-source-id> \
  --per-lane 15 --max-pool 60 --minimum-pool 30

将生成的 provider-prefilter-audit.json 用作 --discovery-audit,并将 provider-prefilter-pool.jsonl 用作候选池。

python3 skills/us-undervalued-growth-screener/scripts/build_discovery_pool.py \
  --input reports/us-undervalued-growth-screener/<run-id>/universe.jsonl \
  --output-dir reports/us-undervalued-growth-screener/<run-id>/discovery \
  --source-id <listing-source-id> \
  --min-market-cap 500000000 \
  --max-market-cap 20000000000 \
  --user-requested-min-market-cap 500000000 \
  --user-requested-max-market-cap 20000000000 \
  --max-pool 120 \
  --per-cell 3

在 Broad Screen 前规范化带日期的年度共识数据行。必须指定 --estimate-as-of。对于无法解析出 NTM/FY1 数据行的公司,仅保留其原始远期年度数据用于诊断,并将其标记为 unavailable 或继续留在补充数据流程中;不得为其计算当前 Forward P/E。

python3 skills/us-undervalued-growth-screener/scripts/normalize_estimates.py \
  --estimates reports/us-undervalued-growth-screener/<run-id>/discovery/raw-annual-estimates.jsonl \
  --listing-input reports/us-undervalued-growth-screener/<run-id>/discovery/discovery-pool.jsonl \
  --analysis-as-of <ISO-8601> \
  --estimate-as-of <ISO-8601> \
  --source-id <estimate-source-id> \
  --output reports/us-undervalued-growth-screener/<run-id>/discovery/enriched-candidate-pool.jsonl

将规范化后的预估数据行合并到有界候选池中,然后运行 screen_universe.py。提供明确的数据检索边界和上市公司枚举证明。使用 --discovery-audit 传入生成审计记录。

python3 skills/us-undervalued-growth-screener/scripts/screen_universe.py \
  --input reports/us-undervalued-growth-screener/<run-id>/universe.jsonl \
  --candidate-pool reports/us-undervalued-growth-screener/<run-id>/discovery/enriched-candidate-pool.jsonl \
  --discovery-audit reports/us-undervalued-growth-screener/<run-id>/discovery/discovery-audit.json \
  --output-dir reports/us-undervalued-growth-screener/<run-id>/broad-screen \
  --analysis-as-of <ISO-8601> \
  --source-id <listing-source-id> \
  --candidate-source-id <estimate-source-id> \
  --candidate-generation-mode liquidity_stratified_estimates \
  --retrieval-min-market-cap 500000000 \
  --retrieval-max-market-cap 20000000000 \
  --user-requested-min-market-cap 500000000 \
  --user-requested-max-market-cap 20000000000 \
  --provider-reported-total <count> \
  --pages-fetched <count> \
  --pagination-exhausted \
  --config skills/us-undervalued-growth-screener/assets/screening-config.example.json \
  --max-deep-dives 5

如果命令以退出码 2 结束,请检查 enrichment-queue.json 和 broad-screen-audit.json,在同一任务中继续补充数据,然后重新运行。只有在每一行都已解决且生成审计记录能够证明范围有界之后,才能传入 --candidate-pool-exhausted。

Step 3 — 保存运行检查点

初始化并附加筛选审计记录:

python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py init \
  --run-dir reports/us-undervalued-growth-screener/<run-id>/run \
  --analysis-as-of <ISO-8601> \
  --price-as-of <ISO-8601> \
  --session regular_close \
  --price-source-id <source-id> \
  --market-context reports/us-undervalued-growth-screener/<run-id>/market-context.json \
  --global-sources reports/us-undervalued-growth-screener/<run-id>/global-sources.json \
  --base-commit <git-sha>

python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py set-screening-audit \
  --run-dir reports/us-undervalued-growth-screener/<run-id>/run \
  --audit reports/us-undervalued-growth-screener/<run-id>/broad-screen/broad-screen-audit.json \
  --universe-artifact reports/us-undervalued-growth-screener/<run-id>/broad-screen/universe-audit-results.jsonl \
  --candidate-artifact reports/us-undervalued-growth-screener/<run-id>/broad-screen/broad-screen-results.jsonl
Step 4 — 完成已选项目的深入分析

对于每个入选标的:

  1. 首先进行公司行动预检。
  2. 分别核实最新季度和完整财年。
  3. 整理标准 FCF 和 TTM 证据。
  4. 规范化现金分类。
  5. 构建基于同一口径的当前年度、第 2 年和第 3 年估值期间。
  6. 构建独立的预测桥接。
  7. 将调整后指标与 GAAP 核对。
  8. 收集 ROIC、EBITDA、SBC、稀释、同业以及行业/周期证据。
  9. 即使最终候选状态将为 review_required、screened_out 或 excluded,仍将候选项目保存为 verified。
python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py save-candidate \
  --run-dir reports/us-undervalued-growth-screener/<run-id>/run \
  --candidate reports/us-undervalued-growth-screener/<run-id>/candidates/<SYMBOL>.json \
  --stage verified
Step 5 — 完成并汇总
python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py set-status \
  --run-dir reports/us-undervalued-growth-screener/<run-id>/run \
  complete

python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py assemble \
  --run-dir reports/us-undervalued-growth-screener/<run-id>/run \
  --output reports/us-undervalued-growth-screener/<run-id>/final/final-snapshot.json
Step 6 — 严格评估与修复循环
python3 skills/us-undervalued-growth-screener/scripts/evaluate_candidates.py \
  --input reports/us-undervalued-growth-screener/<run-id>/final/final-snapshot.json \
  --artifact-root reports/us-undervalued-growth-screener/<run-id> \
  --output-dir reports/us-undervalued-growth-screener/<run-id>/final \
  --language ja \
  --strict \
  --require-final

只有在退出码为 0 且输出包含以下内容时,才能发布正式结果:

contract.valid = true
ranking_status = final
unprocessed_candidates = []
runtime.contract_revision = 3.5
Step 7 — 发布前审计与自包含打包

找到生成的最终 JSON 和 Markdown,然后运行:

python3 skills/us-undervalued-growth-screener/scripts/prepublish_audit.py \
  --report-json reports/us-undervalued-growth-screener/<run-id>/final/<report>.json \
  --report-md reports/us-undervalued-growth-screener/<run-id>/final/<report>.md \
  --artifact-root reports/us-undervalued-growth-screener/<run-id> \
  --output reports/us-undervalued-growth-screener/<run-id>/final/prepublish-audit.json

python3 skills/us-undervalued-growth-screener/scripts/bundle_run_artifacts.py \
  --run-dir reports/us-undervalued-growth-screener/<run-id> \
  --report-json reports/us-undervalued-growth-screener/<run-id>/final/<report>.json \
  --report-md reports/us-undervalued-growth-screener/<run-id>/final/<report>.md \
  --output reports/us-undervalued-growth-screener/<run-id>/final/us-undervalued-growth-screen-<date>.zip

两条命令的退出码都必须为 0。将自包含 ZIP 与报告一同提交。

输出格式

生成 JSON 和 Markdown 两种格式。Markdown 必须包含:

  • 运行时/版本和结论范围,
  • 分析和价格时间戳,
  • 市场背景和来源台账,
  • 上市公司及候选池审计/筛选流程,
  • Broad Screen 入选、延期、待审核、不可用、筛除和排除的数据行,
  • 正式排名和分数明细,
  • 明确的 2 年/3 年恒定倍数情景,以及 2 年/3 年 20% 收缩情景,
  • 候选项目详情、最新财报、预测桥接、GAAP 核对、同业、周期/行业风险、催化因素和失效条件,
  • 仅在排名最终确定时列出最终前三名,
  • 未解决的数据问题和全局警告。

不得在同一未标注的列中混合 2 年基准情景和 3 年压力情景。

资源

  • references/claude-code-execution.md — 直接通过 FMP 执行、缓存、精简上下文和交接约定。
  • references/autonomous-execution.md — 同轮执行、回退、运行时和完成约定。
  • references/data-contract.md — schema-v3 / contract-v3.5 的来源、审计、候选项和输出约定。
  • references/methodology.md 和 methodology-ja.md — 财务与投资方法论。
  • references/research-checklist.md — 一手来源尽职调查清单。
  • references/scoring-rubric.md — 评分、惩罚、质量上限和状态门槛。
  • references/sector-kpis.md — 行业估值 / KPI 要求。
  • references/output-template.md — 必需的 JSON / Markdown 呈现格式。
  • references/checkpointing.md — 原子保存 / 恢复流程。
  • references/review-regression-matrix.md — 已发现的失败及其防范测试。
  • references/migration-v3.5-to-v3.6.md — Claude Code 直接通过 FMP 执行的迁移与操作变更。
  • references/migration-v3.4-to-v3.5.md — 先前的破坏性变更与升级步骤。
  • scripts/skill_version.py — 规范的运行时 / 版本常量。
  • scripts/fmp_client.py — 生成的稳定优先 FMP 客户端,带有 SQLite 缓存和原始产物存储。
  • scripts/run_pipeline.py — Claude Code 原生的直接通过 FMP 执行的发现运行器,标准输出经过精简。
  • scripts/build_provider_prefilter_pool.py — 经审计的四通道服务商池构建器。
  • scripts/build_discovery_pool.py — 通过平均流动性验证生成确定性回退池。
  • scripts/normalize_estimates.py — 识别并验证当前 NTM / FY1 共识期限。
  • scripts/screening_semantics.py — 共享的失败即关闭流动性与远期期限语义。
  • scripts/screen_universe.py — 上市审计与宽泛筛选引擎。
  • scripts/manage_run_state.py — 检查点和最终快照管理器。
  • scripts/evaluate_candidates.py — 确定性的严格评估器、质量资格门槛和报告渲染器。
  • scripts/prepublish_audit.py — 最终产物 / 数量 / 情景 / 文本审计。
  • scripts/bundle_run_artifacts.py — 确定性的自包含审计包构建器。

评论

支持 Markdown